2008-11-27 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / mini / ChangeLog
1 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * basic-simd.cs: Add tests for Get/SetVector.
4
5 2008-11-27  Mark Probst  <mark.probst@gmail.com>
6
7         * mini.c: Removed g_slist_append_mempool().  Now in
8         metadata/mempool.c.
9
10 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
11
12         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
13         size properly and make the bounds check optional.
14
15         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
16         for SetVector and IsAligned.
17
18 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
19
20         * mini.c: Remove unused mono_normalize_opcodes () function.
21
22 2008-11-26  Mark Probst  <mark.probst@gmail.com>
23
24         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
25         using the new atomic add ops now.
26
27         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
28         add.
29
30 2008-11-26  Mark Probst  <mark.probst@gmail.com>
31
32         * mini-ppc64.c: Several fixes.
33
34 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
35
36         * cpu-mips.md: added jump_table
37         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
38
39 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
40
41         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
42
43 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
44
45         * mini-ops.h: corrected a handful of MIPS opcodes.
46
47 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
48
49         * aot-compiler.c: MIPS to use ELF writer
50
51 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
52
53         * mini-codegen.c: remove MIPS specific assert.
54
55 2008-11-25  Mark Probst  <mark.probst@gmail.com>
56
57         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
58         fixes.  PPC64 now passes most of the runtime regressions.
59
60 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
61
62         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
63         volatile intervals a bit.
64
65 2008-11-24  Mark Probst  <mark.probst@gmail.com>
66
67         * basic-long.cs: New test case.
68
69 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
70
71         * mini.c (mini_method_compile): Disable globalra for large methods for 
72         now.
73
74         * regalloc2.c (order_moves): Add fp support.
75
76         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
77         source bblock ends with an OP_BR_REG.
78
79         * ratests.cs: Add a new test.
80
81 2008-11-23  Mark Probst  <mark.probst@gmail.com>
82
83         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
84         sharing.  PPC64 now passes generics.exe.
85
86 2008-11-23  Mark Probst  <mark.probst@gmail.com>
87
88         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
89
90 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
91
92         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
93         memory when mono_jit_info_table_find () can't find the method in the
94         LMF case.
95
96         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
97         AOTed code too.
98         
99         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
100         writer too.
101
102 2008-11-23  Mark Probst  <mark.probst@gmail.com>
103
104         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
105         Several fixes.  PPC64 now runs exceptions.exe and
106         devirtualization.exe.
107
108 2008-11-22  Mark Probst  <mark.probst@gmail.com>
109
110         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
111         arrays.exe and basic-math.exe.
112
113 2008-11-22  Mark Probst  <mark.probst@gmail.com>
114
115         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
116         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
117
118 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
119
120         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
121
122 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
123
124         * method-to-ir.c: Move bounds checking macros to ir-emit.h
125
126         * ir-emit.h: Move macros from method-to-ir.c to here.
127
128 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
129
130         * mini-ops.h: Correct the long simd ops to use LREG.
131
132 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
133
134         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
135         
136         * mini-ops.h: Correct the dreg type of a few long opcodes.
137
138         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
139         Add netbsd support.
140
141 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
142
143         * mini-ppc.c: remove negative stack references in epilog
144         for platforms that don't support the red zone.
145
146 2008-11-21  Mark Probst  <mark.probst@gmail.com>
147
148         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
149         point regs.  Now PPC64 passes basic-calls.exe.
150
151 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
152
153         * basic-simd.cs: Add tests for accessors of Vector2l.
154
155 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
156
157         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
158
159         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
160         
161         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
162
163 2008-11-21  Mark Probst  <mark.probst@gmail.com>
164
165         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
166         PPC64 passes basic-long.exe.
167
168 2008-11-20  Mark Probst  <mark.probst@gmail.com>
169
170         * decompose.c: Decompose carry and overflow add on PPC64 like on
171         other 64 bit archs.  Don't decompose sub at all on PPC64.
172
173         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
174         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
175         basic-long.exe.
176
177 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
178
179         * basic-simd.cs: Add tests for accessors of Vector2d.
180
181 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
182
183         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
184
185         * cpu-x86.md: Same.
186
187         * mini-x86.c (mono_arch_output_basic_block): Same.
188         
189         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
190
191 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
192
193         * basic-simd.cs: Add tests for accessors of Vector4f.
194
195 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
196
197         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
198
199         * cpu-x86.md: Same.
200
201         * mini-x86.c (mono_arch_output_basic_block): Same.
202         
203         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
204
205 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
206
207         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
208
209 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
210
211         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
212
213         * cpu-x86.md: Same.
214
215         * mini-x86.c (mono_arch_output_basic_block): Same.
216         
217         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
218
219 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
220
221         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
222
223 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
224
225         * simd-intrinsics.c: Enable setters for Vector16sb.
226
227 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
228
229         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
230
231         * cpu-x86.md: Same.
232
233         * mini-x86.c (mono_arch_output_basic_block): Same.
234         
235         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
236
237 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
238
239         * simd-intrinsics.c: Implement setter for Vector8us.
240
241 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
242
243         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
244         for dead variables.
245
246 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
247
248         * mini-ppc.c: remove references to the red zone in the prolog
249         (for systems that don't support it).
250
251 2008-11-19  Mark Probst  <mark.probst@gmail.com>
252
253         * cpu-ppc64.md: Fixed a few instruction lengths.
254
255         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
256         now.
257
258 2008-11-19  Mark Probst  <mark.probst@gmail.com>
259
260         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
261         basic.exe now.
262
263 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
264
265         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
266
267 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
268
269         * mini-ops.h: Added OP_INSERT_I2.
270
271         * cpu-x86.md: Same.
272
273         * mini-x86.c (mono_arch_output_basic_block): Same.
274         
275         * simd-intrinsics.c: Implement setter for Vector8s.
276
277         * simd-methods.h: Add the names of get setters of Vector8s.
278
279 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
280
281         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
282         
283         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
284         parameters.
285
286         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
287
288 2008-11-18  Mark Probst  <mark.probst@gmail.com>
289
290         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
291         for PPC64.  An empty program runs now.
292
293 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
294
295         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
296
297         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
298         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
299         info for JITted code is emitted into a shared library, loadable into gdb.
300
301 2008-11-18  Mark Probst  <mark.probst@gmail.com>
302
303         * Makefile.am: Changes to build PPC64.
304
305         * mini-arch.h: Include mini-ppc64.h on PPC64.
306
307 2008-11-18  Mark Probst  <mark.probst@gmail.com>
308
309         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
310         in PPC code up to r119147.
311
312 2008-11-18  Mark Probst  <mark.probst@gmail.com>
313
314         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
315         cpu-ppc64.md: Changes for PPC64.
316
317         Based on code submitted by andreas.faerber@web.de at
318         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
319         X11/MIT license.
320
321 2008-11-18  Mark Probst  <mark.probst@gmail.com>
322
323         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
324         cpu-ppc64.md: Copied from the corresponding PPC files from
325         r118846.
326
327 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
328
329         * mini-ops.h: Added OP_ROUND.
330
331         * cpu-x86.md: Added round.
332
333         * mini-x86.c: Added support for intrinsicing Math.Round (double).
334
335         * basic-math.cs: Added test_0_round to test rounding.
336
337         Contributed under MIT/X11 license.
338
339 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
340
341         * aot-compiler.c : Fix the Winx64 build.
342
343         Contributed under MIT/X11 license.
344
345 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
346
347         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
348         in OP_EXTRACT_R8 to avoid possible stack corruption.
349
350 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
351
352         * mini-ops.h: Added OP_EXTRACT_R8/I8.
353
354         * cpu-x86.md: Added extract_r8.
355
356         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
357         
358         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
359         a couple of OP_EXTRACT_I4.
360
361         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
362
363         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
364
365 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
366
367         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
368         and not 4.1. 
369
370 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
371
372         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
373         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
374
375         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
376         are not needed any more.
377
378         * mini.h: Remove the unused INS_LIST macros.
379
380         * mini.c (mini_method_compile): Remove a disable globalra case which is no
381         longer needed.
382
383         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
384         ir-emit.h.
385
386         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
387         mono_alloc_ireg () instead.
388
389         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
390         macros.
391
392         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
393         on amd64.
394
395         * aot-runtime.c (load_aot_module): Disable AOT when running under
396         CAS.
397
398         * mini-amd64.h: Change the monitor fastpath defines to check for
399         !PLATFORM_WIN32 so they work on *bsd too.
400
401         * mini.h mini.c mini-hhpa.c: Remove more unused code.
402
403         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
404
405         * mini.h (MonoCompile): Remove new_ir flag.
406
407         * regalloc.h regalloc.c: Remove unused code.
408
409         * cpu-*.md: Remove more unused opcodes.
410
411         * simple-cee-ops.h simple-mini-ops.h: Removed.
412
413         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
414         
415 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
416
417         * aliasing.h: Removed.
418
419         * *.c: Remove references to aliasing.h and inssel.h.
420
421         * mini.c: Remove additional unused functions.
422
423         * mini-ops.h cpu-*.md: Remove unused opcodes.
424
425 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
426
427         Remove the old JIT code.
428
429         * inssel*.brg: Removed.
430
431         * ssa.c abcremoval.c aliasing.c: Removed.
432
433         * ssa2.c: Renamed to ssa.c.
434
435         * abcremoval2.c: Renamed to abcremoval.c.
436
437         * *.c: Removed all !cfg->new_ir code.
438
439         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
440         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
441
442         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
443         
444 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
445
446         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
447         to simplify the code and cut back on the number of global symbols in the AOT
448         file.
449         
450         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
451
452 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
453
454         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
455         with the got/got_info tables.
456
457         * mini.h: Bump AOT file format version.
458         
459         * unwind.h: New file, contains definitions for stack unwinding.
460
461         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
462         to cfg->unwind_ops.
463         
464         * aot-compiler.c: Generalize the emitting of unwind information to use the
465         information in cfg->unwind_ops.
466
467         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
468
469         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
470         AOT method frames. Enable writing symbols for methods by default.
471
472 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
473
474         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
475         and make it work with vectors of element sizes 1, 2 and 4.
476
477         * simd-intrinsics.c: Enable getter for all vectors with element size
478         1, 2 or 4.
479
480         * simd-methods.h: Add the names of other getters.
481
482         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
483
484         * cpu-x86.md: Same.
485
486         * mini-x86.c: Same.
487
488 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
489
490         * mini-ppc.h: portability fix.
491
492 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
493
494         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
495         buggy and will overwrite it.
496
497 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
498
499         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
500         Use it to emit local symbols for all methods so AOTed methods show up with
501         their full name in gdb/valgrind output.
502
503 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
504
505         * mini-ppc.c: portability fixes.
506
507 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
508
509         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
510         entries out of the if (!generic_shared...) code so it is always done.
511         (mono_class_init_trampoline): Do the patching when running under valgrind
512         too, newer versions of valgrind have no problems with it.
513
514 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
515
516         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
517         further sections.
518
519 2008-11-13  Mark Probst  <mark.probst@gmail.com>
520
521         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
522         filters.
523
524 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
525
526         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
527
528 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
529
530         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
531
532         * cpu-x86.md: Same.
533
534         * mini-x86.c: Same.
535
536         * simd-intrinsics.c: Same.
537
538 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
539
540         * simd-intrinsics.c: Enable constructor intrinsics for all types.
541
542 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
543
544         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
545         to work with more Vector types.
546
547 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
548
549         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
550         store the elemens directly instead of using and intermediate.
551
552 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
553
554         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
555
556         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
557         to preserve %eax for aot plt trampolines.
558
559         * aot-compiler.c (compile_method): Don't skip synchronized methods.
560         (encode_method_ref): Flag synchronized methods so they won't go through
561         the AOT trampoline.
562
563         * aot-compiler.c: Additional work to support AOTing synchronized methods/
564         wrappers.
565
566         * cpu-ia64.md (jmp): Increase max length.
567
568 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
569
570         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
571         open generic classes.
572
573         * aot-compiler.c: Enable the ELF writer on ELF platforms.
574
575         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
576         box+brtrue optimization since it causes test failures on x86.
577
578 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
579
580         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
581
582         * cpu-x86.md: Same.
583
584         * mini-x86.c: Same.
585
586         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
587         for simd ctor values. 
588
589         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
590         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
591
592 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
593
594         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
595         LogicalRightShift.
596
597         * simd-instrincs.c: Same.
598
599         * basic-simd.cs: Same.
600
601 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
602
603         * ratests.cs: Add more tests.
604
605         * regalloc2.c (add_spill_code): Handle more corner cases.
606
607 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
608
609         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
610         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
611         both the source an destination of an instruction.
612
613 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
614
615         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
616         wapihandles.c: more portability changes.
617
618 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
619
620         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
621         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
622         safe to execute in a signal handler and the kernel provides better
623         the info in /proc/self/smaps. Avoid the assert on sigaction during
624         cleanup.
625
626 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
627
628         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
629         do the bblock linking hack if it is actually needed.
630
631         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
632         up linking.
633
634         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
635         crash problem is fixed.
636
637         * branch-opts.c (mono_remove_critical_edges): Link up newly added
638         bblocks.
639
640         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
641         for catch clauses.
642         (mini_method_compile): Set the starting value of next_vreg to 
643         MAX_IREGS + MAX_FREGS when using globalra.
644
645         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
646         filter clauses with BB_EXCEPTION_HANDLER.
647
648         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
649
650 2008-11-10  Mark Probst  <mark.probst@gmail.com>
651
652         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
653         space for stdcall.  Fixes regressions on Win32.
654
655 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
656
657         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
658         bblocks.
659         (linear_scan): Remove an assert which doesn't seem to be needed.
660
661         * local-propagation.c (mono_local_deadce): Avoid a call to
662         MONO_DELETE_INS which would screw up the instruction linking.
663
664         * mini.c (mono_decompose_op_imm): Make this work with globalra.
665
666         * regalloc2.c: Upgrade to work the current JIT code.
667
668 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
669
670         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
671         case.
672
673         * aot-runtime.c: Remove some dead code.
674
675         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
676         consistency.
677         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
678
679         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
680         trampolines using sscanf since atoi doesn't work on large unsigned values.
681
682         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
683         Initialize code_size.
684
685 2008-11-08  Mark Probst  <mark.probst@gmail.com>
686
687         * method-to-ir.c (mini_emit_inst_for_method): Make
688         Interlocked.CompareExchange work for Int arguments on 32 bit
689         archs, as well.
690
691 2008-11-07  Mark Probst  <mark.probst@gmail.com>
692
693         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
694
695 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
696
697         * main.c Fix MSVC build.
698
699         Contributed under MIT/X11 license.
700
701 2008-11-06  Mark Probst  <mark.probst@gmail.com>
702
703         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
704         alignment larger than 8 bytes are aligned correctly, too.
705
706         * mini.c: Honor the min_align field of MonoClass when laying out
707         the stack.
708
709 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
710
711         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
712
713         * aot-compiler.c (emit_plt): Fix a warning.
714         
715         * aot-compiler.c: Implement ARM support in the binary writer.
716
717 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
718
719         * basic-simd.cs: Add test for getter with byref arg.
720         Fix the naming of a few tests.
721         Add missing checks to a test.
722
723 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
724
725         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
726
727         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
728         most of the full-aot support for monitor enter/exit trampolines.
729
730         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
731         enter/exit trampoline creation functions.
732
733         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
734         make dist.
735
736 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
737
738         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
739         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
740         implement the needed functionality without adding crap to the runtime.
741
742 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
743
744         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
745         non-x86 builds.
746
747         * mini.c (mono_build_date): New global version holding the build date in
748         string format.
749         
750         * Makefile.am (buildver.c): Generate a file containing the build date.
751
752         * main.c: Set the build date from the generated file.
753
754         * mini.c (mono_get_runtime_build_info): New helper function returning build
755         information in a string format.
756         
757         * driver.c (mono_main): Print the build date in --version.
758
759         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
760         file when the bind-to-runtime-version option is used.
761
762 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
763
764         * simd-intrinsics.c: Fix bug when using getters and byref args. 
765
766 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
767
768         * simd-methods.h: Rename prefetch methods.
769
770         * simd-intrinsics.c: Same.      
771
772 2008-11-05  Mark Probst  <mark.probst@gmail.com>
773
774         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
775         sizes.
776
777 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
778
779         * aot-compiler.c: Use the bundled elf header files instead of depending on
780         the system one.
781         
782         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
783         mempool.
784
785         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
786         on every call.
787
788 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
789
790         * cpu-x86.md: Add store nta ops.
791
792         * mini-ops.h: Same.
793
794         * mini-x86.c: Same.
795
796         * mini.h: Add an enum for simd prefetch modes.
797
798         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
799         of store. Use the changed code to support store nta.
800
801         * simd-intrinsics.c: Add prefetch ops for all vector types.
802
803 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
804
805         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
806         threads.
807         
808         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
809         names.
810
811         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
812         trampolines.
813
814 2008-11-04  Mark Probst  <mark.probst@gmail.com>
815
816         * mini-x86.c: Fixed commit.
817
818 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
819
820         * aot-compiler.c (emit_plt): Align the plt section only on x86.
821
822 2008-11-04  Mark Probst  <mark.probst@gmail.com>
823
824         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
825         and MONITOR_EXIT, for the ASM fastpaths.
826
827         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
828         available.
829
830         * mini.c, patch-info.h: Signature and patch infos for
831         Monitor.Enter/Exit trampolines.
832
833         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
834
835         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
836         Monitor.Enter/Exit ASM fastpath for Linux.
837
838 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
839
840         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
841
842         * objects.cs: Add a new test.
843         
844         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
845
846         * aot-runtime.c (load_method): Run class initialization in the PLT case even
847         if MONO_LOG_LEVEL is set.
848
849         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
850
851         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
852
853         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
854         
855         * aot-compiler.c: Change the relocation code to use virtual addresses instead
856         of file offsets. Align the sections belonging to the data segment to 
857         PAGESIZE.
858
859 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
860
861         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
862         elf.h. Port it to amd64.
863
864 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
865
866         * driver.c: Enable SIMD by default.
867
868 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
869
870         * cpu-x86.md: Add prefetch op.
871
872         * mini-ops.h: Same.
873
874         * mini-x86.c: Same.
875
876         * mini.h: Add an enum for simd prefetch modes.
877
878         * simd-methods.h: Add prefetch function names.
879
880         * simd-intrinsics.c: Add prefetch ops for all vector types.
881
882 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
883
884         * aot-compiler.c (emit_bytes): Speed this up a little.
885
886 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
887
888         * aot-compiler.c: Add JIT time etc. statistics.
889         
890         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
891
892         * mini.h (MonoCompile): Add 'got_offset' field.
893
894         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
895         method_got_offsets array.
896
897         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
898         wrappers.
899
900         * aot-compiler.c (compile_method): Add generic method instances referenced
901         by the method to the list of methods to be compiled, this is required so if
902         A<T> references B<T>, and another assembly references A<int>, then it will
903         also get a copy of B<int>.
904
905         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
906         when checking for monitor enter/exit.
907
908 2008-10-30  Mark Probst  <mark.probst@gmail.com>
909
910         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
911         for Monitor.Enter and Monitor.Exit if enabled.
912
913         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
914         Solaris.
915
916 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
917
918         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
919         of an OP_MOVE. Fixes #440046.
920
921         * basic-long.cs: Add a new test.
922
923 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
924
925         * mini.h: Add synchronization note for the managed counter-part.
926
927         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
928         returns the simd caps of the current cpu.
929
930 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
931
932         * basic-simd.cs: Remove Console.WriteLine.
933
934 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
935
936         * basic-simd.cs: New tests for Vector2ul.
937
938 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
939
940         * simd-intrinsics.c: Add new vector type Vector2ul.
941
942 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
943
944         * basic-simd.cs: New tests for Vector2l.
945
946 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
947
948         * cpu-x86.md: Add long version of most packed int ops.
949
950         * mini-ops.h: Same.
951
952         * mini-x86.h: Same.
953
954         * simd-intrinsics.c: Add new vector type Vector2l.
955
956 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
957
958         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
959
960         * simd-methods.h: Remove SN_op_BitwiseXor.
961
962 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
963
964         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
965         alignment.
966
967 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
968
969         * basic-simd.cs: Test for Vector2d.
970
971         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
972         value.
973
974 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
975
976         * cpu-x86.md: Add double version of all packed float ops.
977
978         * mini-ops.h: Same.
979
980         * mini-x86.h: Same.
981
982         * simd-intrinsics.c: Add new vector type Vector2d.
983
984         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
985
986         * simd-methods.h: Add Duplicate.
987
988 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
989
990         * basic-simd.cs: Test for packing with signed saturation.
991
992 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
993
994         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
995         found in the TYPESPEC table.
996
997 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
998
999         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
1000         too.
1001
1002         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
1003
1004         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
1005         instead of the RVA, since the RVA can be changed by tools like the cil 
1006         stripper.
1007
1008         * method-to-ir.c (mono_method_to_ir2): Ditto.
1009
1010         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
1011         (deserialize_variable): Ditto.
1012
1013 2008-10-25  Martin Baulig  <martin@ximian.com>
1014
1015         * debug-mini.c (write_variable): Use
1016         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
1017
1018 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1019
1020         * cpu-x86.md: Add unsigned variants of packd and packw.
1021
1022         * mini-ops.h: Same.
1023
1024         * mini-x86.h: Emit the right instruction for packd and packw.
1025         Add unsigned variants of packd and packw.
1026
1027         * simd-intrinsics.c: Packd and packw were used in place of their
1028         unsigned variants. Change that.
1029         Add intrinsics for (Signed)PackWithSignedSaturation.
1030
1031         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
1032
1033 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1034
1035         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
1036
1037 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1038
1039         * mini-ops.h: Remove dword packed add/sub with saturation ops.
1040
1041         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
1042
1043         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
1044         sse instructions.
1045
1046         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
1047
1048 2008-10-24  Mark Probst  <mark.probst@gmail.com>
1049
1050         * method-to-ir.c, mini.c: Special casing for the synchronized
1051         wrapper for the ldtoken+GetTypeFromHandle case.
1052
1053 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1054
1055         * mini.c (mono_replace_ins): Move this to branch-opts.c.
1056
1057         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
1058         created/split bblocks.
1059
1060 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1061
1062         * mini-ops.h: Add packed signed mul high.
1063         
1064         * cpu-x86.md: Same.
1065
1066         * mini-x86.c (mono_arch_output_basic_block): Same.
1067
1068         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
1069
1070         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
1071
1072 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
1073
1074         * basic-simd.cs: Tests for Vector16sb.
1075
1076 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
1077
1078         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
1079
1080 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1081
1082         * mini-ops.h: Add packed signed min, max and compare greater.
1083         
1084         * cpu-x86.md: Same.
1085
1086         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
1087         saturation.
1088
1089         * simd-methods.h: Add CompareGreaterThan.
1090
1091         * simd-methods.h: Remove CompareEquals.
1092
1093         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
1094
1095         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
1096
1097         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
1098         CompareEqual.
1099
1100 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
1101
1102         * basic-simd.cs: Fix tests due to change in the API.
1103
1104 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1105
1106         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
1107
1108 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1109
1110         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
1111
1112         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
1113         inst_offset as this has invalid values for LDADDR.
1114
1115 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1116
1117         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1118
1119         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
1120
1121 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1122
1123         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
1124         for accessing field->data.
1125
1126 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1127
1128         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
1129
1130 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
1131
1132         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
1133
1134         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
1135
1136 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
1137
1138         * dominators.c (mono_compute_natural_loops): Allocate GList enties
1139         from the cfg mempool.
1140
1141 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1142
1143         * basic-simd.cs: Tests for new methods in Vector8us.
1144
1145 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
1146
1147         * mini-ops.h: Add multiply and store high.
1148         
1149         * cpu-x86.md: Same.
1150
1151         * mini-x86.c (mono_arch_output_basic_block): Same.
1152
1153         * simd-methods.h: Same.
1154
1155         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
1156         and CompareEqual.
1157
1158 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1159
1160         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
1161         mono_class_setup_vtable ().
1162
1163         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
1164         mono_class_get_vtable_entry () for accessing klass->vtable.
1165
1166         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
1167
1168         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
1169         found.
1170
1171         * method-to-ir.c (mono_save_token_info): Don't save references made from
1172         wrappers.
1173
1174         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
1175         of generic instances.
1176
1177         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
1178
1179 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1180
1181         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
1182         OP_JMP depends on the method signature.  Calculate it properly.
1183
1184 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
1185         
1186         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
1187         called directly.
1188
1189         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
1190         instances.
1191         (emit_extra_methods): Add another table mapping method indexes to 
1192         offsets in the extra_method_info table.
1193
1194         * mini.h: Bump AOT file format version.
1195         
1196         * aot-runtime.c: Merge most of the code from mono_aot_get_method
1197         and mono_aot_get_method_from_token () into one function.
1198
1199 2008-10-19  Mark Probst  <mark.probst@gmail.com>
1200
1201         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
1202         separate counter.
1203
1204 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
1205
1206         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
1207         methods.
1208
1209         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
1210         disable_aot.
1211
1212         * mini.c (mono_patch_info_equal): Compare the generic context as well.
1213
1214         * mini.h: Bump aot file format version.
1215
1216         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
1217         AOT file can contain native code for methods which are not in the METHOD
1218         table. Generate code for non-sharable generic instances of generic methods
1219         found in the METHODSPEC table.
1220         
1221         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
1222         encoding generic type handles.
1223
1224         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
1225         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
1226
1227         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
1228         macros + MONO_ADD_INS.
1229
1230         * mini.c (mono_jump_info_token_new2): New function which takes a generic
1231         context as well.
1232
1233         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
1234
1235         * mini.h: Bump aot file format version.
1236
1237         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
1238
1239 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1240
1241         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
1242         platforms, with definable stack alignment value.  Set to 16 now
1243         for all platforms.
1244
1245         * mini.c, mini.h, driver.c: Command line option for disabling
1246         stack alignment.
1247
1248 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1249
1250         * basic-simd.cs: Tests for new methods in Vector4ui.
1251
1252 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1253
1254         * mini-ops.h: Add packed int shuffle.
1255         
1256         * cpu-x86.md: Same.
1257
1258         * mini-x86.c (mono_arch_output_basic_block): Same.
1259
1260         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
1261         extract mask, max, min, shuffle.
1262
1263         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
1264
1265 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
1266
1267         * basic-simd.cs: Tests for new methods in Vector8us.
1268
1269 2008-10-17  Mark Probst  <mark.probst@gmail.com>
1270
1271         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
1272         RuntimeTypeHandle, not a TypedReference.
1273
1274 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
1275
1276         * simd-intrinsics.c: remove relocations.
1277
1278 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
1279
1280         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
1281         optimizations from the x86 backend.
1282
1283 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
1284
1285         * simd-methods.h, simd-intrinsics.c: debloat method names and
1286         prepare for no relocations.
1287
1288 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1289
1290         * mini-ops.h: Add packed min/equal and sum of absolute differences.
1291         
1292         * cpu-x86.md: Same.
1293
1294         * mini-x86.c (mono_arch_output_basic_block): Same.
1295
1296         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
1297         extract mask, max, min and sum of absolute differences.
1298
1299         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
1300         method name.
1301
1302 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1303
1304         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
1305         Renamed one test for consistency.
1306
1307 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1308
1309         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
1310         fix to the code that deal with other blocks.
1311
1312 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1313
1314         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
1315
1316 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
1317
1318         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
1319         that deals with vreg interference. Explicitly check for OP_LDADDR to be
1320         able to process the source reg.
1321
1322 2008-10-16  Martin Baulig  <martin@ximian.com>
1323
1324         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
1325
1326         * inssel.brg: Add `OP_HARD_NOP'.
1327
1328         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
1329
1330         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
1331         `OP_HARD_NOP' instruction when running inside the debugger.
1332
1333         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
1334         `OP_HARD_NOP' instruction when running inside the debugger.
1335
1336 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1337
1338         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
1339         now works. The issue with the regalloc tripping up no longer
1340         happens.
1341
1342         * simd-intrinsics.c (load_simd_vreg): Same.
1343
1344 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1345         
1346         * basic-simd.cs: Tests for new Vector8ui methods.
1347
1348 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1349
1350         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
1351         only for type. This fixes crashes where MonoInst::klass is checked
1352         for ops of type != VTYPE or OBJ.
1353
1354         * simd-intrinsics.c (load_simd_vreg): Same.
1355
1356 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
1357
1358         * mini-ops.h: Add ops for packed shuffle/max/avg and
1359         extract mask.
1360         
1361         * cpu-x86.md: Same.
1362
1363         * mini-x86.c (mono_arch_output_basic_block): Same.
1364
1365         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
1366         extract mask.
1367
1368         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
1369         to emit extract mask op.
1370
1371         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
1372         to emit word shuffles.
1373
1374 2008-10-15  Mark Probst  <mark.probst@gmail.com>
1375
1376         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
1377         the largest alignment needed by a variable, but at least
1378         sizeof(gpointer).
1379
1380 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1381
1382         * basic-simd.cs: Tests for the fixes in the last commit.
1383
1384 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1385
1386         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
1387         no longer handles STACK_PTR input.
1388
1389         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
1390
1391         * simd-intrinsics.c (load_simd_vreg): New function that works like 
1392         get_simd_vreg   but handles STACK_PTR input.
1393
1394         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
1395         as the input can be an arbitrary pointer.
1396
1397         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
1398         LDADDR local optimization directly otherwise use a store op.
1399
1400 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1401
1402         * basic-simd.cs: Tests for dup low and dup high.
1403
1404 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1405
1406         * mini-ops.h: Add dup low and dup high ops.
1407         
1408         * cpu-x86.md: Same.
1409
1410         * mini-x86.c (mono_arch_output_basic_block): Same.
1411
1412         * simd-intrinsics.c (vector4f_intrinsics): Same.
1413
1414 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1415
1416         * basic-simd.cs: Tests for recently added functionality.
1417
1418 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1419
1420         * mini-ops.h: Add remaining sse1 fp ops.
1421         
1422         * cpu-x86.md: Add remaining sse1 fp ops.
1423
1424         * mini-x86.c (mono_arch_output_basic_block): Same.
1425
1426         * mini.h: Add enum for simd FP compare conditions.
1427
1428         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
1429
1430         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
1431         so the backed can generate the appropriate op.
1432
1433 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1434         This patch squeese one more byte from the SimdIntrinsc struct.
1435
1436         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
1437         a a shift amount intead of simply or'ing it.
1438
1439         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
1440
1441         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
1442         byte so we can have an aditional flags field without increasing struct size.
1443
1444         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
1445         against the simd_supported_versions bitmask.
1446
1447         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
1448
1449 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
1450
1451         * mini.c: remove rawbuffer code (the only use here is unsafe because
1452         it takes locks during signal handling and the kernel now provides much
1453         better info in proc/pid/smaps these days).
1454
1455 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
1456
1457         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
1458         OP_X86_PUSH_OBJ. Fixes #434620.
1459
1460         * objects.cs: Add a test.
1461         
1462 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
1463
1464         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
1465         that the packuswb/packusdw don't work with unsigned numbers for what
1466         would be negative numbers in signed format.
1467
1468         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
1469         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
1470
1471         * mini-ops.h: Add doubleword forms of many ops and packing ones.
1472
1473         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
1474
1475         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
1476
1477         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
1478
1479         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
1480         add more ops.
1481
1482         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
1483         version as the enum in mini.h.
1484
1485         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
1486         for sse3 ops, check the simd_version field if present. This way the code
1487         works with all versions of sse.
1488
1489 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1490
1491         * simd-intrinsics.c: Fixed intrinsic name typo.
1492
1493         * mini.h: Added missing simd exported function.
1494
1495         * basic-simd.cs: Added tests for Vector4ui.
1496         Fixed broken test for Vector16b.
1497
1498 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
1499
1500         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
1501         the max length to 64.
1502
1503 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1504
1505         * method-to-ir.c: Only do the fast virtual generic method call for
1506         non-wrapper methods.
1507
1508         * mini.h, mini-trampolines.c: The new generic virtual remoting
1509         trampoline handles virtual method calls via the vtable (as done by
1510         the fast virtual generic method calls) to remoting proxies.
1511
1512         * mini.c (mono_jit_create_remoting_trampoline): For generic
1513         methods reate a generic virtual remoting trampoline.
1514
1515         * mini-amd64.h: Enable fast virtual generic method calls again.
1516
1517 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1518
1519         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
1520         restore registers when doing tail calls.
1521
1522 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1523
1524         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
1525         Vector4ui.
1526
1527 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1528
1529         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
1530
1531 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1532
1533         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
1534
1535 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1536
1537         * basic-simd.cs: Retrofit for API changes.
1538
1539 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1540
1541         * mini-ppc.c: Handle integer stack arguments for tail calls.
1542
1543 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1544
1545         * optflags-def.h: Removed sse3 optimization.
1546
1547         * driver.c: Same.
1548
1549         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
1550         sse3.
1551
1552         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
1553
1554         * mini.h: Added enumeration with simd versions.
1555
1556         * simd-intrinsics.c (emit_intrinsics): Use the new static var
1557         for detecting SSE3.
1558
1559         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
1560
1561         * mini.c (mini_init): Call mono_simd_intrinsics_init.
1562
1563 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1564
1565         * basic-simd.cs: Added tests for Vector8u and Vector16u.
1566
1567         * basic-simd.cs: Fixed test naming.
1568
1569 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1570
1571         * mini-ops.h: Added ops for packed and saturated math, shifts
1572         and packing/unpacking.
1573
1574         * cpu-x86.md: Added descriptors for the above ops.
1575
1576         * mini-x86.c: Added code to emmit the above ops.
1577
1578         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
1579
1580 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
1581
1582         * aot-compiler.c (compile_method): Enable AOT for generic code.
1583
1584         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
1585
1586 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
1587
1588         * mini.c: add a workaround for a common screwup that ends up blamed
1589         to mono (other processes blocking signal delivery).
1590
1591 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1592
1593         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
1594         in the LDFLD/STFLD opcodes. Fixes #432673.
1595
1596         * iltests.il.in: Add a new test.
1597
1598 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
1599
1600         * mini-arm.c: attach the thread in unmanaged->managed transitions
1601         using delegates (bug #433148).
1602
1603 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1604
1605        * basic-simd.cs: Use new ShuffleSel constants.
1606
1607 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1608
1609         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
1610
1611         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
1612         only disable simd intrinsics if no sse2 is detected.
1613
1614         * optflags-def.h: Added sse3.
1615
1616         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
1617         is disabled.
1618
1619 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1620
1621         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
1622         when adding delegate-invoke wrappers.
1623
1624 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1625
1626         * Makefile.am: Reenable the simd tests.
1627
1628 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
1629
1630         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
1631           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
1632           other vreg is allocated to that hreg.
1633
1634         Contributed under MIT/X11 license.
1635
1636 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1637
1638         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
1639         yet checked in.
1640
1641 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1642
1643         * basic-simd.cs: New test suite for SIMD intrinsics.
1644
1645         * Makefile.am: Added new tests.
1646
1647 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1648
1649         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
1650
1651         * mini-ops.h: Same.
1652
1653         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
1654
1655         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
1656         using SSE2 aware opcodes.
1657
1658         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
1659         is enabled, this code path is only reachable if conversion ops are emmited after
1660         mono_method_to_ir.
1661
1662         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
1663
1664         This optimization saves 6 bytes per conversion against the old version.
1665
1666 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1667
1668         * aot-compiler.c (compile_method): Don't skip methods referencing 
1669         generic methods without a corresponding entry in token_info_hash, since
1670         encode_method_ref () can handle all generic methods now.
1671
1672         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
1673         generic context is set.
1674         
1675         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
1676         generic sharing of LDTOKEN.
1677
1678 2008-10-06  Mark Probst  <mark.probst@gmail.com>
1679
1680         * mini-amd64.h: Temporarily disabled fast virtual generic method
1681         calls because it breaks the System.Runtime.Remoting tests.
1682
1683 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1684
1685         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
1686
1687         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
1688         so inlining actually works.
1689         (check_inline_caller_method_name_limit): Ditto.
1690
1691 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
1692
1693         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
1694         64 bit safety (from Olaf Hering and Andreas Färber).
1695
1696 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1697         
1698         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
1699         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
1700         unused virtual call support code.
1701
1702         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
1703         
1704         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
1705         which can't use aot trampolines.
1706         (decode_patch): Don't create aot trampolines for methods which can't use
1707         them.
1708
1709         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
1710         use aot trampolines.
1711
1712         * mini.h: Bump AOT image format version.
1713         
1714 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
1715
1716         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
1717         to save_token_info () since cmethod is inflated for constrained calls.
1718
1719         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
1720
1721 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
1722
1723         * Makefile.am: Add build rules for ppc64.
1724         This avoids the build failing at pedump with unresolved symbols
1725         due to lack of arch_sources. Instead it will now fail earlier
1726         due to lack of cpu-ppc64.md.
1727
1728         Contributed under MIT/X11 license.
1729
1730 2008-10-04  Mark Probst  <mark.probst@gmail.com>
1731
1732         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
1733         tail calls.
1734
1735         * iltests.il.in: Add test case for tail call with many arguments.
1736
1737 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
1738
1739         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
1740         to the fast virtual generic method code until the aot case is fixed.
1741
1742 2008-10-03  Mark Probst  <mark.probst@gmail.com>
1743
1744         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
1745
1746 2008-10-03  Mark Probst  <mark.probst@gmail.com>
1747
1748         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
1749         thunks.
1750
1751 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
1752         
1753         * simd-intrinsics.c: Forgot to add this one.
1754
1755         * mini-codegen.c: Fix macro in case SIMD is not supported.
1756
1757 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
1758         
1759         This patch land initial JIT support for simd intrinsics.
1760
1761         * mini-x86.h: Added new define to make --enable_minimal work on x86.
1762
1763         * Makefile.am: Added simd-intrinsics.c
1764
1765         * simd-intrinsics.c: New file with simd instrinsic related
1766         code.
1767
1768         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
1769
1770         * cpu-x86.md: Add simd related instructions.
1771
1772         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
1773
1774         * driver.c: Added two new --regression variants.
1775
1776         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
1777
1778         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
1779
1780         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
1781         extract some complicated logic to helper functions.
1782
1783         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
1784
1785         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
1786
1787         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
1788         the specialized simplification pass.
1789
1790         * method-to-ir.c (mono_spill_global_vars): Use new macro.
1791
1792         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
1793
1794         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
1795         table.
1796
1797         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
1798         if MONO_ARCH_NEED_SIMD_BANK is defined.
1799
1800         * mini-ops.h: Added the new simd ops.
1801
1802         * mini-x86.c: Added mono_arch_xregname.
1803
1804         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
1805
1806         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
1807
1808         * mini-x86.h: Define simd related MONO_ARCH macros.
1809
1810         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
1811
1812         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
1813
1814         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
1815         MONO_CLASS_IS_SIMD to deal with simd related IR.
1816
1817         * mini.h (MonoInst): Added spill_var to the backend union.
1818
1819         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
1820
1821         * mini.h: Added forward declarations of the new simd fuctions.
1822
1823         * optflags-def.h: Added new optimization names SIMD.
1824
1825         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
1826
1827         * regalloc.h: Added support for working with 3 register banks.
1828
1829         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
1830
1831         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
1832
1833 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
1834
1835         * mini-exceptions.c: remove 64 bit related ifdef clutter.
1836
1837 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
1838
1839         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
1840         instead of one on 64 bit systems.
1841
1842         * method-to-ir.c: Remove unused includes.
1843
1844 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
1845
1846         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
1847         cfg->used_int_regs, since the two are different on arm.
1848
1849 2008-10-02  Mark Probst  <mark.probst@gmail.com>
1850
1851         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
1852         mono_method_get_vtable_index() to get the vtable index.
1853
1854 2008-10-02  Mark Probst  <mark.probst@gmail.com>
1855
1856         * method-to-ir.c (mono_method_to_ir2): Don't create native
1857         wrappers for array methods, because they're never called (and if
1858         they were called they wouldn't work).
1859
1860 2008-10-02  Mark Probst  <mark.probst@gmail.com>
1861
1862         * method-to-ir.c (mono_method_to_ir2): Array methods are
1863         special-cased and must not be invoked indirectly via the (M)RGCTX
1864         when generic sharing is turned on.  Fixes #431413.
1865
1866 2008-10-01  Mark Probst  <mark.probst@gmail.com>
1867
1868         * method-to-ir.c: When generic sharing is active, call
1869         non-interface virtual generic methods via the standard trampoline.
1870
1871         * mini-trampolines.c: Handle virtual generic shared methods.
1872
1873         * mini.h, mini-x86.c, mini-x86.h: New argument for
1874         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
1875         method thunks and which is the trampoline to call if the lookup
1876         fails.  Enable the virtual generic method thunk for x86.
1877
1878         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
1879         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
1880         argument but assert that it's NULL, because these archs don't yet
1881         implement the virtual generic method thunk.  Changes in the IMT
1882         thunk data structures.
1883
1884 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
1885
1886         * aot-compiler.c (emit_globals): Avoid invalid characters in
1887         the static linking symbol.
1888
1889         * objects.cs: Add a test for the range check optimization. Fix warnings.
1890
1891         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
1892         optimization from the current JIT.
1893
1894         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
1895         later in decompose_array_access_opts () to allow more optimizations.
1896
1897         * method-to-ir.c (mono_handle_soft_float): Rename this to 
1898         mono_decompose_soft_float () for consistency.
1899
1900         * mini-ops.h: Fix arguments of OP_STRLEN.
1901
1902         * method-to-ir.c (save_cast_details): Extract the cast details saving code
1903         into a separate function.
1904         (reset_cast_details): Ditto.
1905         (handle_unbox): Save cast details. Fixes #431254.
1906
1907         * method-to-ir.c: Remove some obsolete FIXMEs.
1908
1909 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1910
1911         * ir-emit.h (alloc_dreg): Write a warning before crashing.
1912
1913 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1914
1915         * mini-codegen.c: More work on macros to make them
1916         ready for multiple regbanks.
1917
1918 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1919
1920         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
1921
1922         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
1923
1924 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1925
1926         * mini-codegen.c (mono_spillvar_offset): Proper support for
1927         multiple regbanks.
1928
1929 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
1930
1931         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
1932         the stack overflow changes.
1933
1934 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1935
1936         * mini-codegen.c: Make all bank macros depend on reg_bank.
1937
1938         * mini-codegen.c (mono_local_regalloc): Make free mask
1939         initialization regbank aware.
1940
1941 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1942
1943         * mini-codegen.c (mono_local_regalloc): Extract callee
1944         mask selection to a function and make it regbank aware.
1945
1946 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1947
1948         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
1949         code to deal with many regbanks.
1950
1951 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
1952
1953         * mini-codegen.c: More fp->regbank changes.
1954
1955 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
1956
1957         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
1958         of a hardcoded constant.
1959
1960 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
1961
1962         * method-to-ir.c (type_from_stack_type): Fix typo.
1963
1964 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
1965
1966         * mini-ia64.c (emit_move_return_value): Convert float return values to
1967         double.
1968
1969         * objects.cs: Add a new test.
1970         
1971         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
1972         VARARG methods to fix an assert later.
1973
1974         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
1975         end so it at least compiles.
1976
1977 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
1978
1979         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
1980
1981 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
1982
1983         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
1984         optimization to a new function (emit_optimized_ldloca_ir) and enable
1985         it for both ldloca and ldloca_s.
1986
1987 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
1990         gshared CASTCLASS code.
1991
1992         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
1993         amd64, where the libc stack unwinder encounters stack frames referring to
1994         native code in unmapped memory.
1995
1996         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
1997         sharing.
1998
1999         * generics.cs: Add new test.
2000
2001 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
2002
2003         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
2004         add a check that one of the ARM_FPU_ constants is defined.
2005
2006         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
2007         
2008         * mini-exceptions.c: Fix build on non-altstack platforms.
2009
2010         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
2011         sharing of vtypes.
2012
2013         * ir-emit.h: Add a comment to NEW_PCONST.
2014
2015         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
2016
2017         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
2018
2019         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
2020         after the changes to MonoJitDomainInfo.
2021
2022 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2023
2024         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
2025
2026 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2027
2028         * mini-ppc.c: Compiler warning fixes.
2029
2030 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2031
2032         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
2033         for pinvokes.
2034
2035 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2036
2037         * exceptions-ppc.c, mini-ppc.h: Compile
2038         mono_arch_handle_altstack_exception() on Darwin, too.
2039
2040 2008-09-27  Mark Probst  <mark.probst@gmail.com>
2041
2042         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
2043         work on archs which don't have generic sharing implemented, only
2044         without the vtable_arg.
2045
2046 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2047
2048         * mini.c: Added comment explaining why delegate ctor icall
2049         wrappers are compiled.
2050
2051 2008-09-26  Mark Probst  <mark.probst@gmail.com>
2052
2053         * mini.c: Don't produce trampolines to delegate ctor icall
2054         wrappers but compile them upfront.
2055
2056 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
2057
2058         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
2059         runtime-set function when going back to managed code. Currently this
2060         is used to set back the protection on the soft ovf pages and/or to
2061         throw the stack overflow exception that happened in unmanaged code.
2062
2063 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
2064
2065         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
2066         runtime-set function when going back to managed code. Currently this
2067         is used to set back the protection on the soft ovf pages and/or to
2068         throw the stack overflow exception that happened in unmanaged code.
2069
2070 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
2071
2072         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
2073         the support code for restoring stack protection after stack overflows
2074         that happen in unmanaged code. Don't set the exec permission on the
2075         soft overflow area.
2076
2077 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
2078
2079         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
2080         delegate->method_ptr is set. Fixes #428054.
2081
2082 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2083
2084         * tests.cs: Rename to ratests.cs.
2085
2086         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
2087         emit_get_rgctx_... functions.
2088
2089 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2090
2091         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
2092
2093 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2094
2095         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
2096         before asserting that method is sharable.
2097
2098 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2099
2100         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
2101         whether method needs a static RGCTX wrapper used instead of
2102         complex conditions.
2103
2104         * generic-sharing.c, mini.h: A few functions moved to
2105         metadata/generic-sharing.c.
2106
2107 2008-09-25  Mark Probst  <mark.probst@gmail.com>
2108
2109         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
2110         Generic code sharing for value types, which essentially means
2111         treating value type methods like static methods.  The RGCTX is
2112         passed in the same way.
2113
2114 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
2115
2116         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
2117         opcode when creating multi-dimensional arrays of open types.
2118
2119         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
2120         open generic types.
2121
2122         * generics.cs: Add a test.
2123
2124         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
2125
2126 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2127
2128         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
2129
2130         * mini.c (mini_method_compile): Set it when running under the debugger. 
2131
2132         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
2133         vreg optimization if the flag is set.
2134
2135         * driver.c (mono_main): Add --attach= option to pass options to
2136         the attach agent.
2137
2138         * mini.c (sigquit_signal_handler): Start the attach agent.
2139
2140         * ssapre.c: Disable this to save space since it is not yet ported to
2141         linear IR.
2142
2143         * regalloc2.c: Disable this to save space.
2144
2145         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
2146
2147 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
2148
2149         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
2150         the -v option useful again.
2151
2152 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
2153
2154         * mini-amd64.c (mono_arch_output_basic_block): Add support for
2155         --break-at-bb.
2156
2157         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
2158         arrays of arrays. Fixes #428406.
2159
2160         * method-to-ir.c (mini_emit_castclass): Ditto.
2161
2162         * objects.cs: Add new test.
2163         
2164 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
2165
2166         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
2167         was wrong at it choked against target_type_is_incompatible for byref types.
2168
2169 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2170
2171         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
2172         places.
2173
2174 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
2175
2176         * mini-exceptions.c: update a few more exceptions-related counters.
2177
2178 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
2179
2180         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
2181         new functions to allocate from persistent mempools.
2182
2183 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
2184
2185         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
2186         multiple register banks in the future.
2187
2188         * mini-codegen.c (mono_local_regalloc): Fix a warning.
2189
2190 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
2191
2192         * mini.c (type_to_eval_stack_type): Remove duplicated function.
2193
2194         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
2195
2196         * mini.h: Export type_to_eval_stack_type.
2197
2198         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
2199         is only ins->klass of byref types.
2200
2201 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
2202
2203         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
2204         (mini_emit_memcpy2): Ditto.
2205
2206         * mini-amd64.c: Fix a warning.
2207
2208 2008-09-21  Mark Probst  <mark.probst@gmail.com>
2209
2210         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
2211         linking.
2212
2213 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
2214
2215         * method-to-ir.c: Extract stloc micro-optimization to a
2216         function and apply it to all cases.
2217
2218 2008-09-19  Mark Probst  <mark.probst@gmail.com>
2219
2220         * method-to-ir.c: Don't fail generic code sharing in cases we
2221         already support.
2222
2223 2008-09-18  Mark Probst  <mark.probst@gmail.com>
2224
2225         * mini-ppc.c: Handle structs in tailcalls on Darwin.
2226
2227 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
2228
2229         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
2230         implementation.
2231
2232 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
2233
2234         * trace.c: make tracing more useful and correct, with per-thread
2235         id and indent info.
2236
2237 2008-09-15  Mark Probst  <mark.probst@gmail.com>
2238
2239         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
2240         doing a method call and the argument is an R4.
2241
2242 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
2243
2244         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
2245         generic methods.
2246
2247 2008-09-13  Mark Probst  <mark.probst@gmail.com>
2248
2249         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
2250
2251 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
2252
2253         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
2254         (MONO_JUMP_TABLE_FROM_INS): Ditto.
2255
2256 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2257
2258         * driver.c: Add a --agent argument (not supported yet) to load managed
2259         agent assemblies before loading the main assembly, similarly to how the
2260         Java VM handles agents.
2261
2262 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2263
2264         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
2265         function to do stack layout of local variables.
2266
2267 2008-09-11  Mark Probst  <mark.probst@gmail.com>
2268
2269         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
2270         calculation.
2271
2272 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
2273
2274         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
2275         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
2276         JIT if DISABLE_JIT is defined.
2277
2278         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
2279         defined.
2280
2281 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2282
2283         * iltests.il.in: Disable the fconv test on PPC (the result is
2284         undefined according to ECMA).
2285
2286 2008-09-10  Mark Probst  <mark.probst@gmail.com>
2287
2288         * iltests.il.in: Enable tail call tests for PPC.
2289
2290         * mini.h: Add variable for storing incoming valuetype argument
2291         addresses for tail calls.
2292
2293         * mini-ppc.c: Implement valuetype arguments and return values for
2294         tailcalls on Linux.
2295
2296 2008-09-09  Mark Probst  <mark.probst@gmail.com>
2297
2298         * mini-ppc.c: Partially implement tail calls (struct arguments and
2299         return values not supported).
2300
2301         * method-to-ir.c: Enable tail calls on PPC.
2302
2303 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
2304
2305         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
2306         runtime-invoke wrappers to work around the problem of them getting
2307         assigned to a random class.
2308
2309         * aot-runtime.c (mono_aot_get_method): Ditto.
2310         
2311 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
2312
2313         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
2314         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
2315
2316 2008-09-07  Mark Probst  <mark.probst@gmail.com>
2317
2318         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
2319         until they're implemented properly.
2320
2321         * exceptions-ppc.c: Use arch-independent exception-handling code
2322         instead of custom one.
2323
2324         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
2325         for Linear IR.
2326
2327         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
2328
2329         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
2330         applies when __powerpc__ is defined.
2331
2332 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
2335         methods to their code to avoid computing the full name of wrappers and
2336         doing a lookup in a string hash table.
2337
2338 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2339
2340         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
2341         we identify bblocks before method_to_ir () is ran.
2342
2343         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
2344         Also avoid optimizing branches pointing to themselves.
2345
2346         * mini.c (mini_method_compile): Ditto. Fixes #422947.
2347
2348 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
2349
2350         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
2351
2352 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
2353
2354         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
2355         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
2356         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
2357         'buf'.
2358
2359         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
2360         jumped to the same entry in plt_jump_table.
2361
2362 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
2363
2364         * method-to-ir.c (initialize_array_data): Handle field with RVA from
2365         dynamic images.
2366
2367 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
2368
2369         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
2370         other assignment can be if converted. Saves 1.5% on corlib size and fixes
2371         #421807.
2372
2373 2008-08-29  Geoff Norton  <gnorton@novell.com>
2374
2375         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
2376         segment, and doesn't properly handle .space as .text.  Fixes
2377         AOT Mach/ARM
2378
2379 2008-08-29  Geoff Norton  <gnorton@novell.com>
2380
2381         * mini.c: Disable the mach exception handler when running on 
2382         ARM
2383
2384 2008-08-29  Geoff Norton  <gnorton@novell.com>
2385
2386         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
2387         globals on Darwin/ARM
2388
2389 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
2390
2391         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
2392         since too many things depend on it. Instead, call 
2393         mono_runtime_set_no_exec ().
2394         
2395         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
2396         the new JIT.
2397
2398         * aot-compiler.c: Add an 'asm-only' AOT option.
2399
2400         * mini.c: Avoid initializing the runtime when doing AOT compilation.
2401                 
2402         * aot-compiler.c (compile_method): Disable gshared support for now as it
2403         doesn't yet work.
2404
2405 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2406
2407         * mini-amd64.h : Fix a compiler warning.
2408
2409         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
2410           Changed to use a callback function to retrieve the unwind info.
2411           This avoids problems observed when code blocks were removed by
2412           unloading an app domain.
2413
2414         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
2415           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
2416           to work properly.
2417
2418         Contributed under MIT/X11 license.
2419
2420 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2421
2422         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
2423           case to keep the stack aligned to 8.
2424
2425         Contributed under MIT/X11 license.
2426
2427 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
2428
2429         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
2430         avoid repeated linear searches.
2431
2432 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
2433
2434         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
2435         methods it can't handle.
2436         
2437         * aot-compiler.c (add_method): Avoid adding a method twice.
2438         (add_wrappers): Add runtime invoke wrappers for all methods.
2439
2440         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
2441         function to create an aot-compatible version of this trampoline.
2442
2443         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
2444
2445 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
2446
2447         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
2448
2449         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
2450         with a generic sharing failure.
2451
2452         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
2453
2454         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
2455         CEE_RETHROW. Fixes #419634.
2456
2457         * mini.c (mono_method_to_ir): Ditto.
2458
2459         * exceptions.cs: Add a new test.
2460         
2461         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
2462         to mono_type_stack_size_internal () since some callers might not pass in
2463         an rgctx.
2464
2465         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
2466         instrument_prolog. Fixes #419878.
2467
2468         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
2469         doubles in soft float mode volatile.
2470
2471 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
2472
2473         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
2474
2475         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
2476         to handle soft float correctly.
2477
2478         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
2479         the fast path.
2480
2481         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
2482
2483         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
2484         to sp, since the generics catch code requires it.
2485
2486         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
2487         copying.
2488
2489         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
2490         mono_arch_emit_imt_argument ().
2491
2492         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
2493
2494         * mini-arm.c tramp-arm.c: Generic sharing updates.
2495
2496 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
2497
2498         * mini-arm.c: Fix the arm build.
2499
2500         * generic-sharing.c (mini_type_get_underlying_type): New helper function
2501         handling enums, generic instances and generic sharing.
2502         (mini_type_stack_size_full): Ditto.
2503
2504         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
2505         
2506         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
2507
2508         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
2509
2510         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
2511         trampolines.
2512
2513         * mini-arm.c: Various small generic sharing changes.
2514
2515         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
2516         this for x86.
2517         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
2518         custom code.
2519
2520         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
2521         helper function to return a generic class init trampoline.
2522
2523         * method-to-ir.c mini.c: Use it.
2524         
2525         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
2526         arch-specfic function to return a generic class init trampoline.
2527
2528         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
2529         the GENERIC_CLASS_INIT custom code.
2530
2531         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
2532         a fatal error, not a sharing failure.
2533
2534         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
2535         needed.
2536
2537         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
2538         trampoline argument from MONO_ARCH_VTABLE_REG.
2539
2540         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2541         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2542         argument, and pass the vtable in VTABLE_REG.
2543
2544         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2545         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2546         argument, and pass the vtable in VTABLE_REG.
2547         (mono_arch_create_trampoline_code_full): Remove some special casing for
2548         the rgctx fetch trampoline.
2549
2550         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
2551         Fixes #419273.
2552
2553         * iltests.il: Add a test for it.
2554
2555 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
2556
2557         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
2558
2559         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
2560         no longer needed.
2561
2562         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
2563         use mono_jit_info_table_find () to avoid recursion.
2564         (mono_delegate_trampoline): Add a sync wrapper here.
2565
2566         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
2567         here.
2568
2569         * mini.c (mono_method_to_ir): Ditto.
2570         
2571         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
2572         add_sync_wrapper argument. Don't add a sync wrapper here.
2573         (mono_create_jump_trampoline): Don't add a sync wrapper here.
2574
2575         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
2576         
2577 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2578
2579         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
2580           of nonvolatile registers back from MonoContext to CONTEXT.
2581
2582         Contributed under MIT/X11 license.
2583
2584 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2585
2586         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
2587           arguments on Winx64 there are only 4 argument registers.  For this
2588           logic to work the last argument must be pulled from the stack.  
2589
2590         Contributed under MIT/X11 license.
2591
2592 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
2593
2594         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2595
2596         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
2597         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
2598         encode/decode_method_ref ().
2599
2600         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
2601
2602         * aot-runtime.c (decode_patch): Ditto.  
2603
2604         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
2605         MONO_PATCH_INFO_METHOD.
2606
2607         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
2608         MonoGenericJitInfo.
2609
2610         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
2611         MonoGenericJitInfo.
2612
2613         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
2614
2615         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
2616         one from the caller.
2617
2618         * aot-runtime.c (decode_generic_inst): New function to decode and
2619         return a interned generic inst.
2620         (decode_klass_ref): Use it.
2621         (decode_method_ref): Ditto.
2622
2623         * aot-compiler.c (emit_exception_debug_info): Save 
2624         jinfo->has_generic_jit_info too.
2625
2626 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2627
2628         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
2629
2630         * iltests.il.in: Add a test for fconv_to_i.
2631
2632         * liveness.c: Disable the liveness2 pass for now to save space.
2633
2634         * regalloc2.c: Include mempool-internals.h to fix warnings.
2635
2636         * aot-compiler.c (encode_method_ref): Encode the context of generic
2637         instance methods.
2638
2639         * aot-runtime.c (decode_method_ref): Inflate generic methods using
2640         the context saved in the aot file.
2641
2642         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2643
2644         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2645
2646         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
2647         volatile so they won't be optimized away.
2648
2649 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2650
2651         * ssa.c:
2652         * ssa2.c:
2653         * mini.c:
2654         * regalloc2.c:
2655         * dominators.c: Remove duplicated functions that now are in
2656         mempool-internals.h.
2657
2658 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2659
2660         * aot-compiler.c: Fix warnings.
2661
2662         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
2663
2664         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
2665
2666         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
2667         as the patch type.
2668
2669         * mini.c (mono_resolve_patch_target): Ditto.
2670         
2671         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
2672         (encode_klass_ref): Add support for encoding VARs/MVARs.
2673
2674         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
2675
2676         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
2677         the handling of the got entries into a separate 'decode_got_entry' function.
2678         Add support for RGCTX_FETCH.
2679
2680         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
2681         clobbered by the trampoline code.
2682
2683         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
2684         not clobbered by the indirect calling code.
2685
2686 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2687
2688         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
2689         to fix the build.
2690
2691 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2692
2693         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
2694         signature using the compilation mempool otherwise we would leak it.
2695
2696 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2697
2698         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
2699         mono_emit_abs_call ().
2700
2701         * patch-info.h: Add GENERIC_CLASS_INIT.
2702
2703         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
2704
2705         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
2706         as their target as a near call.
2707
2708         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
2709         ABS handling code.
2710         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
2711
2712         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
2713         call to a runtime function described by a patch.
2714
2715         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
2716         mono_emit_abs_call, this has the advantage that the ABS handling code in
2717         mono_codegen () can handle them both, and can handle other stuff in the
2718         future without additional code.
2719
2720         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
2721         entry.
2722         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
2723         abs addresses.
2724
2725         * mini.h: Add missing bblock related prototypes.
2726
2727         * mini.h (MonoCompile): Remove unused reverse_inst_list and
2728         reverse_inst_list_len fields.
2729
2730         * mini.c: Refactor this file a bit by moving branch optimizations to 
2731         branch-opts.c.
2732
2733         * method-to-ir.c: Merge generic sharing changes missed earlier.
2734
2735         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
2736
2737         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
2738         shared patches. Process METHODCONST as a shared patch.
2739
2740         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
2741         as it crashes on the 2.0 mscorlib.
2742
2743         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
2744         to cause crashes.
2745         
2746         * aot-compiler.c: Use is_plt_patch () in a few additional places.
2747         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
2748         by IMT.
2749
2750         * aot-compiler.c: Reorganize the got handling code to be a bit more
2751         understandable.
2752
2753 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
2754
2755         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
2756         mono_patch_info_equals/hash, and use it to massively simplify
2757         get_plt_index ().
2758
2759         * mini.c (mono_patch_info_hash): Simplify this and add support for
2760         more patch types.
2761
2762         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
2763
2764         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
2765         handling code, since an offset is not enough to identify a trampoline.
2766
2767         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
2768
2769 2008-08-17  Mark Probst  <mark.probst@gmail.com>
2770
2771         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
2772
2773         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
2774
2775         * mini-ops.h: Argument and result types for OVF_CARRY ops.
2776
2777         * decompose.c: PPC decompositions for various ops.
2778
2779         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
2780
2781 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
2782
2783         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
2784         call the generic trampoline code using a call, instead of a jump, to
2785         remove some special casing from the generic trampoline code.
2786
2787         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
2788         (mono_codegen): Ditto.
2789
2790         * aot-compiler.c aot-runtime.c: Ditto.
2791
2792         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
2793
2794         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
2795         helper function to find the offset corresponding to a lazy fetch trampoline.
2796
2797         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
2798         when doing generic sharing.
2799
2800         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
2801         places.
2802         
2803         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
2804         mini-trampolines.c to be with the other trampoline creation functions.
2805
2806         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
2807         as it is equal to method->signature in most cases, add a 
2808         mono_emit_method_call_full variant which takes a signature and an imt
2809         argument as well.
2810
2811 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
2812
2813         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
2814         to this function, since it could be computed easily from the method 
2815         argument.
2816         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
2817         more.
2818
2819         * method-to-ir.c mini.c: Remove references to 
2820         compile_generic_method_wo_context.
2821
2822         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
2823         generic method calls.
2824         
2825         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
2826         dimensional non-szarrays.
2827
2828         * mini.c (mini_init): Register mono_array_new_1.
2829
2830         * jit-icalls.c (mono_array_new_1): New jit icall.
2831
2832         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
2833         pointing to the method.
2834
2835         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
2836         method addresses belonging to METHOD_JUMP patches in the 
2837         jump_target_got_slot_hash.
2838         (mono_aot_load_method): Ditto.
2839
2840         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
2841         METHOD_JUMP patches.
2842
2843         * mini.c (mini_create_jit_domain_info): New helper function which 
2844         initializes/frees domain->runtime_info.
2845         (mini_free_jit_domain_info): Ditto.
2846         (mini_init): Install the domain hook functions with the runtime.
2847
2848         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
2849         information maintained by the JIT.
2850
2851         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
2852         insertion into jump_table_hash into mono_codegen (), also implement proper
2853         locking.
2854
2855         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
2856         tail calls, it is already done by the aot code.
2857         
2858         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
2859         mechanism on amd64.
2860
2861         * iltests.il.in: Make the jmp test a bit more complex.
2862
2863         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
2864         generic instances which doesn't have a token.
2865
2866         * aot-runtime.c (decode_method_ref): Ditto.
2867         
2868         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
2869         can handle this case now.
2870         (handle_box): Ditto.
2871
2872 2008-08-15  Geoff Norton  <gnorton@novell.com>
2873
2874         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
2875         debugging check.
2876
2877 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
2878
2879         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
2880         calling generic methods.
2881
2882         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
2883
2884         * aot-runtime.c (decode_patch_info): Ditto.
2885
2886         * mini.c (mono_resolve_patch_target): Ditto.
2887         
2888         * patch-info.h: Add METHOD_RGCTX.
2889
2890         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
2891
2892 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
2893
2894         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
2895         arguments in registers.
2896
2897         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
2898         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
2899
2900         * mini.c (mini_method_compile): Abort aot compilation for generic
2901         methods if generic sharing is disabled.
2902         
2903         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
2904         an mrgctx.
2905
2906         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
2907         requiring an mrgctx.
2908
2909         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
2910         store instructions when converting a vcall to a normal call.
2911
2912         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
2913         mono_arch_find_jit_info.
2914
2915 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
2916
2917         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
2918         avoid calling mono_method_full_name () for every method even if the
2919         env var is not set.
2920         (check_inline_caller_method_name_limit): Ditto.
2921
2922 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
2923
2924         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
2925         assemblies in one run.
2926
2927         * aot-compiler.c (mono_compile_assembly): Only print out a count of
2928         skipped methods if it is not 0.
2929
2930         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
2931
2932 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
2933
2934         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
2935           MONO_ARCH_HAVE_UNWIND_TABLE.
2936
2937         Contributed under MIT/X11 license.
2938
2939 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
2940
2941         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
2942           from default optimizaton list on Winx64.
2943
2944         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
2945
2946         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
2947           the LMF from the MonoJitTlsData structure.
2948
2949         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
2950
2951         Contributed under MIT/X11 license.
2952
2953 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
2954
2955         * mini.c (sigsegv_signal_handler): Fix the build.
2956
2957         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
2958         assembly->aot_module.
2959
2960         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
2961         hash table. This simplifies and speeds up a lot of code, and fixes support
2962         for .netmodules.
2963
2964         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
2965         with the runtime.
2966
2967         * mini-exceptions.c: Ditto.
2968         
2969         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
2970         'native_offset' argument, since these are computed in the 
2971         mono_find_jit_info () function.
2972
2973         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
2974         is used by exceptions-ppc.c.
2975
2976         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
2977         mono_arch_find_jit_info ().
2978         
2979         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
2980         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
2981         generic code in mini-exceptions.c.
2982
2983 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
2984
2985         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
2986
2987         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
2988         
2989         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
2990         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
2991         called while holding the loader lock. Fixes #415608.
2992         (mono_aot_get_method_from_token_inner): Ditto.
2993
2994 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
2995
2996         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
2997         to reduce differences between this and the generic implementation in
2998         mini-exceptions.c.
2999         (ves_icall_get_frame_info): Ditto.
3000
3001         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
3002
3003         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
3004         longer neccesarry.
3005
3006         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
3007         mono_arch_get_call_filter () and make it non-static, for consistency with the
3008         other architectures.
3009
3010 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
3011
3012         * mini.c:
3013         * local-propagation.c:
3014         * mini-x86.c: Correct the name of arch defines.
3015
3016 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
3017
3018         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
3019         NO_EMULATE_LONG_SHIFT_OPS define.
3020
3021 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
3022
3023         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
3024         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
3025
3026         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
3027         MACH fixes. Merged from the 2.0 branch.
3028
3029         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
3030
3031         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
3032         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
3033
3034         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
3035
3036         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
3037         mono_marshal_get_native_wrapper () signature changes.
3038
3039 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3040
3041         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
3042         conversion bug under arm.
3043
3044 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
3045
3046         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
3047
3048         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
3049         with overflow checking.
3050
3051 2008-08-05  Marek Habersack  <mhabersack@novell.com>
3052
3053         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
3054         to the genmdesc.pl file
3055
3056 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
3057
3058         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
3059         arg_array in the soft-float versions of the LOAD/STORE macros.
3060
3061         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
3062         implementation.
3063
3064         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
3065
3066 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3067
3068         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
3069         a float HFA. Fixes #413621.
3070
3071 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
3072
3073         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
3074         frame_size to args_size. Fixes build.
3075
3076 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
3077
3078         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
3079         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
3080
3081         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
3082         the stack are not unaligned. Fixes #413247.
3083         
3084 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
3085
3086         * mini.c: update jitted methods performance counters.
3087
3088 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
3089
3090         * mini-exceptions.c: increase the exceptions thrown performance
3091         counter in mono_handle_exception ().
3092
3093 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
3094
3095         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
3096         can work with netmodules.
3097
3098 2008-07-28  Geoff Norton  <gnorton@novell.com>
3099
3100         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
3101         regression tests.
3102
3103 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3104
3105         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
3106         correct place.
3107
3108 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
3109
3110         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3111           The float param registers and other param registers must be the 
3112           same index on Windows x64.
3113
3114         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
3115           ArgValuetypeAddrInIReg argument case.  Setting the argument
3116           op to OP_VTARG_ADDR (OP_REGOFFSET)).
3117
3118         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
3119           variable computed above as the copy length for arguments of storage
3120           type ArgValuetypeAddrInIReg.
3121
3122         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
3123           ArgValuetypeAddrInIReg argument case.  This case will rely on
3124           mono_arch_emit_outarg_vt to emit the correct code later in the process.
3125
3126         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
3127           a 32 byte stack allocation for all calls.  We will omit the adjustment for
3128           jump and tail call instructoins as they do not follow the typical call behavior.
3129
3130         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
3131           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
3132           local variable and pass the local variable by reference to the called method.
3133
3134         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
3135           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
3136           of a struct is passed in a register it must be saved with the other
3137           volatile argument on the stack.
3138
3139         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
3140           frame pointer the stack adjustment value must be saved to the unwind 
3141           info structure.
3142
3143         Contributed under MIT/X11 license.
3144
3145 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
3146
3147         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
3148         which got lost in the merge.
3149
3150 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3151
3152         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
3153         build.
3154
3155         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
3156         
3157         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
3158         icalls, since they won't be patched.
3159
3160         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
3161         different code sequence when running under valgrind to prevent some valgrind
3162         errors.
3163
3164         * iltests.il.in: Add new regression test.
3165
3166         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
3167         end with a throw.
3168
3169         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
3170         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
3171
3172         * iltests.il.in: Add new test.
3173
3174         * aot-compiler.c: Fix some warnings.
3175
3176         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
3177         Fixes #412494.
3178
3179 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
3180
3181         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
3182         (mini_usage_jitdeveloper): Add a missing --wapi option.
3183
3184 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3185
3186         * mini-codegen.c: Simplify the is_fp macros.
3187         (free_up_ireg): Remove, use free_up_reg instead.
3188         (free_up_reg): Fix the fp case.
3189
3190 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3191
3192         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
3193         lowered earlier.
3194
3195         * exceptions-x86.c: Merge some changes which seemed to have got lost
3196         in the linear-ir merge.
3197
3198         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
3199
3200         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
3201         long vreg volatile even if the variable was already created.
3202
3203         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
3204         volatile variables.
3205
3206 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
3207
3208         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
3209
3210         * mini.c (mono_jit_compile_method_inner): Add support for 
3211         MONO_EXCEPTION_BAD_IMAGE.
3212
3213         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
3214         mini_method_get_context () returns NULL. Fixes #356531.
3215
3216         * mini.c (mono_method_to_ir): Ditto.
3217         
3218         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
3219         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
3220
3221 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3222
3223         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
3224         in the LDFTN implementation.
3225
3226 2008-07-25  Mark Probst  <mark.probst@gmail.com>
3227
3228         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
3229         code, patch calls to icalls, too, even if they're not in the
3230         shared generic code hash.  Fixes #411962.
3231
3232 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
3233
3234         * cpu-x86.md: Increase the length of the fcall opcodes.
3235
3236         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
3237         calls returning floats.
3238
3239         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
3240         on NEWARR.
3241         
3242         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
3243         missed earlier.
3244
3245         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
3246         into the domain->method_code_hash.
3247
3248         * aot-compiler.c: Fix win32 build.
3249
3250         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
3251         
3252         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
3253         gshared NEWARR implementation.
3254
3255         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
3256
3257         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
3258         can be used outside of method_to_ir.
3259
3260         * mini.h (MonoCompile): Add arg_types field.
3261
3262         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
3263         
3264         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
3265         the values of the local arg_array and param_types array.
3266
3267 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3268
3269         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
3270         got accesses might only get generated later when NEWOBJ is decomposed.
3271         
3272         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
3273         looking up the native code of the target method when a delegate is called
3274         for the first time.
3275
3276         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
3277         optimization.
3278
3279         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
3280
3281         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
3282         AOT work on platforms without a working dlsym implementation.
3283
3284         * mini.h: Bump AOT image format version.
3285         
3286 2008-07-24  Mark Probst  <mark.probst@gmail.com>
3287
3288         * mini-exceptions.c: Free a MonoType with
3289         mono_metadata_free_type() instead of g_free().
3290
3291         * aot-runtime.c: Free a MonoType.
3292
3293 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
3294
3295         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
3296         optimization.
3297
3298         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
3299         fp stack on x86.
3300
3301 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
3302         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
3303         profiler hook.
3304
3305 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3306
3307         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
3308         NEWOBJ calls on valuetypes.
3309
3310         * iltests.il.in: Add new test.
3311
3312         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
3313
3314 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3315
3316         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
3317         is no longer needed.
3318
3319         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
3320         non register sized integer arguments.
3321         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
3322         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
3323         emit_memcpy2 ().
3324
3325         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
3326         CEE_MONO_RETOBJ.
3327         
3328         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
3329         two a binop with different sized arguments is emitted.
3330
3331         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
3332         instruction in the ins==NULL case.
3333
3334 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
3335
3336         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
3337
3338         * mini-x86.c: Fix osx build.
3339
3340         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
3341         opcodes as well.
3342
3343         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
3344         instruction for non int sized variables.
3345
3346         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
3347         implementation.
3348
3349 2008-07-23  Robert Jordan  <robertj@gmx.net>
3350
3351         * method-to-ir.c: Fix MSVC build.
3352
3353 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
3354
3355         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
3356         a non int sized type, widen it to an int since newer versions of gcc seem to
3357         generate code which needs this.
3358
3359         * ssa2.c abcremoval2.c: Fix warnings.
3360
3361         * *: Merge the Linear IR branch.
3362
3363         The original branch is at trunk/branches/vargaz/mini-linear-il, and
3364         the ChangeLog file there describes all the changes done over the years. 
3365         Further documentation can be found at www.mono-project.com/Linear_IL.
3366
3367 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3368
3369         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
3370           The float param registers and other param registers must be the 
3371           same index on Windows x64.
3372
3373         Contributed under MIT/X11 license.
3374
3375 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
3376
3377         * mini.c: Make the previous fix GC safe.
3378
3379 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
3380
3381         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
3382
3383 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3384
3385         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
3386           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
3387           ArgValuetypeAddrInIReg instead.
3388
3389         Contributed under MIT/X11 license.
3390
3391 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
3392
3393         * mini-codegen.c (get_register_spilling): Fix a warning.
3394
3395 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
3396
3397         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
3398         for types which the initialization fails. Raises the provided exception
3399         at the right stop after cleanup.
3400
3401 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
3402
3403         * aot-compiler.c: Free most of the memory allocated during compilation.
3404
3405         * mini.c (mini_parse_debug_options): Fix a leak.
3406         
3407         * mini.c (mini_method_compile): Don't add the method to the jit info tables
3408         during aot compilation.
3409
3410 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
3411
3412         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
3413         it has too much register pressure.
3414
3415 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
3416
3417         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
3418
3419 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3420
3421         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3422         on x86.
3423
3424         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3425         on amd64 similar to the way it is done on arm.
3426
3427         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3428
3429         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
3430         consistency, normalize error messages, avoid loading aot-only modules in
3431         normal mode.
3432
3433         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
3434         for consistency.
3435
3436         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
3437
3438 2008-07-11  Martin Baulig  <martin@ximian.com>
3439
3440         * debug-debugger.h
3441         (MonoDebuggerInfo): Add `interruption_request'.
3442
3443 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3444
3445         * aot-compiler.c (emit_plt): Remove some dead code.
3446
3447         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
3448
3449         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
3450         return the plt info offset belonging to a given plt entry.
3451
3452         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
3453         mono_aot_get_plt_info_offset.
3454         
3455         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
3456         similar to the amd64 code by makeing jumps through a separate jump table 
3457         instead of embedding the jump addresses into the code.
3458
3459 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
3460
3461         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
3462         method.
3463
3464 2008-07-10  Martin Baulig  <martin@ximian.com>
3465
3466         * mini.c (mini_method_compile): Disable generics sharing when
3467         running in the debugger.
3468
3469 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3470
3471         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
3472
3473         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
3474         the local register allocator from running out of registers on x86 when 
3475         using aot.
3476
3477 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
3478
3479         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
3480         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
3481         C4146.
3482
3483         Contributed under MIT/X11 license.
3484
3485 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3486
3487         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
3488         speed up the assembler.
3489
3490 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3491
3492         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
3493         support.
3494
3495         * mini.c: Move the soft float handling macros a bit earlier, add 
3496         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
3497         place.
3498
3499         * mini.h: Add prototype for mono_arch_fixup_jinfo.
3500
3501         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
3502         read-only to help catch code allocation requests.
3503         
3504         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
3505         and turn it off when using --aot-only or when compiling with --aot=full.
3506
3507         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
3508         jump table for switches from the normal domain mempool, not the code
3509         manager.
3510
3511         * mini-trampolines.c (get_unbox_trampoline): New function to return an
3512         unbox trampoline which handles aot-only mode too.
3513
3514         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
3515         an AOTed unbox trampoline.
3516
3517         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
3518
3519 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3520
3521         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
3522         ""
3523
3524         Contributed under MIT/X11 license.
3525
3526 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3527
3528         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
3529           the unwind information for the method at the end of the allocated block.
3530           
3531         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
3532           MonoCompileArch to hold the unwind info for SEH on Winx64
3533         
3534         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
3535           frame pointer info for the method being compiled.
3536           
3537         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
3538           the call to mono_exception_from_token.
3539           
3540         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
3541           storing the method prolog information in a format that the Winx64 SEH can understand.  This
3542           information is stored a the end of the method block because it is all 32-bit offset based.
3543
3544         Contributed under MIT/X11 license.
3545
3546 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3547
3548         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
3549
3550         * wapihandles.c: Fix warnings.
3551
3552         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
3553         mode.
3554
3555         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
3556         mono_jit_compile_method in aot-only mode since that calls the type 
3557         initializer.
3558         
3559         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
3560         get_delegate_invoke_impl in aot-only mode.
3561
3562         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
3563
3564 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
3565
3566         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
3567
3568         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
3569         is on by default.
3570
3571         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
3572
3573         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
3574         init trampoline from the AOT file as well.
3575
3576         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
3577         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
3578         code.
3579
3580         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
3581         mono_init.
3582
3583         * exceptions-amd64.c: Add _full variants for the remaining exception code
3584         creation functions as well, allow emission of relocatable code, remove
3585         caching since that is now done by the caller.
3586
3587         * mini-exceptions.c: Add _full variants for the remaining exception code
3588         creation functions as well, add aot-only support.
3589
3590         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
3591         if we can determine a proper token for them.
3592         (add_wrappers): Add a few more wrappers.
3593         (emit_method_code): Remove some dead code.
3594         (emit_trampolines): Emit exception code too.
3595
3596         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
3597
3598         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
3599         mono_array_new_va which avoids varargs.
3600
3601         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
3602
3603         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
3604         mono_arch_create_specific_trampoline () in all places.
3605
3606         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
3607         a bit so it can be used for other things as well.
3608         
3609         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
3610         on demand as well.
3611
3612         * exceptions-amd64.c: Rename the caching from the exception code creation
3613         functions, it is done by the caller instead.
3614         
3615         * exceptions-amd64.c: Change the signature of the exception code creation 
3616         functions to allow the creation of relocatable code later.
3617
3618         * mini-exceptions.c: Add a set of functions to query the various 
3619         runtime-generated exception functions.
3620
3621         * mini.c mini-exceptions.c: Use the newly added functions instead of the
3622         mono_arch_.. () functions.
3623         
3624 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3625
3626         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
3627
3628         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
3629
3630         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
3631         (mini_get_vtable_trampoline): Ditto.
3632
3633         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
3634         code in the AOT case by returning the code size and a list of relocations to
3635         the caller.
3636
3637         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
3638
3639 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
3640
3641         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
3642           clean the stack.
3643
3644         Contributed under MIT/X11 license.
3645
3646 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3647
3648         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
3649         so the buffer size can be computed correctly. Fixes #404735.
3650
3651         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
3652         normally as cfg->debug_info is already freed.
3653
3654 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
3655
3656         * mini-amd64.c: For calls returning vtypes in registers, don't store
3657         the return address on the stack, instead allocate a separate local for
3658         it. Fixes #404729.
3659
3660 2008-07-05  Mark Probst  <mark.probst@gmail.com>
3661
3662         * mini-trampolines.c, mini.h: Add an argument to
3663         mono_create_jit_trampoline_in_domain() for turning off the adding
3664         of the sync wrapper.
3665
3666         * mini.c: Use the JIT trampoline without sync instead of
3667         ldftn_nosync in static RGCTX invoke wrappers so that the call can
3668         be patched.
3669
3670 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3671
3672         * driver.c: Turn on GSHARED optimization by default.
3673
3674 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
3675
3676         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
3677         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
3678
3679         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
3680         create a variant of the generic trampoline code callable from AOTed trampolines.
3681
3682         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
3683         trampoline code callable from AOTed trampolines.
3684
3685         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
3686
3687 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3688
3689         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
3690         pass-through manner.
3691
3692         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
3693         and don't fail sharing for them anymore.
3694
3695         * mini-exceptions.c: Handle exceptions in shared generic methods.
3696
3697         * generic-sharing.c: When checking the context of a generic
3698         method, also check its class's context.  Don't treat wrappers as
3699         sharable.
3700
3701         * mini-trampolines.c: Some code factored out to
3702         metadata/generic-sharing.c.  Handle the MRGCTX case.
3703
3704         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
3705         we must deal with the method being of another instantiation of the
3706         class.  Add static rgctx invoke wrappers to generic methods.
3707
3708 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3709
3710         * mini.c: Provide all jit infos of generic shared methods with a
3711         generic jit info.
3712
3713         * mini-exceptions.c: Handle the new situation that a generic info
3714         might be available, but not info about the this/vtable/mrgctx
3715         variable.
3716
3717 2008-07-03  Mark Probst  <mark.probst@gmail.com>
3718
3719         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
3720         generic methods.
3721
3722 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
3723
3724         * dominators.c (check_dominance_frontier): Fix a warning.
3725
3726         * mini.h: Add some missing prototypes.
3727
3728         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
3729
3730         * driver.c (mono_jit_init_version): Correct the comments since the first
3731         argument should be the name of the root domain, not a filename.
3732
3733         * aot-runtime.c (make_writable): Error out if this is called while running
3734         with --aot-only.
3735         (load_aot_module): Ditto.
3736
3737         * aot-compiler.c: Really fix the computation of method indexes.
3738
3739         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
3740         optimizations as this is no longer called frequently.
3741
3742         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
3743         method and the invoke impl code and pass it to the delegate trampoline instead of
3744         just the delegate class.
3745
3746 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
3747
3748         * aot-compiler.c: Fixup the computation of method indexes.
3749         (add_wrappers): Create the base methods of the runtime invoke wrappers using
3750         the method builder infrastructure.
3751
3752         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
3753         has no header.
3754
3755         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
3756         mode, load the method right away instead of creating a trampoline.
3757
3758         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
3759
3760         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
3761         some checks a bit.
3762
3763 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
3764
3765         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
3766         (mono_aot_load_method): Use method_index instead of method->token.
3767
3768         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
3769         can handle icalls etc. properly.
3770
3771         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3772
3773         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
3774
3775         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
3776         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
3777         JIT_ICALL_ADDR patch type.
3778
3779         * patch-info.h: Add JIT_ICALL_ADDR patch type.
3780
3781         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
3782         request flag.
3783         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
3784
3785         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
3786
3787 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
3788
3789         * mini.c: Use domain->jit_code_hash_lock for controlling access to
3790         domain->jit_code_hash.
3791
3792 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
3793
3794         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
3795
3796 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
3797
3798         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
3799         get_this_arg_from_call, let it compute it when needed.
3800
3801         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
3802         gsctx from code only when needed.
3803
3804         * mini-trampolines.c (get_generic_context): Rename this to 
3805         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
3806         it can be called by the arch backends.
3807
3808         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
3809
3810 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
3811
3812         * driver.c (mono_main): Add experimental --aot-only command line option.
3813
3814         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
3815         set.
3816
3817 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
3818
3819         * driver.c (DllMain): Remove mono_module_handle.
3820
3821         Contributed under MIT/X11 license.
3822
3823 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
3824
3825         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
3826         for emitting methods which are not in the source assembly. Detect and report
3827         failure of assembling+linking.
3828         
3829         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
3830
3831         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
3832
3833 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
3834
3835         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
3836
3837 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
3838
3839         * mini.h: Remove some obsolete prototypes.
3840
3841         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
3842
3843 2008-06-24  Mark Probst  <mark.probst@gmail.com>
3844
3845         * mini.c (get_object_generic_inst): Variable-sized arrays are not
3846         supported by Visual Studio, so use alloca().
3847
3848 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
3849
3850         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
3851         Fixes #402585.
3852
3853 2008-06-23  Mark Probst  <mark.probst@gmail.com>
3854
3855         * mini.c: Fail sharing of a generic method if it contains an open
3856         catch clause (because we don't pass MRGCTXs yet).
3857
3858 2008-06-23  Mark Probst  <mark.probst@gmail.com>
3859
3860         * mini.c: When compiling a method with generic sharing, insert the
3861         method instantiated with an all-Object generic context into the
3862         jit info table, instead of the context of the first instantiation
3863         of the method we happen to compile.
3864
3865 2008-06-18  Martin Baulig  <martin@ximian.com>
3866
3867         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
3868         `major_version' and `minor_version'.
3869
3870 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3871
3872         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
3873         mono_method_is_generic_sharable_impl() takes an additional
3874         argument specifying whether to treat type variables as reference
3875         types.
3876
3877 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3878
3879         * mini.h: Removed obsolete prototypes.
3880
3881 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3882
3883         * mini.c: Don't fail generic sharing for initobj and sizeof - we
3884         already handle them.
3885
3886 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3887
3888         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
3889         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
3890         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
3891         tramp-x86.c: Added a MonoGenericContext* argument to
3892         mono_arch_get_unbox_trampoline() so that it can call other
3893         functions which require it.
3894
3895 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3896
3897         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
3898         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
3899         mono_arch_get_this_arg_from_call() takes a
3900         MonoGenericSharingContext* as well.
3901
3902 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3903
3904         * mini.c: Factor out code for emitting unbox into emit_unbox() and
3905         implement generic sharing of unbox.
3906
3907 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3908
3909         * mini.c: Don't compute the vtable to determine whether a field is
3910         special static, because it might not work for open types.
3911
3912 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3913
3914         * mini.c: Removed the unused token_type and token_source arguments
3915         from get_runtime_generic_context_ptr().
3916
3917 2008-06-17  Marek Habersack  <mhabersack@novell.com>
3918
3919         * mini.c (ADD_BINOP): fix the build
3920
3921 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
3922
3923         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
3924         a widening op.
3925
3926 2008-06-16  Mark Probst  <mark.probst@gmail.com>
3927
3928         * mini.h: Removed class relations enum that's not used anymore.
3929
3930 2008-06-16  Mark Probst  <mark.probst@gmail.com>
3931
3932         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
3933
3934         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
3935         the lazy fetch trampoline access code.
3936
3937 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
3940
3941 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
3942
3943         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
3944
3945         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
3946
3947         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
3948
3949 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
3950
3951         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
3952         intrinsics.
3953
3954         * mini-ops.h: Add MIN/MAX_UN opcodes.
3955
3956         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
3957         intrinsics.
3958
3959         * basic-math.cs: Add more min/max tests.
3960
3961         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
3962
3963 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3964
3965         * mini.c: Small fix in the prologue of emit_castclass.
3966
3967 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
3968
3969         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
3970
3971         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
3972         do not work even for unsigned types. Fixes #400014.
3973
3974         * basic-math.cs: Add regression tests for unsigned Min/Max.
3975
3976 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3977
3978         * mini.c: Added additional context_used argument to several
3979         functions, which will be needed for sharing generic methods.  Use
3980         GET_RGCTX macro wherever appropriate.  Declare only one
3981         context_used in mono_method_to_ir().
3982
3983 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3984
3985         * mini.c, generic-sharing.c: Removed generic class relations.
3986
3987         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
3988         functions due to MRGCTX changes.
3989
3990 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3991
3992         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
3993         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
3994         with calculated IMT.
3995
3996         * mini.c: Generic sharing of calls via generic interfaces.
3997
3998         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
3999         generic method with non-constant MonoGenericContext*.  Instead,
4000         the context is taken out of the method itself.
4001
4002 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4003
4004         * mini.c: Generic sharing of ldvirtftn.
4005
4006 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4007
4008         * mini.c: Generic sharing of ldftn.
4009
4010 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4011
4012         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
4013
4014 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4015
4016         * mini.c: Generic sharing of the special case of ldtoken followed
4017         by a call to GetTypeFromHandle.
4018
4019 2008-06-13  Mark Probst  <mark.probst@gmail.com>
4020
4021         * mini.c: Generic sharing of box for nullable types.
4022
4023 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
4024
4025         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
4026         are passed on the stack. Fixes #324807.
4027
4028 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
4029
4030         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
4031         for the ArgValuetypeAddrInIReg case.
4032
4033         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
4034         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
4035
4036         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
4037         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
4038         local variable and pass the local variable by reference to the called method.
4039           
4040         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
4041         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
4042
4043         Contributed under MIT/X11 license.
4044
4045 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
4046
4047         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
4048
4049         * debug-mini.c (mono_debug_print_vars): Release memory after printing
4050         everything.
4051
4052 2008-06-10  Martin Baulig  <martin@ximian.com>
4053
4054         * debug-mini.c
4055         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
4056
4057 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
4058
4059         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
4060         possible error when no arguments are passed.
4061
4062         Contributed under MIT/X11 license.
4063
4064 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
4065
4066         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
4067         where the file name is NULL.
4068
4069 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
4070
4071         * mini.c: Fix s390 build.
4072
4073 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
4074
4075         * trace.c (mono_trace_parse_options): Fix warnings.
4076
4077         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
4078
4079 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
4080
4081         * mini.c (remove_block_if_useless): Avoid printing the method name.
4082         
4083         * mini.c: Remove needless setting of ins->cil_code which is now done by 
4084         MONO_INST_NEW.
4085
4086         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
4087         LMF. Not yet used.
4088
4089         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
4090         translated code after it has been patched.
4091
4092 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
4093
4094         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
4095         avoid problems during code patching on SMP systems.
4096         (emit_call): Avoid adding a patch info which is already added by 
4097         emit_call_body.
4098         (mono_arch_emit_exceptions): Ditto.
4099
4100 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
4101
4102         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
4103         MONO_TYPE_ISSTRUCT already checks for it.
4104
4105 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
4106
4107         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
4108           structs with floats on Winx64 the float registers are not used.  
4109           The integer registers are always used..
4110         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
4111           only one register will be used and only if the size of the struct 
4112           is 1,2,4, or 8 bytes.
4113
4114         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
4115           to work for Winx64.
4116
4117         Contributed under MIT/X11 license.
4118
4119 2008-06-05  Martin Baulig  <martin@ximian.com>
4120
4121         * debug-debugger.c (debugger_lookup_class): Also call
4122         mono_class_setup_methods() here; we're only called from RTI.
4123
4124 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
4125
4126         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
4127         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
4128         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
4129         Post-process object files and add dtrace-generated object, if necessary.
4130
4131         Contributed under MIT/X11 license.
4132
4133 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4134
4135         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
4136         element class.
4137
4138         * mini.c: Generic sharing for unbox.any and castclass.
4139
4140 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4141
4142         * mini.c: Ignore tailcall prefix in shared generic code and when
4143         doing calls which require a vtable/rgctx argument.
4144
4145 2008-06-04  Mark Probst  <mark.probst@gmail.com>
4146
4147         * mini.c: Don't free the JIT info.
4148
4149         * driver.c: Changes in the JIT info table testing code.
4150
4151 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
4152
4153         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
4154         interruption. Fix some warnings.
4155
4156         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
4157         interruption_checkpoint.
4158
4159 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
4160
4161         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
4162         from embedding applications.
4163
4164 2008-06-02  William Holmes  <billholmes54@gmail.com>
4165
4166         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
4167           reserving 32 bytes on the stack when making calls. 
4168
4169         Contributed under MIT/X11 license.
4170
4171 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
4172
4173         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
4174         the linear IL branch.
4175
4176         * driver.c: Print out more information for --version on arm.
4177
4178 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
4181         bb_exit instead, since out of line bblocks might not actually be emitted
4182         out-of-line.
4183         
4184         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
4185         maximum epilog size for out of line bblocks if tracing is enabled.
4186
4187         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
4188
4189 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
4190
4191         * arrays.cs: Regression tests for allocating arrays with negative sizes.
4192
4193 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
4194
4195         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
4196         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
4197         opcodes.
4198
4199 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
4200
4201         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
4202         the 'value' to store is a constant.
4203
4204         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
4205
4206         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
4207         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
4208
4209 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
4210
4211         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
4212         for accessing method->generic_container.
4213
4214 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
4217         
4218         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
4219
4220         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
4221
4222         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
4223         fails.
4224
4225 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
4226
4227         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
4228
4229         * mini.c: Handle the case when mono_class_vtable () fails.
4230
4231 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
4232         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
4233         the stat profiler.
4234
4235 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4236
4237         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
4238         together with domain sharing.
4239
4240 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4241
4242         * mini.c: Treat callvirts to final methods like non-virtual calls
4243         when doing generic sharing, i.e. look them up in the runtime
4244         generic context.
4245
4246 2008-05-22  Mark Probst  <mark.probst@gmail.com>
4247
4248         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
4249         with computed types (for generic sharing).
4250
4251         * mini.c: Generic sharing for mkrefany and refanyval.
4252
4253 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
4254
4255         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
4256         possible.
4257
4258         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
4259         the generic sharing code.
4260         
4261         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
4262         when needed.
4263
4264 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4265
4266         * mini.h: Remove the declaration of mono_aot_init_vtable ().
4267
4268 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
4269
4270         * driver.c: updated copyright date
4271
4272 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
4273
4274         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
4275         needed.
4276
4277 2008-05-19  Martin Baulig  <martin@ximian.com>
4278
4279         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
4280         pointing to the new `_mono_debug_using_mono_debugger' variable.
4281
4282         * driver.c
4283         (mono_main): Check mono_debug_using_mono_debugger() rather than
4284         the `MONO_INSIDE_MDB' environment variable to check whether we're
4285         inside the debugger.
4286
4287 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
4288
4289         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
4290         argument.
4291
4292 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4293
4294         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
4295
4296         * mini.c: Added mini_assembly_can_skip_verification. This
4297         function checks if the assembly requested to skip verification. 
4298         Fixes part of #387274.
4299
4300 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
4301
4302         * mini.c (mini_get_method): Disable the check for open generic classes when
4303         using generic sharing.
4304
4305         * generics.cs: Add a test for #387034.
4306
4307         * mini.c (mini_get_method): Check whenever the method class is an open generic
4308         type, and return NULL in that case, causing a verification error. Fixes
4309         #384123.
4310
4311 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4312
4313         * driver.c (mono_main): Revert r102623. The right
4314         thing to do is to enable the verifier under verifiable
4315         unless a --security flag was passed.
4316
4317         We need this non-trivial behavior for --verify-all otherwise
4318         mcs-compileall won't be able to use it. As it needs everything to
4319         be verified under validil.
4320
4321 2008-05-06  Martin Baulig  <martin@ximian.com>
4322
4323         Fix #383749.
4324
4325         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
4326         (mono_debugger_thread_cleanup): Likewise.
4327         (mono_debugger_extended_notification): Likewise.
4328
4329 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4330
4331         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
4332         against both inflated and non-inflated methods. We need to check against the
4333         generic definition for cases where the instantiated method is not visible.
4334         We need to check against the inflated types for cases where the instantiation
4335         changes any super type. This fixes #382986.
4336
4337         Note that this doesn't need to be applied to other parts of mono_method_to_ir
4338         that check for visibiliy as generic params only appears as the type subject
4339         of tokens on call opcodes. Field manipulation and ldftn must always
4340         target an exact type.
4341
4342 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
4343
4344         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
4345         if no related --security flag is passed.
4346
4347 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4348
4349         * mini-arch.h: Prepare support for ppc64.
4350
4351         Contributed under MIT/X11 license.
4352
4353 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4354
4355         * aot-runtime.c: Prepare support for ppc64.
4356
4357         Contributed under MIT/X11 license.
4358
4359 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
4360
4361         * mini-ops.h: Prepare support for ppc64.
4362
4363         Contributed under MIT/X11 license.
4364
4365 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
4366
4367         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
4368
4369         Contributed under MIT/X11 license.
4370
4371 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
4372
4373         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
4374         assemblies, since aot_name is not a full path, causing us to load MS.NET 
4375         assemblies on windows.
4376
4377 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
4378
4379         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
4380         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
4381         * main.c: Use UTF-8 encoded command line instead of Windows default code
4382         page on Windows to support Unicode.
4383         * driver.c (DllMain): New function for mixed-mode assembly support.
4384         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
4385         export __stdcall functions without decoration.
4386
4387         Contributed under MIT/X11 license.
4388
4389 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4390
4391         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
4392         saving it very early.
4393
4394 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4395
4396         * mini.h, mini.c: Lots of code for accessing the old RGCTX
4397         deleted.  The only way to access the new RGCTX is via the
4398         trampline.
4399
4400         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
4401         vtable instead of the RGCTX to static methods.
4402
4403         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
4404         accessing the new RGCTX.
4405
4406         * generic-sharing.c: There is no separation between self, type
4407         arguments and other types in the RGCTX anymore.
4408
4409 2008-04-25  Jonathan Chambers <joncham@gmail.com>
4410
4411         * mini-amd64.c (add_general): Remove previous stack adjustment.
4412         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
4413         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
4414         for 32 bytes of stack space reserved for all calls.
4415         
4416         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
4417         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
4418         adjustment.
4419         
4420         Code contributed under MIT/X11 license.
4421
4422 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
4423
4424         * mini.c (mini_method_verify): Only verify non-inflated methods, check
4425         against the root definition, peeling out method and type instantiations.
4426         Cache verify success results, code that fails verification is still
4427         checked multiple times.
4428
4429 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
4430
4431         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
4432
4433 2008-04-23  Jonathan Chambers <joncham@gmail.com>
4434
4435         * mini-amd64.c (add_general): Always increment stack on Win64.
4436         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
4437         on Win64.
4438         
4439         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
4440         stack based argument handling on Win64.
4441         
4442         Code contributed under MIT/X11 license.
4443
4444 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
4445
4446         * Makefile.am (version.h): Add support for git-svn.
4447
4448 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
4449
4450         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
4451         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
4452         avoiding allocations and libc functions which might deadlock.
4453         
4454         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
4455         'no-gdb-backtrace' option is set.
4456
4457         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
4458
4459         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
4460
4461 2008-04-21  Martin Baulig  <martin@ximian.com>
4462
4463         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
4464         and `get_lmf_addr'; `notification_address' is no longer a pointer.
4465
4466 2008-04-21  Martin Baulig  <martin@ximian.com>
4467
4468         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
4469         `thread_vtable', `event_handler_ptr' and `event_handler'.
4470
4471 2008-04-21  Martin Baulig  <martin@ximian.com>
4472
4473         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
4474         allows delayed initialization of the `executable_code_buffer' when
4475         attaching.
4476
4477 2008-04-21  Martin Baulig  <martin@ximian.com>
4478
4479         * mini.h (mono_debugger_create_notification_function): Removed.
4480         * tramp-*.c (mono_debugger_create_notification_function): Removed.
4481
4482         * mdb-debug-info64.s
4483         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4484
4485         * mdb-debug-info32.s
4486         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4487
4488         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
4489         currently only works on x86 and x86_64, so don't create it on ppc.
4490
4491 2008-04-21  Martin Baulig  <martin@ximian.com>
4492
4493         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
4494
4495         * mini.c
4496         (mini_method_compile): In the fp elimination check, check
4497         `debug_options.mdb_optimizations' in addition to
4498         mono_debug_using_mono_debugger().       
4499
4500         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
4501         disable some JIT optimizations which are only disabled when
4502         running inside the debugger.
4503         Added `--help-debug' option to describe the debugging options.
4504         (parse_debug_options): New static function to parse the `--debug'
4505         options, so we can easily add more stuff in future.
4506
4507 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
4508
4509         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
4510         the method has no body.
4511
4512 2008-04-19  Jonathan Chambers <joncham@gmail.com>
4513
4514         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
4515         assembly is not allowed in MSVC 64-bit compiler. 
4516         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
4517         as we get floating point exceptions everywhere.
4518         
4519         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
4520         correctly align arguments for call to throw_exception.
4521         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
4522         
4523         Code contributed under MIT/X11 license.
4524
4525 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
4526
4527         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
4528
4529 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
4530
4531         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
4532
4533         * mini-amd64.c (NEW_INS): Set cil_code.
4534
4535         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
4536         from mini-amd64.c so all debugger related logic is in one place.
4537
4538         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
4539         later won't have a random ip assigned to them.
4540
4541 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
4542
4543         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
4544         the arch specific function initializes code_size.
4545         (mono_create_delegate_trampoline): Ditto.
4546
4547         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
4548         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
4549         platforms.
4550
4551         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
4552         running under the debugger.
4553
4554         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
4555         debugger.
4556
4557         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
4558         debugger. Also move the disabling of optimizations here from driver.c.
4559         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
4560         debugger.
4561
4562         * mini.h (MonoCompile): Add a few new flags.
4563
4564 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
4565
4566         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
4567         so the cil_code field of created MonoInst's is properly set.
4568         (mini_select_instructions): Ditto.
4569
4570         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
4571         (MONO_INST_NEW_CALL): Ditto.
4572
4573         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
4574         in many places so the ins->cil_code field is properly initialized.
4575
4576         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
4577         place.
4578
4579 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
4580
4581         * mini.c (mini_method_compile): Print a different message when compiling a 
4582         shared method.
4583         
4584         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
4585         > 1.
4586
4587 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4588
4589         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
4590         SSE2 instructions.
4591
4592         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
4593         
4594 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4595
4596         * mini.c (handle_stack_args): Make this return void since its return value was
4597         never used. Also set cfg->unverifiable for invalid IL instead of calling
4598         G_BREAKPOINT ().
4599
4600 2008-04-10  Mark Probst  <mark.probst@gmail.com>
4601
4602         * mini.c: Make sure "this" is live in catch clauses with type
4603         variables in shared generic code.
4604
4605 2008-04-08  Mark Probst  <mark.probst@gmail.com>
4606
4607         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
4608         generic_class_is_reference_type() to ensure the proper behaviour
4609         when sharing generic code and the type in question is a type
4610         argument.
4611
4612 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4613
4614         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
4615         race conditions when printing thread dumps. Fixes #377738.
4616
4617 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
4618         
4619         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
4620         shows up when both MonoInst arguments can cause aliasig.
4621         There is likely no way in the current JIT to trigger this problem, but
4622         it showed up in the development of generics sharing, when in a new
4623         opcode both args of an OP_GROUP can be aliases (addresses of a local).
4624         When the generics sharing code will be committed, its tests will be
4625         valid also for this bug.
4626
4627 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4628
4629         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
4630         PATCH_INFO_METHOD.
4631
4632         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
4633         NULL.
4634
4635 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
4636
4637         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
4638         use a more detailed exception message for InvalidCastException.
4639
4640         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
4641
4642         * driver.c (mono_main): Add --debug=casts option to turn on better 
4643         InvalidCastException message details.
4644
4645         * mini.c (mini_get_debug_options): New helper function to return the address of
4646         the debug_options variable.
4647
4648         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
4649         the jit_tls TLS variable.
4650
4651         * mini.c (mono_jit_tls): New TLS variable.
4652
4653         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
4654         option is used.
4655
4656 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
4657
4658         * mini.h: Removed verifer related stuff. This code was moved to verify.c
4659
4660         * mini.c: Removed verifer related stuff, code moved to verify.c.
4661
4662         * driver.c: Using code from verify.c instead of mini.c.
4663
4664 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
4665
4666         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
4667         longer valid.
4668
4669 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
4670
4671         * mini.c (check_for_method_verify): Enabling verification of
4672         corlib if mono_verify_all is set. Bugs in the verifier preventing that
4673         have been fixed.
4674
4675 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
4676
4677         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
4678         caller saved registers as well.
4679         
4680         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
4681         saved registers as well.
4682
4683 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
4684
4685         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
4686
4687         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
4688         code.
4689
4690 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
4691
4692         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
4693         to get_call_info.
4694         (get_call_info): Take a gsctx argument instead of 'cfg'.
4695
4696 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
4697
4698         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
4699         mono_verify_all is set.
4700
4701         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
4702
4703         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
4704
4705 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
4706
4707         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
4708         an exception.
4709
4710         * driver.c mini.c mini.h: Add a --verify-all development option to test the
4711         verifier and the code generated by the compiler.
4712
4713 2008-03-25  Mark Probst  <mark.probst@gmail.com>
4714
4715         * mini.c: Generic sharing of the non-nullable case of the box
4716         instruction.
4717
4718 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
4719
4720         * inssel.brg: Fix the build.
4721
4722         * iltests.il.in: Add a test for lconv.ovf.u8.un.
4723
4724 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
4725
4726         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
4727         Array:Address. Fixes #372410.
4728
4729         * iltests.il.in: New tests for readonly prefix.
4730
4731 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
4732
4733         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
4734         mini-trampolines.c.
4735
4736         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
4737         mini-exceptions.c.
4738
4739         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
4740         
4741         * mini.c (mono_decompose_op_imm): New helper function.
4742
4743         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
4744         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
4745         return value.
4746
4747         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
4748         mono_arch_output_basic_block. Fix warnings.
4749
4750         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
4751         for now.
4752
4753 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
4754
4755         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
4756         since the extra frame is now detected automatically inside the loop.
4757
4758         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
4759         opts which are now in mono_peephole_ins ().
4760         
4761         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
4762
4763         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
4764         frames and skip duplicate managed-to-native frames. Fixes #367665.
4765
4766         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
4767         opts which are now in mono_peephole_ins ().
4768         (mono_arch_peephole_pass_2): Ditto.
4769
4770         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
4771
4772         * mini-codegen.c (mono_peephole_ins): New helper function containing the
4773         arch independent peephole optimizations.
4774
4775         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
4776         opts which are now in mono_peephole_ins ().
4777
4778         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
4779         
4780         * mini-s390.c (mono_arch_output_basic_block): Fix build.
4781
4782         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
4783         pattern.
4784
4785         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
4786         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
4787         opcode. 
4788
4789 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
4790
4791         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
4792         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
4793         return value.
4794
4795         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
4796         mono_arch_output_basic_block. Fix warnings.
4797
4798 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
4799
4800         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
4801         conv.ovf.u.un.
4802
4803 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
4804
4805         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
4806         conv.ovf.u.un.
4807
4808         * iltests.il: Add new tests.
4809
4810 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
4811
4812         * mini.c: Removed Windows version macros.
4813
4814 2008-03-20  Mark Probst  <mark.probst@gmail.com>
4815
4816         * generic-sharing.c: Put reflection types in the extensible part
4817         of the runtime generic context.
4818
4819         * mini.c: Generic sharing of the GetTypeHandle special case of the
4820         ldtoken instruction.
4821
4822 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
4823
4824         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
4825
4826         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
4827         
4828         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
4829         consistency with the other version on the linear IR branch.
4830
4831         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
4832
4833         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
4834
4835         * iltests.il.in: Add new tests.
4836
4837 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
4838
4839         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
4840
4841         * iltests.il.in: Add new tests.
4842
4843 2008-03-19  Mark Probst  <mark.probst@gmail.com>
4844
4845         * mini.c: Two variables with the same name were declared in
4846         nesting contexts and one wasn't initialized.  Fixed.
4847
4848 2008-03-19  Mark Probst  <mark.probst@gmail.com>
4849
4850         * mini.c: Generic sharing of the initobj instruction.
4851
4852 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
4853
4854         * mini.c: make the test to optimize ldtoken from typeof() more
4855         precise.
4856
4857 2008-03-18  Mark Probst  <mark.probst@gmail.com>
4858
4859         * mini.c: Generic sharing of the initobj instruction for reference
4860         types.
4861
4862 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
4863
4864         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
4865         the mono_breakpoint_clean_code() code to perform bound checks.
4866
4867 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
4868
4869         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
4870         mono_arch_patch_callsite() to include the start of the managed method
4871         to be able to perform bound checks.
4872
4873 2008-03-17  Mark Probst  <mark.probst@gmail.com>
4874
4875         * mini.c: Generic sharing for the isinst instruction.
4876
4877 2008-03-17  Mark Probst  <mark.probst@gmail.com>
4878
4879         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
4880         inssel-long32-mips.brg: Added opcodes for doing indirect calls
4881         with the runtime generic context argument.
4882
4883         * mini.c: Share calls to several types of unsharable methods by
4884         putting the address of the method code in the runtime generic
4885         context and doing an indirect call.
4886
4887         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
4888         to switches.
4889
4890 2008-03-16  Mark Probst  <mark.probst@gmail.com>
4891
4892         * generic-sharing.c: Change due to a change in the runtime genric
4893         context API.
4894
4895 2008-03-15  Martin Baulig  <martin@ximian.com>
4896
4897         * tramp-x86.c
4898         (mono_arch_nullify_class_init_trampoline): Add call to
4899         mono_breakpoint_clean_code() to make things work when running
4900         inside the debugger.
4901
4902         * tramp-amd64.c
4903         (mono_arch_nullify_class_init_trampoline): Add call to
4904         mono_breakpoint_clean_code() to make things work when running
4905         inside the debugger.
4906
4907 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
4908
4909         * inssel-long.brg (reg): Fix 64 bit build.
4910
4911 2008-03-14  Mark Probst  <mark.probst@gmail.com>
4912
4913         * mini.c, mini.h: Share static generic code by passing it an
4914         implicit argument pointing to the runtime generic context.
4915
4916         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
4917         inssel-long32-mips.brg: New opcodes for calling shared static,
4918         which need to be passed the runtime generic context.
4919
4920         * mini-amd64.c, mini-x86.c: Save the runtime generic context
4921         argument on the stack in the prologue if needed.  New function for
4922         finding the runtime generic context argument from the registers
4923         saved by the trampoline.
4924
4925         * mini-amd64.h, mini-x86.h: Specify which register to use for the
4926         runtime generic context argument.
4927
4928         * tramp-amd64.c: Also restore the register used for the runtime
4929         generic context argument.
4930
4931         * mini-trampoline.c: Resolve shared static calls by consulting the
4932         runtime generic context via the new argument.
4933
4934         * generic-sharing.c: Add an argument to sharability-checking
4935         functions that specifies whether type variables should be treated
4936         as sharable type arguments.
4937
4938         * inssel-x86.brg: Removed a superfluous, buggy rule.
4939
4940         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
4941         to switches.
4942
4943 2008-03-14  Martin Baulig  <martin@ximian.com>
4944
4945         * debug-debugger.c (main_thread_handler): Call
4946         mono_runtime_run_main() without sending any notifications.
4947
4948         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
4949
4950 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
4951
4952         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
4953
4954 2008-03-14  Mark Probst  <mark.probst@gmail.com>
4955
4956         * tramp-x86.c: Fixed register restore offsets in the trampoline
4957         code for ECX and EDX.
4958
4959 2008-03-12  Geoff Norton  <gnorton@novell.com>
4960
4961         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
4962         different ucontext_t implementations.
4963         * exceptions-arm.c: Use the above defines to get exceptions working on 
4964         iPhone (based on a patch by Luke Howard lukeh@padl.com)
4965         * mini-arm.c: Implement iPhone icache support (based on a patch by
4966         Luke Howard lukeh@padl.com)
4967
4968 2008-03-12  Mark Probst  <mark.probst@gmail.com>
4969
4970         * mini.c: Enable generic sharing of calls to non-static
4971         non-interface non-generic non-value-type methods.
4972
4973         * mini-trampolines.c: Resolve calls from shared generic code.
4974
4975 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
4976
4977         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
4978
4979         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
4980
4981 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
4982
4983         * mini.c: some fixes for the AOT compiler.
4984
4985 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
4986
4987         * cpu-amd64.md: Add clob:1 to some float opcodes.
4988
4989 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
4990
4991         * mini.h: Added MiniVerifierMode enumeration.
4992
4993         * mini.c: Added mini_verifier_set_mode to control
4994         the usage of the new verifier.
4995
4996         * mini.c (mono_method): Integrated the new verifier.
4997
4998         * driver.c: Extended --security option with validil and
4999         verifiable options to activate the new verifier.
5000
5001 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
5002
5003         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
5004         optimization to ctors taking 0 or 2 arguments too.
5005
5006         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
5007         a bit.
5008
5009         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
5010
5011         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
5012
5013 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
5014
5015         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
5016         non-aot case as well.
5017
5018         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
5019
5020         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
5021         changes.
5022
5023         * aot-compiler.c (encode_patch): Ditto.
5024
5025         * mini.h (G_MININT32): Fix the definition of this.
5026
5027 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
5028
5029         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
5030
5031         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
5032
5033 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5034
5035         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
5036         methods returning vtypes in registers.
5037         (mono_arch_allocate_vars): Ditto.
5038
5039         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
5040
5041         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
5042
5043         * generics.cs: Add a test from the linear IR branch.
5044
5045         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
5046
5047         * mini.c (inline_method): Cache failed inline attempts.
5048
5049 2008-03-04  Mark Probst  <mark.probst@gmail.com>
5050
5051         * mini.c: For shared methods of generic classes put the location
5052         of "this" into the MonoGenericJitInfo.
5053
5054         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
5055         register out of a MonoContext by register number.  Add the generic
5056         sharing context as an argument to mono_arch_find_this_argument().
5057
5058         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
5059         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
5060         for new arch function.
5061
5062         * mini-exception.c: Handle open exception clauses in shared
5063         generic code.
5064
5065         * mini-trampolines.c: Supply additional argument to
5066         mono_arch_find_this_argument().
5067
5068 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
5069
5070         * Makefile.am (regtests): Run the bench.exe tests last.
5071
5072 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
5073
5074         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
5075         a bit.
5076
5077 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
5078
5079         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
5080         with MS.
5081
5082         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
5083         
5084         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
5085
5086         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
5087         whose class has no cctor.
5088
5089         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
5090
5091 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
5092
5093         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
5094         unverified.
5095
5096 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
5097
5098         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
5099         to be in sync with the code on the linear IR branch.
5100
5101         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
5102
5103         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
5104
5105 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
5106
5107         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
5108
5109         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
5110
5111         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
5112
5113         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
5114
5115         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
5116         
5117         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
5118         body.
5119
5120 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
5121
5122         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
5123         OP_LOADR4_MEMBASE emission.
5124
5125         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
5126         (mono_spillvar_offset_float): Ditto.
5127
5128         * mini-mips.c (mono_arch_emit_prolog): Ditto.
5129
5130         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
5131         emission.
5132
5133         * basic-long.cs: Add regression tests for them.
5134
5135         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
5136         use.
5137         (mono_arch_allocate_vars): Fix representation of single-precision float
5138         argument.
5139         (mono_arch_output_basic_block): Ditto.
5140
5141         * inssel-mips.brg: Ditto, remove duplicate items.
5142
5143         * mini-mips.c (emit_load_volatile_arguments): New function to handle
5144         arguments of tail calls as on other platforms.
5145         (mono_arch_output_basic_block): Handle tail calls.
5146
5147         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
5148         register.
5149
5150         * objects.cs (test_5_pass_static_struct): Add test for it.
5151
5152         Contributed under MIT/X11 license.
5153
5154 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
5155
5156         * Makefile.am: Use gmcs for compiling the regression tests.
5157
5158         * *.2.cs *.2.il: Rename to *.cs and *.il.
5159
5160 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
5161
5162         * regalloc.h: Make the vassign array smaller.
5163
5164         * mini.c (mini_method_compile): Remove an unused field in cfg.
5165
5166         * mini-codegen.c: Add a bunch of micro optimizations.
5167
5168 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
5169
5170         * regalloc.h: Remove some unused fields.
5171
5172 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
5173
5174         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
5175
5176         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
5177
5178 2008-02-22  Mark Probst  <mark.probst@gmail.com>
5179
5180         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
5181
5182         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
5183         trampoline: Fetch an entry from the runtime generic context.  If
5184         it's NULL, jump to the actual trampoline to fill the runtime
5185         generic context.  Otherwise, return it.
5186
5187         * mini.c: Call the lazy fetch trampoline to get entries out of the
5188         runtime generic context.
5189
5190         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
5191         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
5192         tramp-sparc.c: Stubs for the lazy fetch trampoline.
5193
5194 2008-02-21  Mark Probst  <mark.probst@gmail.com>
5195
5196         * mini.c: Fetch data out of the extensible part of the runtime
5197         generic context instead of calling a helper function.
5198
5199         * generic-sharing.c: Some functions moved into
5200         metadata/generic-sharing.c.  Helper function for fetching other
5201         types now checks and asserts against extensible rgctx (just for
5202         debugging purposes - the helper function isn't called anymore
5203         unless for debugging).
5204
5205 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5206
5207         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
5208         for tail calls up to the point that the tests in iltests.exe run. Also add a
5209         dummy CKFINITE implementation.
5210         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
5211         needed for trampoline LMF frames.
5212
5213         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
5214         trampoline LMF frames.
5215
5216 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
5217
5218         * mini.c (inline_method): clean any pending loader error when inlining fail.
5219         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
5220
5221 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
5222
5223         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
5224
5225         * aot-runtime.c (decode_patch_info): Ditto.
5226
5227         * mini.c (mono_resolve_patch_target): Ditto.
5228         
5229         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
5230         icall wrappers.
5231
5232         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
5233         
5234         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
5235         if it references an icall address.
5236
5237 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
5238
5239         * cpu-s390x.md: Remove some more unused opcodes.
5240         
5241         * cpu-s390x.md: Remove some unused opcodes.
5242
5243         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
5244         mono_op_imm_to_op ().
5245
5246         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
5247         instead of a switch statement.
5248         
5249         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
5250         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
5251
5252         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
5253         
5254         * mini-codegen.c: Remove unused mono_regstate2_... functions.
5255
5256         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
5257         -1.
5258
5259 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
5260
5261         * driver.c (mono_main): Improve error reporting when an assembly cannot be
5262         opened. Fixes #362607.
5263
5264         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
5265
5266         * iltests.il.in: Add a test for static methods in interfaces.
5267
5268 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
5269
5270         * genmdesc.c (build_table): Fix a crash on older glib versions.
5271
5272         * cpu-sparc.md: Remove some unused opcodes.
5273         
5274         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
5275         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
5276
5277         * cpu-amd64.md: Remove some unused opcodes.
5278
5279         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
5280         like the other opcodes.
5281
5282 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
5283
5284         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
5285
5286         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
5287
5288         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
5289         variables 'cfg' instead of 'm' for consistency.
5290
5291         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
5292
5293         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
5294         argument holding the vtype return address, to avoid the ambigious use of
5295         cfg->ret for this purpose.
5296
5297         * mini.c (NEW_RETLOADA): Use vret_addr if set.
5298
5299         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
5300         
5301         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
5302         new mono_print_ins () function which only takes one argument.
5303
5304 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
5305
5306         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
5307         macro arguments.
5308
5309 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
5310
5311         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
5312
5313         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
5314
5315         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
5316         opcodes and other small changes.
5317
5318         * mini-ops.h: Add some new opcodes from the linear IR branch.
5319
5320         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
5321
5322         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
5323         opcodes, use the REG_MEMBASE opcodes instead.
5324         
5325         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
5326         opcodes, use the REG_MEMBASE opcodes instead.
5327         
5328         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
5329         linear IR branch.
5330
5331         * mini.c (mono_op_imm_to_op): New helper function.
5332
5333         * mini-ops.h: Add some opcodes from linear IR branch.
5334
5335 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
5336
5337         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
5338         <tsv@solvo.ru>.
5339
5340 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
5341
5342         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
5343         OP_ICONV_TO_R4/R8.
5344
5345         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
5346
5347 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
5348
5349         * aot-compiler.c (emit_method_code): Add an assert.
5350
5351         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
5352         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
5353         methods.
5354
5355 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
5356
5357         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
5358         some load/store opcodes so they are consistent. 
5359         (mono_arch_emit_prolog): Simplify some code.
5360
5361         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
5362
5363         * objects.cs: Add tests for large argument offsets on ARM.
5364
5365         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
5366         stack offsets. Fixes #359651.
5367
5368         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
5369
5370         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
5371
5372         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
5373
5374         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
5375
5376         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
5377
5378         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
5379         rid of CEE_CONV_R_UN.
5380
5381         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
5382
5383 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
5384
5385         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
5386
5387         * mini.c (mono_normalize_opcodes): Add some more opcodes.
5388
5389         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
5390
5391         * cpu-amd64.md: Remove some unused opcodes.
5392
5393         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
5394
5395         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
5396
5397         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
5398         arch specific functions for its parts. Call the peephole pass after local
5399         regalloc so the prolog can compute a more accurate max_offset.
5400         
5401         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
5402         the corresponding OP_I/OP_L opcodes.
5403
5404         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
5405
5406         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
5407
5408 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5409
5410         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
5411         as they are handled in mini.c.
5412
5413         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
5414         
5415         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
5416         case since it is handled in mini.c.
5417
5418         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
5419
5420         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
5421
5422         * *.c: Use the new opcodes in the IR and back end code.
5423
5424         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
5425
5426         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
5427
5428 2008-02-06  Mark Probst  <mark.probst@gmail.com>
5429
5430         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
5431         an assert because it has a race condition.
5432
5433 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5434
5435         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
5436
5437         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
5438
5439         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
5440
5441         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
5442         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
5443
5444 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
5445
5446         * cpu-amd64.md (move): Correct the maximum size of move.
5447
5448 2008-02-05  Mark Probst  <mark.probst@gmail.com>
5449
5450         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
5451         the generic class init trampoline to return quickly if the class
5452         is already inited.
5453
5454 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
5455
5456         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
5457         issues where an 32 bit callsite cannot be patched by a 64 bit address.
5458
5459 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
5460
5461         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
5462         branch.
5463
5464 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
5465
5466         * objects.cs: Add some soft-float tests.
5467
5468         * mini.c: Fix a couple more soft-float issues.
5469
5470         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
5471
5472         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
5473         avoid a REX prefix.
5474
5475 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
5476
5477         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
5478         exception happens while compiling a virtual method.
5479
5480 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
5481
5482         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
5483         
5484         * mini-sparc.c: Fix build.
5485
5486         * mini-sparc.c (get_call_info): Add support for generic sharing.
5487
5488         * mini-exceptions.c: Add a FIXME.
5489
5490 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
5491
5492         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
5493         altstack handling code.
5494
5495         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
5496         
5497         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
5498
5499         * mini-s390.c: Add support for generic sharing.
5500
5501         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5502         Fix CAS on s390.
5503         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5504
5505         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
5506
5507         * mini-s390x.c: Add support for generic sharing.
5508         
5509         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5510         Fix CAS on ia64.
5511         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5512
5513         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
5514         can be used since it takes a 16 bit signed immediate.
5515
5516         * inssel-s390x.brg: Fix OP_SETRET.
5517
5518         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
5519
5520         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
5521
5522         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
5523
5524         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
5525
5526         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
5527         in one place.
5528
5529         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
5530         stuff.
5531
5532         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
5533         of the unused mono_arch_patch_delegate_trampoline stuff.
5534
5535 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
5536
5537         * basic-long.cs: Move the fp related tests to basic-float.cs.
5538
5539         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
5540
5541         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
5542
5543         * basic-calls.cs: Add a test for proper float argument passing.
5544
5545         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
5546         if the context corresponds to an exception received through a signal.
5547
5548         * exceptions.cs: Add a test for nullref handling at the start of a try
5549         clause.
5550
5551         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
5552
5553         * jit-icalls.c (mono_break): New JIT icall.
5554
5555         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
5556
5557         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
5558
5559 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
5560
5561         * cpu-*.md: Get rid of unused opcodes.
5562
5563         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
5564
5565         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
5566         by all platforms.
5567
5568         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
5569         define.
5570
5571         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
5572         the arch independent trampoline code in mini-trampolines.c.
5573
5574         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
5575
5576         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
5577
5578         * mini-s390.h: Remove an unused define.
5579         
5580         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
5581         the arch independent trampoline code in mini-trampolines.c.
5582
5583         * mini-arm.c (mono_arch_emit_prolog): Fix build.
5584
5585 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
5586
5587         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
5588
5589         * mini-s390.c (mono_arch_emit_prolog): Fix build.
5590
5591         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
5592
5593         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
5594
5595         * cpu-amd64.md: Use smaller sizes for int opcodes.
5596
5597         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
5598
5599         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
5600         objects.cs.
5601
5602         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
5603         debugging.
5604
5605         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
5606         instead of though a pointer to save an indirection when accessing elements of
5607         the array.
5608
5609         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
5610         some typos.
5611         (NOT_IMPLEMENTED): New helper macro.
5612         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
5613         of a bb.
5614
5615         * *.c: Use the new helper macro.
5616
5617 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
5618
5619         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
5620
5621 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
5622
5623         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
5624         stack slots.
5625
5626 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
5627
5628         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
5629         profiling is enabled.
5630         
5631         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
5632         the end.
5633         (mono_arch_emit_prolog): Add more first bblock optimizations.
5634
5635         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
5636         in order if possible.
5637         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
5638         bblock, since the arguments are still in their original registers.
5639
5640         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
5641
5642 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
5643
5644         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
5645         as well.
5646
5647         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
5648         offset 0.
5649
5650         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
5651
5652         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
5653         process async exceptions received while in unmanaged code.
5654
5655         * mini.c (mini_init): Install a callback with the runtime which will be called
5656         when a thread receives an async exception while in unmanaged code.
5657
5658         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
5659
5660         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
5661
5662 2008-01-16  Wade Berrier  <wberrier@novell.com>
5663
5664         * cpu-g4.md:
5665         * cpu-arm.md:
5666         * cpu-s390x.md:
5667         fix build
5668
5669 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
5670
5671         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
5672         compilation with sun cc.
5673
5674         * cpu-*.md: Fix the build.
5675
5676         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
5677
5678         * mini-amd64.h: Add some comments to the MonoLMF structure.
5679
5680         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
5681         
5682         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
5683         in the LMF structure if possible. This saves two instructions in the
5684         managed->native wrappers.
5685
5686         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
5687
5688 2008-01-16  Mark Probst  <mark.probst@gmail.com>
5689
5690         * generic-sharing.c: New type argument lookup code which uses the
5691         runtime generic context template.
5692
5693 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
5694
5695         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
5696
5697         * mini-arm.c (add_general): Fix arm eabi parameter passing.
5698         (mono_arch_output_basic_block): Fix localloc implementation.
5699
5700         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
5701
5702         * mini-ia64.c (peephole_pass): Fix ia64 build.
5703
5704         * mini-amd64.c (peephole_pass): Fix a warning.
5705         
5706         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
5707         at a constant offset from sp/fp.
5708
5709         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
5710         instead of obtaining it from *lmf in the managed method case.
5711
5712 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
5713
5714         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
5715
5716 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
5717
5718         * mini.h (MonoInstList): New type.
5719         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
5720         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
5721         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
5722         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
5723         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
5724         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
5725         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
5726         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
5727         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
5728         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
5729         MONO_INST_LIST_FOR_EACH_ENTRY,
5730         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
5731         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
5732         mono_inst_list_first, mono_inst_list_last,
5733         mono_inst_list_next, mono_inst_list_prev): New instruction
5734         list handling interfaces.
5735         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
5736         list head 'ins_list'.
5737         (MonoInst): Replace next pointer with list head 'node'.
5738         (MonoCallInst): Make 'out_args' a MonoInstList.
5739         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
5740         (MonoCompile): Delete reverse_inst_list and
5741         reverse_inst_list_len.
5742         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
5743         mono_arch_lowering_pass, mono_arch_local_regalloc,
5744         mono_arch_output_basic_block, mono_arch_emit_prolog):
5745         Convert to new instruction lists.
5746         (insert_after_ins): Delete.
5747         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
5748         instruction lists.
5749         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
5750         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
5751         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
5752         mono_emulate_opcode, mono_emit_load_got_addr,
5753         inline_method, mono_method_to_ir, mono_print_bb_code,
5754         print_dfn, decompose_pass, nullify_basic_block,
5755         replace_out_block_in_code, remove_block_if_useless,
5756         merge_basic_blocks, move_basic_block_to_end,
5757         try_unsigned_compare, optimize_branches, mono_print_code,
5758         mini_select_instructions, remove_critical_edges): Likewise.
5759         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
5760         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
5761         mono_arch_output_basic_block, mono_arch_emit_prolog):
5762         Likewise.
5763         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
5764         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
5765         mono_arch_output_basic_block): Likewise.
5766         (inst_list_prepend, insert_after_ins): Delete.
5767         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
5768         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
5769         instruction lists.
5770         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
5771         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
5772         mono_arch_emit_prolog): Likewise.
5773         * cfold.c (mono_constant_fold): Likewise.
5774         * liveness.c (visit_bb, mono_analyze_liveness,
5775         optimize_initlocals): Likewise.
5776         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
5777         * graph.c (mono_draw_code_cfg): Likewise.
5778         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
5779         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
5780         mono_ssa_cprop): Likewise.
5781         * abcremoval (get_relations_from_previous_bb, process_block):
5782         Likewise.
5783         * local-propagation (mono_cprop_invalidate_values,
5784         mono_local_cprop_bb): Likewise.
5785         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
5786         peephole_pass, mono_arch_output_basic_block,
5787         mono_arch_emit_prolog): Likewise.
5788         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
5789         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
5790         mono_arch_emit_prolog): Likewise.
5791         (insert_after_ins): Delete.
5792         * aliasing.c (print_code_with_aliasing_information,
5793         mono_build_aliasing_information, mono_aliasing_deadce):
5794         Convert to new instruction lists.
5795         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
5796         peephole_pass, NEW_INS, mono_arch_lowering_pass,
5797         mono_arch_local_regalloc, mono_arch_output_basic_block):
5798         Likewise.
5799         (insert_after_ins): Delete.
5800         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
5801         peephole_pass, mono_arch_output_basic_block): Convert to
5802         new instruction lists.
5803         * mini-codegen (InstList, inst_list_prepend,
5804         insert_after_ins): Delete.
5805         (insert_before_ins, get_register_force_spilling,
5806         get_register_spilling, free_up_ireg, free_up_reg,
5807         create_copy_ins, create_spilled_store, alloc_int_reg,
5808         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
5809         to new instruction lists.
5810         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
5811         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
5812         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
5813         (insert_after_ins): Delete.
5814         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
5815         mono_arch_local_regalloc, mono_arch_output_basic_block,
5816         mono_arch_call_opcode): Convert to new instruction lists.
5817         (insert_after_ins): Delete.
5818         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
5819         peephole_pass, mono_arch_output_basic_block,
5820         mono_arch_emit_prolog): Convert to new instruction lists.
5821
5822 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
5823
5824         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
5825
5826         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
5827         Fixes #353182.
5828
5829         * Makefile.am (version.h): Make this work with non-bash shells.
5830
5831 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
5832
5833         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
5834
5835 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
5836
5837         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
5838         the InitializeArray optimization.
5839
5840 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
5841
5842         * mini.c driver.c: Don't include os/gc_wrapper.h.
5843
5844 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
5845
5846         * mini.c (print_jit_stats): Print GC statistics if available.
5847
5848 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
5849
5850         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
5851
5852 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
5853
5854         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
5855
5856 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
5857
5858         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
5859         
5860         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
5861
5862         * driver.c (mono_main): Ditto.
5863
5864 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
5865
5866         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
5867
5868         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
5869         in the vtable can't be encoded.
5870         (compile_method): Ditto.
5871
5872 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
5873
5874         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
5875         defined.
5876
5877         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
5878         lmf->rbp.
5879
5880         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
5881         the top LMF entry belongs to the current method.
5882
5883         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
5884
5885 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
5886
5887         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
5888         
5889         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
5890
5891         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
5892
5893         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
5894
5895         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
5896
5897         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
5898         implementation.
5899
5900         * basic-float.cs: Add an ulong->double cast test.
5901
5902 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
5903
5904         * mini.c (mono_method_to_ir): Fix a warning.
5905
5906 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
5907
5908         * mini-ops.h: Add OP_SWITCH.
5909
5910         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
5911         CEE_SWITCH in back-end code, use OP_SWITCH instead.
5912
5913 2007-12-11  Geoff Norton  <gnorton@novell.com>
5914
5915         * mini-s390x.c: Minor change to the MAX() define to allow
5916         it to compile with other gcc versions.
5917
5918 2007-12-11  Geoff Norton  <gnorton@novell.com>
5919
5920         * cpu-s390x.md:
5921         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
5922
5923 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
5924
5925         exceptions-arm.c (mono_arch_get_restore_context): Restore
5926         the frame pointer.
5927
5928         exceptions-arm.c (throw_exception): Save the frame pointer.
5929         This is a partial fix for #323747. Only the client side is
5930         fixed.
5931
5932 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
5933
5934         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
5935         was using an unrelated variable to log the class which
5936         needed the cctor to be called. This was crashing on arm.
5937
5938 2007-12-09  Robert Jordan  <robertj@gmx.net>
5939
5940         * mini-x86.c (mono_arch_emit_epilog):
5941         Consider all kinds of 64-bit types. Fixes #323114.
5942
5943 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
5944
5945         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
5946
5947 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
5948
5949         * mini-amd64.c (peephole_pass): Add a missing instruction check.
5950
5951 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
5952
5953         * mini.c: run type ctor before allocating an object, not only
5954         when running it's constructor method (fixes at least part of bug #342507).
5955
5956 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
5957         
5958         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
5959         
5960         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
5961         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
5962         function.
5963
5964         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
5965         mono_generic_class_init_trampoline () the same as it is done with the other
5966         trampolines.
5967
5968         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
5969         aot-runtime.c aot-compiler.c: Implement AOT support.    
5970
5971 2007-12-07  Mark Probst  <mark.probst@gmail.com>
5972
5973         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
5974         build for archs which don't have the vtable trampoline defined
5975         yet.
5976
5977 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
5978
5979         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
5980
5981         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
5982
5983         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
5984
5985         * tramp-<ARCH>.c: Use the new helper function.
5986
5987 2007-12-07  Mark Probst  <mark.probst@gmail.com>
5988
5989         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
5990         trampoline call, which takes a vtable argument.
5991
5992         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
5993         OP_TRAMPCALL_VTABLEs like other calls.
5994
5995         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
5996         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
5997         call.  Implemented a support function which fetches the vtable
5998         from a register set.
5999
6000         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
6001         Implemented a generic class init trampoline, using the
6002         OP_TRAMPCALL_VTABLE opcode.
6003
6004         * mini.c: Implemented static field access when sharing generic
6005         code.  This implies initing the class using the new
6006         OP_TRAMPCALL_VTABLE call.
6007
6008 2007-12-07  Mark Probst  <mark.probst@gmail.com>
6009
6010         * mini.c: Don't compile methods with sharing enabled if their
6011         classes are disabled for sharing.
6012
6013 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6014
6015         * inssel.brg: Add a missing sign extension to the GETCHR and array access
6016         opcodes. Fixes #346563.
6017
6018         * objects.cs: Add a new test.
6019
6020         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
6021
6022         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
6023         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
6024
6025 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
6026
6027         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
6028
6029 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
6030
6031         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
6032         code stream.
6033
6034 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
6035
6036         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
6037
6038         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
6039         optimization in the AOT case.
6040         
6041 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
6042
6043         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
6044         
6045         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
6046
6047         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
6048
6049         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
6050
6051         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
6052         is created by the inlined delegate ctor.
6053
6054         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
6055
6056         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
6057
6058 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
6059
6060         * cpu-x86.md: Fix the length of ckfinite.
6061
6062 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
6063
6064         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
6065         
6066         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
6067         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
6068
6069         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
6070
6071         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
6072         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
6073
6074 2007-11-28  Martin Baulig  <martin@ximian.com>
6075
6076         * mini-x86.c
6077         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
6078         after creating the trampoline.
6079
6080 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
6081
6082         * aot-runtime.c (load_aot_module): Check runtime version if needed.
6083
6084         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
6085         the same version.
6086
6087         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
6088         instead of the calling method to help AOT.
6089
6090         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
6091
6092 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
6093
6094         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
6095         is defined.
6096
6097 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
6098
6099         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
6100         
6101         * aot-compiler.c (compile_method): Correct check for generic method definitions.
6102         (encode_method_ref): No need to handle generic method definitions specially.
6103
6104         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
6105
6106         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
6107         decode_klass_info.
6108
6109         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
6110         encode_klass_info.
6111         (compile_method): Enable generic sharing.
6112
6113 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
6114
6115         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
6116         (mini_method_compile): Add preliminary support for AOTing shared generic code.
6117
6118         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
6119         generic code.
6120
6121         * mini-trampolines.c: Fix a warning.
6122
6123         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
6124         NEW_PCONST.
6125         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
6126         (generic_class_is_reference_type): Remove unused function.
6127
6128         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
6129         in the generic vtable trampoline case.
6130
6131         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
6132         
6133         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
6134         return an AOT method based on a vtable slot.
6135
6136         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
6137
6138         * mini.c (mini_get_vtable_trampoline): Export this.
6139
6140 2007-11-22  Martin Baulig  <martin@ximian.com>
6141
6142         * debug-debugger.h
6143         (MonoDebuggerInfo): Move `debugger_version' up.
6144
6145 2007-11-22  Martin Baulig  <martin@ximian.com>
6146
6147         * mini-amd64.c
6148         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
6149
6150         * mini-trampolines.c
6151         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
6152         after compiling the method.
6153
6154 2007-11-20  Martin Baulig  <martin@ximian.com>
6155
6156         * debug-mini.c
6157         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
6158         (mono_debugger_remove_breakpoint): Likewise.
6159         (mono_debugger_check_breakpoints): Likewise.
6160
6161         * debug-debugger.c: Implement the new breakpoint interface here.
6162
6163 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
6164
6165         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
6166         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
6167
6168         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
6169
6170 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
6171
6172         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
6173
6174         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
6175         mini.c.
6176
6177         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
6178         mini.c.
6179
6180         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
6181         returning a vtype in a register.
6182
6183         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
6184         here from the arch specific code.
6185
6186         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
6187         mini.c.
6188
6189         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
6190         (mono_arch_emit_prolog): Increment maximum prolog size.
6191
6192         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
6193         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
6194
6195         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
6196         MonoGenericSharingContext.
6197
6198         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
6199         MonoGenericSharingContext. Allocate memory from the cfg mempool.
6200
6201 2007-11-15  Mark Probst  <mark.probst@gmail.com>
6202
6203         * mini.c, mini.h, generic-sharing.c: Functions for producing code
6204         which extract fields out of the runtime generic context.  Full
6205         sharing of the NEWARR opcode.
6206
6207 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
6208
6209         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
6210         --enable-minimal=ssa.
6211
6212 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
6213
6214         * mini-trampolines.c (mono_delegate_trampoline): Update after 
6215         mono_marshal_get_delegate_invoke () signature change.
6216
6217 2007-11-13  Mark Probst  <mark.probst@gmail.com>
6218
6219         * mini.c: Removed the shared context in favor of the generic
6220         sharing context.  Allocate the MonoJitInfo structure with room for
6221         the generic sharing context if it's needed.
6222
6223         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
6224         domain-internals.h now.
6225
6226         * mini-x86.c: Pass the generic sharing context to get_call_info ().
6227
6228         * generic-sharing.c: Several changes for working without a shared
6229         context and instead operating on open types instead.
6230
6231 2007-11-12  David S. Miller  <davem@davemloft.net>
6232
6233        * inssel-sparc.brg: Fix double instruction emit.
6234
6235 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
6236
6237         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
6238         Get/Set/Address methods.
6239         
6240         * mini.c debug-debugger.c mini-trampolines.c: Update after 
6241         mono_marshal_get_delegate_invoke signature change.
6242
6243 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6244
6245         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
6246         This can happens with dynamic methods. Fixes the other bug in #322722.
6247
6248 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
6249
6250         * tramp-arm.c (mono_arch_patch_callsite): Support patching
6251         BX call sequence.
6252
6253         * mini-arm.c (arm_patch): Implement patching of BX call
6254         sequence. Fixes one of the bugs in #322722.
6255
6256 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
6257
6258        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
6259        under Linux.  We only need to flush every 32-byte cache line.    
6260
6261 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
6262
6263         * mini.c:
6264         move_basic_block_to_end: Add branches when needed, eventually creating
6265         a new BB.
6266         optimize_branches: added a parameter that tells if it's ok to create
6267         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
6268         and avoid calling move_basic_block_to_end when it's not ok.
6269         Fixes bug 318677.
6270
6271 2007-11-07  Mark Probst  <mark.probst@gmail.com>
6272
6273         * mini.c: Abort inlining call to InitializeArray if something
6274         looks wrong.  Let the icall handle it, which now has proper safety
6275         checks.
6276
6277 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
6278
6279         * mini.c (mono_spill_call): add support for soft-float.
6280
6281         * mini.c (mono_method_to_ir): add support for soft-float
6282         to inlined functions that return float.
6283
6284         * mini.c (mono_method_to_ir): add support for soft-float
6285         to cee_stsfld opcode on float fields.
6286
6287 2007-11-05  Geoff Norton  <gnorton@novell.com>
6288
6289         * mini-x86.h: Fix the structure access for X86 Leopard.
6290
6291
6292 2007-11-05  Martin Baulig  <martin@ximian.com>
6293
6294         * mini-trampolines.c
6295         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
6296         after compiling the method to notify the debugger.
6297
6298 2007-11-05  Martin Baulig  <martin@ximian.com>
6299
6300         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
6301
6302 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
6303
6304         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
6305         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
6306
6307 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
6308
6309         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
6310         native-to-managed wrappers.
6311         
6312 2007-11-01  Geoff Norton  <gnorton@novell.com>
6313
6314         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
6315         members.
6316
6317 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
6318
6319         * mini.c, mini-x86.c: when getting back from unmanaged code
6320         to managed via a marshaled delegate we also need to set the
6321         right domain.
6322
6323 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
6324
6325         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
6326         for amd64.
6327
6328 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
6329
6330         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
6331         let the debugger or other external agents to tell the JIT when
6332         a sw breakpoint has been inserted in the code that the JIT needs
6333         to be able to inspect.
6334
6335 2007-10-31  Martin Baulig  <martin@ximian.com>
6336
6337         * debug-debugger.h
6338         (MonoDebuggerInfo): Remove `runtime_class_init'.
6339
6340 2007-10-30  Martin Baulig  <martin@ximian.com>
6341
6342         * debug-mini.h
6343         (mono_debugger_thread_created): Added `MonoThread *' argument.
6344         (mono_debugger_extended_notification): New public method.
6345         (mono_debugger_trampoline_compiled): New public method.
6346
6347         * debug-mini.c
6348         (MonoDebuggerThreadInfo): Added `thread' and
6349         `extended_notifications' fields.
6350
6351         * debug-debugger.c
6352         (debugger_executable_code_buffer): New static variable.
6353
6354         * debug-debugger.h
6355         (MonoDebuggerInfo): Added `executable_code_buffer',
6356         `executable_code_buffer_size', `breakpoint_info_area',
6357         `breakpoint_table' and `breakpoint_table_size'.
6358
6359 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
6360
6361         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
6362         that IP  either is an unused value or the vtable pointer. IMT 
6363         calls use vtable + offset now. Reduced by almost half the size
6364         of IMT entries.
6365
6366 2007-10-26  Jonathan Chambers <joncham@gmail.com>
6367
6368         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
6369         defines to access param registers. Replace long usage with
6370         gsize as sizeof(long) != sizeof(void*) on Win64.
6371
6372         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
6373         on Win64. Fix intrinsic, use _AddressOfReturnAddress
6374         instead of non-existant _GetAddressOfReturnAddress.
6375
6376         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
6377         param registers. Save/restore %rdi and %rsi in MonoLMF.
6378
6379         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
6380         param registers. Modify (throw_exception) signature to take 
6381         %rdi and %rsi on Win64. 
6382
6383         Code is contributed under MIT/X11 license.
6384
6385 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6386
6387         * helpers.c: unlink debugging output files.
6388
6389 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
6390
6391         * mini.c: Move mono_create_ftnptr () to object.c.
6392
6393 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6394
6395         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
6396         optional. This function can now be used to disassemble code generated
6397         outside the JIT such as trampolines and IMT thunks.
6398
6399         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
6400
6401         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
6402         vtable pointer from a ldr instruction.
6403
6404         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
6405         new IMT call sequence.
6406
6407         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
6408         call sequence for interface invocations.
6409
6410         * mini-arm.c (mono_arch_emit_imt_argument): added, required
6411         for imt support. This function is empty since IMT on ARM requires no
6412         special handling on the IR side.
6413
6414         * mini-arm.c (mono_arch_find_imt_method): added, required for
6415         imt support.
6416
6417         * mini-arm.c (mono_arch_find_this_argument): added, required
6418         for imt support.
6419
6420         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
6421         a ldr instruction to load a value stored in the code stream.
6422
6423         * mini-arm.c (mono_arch_build_imt_thunk):added, required
6424         for imt support.
6425
6426
6427 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
6428
6429         * mini.c (mini_init): Install the jump trampoline callback.
6430
6431 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6432
6433         * mini-trampolines.c: handle synchronized methods with the common
6434         vtable trampoline (bug #335601).
6435
6436 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
6437
6438         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
6439
6440         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
6441         64 bit platforms.
6442
6443         * mini-ia64.h mini-ia64.c: Add support for IMT.
6444
6445         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
6446         prolog. Fixes #331958.
6447
6448 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
6449
6450         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
6451
6452 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6453
6454         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
6455         trampoline.
6456
6457 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6458
6459         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
6460         trampoline.
6461
6462 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
6463
6464         * mini-x86.c, mini-x86.h: x86 support for the common vtable
6465         trampoline.
6466
6467 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
6468
6469         * mini-trampolines.c: changed the magic rampoline to understand
6470         the common vtable trampoline method: the method to invoke is
6471         determined by the vtable displacement of the call.
6472
6473 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6474
6475         * mini.c, mini.h: register the common vtable trampoline if the
6476         architecture supports it.
6477
6478 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6479
6480         * cpu-amd64.md: use the correct max length for tls_get.
6481
6482 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
6483
6484         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
6485         CEE_STELEM_ANY. Fixes #333696.
6486
6487 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
6488
6489         * exceptions-x86.c: provide more graceful handling of the case where
6490         we followed a bogus function pointer from managed code (bug #332866).
6491
6492 2007-10-11  Mark Probst  <mark.probst@gmail.com>
6493
6494         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
6495         replaces the generic_shared flag and will carry more information
6496         in the future.
6497
6498         * generic-sharing.c: Added mini_type_stack_size() which allows
6499         allows open types if given a generic sharing context.
6500         mini_get_basic_type_from_generic() takes a
6501         MonoGenericSharingContext* instead of a MonoCompile* now.
6502
6503         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
6504         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
6505         mini-sparc.c, mini-x86.c: Trivial changes required by the two
6506         changes above.  Just passing arguments through to the right
6507         places.
6508
6509 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6510
6511         * mini-arm.c: unify the call emission to emit_code_seq().
6512
6513 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
6514
6515         * tramp-arm.c: reduced the trampoline size.
6516
6517 2007-10-10  Mark Probst  <mark.probst@gmail.com>
6518
6519         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
6520         variable handling out of arch-specific code.
6521
6522 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
6523
6524         * mini-arm.c: implemented fast delegate dispatch.
6525
6526 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6527
6528         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
6529         that fp elimination is turned off if the space required by locals is too
6530         big. Fixes #331958.
6531
6532 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
6533
6534         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
6535         ARM to the new style trampoline.
6536
6537 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6538
6539         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
6540
6541         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
6542
6543 2007-10-09  Martin Baulig  <martin@ximian.com>
6544
6545         * debug-debugger.h
6546         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
6547         `field_info_offset_offset'.     
6548
6549 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
6550
6551         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
6552         removed more internal usage of the r11 register and made it available
6553         to the register allocator.
6554
6555 2007-10-08  Mark Probst  <mark.probst@gmail.com>
6556
6557         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
6558         when sharing generics and treat type variables as references.
6559
6560 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6561
6562         * mini-ppc.c: started removing the internal uses of register r11
6563         to eventually allow the register allocator to manage it as an
6564         additional available register.
6565
6566 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
6567
6568         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
6569
6570 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
6571
6572         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
6573         specific trampolines as they are not performance critical as a jump
6574         target (maybe align as before only for AOT code?). This saves about
6575         200 KB of native code on x86 for monodevelop startup.
6576
6577 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6578
6579         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
6580         monodevelop startup.
6581
6582 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
6583
6584         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
6585
6586         * mini-sparc.h mini-sparc.c: Implement IMT support.
6587
6588         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
6589         its smaller and doesn't clobber sparc_g1.
6590
6591         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
6592
6593 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6594
6595         * mini-ppc.c: optimized the size of the IMT thunks a bit.
6596
6597 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
6598
6599         * mini-ppc.c: implemented fast delegate invocation.
6600
6601 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
6602
6603         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
6604
6605 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6606
6607         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
6608         code to the new style trampoline in preparation for IMT support.
6609
6610 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
6611
6612         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
6613         systems already. This also reduces the specific trampiline sizes and
6614         prepares for the use of r12 as the IMT identifier register.
6615
6616 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6617
6618         * mini-mips.h: endianess fix (simplified from a patch by
6619         Thomas Kunze <thommy@tabao.de>, bug #323737).
6620
6621 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6622
6623         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
6624         to access ucontext fields and enable netbsd support
6625         (partially from Magnus Henoch <mange@freemail.hu>).
6626
6627 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6628
6629         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
6630         use the preprocessor from the CPP env var if it is set.
6631
6632 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6633
6634         * mini-trampolines.c: fixed an assertion and moved it earlier in the
6635         code, before interface_offset gets used.
6636
6637 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
6638
6639         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
6640         mono_class_setup_vtable () before accessing klass->vtable.
6641
6642 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
6643
6644         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
6645         hackish.
6646
6647 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6648
6649         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
6650         IMT slots (this saves hundreds of KB of memory in programs like
6651         IronPython and Monodevelop).
6652
6653 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
6654
6655         * mini.c: print the delegate counter.
6656
6657 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
6658
6659         * mini-x86.c: make it easier to enable the debugging code for IMT
6660         slots.
6661
6662 2007-09-28  Martin Baulig  <martin@ximian.com>
6663
6664         * debug-debugger.h
6665         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
6666         `mono_method_klass_offset' and `mono_method_token_offset'.
6667
6668 2007-09-20  Mark Probst  <mark.probst@gmail.com>
6669
6670         * mini.c: First generics sharing implementation.  Can only share
6671         in very simple cases.  If sharing doesn't work it falls back to
6672         dedicated compilation.
6673
6674         * mini.h: Flag in MonoCompile to specify whether generic
6675         compilation is shared.  Flags enum for marking which generic inst
6676         of a context is used.  Prototypes for helper functions.
6677
6678         * generic-sharing.c: Helper functions for generic method sharing.
6679
6680         * optflags-def.h: Optimization flag (gshared) for enabling generic
6681         method sharing added.
6682
6683         * Makefile.am: generic-sharing.c added.
6684
6685 2007-09-19 Daniel Nauck <dna@mono-project.de>
6686
6687         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
6688
6689 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
6690         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
6691         fixes bug 325507.
6692
6693 2007-09-19  Martin Baulig  <martin@ximian.com>
6694
6695         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
6696         mono_debug_cleanup() is now part of mono_cleanup().
6697
6698 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
6699
6700         * driver.c (mono_main): Fix a warning.
6701
6702 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
6703
6704         * aot-compiler.c: Optimize various parts when processing large assemblies.
6705         Fixes ##325568.
6706
6707         * mini.c (mono_patch_info_hash): Improve hash function.
6708
6709 2007-09-14  Jonathan Chambers <joncham@gmail.com>
6710
6711         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
6712         
6713         Code is contributed under MIT/X11 license.
6714
6715 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6716
6717         * mini.c (mini_init): Fix a leak.
6718
6719         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
6720
6721 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
6722
6723         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
6724
6725 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6726
6727         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
6728
6729 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
6730
6731         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
6732         variance tests.
6733
6734         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
6735
6736         * mini.c (handle_alloc): Enable managed allocators in AOT code.
6737
6738         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
6739
6740         * aot-runtime.c (decode_patch_info): Ditto.
6741
6742 2007-09-12  Jonathan Chambers <joncham@gmail.com>
6743
6744         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
6745         static case. Cache delegates in architecture specific code, 
6746         based on number of parameters.
6747         
6748         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
6749         in architecture specific code, based on number of parameters.
6750         
6751         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
6752         caching happen in architecture specific code now.
6753         
6754         Code is contributed under MIT/X11 license.
6755
6756 2007-09-12  Jonathan Chambers <joncham@gmail.com>
6757
6758         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
6759         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
6760         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
6761
6762         Code is contributed under MIT/X11 license.
6763
6764 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
6765         * mini.c: (mono_thread_abort) Fixed bug #82416.
6766
6767 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
6768
6769         * mini.: hook the new managed GC allocation feature into the JIT.
6770
6771 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
6772
6773         * mini.c: implementation for the new runtime tls opcode.
6774
6775 2007-09-11  Martin Baulig  <martin@ximian.com>
6776
6777         * debug-debugger.h
6778         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
6779         `mono_method_inflated_offset'.
6780
6781 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
6782
6783         * driver.c mini.h mini.c: Add a new devel command line option for injecting
6784         async exceptions into a method.
6785
6786         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
6787         purpose of testing whenever the unwinder works at every instruction.
6788
6789 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
6790
6791         * mini.c: check accessibility of method used in ldftn (fixes
6792         bug #82635).
6793
6794 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
6795
6796         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
6797
6798         * inssel.brg: Fix a warning.
6799
6800 2007-09-03  Martin Baulig  <martin@ximian.com>
6801
6802         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
6803         now takes the `main_method' as argument.
6804
6805 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
6806
6807         * cpu-sparc.md (endfilter): Add missing src1:i argument.
6808
6809 2007-08-30  Jonathan Chambers <joncham@gmail.com>
6810
6811         * driver.c: include the cil-coff.h header on Windows.
6812         
6813         Code is contributed under MIT/X11 license.
6814
6815 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
6816
6817         * mini.c, driver.c: don't include the cil-coff.h header.
6818
6819 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
6820
6821         * mini.c: flag places that needs fixes fo soft-float support.
6822
6823 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
6824
6825         * mini.h, inssel-float.brg: fix soft-float constant loads on big
6826         endian systems (partially from Dean Jenkins, bug #81924).
6827
6828 2007-08-28  Mark Probst  <mark.probst@gmail.com>
6829
6830         * mini.c (check_linkdemand): Remove embedded reference object in
6831         call to LinkDemandSecurityException.
6832         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
6833         with an IntPtr instead of a reference object.
6834
6835 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
6836
6837         * mini.c (handle_initobj): Handle alignment properly.
6838
6839         * inssel.brg (mini_emit_memset): Ditto. 
6840
6841         * inssel.brg (mini_emit_memcpy): Ditto. 
6842
6843         * inssel-sparc.brg: Ditto.              
6844
6845         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
6846
6847 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
6848
6849         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
6850         exceptions raised in unmanaged code. Fixes part of #82594.
6851
6852 2007-08-24  Mark Probst  <mark.probst@gmail.com>
6853
6854         * mini.c (mono_method_to_ir), declsec.c
6855         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
6856
6857 2007-08-22  Martin Baulig  <martin@ximian.com>
6858
6859         * debug-mini.h
6860         (MonoDebuggerThreadInfo): New typedef.
6861         (mono_debugger_thread_table): New global variable.
6862         (mono_debugger_thread_created): New public function.
6863         (mono_debugger_thread_cleanup): New public function.
6864
6865         * debug-debugger.h
6866         (MonoDebuggerInfo):
6867         - removed `get_current_thread' and `lookup_assembly'.
6868         - removed `data_table'.
6869         - added `thread_table'.
6870
6871         * mini.c
6872         (mono_thread_start_cb): Call mono_debugger_thread_created().
6873         (mono_thread_attach_cb): Likewise.
6874         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
6875         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
6876         initial domain.
6877
6878         * driver.c (mono_main): Move mono_debug_init() up, before calling
6879         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
6880
6881 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
6882
6883         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
6884         together when passing several arguments of type double (gives a small
6885         speedup and saves a few bytes of generated code).
6886
6887 2007-08-20  Jb Evain  <jbevain@novell.com>
6888
6889         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
6890
6891 2007-08-20  Jb Evain  <jbevain@novell.com>
6892
6893         * mini.c (mono_method_to_ir): throw MethodAccessException
6894         and FieldAccessException instead of InvalidProgramException.
6895
6896 2007-08-20  Mark Probst  <mark.probst@gmail.com>
6897
6898         * mini.c: CoreCLR security checks.
6899
6900         * mini.h: Removed MonoSecurityMode (moved to
6901         metadata/security-manager.h) and mono_security_mode global var
6902         (replaced by set/get functions in security-manager.h).
6903
6904         * driver.c: Added "core-clr-test" security mode for testing.  Used
6905         set-function for setting security mode.
6906
6907 2007-08-17  Mark Probst  <mark.probst@gmail.com>
6908
6909         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
6910         the new jit_info_table.
6911
6912         * driver.c: Test code for the new jit_info_table (enabled by the
6913         define MONO_JIT_INFO_TABLE_TEST).
6914
6915 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
6916
6917         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
6918         detection of call <REG> instruction sequence. Fixes build on freebsd.
6919
6920 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
6921
6922         * mini-exceptions.c: Fix a warning.
6923
6924 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
6925
6926         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
6927         stack overflow handling code on amd64 too.
6928
6929         * mini-exceptions.c (mono_setup_altstack): Make this use 
6930         mono_thread_get_stack_bounds ().
6931
6932         * mini-x86.h: Disable sigaltstack on solaris x86.
6933
6934 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
6935
6936         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
6937
6938 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
6939
6940         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
6941
6942 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
6943
6944         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
6945
6946         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
6947
6948 2007-08-03  Neale Ferguson <neale@sinenomine.net>
6949
6950         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
6951         due to alignment.
6952
6953 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
6954
6955         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
6956         to be emitted (bug #82281).
6957
6958 2007-08-01  Martin Baulig  <martin@ximian.com>
6959
6960         Merged the `debugger-dublin' branch.
6961
6962         * debug-debugger.h (MonoDebuggerInfo):
6963         Removed the `old_*' compatibility entries.
6964         Added `debugger_version' and `data_table'.
6965         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
6966         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
6967
6968         * debug-mini.c
6969         (MiniDebugMethodBreakpointInfo): Add `address_list'.
6970         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
6971         instead of a `gconstpointer'.
6972         (mono_debugger_insert_method_breakpoint): Return a
6973         `MonoDebugMethodAddressList *'.
6974
6975 2007-06-28  Martin Baulig  <martin@ximian.com>
6976
6977         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
6978
6979 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
6982         __builtin_frame_address () since it is broken on older gcc versions.
6983
6984 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6985
6986         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
6987         on the stack overflow handling and made the managed stack overflows
6988         catchable in most cases using soft guard pages.
6989         * exceptions-x86.c: added code to restore the protection in the soft
6990         guard pages at the end of exception handling.
6991
6992 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
6993
6994         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
6995
6996 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
6997
6998         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
6999         exception handling.
7000
7001 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
7002
7003         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
7004         signal handling support until it has been ported to the new mechanism.
7005         * mini.c: fixed stack overflow detection and use the new
7006         architecture code  to handle signals on the altstack.
7007
7008 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
7009
7010         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
7011         stack overflows on the alt stack.
7012
7013 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
7014
7015         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
7016         stack overflows on the alt stack.
7017
7018 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
7019
7020         * exceptions-ppc.c: cleanup preparing for altstack support.
7021
7022 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7023
7024         * exceptions-arm.c: cleanup preparing for altstack support.
7025
7026 2007-07-27  Mark Probst  <mark.probst@gmail.com>
7027
7028         * mini.c (print_jit_stats): Output hazard pointer stats.
7029
7030 2007-07-26  Mark Probst  <mark.probst@gmail.com>
7031
7032         * driver.c, mini.c: Replaced security mode flags with a single
7033         enum variable.
7034
7035 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7036
7037         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
7038
7039 2007-07-25  Mark Probst  <mark.probst@gmail.com>
7040
7041         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
7042         (which doesn't do anything yet) for activating Core CLR
7043         (Silverlight) security.
7044
7045 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
7046
7047         * mini-codegen.c: work around a possible gcc bug on arm.
7048
7049 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
7050
7051         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
7052         message for platforms that don't support AOT compilation.
7053
7054 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
7055
7056         * mini.h, mini.c, driver.c: temporary smcs hack.
7057
7058 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
7059
7060         * mini-arm.h, mini-arm.c: arm EABI fixes.
7061
7062 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
7063
7064         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
7065         case.
7066
7067         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
7068         trampolines taking a method argument.
7069
7070         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
7071
7072         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
7073         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
7074
7075         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
7076         JIT compilation throws an exception. Fixes #82050.
7077
7078 2007-07-19  Mark Probst  <mark.probst@gmail.com>
7079
7080         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
7081         with the MONO_EXCEPTION_ defines.
7082
7083 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
7084
7085         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
7086         #82117.
7087         
7088         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
7089         the cause of an assertion.
7090
7091 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
7092
7093         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
7094         removed.
7095
7096 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
7097
7098         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
7099         assert. Should fix #82103.
7100
7101 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
7102
7103         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
7104         here too. Fixes #82095.
7105
7106         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
7107         addresses.
7108
7109         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
7110
7111         * mini-amd64.h: Enable IMT for amd64.
7112         
7113         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
7114
7115 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
7116
7117         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
7118
7119 2007-07-12  Mark Probst  <mark.probst@gmail.com>
7120
7121         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
7122         as soon as check_linkdemand sets an exception_type.
7123
7124 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
7125
7126         * mini-x86.c: fixed offsets for IMT call sequence.
7127         * mini-x86.h: enable IMT again.
7128
7129 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7130
7131         * trace.c (mono_trace_enter_method): Decode MonoType too.
7132
7133         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
7134
7135         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
7136
7137         * mini-amd64.c: Add preliminary IMT implementation.
7138         
7139 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
7140
7141         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
7142         understand the new IMT-base interface invocation (thanks to
7143         Daniel Nauck for the report and the remote debugging session).
7144
7145 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
7146
7147         * mini-x86.c: size and speed optimizations for the IMT bsearch.
7148
7149 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
7150
7151         * Makefile.am (aotcheck): Make this actually use the AOTed code.
7152
7153 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
7154
7155         * mini-trampolines.c: implement AOT IMT support.
7156         * mini-x86.h: enable IMT support for wider testing.
7157
7158 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7159
7160         * inssel.brg (emit_imt_argument): Add aot support here.
7161
7162         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
7163
7164 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
7165
7166         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
7167         of the IMT implementation, partially from massi, with my
7168         implementation of the bsearch sequence. Disabled by default until
7169         the AOT code is implemented.
7170
7171 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
7172
7173         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
7174
7175         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
7176
7177 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
7178
7179         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
7180         arch-independent IMT JIT code from Massimiliano
7181         Mantione (massi@ximian.com) with small cleanups from me.
7182
7183 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
7184
7185         * Makefile.am: fix svn invocation to get the svn revision to be
7186         independent of the local language (build fix).
7187
7188 2007-07-09  Mark Probst  <mark.probst@gmail.com>
7189
7190         * mini.c (inline_method): Reset cfg->exception_type if the
7191         inlining is aborted.  Fixes: 82049.
7192
7193 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
7194
7195         * mini.c: remove assert from exception handling code when exception_ptr
7196         is not set.
7197
7198 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7199
7200         * mini.c (mono_codegen): Add an assert.
7201
7202         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
7203         enter and leave code.
7204         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
7205
7206 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7207
7208         * mini-ppc.c: fixed memory corruption for localloc(0)
7209         (bug #81852).
7210
7211 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
7212         
7213         * mini.c: Fix warnings.
7214
7215 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
7216
7217         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
7218         to emit better double->int conversions.
7219
7220 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
7221
7222         * mini.c: the provided Min/Max optimizations are valid for unisgned
7223         ints.
7224
7225 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
7226
7227         * 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
7228
7229 2007-06-28  Miguel de Icaza  <miguel@novell.com>
7230
7231         * mini.c (mono_running_on_valgrind): Add support for reporting the
7232         method and  its boundaries to valgrind.
7233
7234 2007-06-28  Martin Baulig  <martin@ximian.com>
7235
7236         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
7237
7238 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
7239
7240         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
7241
7242         * generic.2.cs: Add new test case.
7243
7244 2007-06-25  Martin Baulig  <martin@ximian.com>
7245
7246         Merged the `debugger-dublin' branch.
7247
7248         * debug-mini.c
7249         (mono_debugger_insert_method_breakpoint): New public method.
7250         (mono_debugger_remove_method_breakpoint): Likewise.
7251         (mono_debugger_check_breakpoints): New static method.
7252         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
7253
7254         * debug-debugger.h (MonoDebuggerInfo):
7255         Renamed (to keep backward compatibility in the vtable):
7256         `insert_breakpoint' -> `old_insert_breakpoint'.
7257         `remove_breakpoint' -> `old_remove_breakpoint'.
7258         `create_string' -> `old_create_string'.
7259         `lookup_class' -> `old_lookup_class'.
7260         `lookup_type' -> removed; changed into a dummy field.
7261         `lookup_assembly' -> `old_lookup_assembly'.
7262         Added (same functionality, but different signature):
7263         `create_string', `lookup_class', `lookup_assembly'
7264         Added new:
7265         `get_method_addr_or_bpt', `remove_method_breakpoint',
7266         `runtime_class_init'.
7267
7268         * debug-debugger.c: Merged the `debugger-dublin' branch.
7269
7270 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
7271
7272         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
7273         well.
7274         (peephole_pass): Likewise.
7275
7276 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
7277
7278         * driver.c: hopefully make setaffinity work also for ancient
7279         versions of linux.
7280
7281 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
7282
7283         * driver.c : win32 build fix.
7284
7285 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
7286
7287         * driver.c: check for the MONO_NO_SMP env var and bind to a single
7288         processor if it is set.
7289
7290 2007-06-21  Martin Baulig  <martin@ximian.com>
7291
7292         * debug-mini.h: New file.
7293
7294         * debug-mini.c
7295         (mono_debugger_insert_breakpoint_full): Moved here from
7296         ../metadata/mono-debug-debugger.c.
7297         (mono_debugger_remove_breakpoint): Likewise.
7298         (mono_debugger_breakpoint_callback): Likewise.
7299
7300 2007-06-15  Raja R Harinath  <rharinath@novell.com>
7301
7302         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7303         changes in MonoGenericClass.
7304
7305 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
7306
7307         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
7308
7309 2007-06-14  Raja R Harinath  <rharinath@novell.com>
7310
7311         * jit-icalls.c (mono_helper_compile_generic_method): Update to
7312         removal of MonoGenericMethod.
7313
7314 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7315
7316         * mini-exceptions.c: hooks for the exception events profiling API.
7317
7318 2007-06-14  Randolph Chung  <tausq@debian.org>
7319
7320         * Makefile.ma: Add hppa target.
7321         * mini-arch.h: Include mini-hppa.h
7322         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
7323         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
7324         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7325
7326 2007-06-14  Randolph Chung  <tausq@debian.org>
7327
7328         * inssel.brg: Add rules for "chained" compare-branch operations so that
7329         a single compare op can affect multiple branches.  Adjust cost for
7330         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
7331         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
7332         cost for some rules so that they can more easily be overridden by
7333         per-arch rules (with fixes from lupus).
7334         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7335
7336 2007-06-13  Randolph Chung  <tausq@debian.org>
7337
7338         * mini-ops.h: Reorder branch ops so that they match the order of the
7339         corresponding CEE_* ops.  The code expects them this way.
7340         Add new ops for HPPA target.
7341         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7342
7343 2007-06-13  Randolph Chung  <tausq@debian.org>
7344
7345         * mini-exceptions.c: Handle cases where the stack grows towards
7346         larger addresses.
7347         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
7348
7349 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
7350
7351         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
7352         counter.
7353         * driver.c: explain where a non-matching corlib is found.
7354
7355 2007-06-13  Mark Probst  <mark.probst@gmail.com>
7356
7357         * mini.c (print_jit_stats): Output dynamic code allocation stats.
7358
7359 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
7360
7361         * mini-exceptions.c: Generate a method profile leave event during
7362         an exception to ensure that the profiler gets notified.
7363
7364 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
7365
7366         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
7367         branch.
7368
7369         * cpu-amd64.md: Add long_and/or/xor opcodes.
7370
7371 2007-06-06  Wade Berrier  <wberrier@novell.com>
7372
7373         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
7374         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
7375         length of instruction shr_imm (expected 8, got 10)
7376
7377 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
7378
7379         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
7380
7381 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7382
7383         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7384         MonoInternalHashTable again (fixed bug in the internal hash table
7385         code).
7386
7387 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7388
7389         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
7390         Have to figure out what makes it crash the SWF regression.
7391
7392 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
7393
7394         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
7395
7396 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7397
7398         * mini.c: optimize out the type check when storing null in a
7399         reference array.
7400
7401 2007-06-04  Mark Probst  <mark.probst@gmail.com>
7402
7403         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7404         MonoInternalHashTable.
7405
7406 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
7407
7408         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
7409         signed integer methods.
7410
7411 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7412
7413         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
7414         permanently since the current approach doesn't work.
7415
7416 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7417
7418         * inssel.brg (stmt): Only call delegate->invoke_impl if 
7419         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
7420
7421 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7422
7423         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
7424         the sreg2==rdx case.
7425         
7426         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
7427         account if it contains a rex prefix.
7428         (peephole_pass): Handle OP_FMOVE as well.
7429
7430 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7431
7432         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
7433         as it causes regressions.
7434
7435 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
7436
7437         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
7438         static case as well.
7439
7440         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
7441
7442         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7443         (mono_arch_get_this_arg_from_call): Ditto.
7444
7445         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
7446
7447         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
7448         invoke_impl field.
7449
7450         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7451         (mono_arch_get_this_arg_from_call): Ditto.
7452
7453         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
7454         
7455         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
7456         try to create optimized invoke code and use that for further invocations. 
7457         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
7458
7459         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
7460
7461 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
7462
7463         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
7464         sealed classes or methods.
7465         *devirtualization.cs: tests for the new optimization
7466
7467 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
7468
7469         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
7470         by the update_volatile () function.
7471
7472 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
7473
7474         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
7475         require it.
7476
7477         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
7478
7479 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
7480
7481         * mini.c: Add configure checks for header files.
7482         * mini-x86.c: Add configure checks for header files.
7483         * trace.c: Add configure checks for header files.
7484         * aot-runtime.c: Add configure checks for header files.
7485         * aot-compiler.c: Add configure checks for header files.
7486         * driver.c: Add configure checks for header files.
7487         * mini-codegen.c: Add configure checks for header files.
7488         
7489         Code is contributed under MIT/X11 license.
7490
7491 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
7492
7493         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
7494         icompare_imm -128 + op_iclt. Fixes #81703.
7495
7496 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
7497
7498         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
7499
7500 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7501
7502         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
7503         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
7504         so that all isinst checks now use "interface_bitmap".
7505
7506 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
7507
7508         * cpu-amd64.md (jmp): Fix a warning.
7509
7510         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
7511
7512         * basic.cs: Add new regression test.
7513
7514         * basic.cs: Remove test which is now in basic-long.cs.
7515
7516         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
7517
7518         * basic-long.cs: Add new test.
7519         
7520 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
7521
7522         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
7523
7524 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
7525
7526         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
7527
7528         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
7529         places.
7530         
7531         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
7532         throwing code a bit.
7533
7534         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
7535         the exception throwing code a bit.
7536
7537         * mini-x86.c (get_call_info): Allocate result from a mempool.
7538
7539 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
7540
7541         * aot-compiler.c (find_typespec_for_class): Fix the assert.
7542
7543         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
7544
7545         * mini.h (MonoCompile): Add 'token_info_hash' field.
7546
7547         * mini.c: Save token->method associations during compilation so the AOT 
7548         compiler can use it.
7549         
7550         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
7551         which reference generic classes and methods.
7552
7553 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
7554
7555         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
7556
7557         * aot-compiler.c (compile_method): Fix a typo in a comment.
7558
7559         * aot-runtime.c (decode_cached_class_info): Skip generic types.
7560
7561         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
7562         everything generic.
7563
7564         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
7565
7566 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
7567
7568         * mini.h (MonoCompile): Add 'args' field.
7569
7570         * mini.c (mono_compile_create_vars): Store variables representing the arguments
7571         into cfg->args.
7572
7573         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
7574
7575 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
7576
7577         * mini.c (mono_compile_get_interface_var): Remove this unused function.
7578
7579         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
7580
7581         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
7582         opcodes for some opcodes.
7583
7584         * mini.h *.brg *.c: Use the new opcodes.
7585
7586 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
7587
7588         * mini.h: Bumped aot revision.
7589
7590         * inssel.brg: modified code generation of type checks for interfaces
7591         to use the new "MonoClass.interface_bitmap" instead of the old
7592         "MonoClass.interface_offsets".
7593
7594 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
7595
7596         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
7597
7598 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
7599
7600         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
7601         64 bit platforms.
7602
7603 2007-04-27  Neale Ferguson <neale@sinenomine.net>
7604
7605         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
7606
7607 2007-04-27  Wade Berrier  <wberrier@novell.com>
7608
7609         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
7610         mini.h) to fix build.
7611
7612 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
7613
7614         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
7615         
7616         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
7617         causes the corlib unit tests to fail.
7618
7619 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
7622
7623         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
7624
7625         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
7626         opcodes to the comparison relations.
7627
7628         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
7629         opcodes to their types.
7630         
7631         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
7632
7633         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
7634         it in cfg->arch.cinfo.
7635
7636         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
7637
7638         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
7639         cfg->cil_offset_to_bb.
7640
7641 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
7642
7643         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
7644         created becase of initlocals.
7645
7646 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
7647
7648         * mini-alpha.c cpu-alpha.md: More alpha port work from 
7649         Sergey Tikhonov <tsv@solvo.ru>.
7650
7651 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
7652
7653         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
7654
7655 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
7656
7657         * cpu-s390.md (break): Correct the length of break instruction.
7658
7659 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7660
7661         * mini.c: fix a couple of soft-float issues and comments.
7662
7663 2007-04-15  Miguel de Icaza  <miguel@novell.com>
7664
7665         * trace.c (is_filenamechar): - is also a filename char.
7666
7667 2007-04-15  Neale Ferguson <neale@sinenomine.net>
7668
7669         * mini-s390.c: Correct checking for enum type in return value processing.
7670
7671 2007-04-14  Raja R Harinath  <rharinath@novell.com>
7672
7673         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
7674         (version.h): Makefile is in the build directory.
7675
7676 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
7677
7678         * mini-amd64.h: fix for assertion failure on Solaris/amd64
7679
7680 2007-04-11  Martin Baulig  <martin@ximian.com>
7681
7682         * mini.c (can_access_member): Fix handling of generic classes;
7683         fixes #81259.
7684
7685 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
7686
7687         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
7688
7689 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
7690
7691         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
7692
7693 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
7694
7695         * mini-codegen.c: make sure the right spill amount is
7696         used for fp or integer registers (fixes the float_sub_spill() on ppc).
7697
7698 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
7699
7700         * mini-ppc.c: fixes for the fp_branch_nan test.
7701
7702 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
7703
7704         * basic.cs: Comment out new test which still fails on ia64.
7705
7706 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7707
7708         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
7709
7710 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
7711
7712         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
7713
7714 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
7715
7716         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
7717         on 64 bit machines. Fixes part of #80738.
7718
7719         * basic.cs: Add regression test.
7720
7721 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
7722
7723         * inssel.brg basic.cs: Revert previous change to fix build.
7724
7725         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
7726         platforms.
7727         
7728         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
7729
7730         * basic.cs: Add new regression test.
7731
7732 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
7733
7734         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
7735         many arguments.
7736
7737 2007-03-16  Neale Ferguson <neale@sinenomine.net>
7738
7739         * cpu-s390x.md: Correct length of break instruction.
7740
7741 2007-03-16  Neale Ferguson <neale@sinenomine.net>
7742
7743         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
7744         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
7745
7746 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
7747
7748         * *.c: Begin WIN64 port.
7749         * mini.c:  Use correct register in profiler.
7750         * mini-amd64.c: No inline assembly on Win64.
7751         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
7752         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
7753         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
7754         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
7755         mono_arch_ip_from_context for Win64.
7756         
7757         Contributed under MIT/X11 license.
7758
7759 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
7760
7761         * exceptions-amd64.c (seh_handler): Ditto.
7762
7763         * exceptions-x86.c (seh_handler): Fix a memory leak.
7764
7765 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
7766
7767         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
7768         mini-s390x.c: fixed peephole optimizations to deal
7769         correctly with 1 and 2 byte reload avoidance.
7770
7771 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
7772
7773         * cpu-s390.md, cpu-s390x.md: update localloc length.
7774
7775 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
7776
7777         * cpu-g4.md: added missing descriptions.
7778
7779 2007-03-14  Miguel de Icaza  <miguel@novell.com>
7780
7781         *  Makefile.am: Add support so the tail tests are not executed on
7782         PowerPC as that is a known limitation of the PowerPC port.
7783
7784 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
7785
7786         * runmdesc.bat:  Move to msvc directory.
7787         
7788 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
7789
7790         * runmdesc.bat:  Run executable that was produced by the current
7791         target and sent via an argument.
7792         
7793 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
7794
7795         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
7796         #81102.
7797
7798         * generics.2.cs: Add regression test.
7799
7800 2007-03-09  Wade berrier  <wberrier@novell.com>
7801
7802         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
7803
7804 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
7805
7806         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
7807         AOT code depends on this.
7808
7809 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
7810
7811         * mini.c: more precise tracking of types in the eval stack
7812         (part of fix for bug #81044).
7813
7814 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
7815
7816         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
7817
7818         * aot-compiler.c (encode_patch): Remove an obsolete comment.
7819
7820 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
7821
7822         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
7823
7824         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
7825
7826 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
7827
7828         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
7829         a pointer on 64 bit systems. Fixes #80190.
7830
7831         * iltests.il: Add new regression test.
7832
7833 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
7834
7835         * mini.c: inline a constant for Environment.IsRunningOnWindows.
7836
7837 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
7838
7839         * trace.c: Remove an erroneous alignemnt check when tracing.
7840           Fixes --trace on OSX86.
7841
7842 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
7843
7844         * mini-$(arch).h: initialize SP in context for all the archs.
7845
7846 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
7847
7848         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
7849         regressions in the thread tests.
7850
7851 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
7852
7853         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
7854         - fixed implementation of LOCALLOC opcode
7855         - implemented non-un compare for floats
7856         - code cleanup
7857         - implementation of FDIV and CKFINITE opcodes
7858         - fixes for latest mono updates
7859         - additional arch opcodes
7860
7861 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
7862
7863         * Makefile.am: simplify and merge rules for cross-compilation.
7864
7865 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
7866
7867         * local-propagation.c: Actually *apply* the fix for bug 80591...
7868
7869 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
7870
7871         * mini-exceptions.c: backuot part of the last change
7872         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
7873
7874 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
7875         * inssel.brg: Fix bug 59286.
7876
7877
7878 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
7879
7880         * mini-exceptions.c: patch from Zoltan to correctly check for
7881         stack boundaries (using the stack register, not the frame register),
7882         fixes bugs #80724, #79717.
7883
7884 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
7885
7886         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
7887         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
7888
7889         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
7890         presence of frame pointer elimination.
7891
7892 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
7893         
7894         * mini-x86.h: NetBSD UCONTEX_REG defines.
7895
7896 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
7897
7898         * inssel-amd64.brg: Fix amd64 build.
7899
7900 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
7901
7902         * mini.h: remove extern to workaround what looks likes gcc bug 26905
7903         on amd64.
7904
7905 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
7906
7907         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
7908         ends.
7909
7910         * mini-<ARCH>.c: Use mono_is_regsize_var ().
7911
7912 2007-01-30 Mark Mason <mason@broadcom.com>
7913
7914            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
7915            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
7916            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
7917            beginning support for CEE_JMP [not quite working yet]
7918            * tramp-mips.c: LMF handling now works
7919         
7920 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
7921
7922         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
7923
7924         * mini.h (NULLIFY_INS): New macro.
7925
7926 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
7927
7928         * mini.c: statistical profiler fix for windows, patch
7929         from Tor Lillqvist (tml@novell.com).
7930
7931 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
7932         * local-propagation.c: Fix bug 80591.
7933
7934 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
7935
7936         * Makefile.am: put back the --export-dynamic option as with
7937         the previous gmodule flags (thanks to Robert Jordan).
7938
7939 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
7940
7941         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
7942
7943         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
7944         simplify and speed up the local register allocator. Also rename some fields
7945         like iassign->vassign.
7946         
7947         * regalloc.c: Remove some functions which are no longer used since their
7948         inlined version is in mini-codegen.c.
7949         
7950         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
7951
7952         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
7953
7954 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
7955
7956         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
7957         narrowing. Fixes #80622.
7958
7959         * iltests.il: Add new regresssion test. 
7960
7961 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
7962
7963         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
7964         debug-debugger.c, debug-debugger.h: warning fixes.
7965         * driver.c: updated copyright year and made it fit in one line.
7966
7967 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
7968
7969         * aot-runtime.c: updated to use mono-dl instead of gmodule.
7970
7971 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
7972
7973         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
7974
7975         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
7976
7977         * iltests.il: Add new test for bug #80507.
7978
7979 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
7980
7981         * mini-arm.h: use soft-float also on vfp for now.
7982
7983 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
7984
7985         * mini.c: fix some more soft-float issues.
7986
7987 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
7988
7989         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
7990
7991 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
7992         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
7993         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
7994         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
7995
7996 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
7997
7998         * mini-arm.c: typo fix.
7999
8000 2007-01-23  Neale Ferguson <neale@sinenomine.net>
8001
8002         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
8003
8004 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
8005
8006         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
8007         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
8008
8009         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
8010
8011         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
8012
8013         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
8014         
8015         * inssel.brg: Fix a warning.
8016
8017         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
8018
8019         * abcremoval.c ssa.c ssapre.c: Update after this change.
8020         
8021         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
8022
8023         * dominators.c (df_set): Use mono_bitset_union_fast.    
8024
8025 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8026
8027         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
8028         mini-codegen.c: reduce relocations and memory usage for the cpu
8029         description.
8030
8031 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
8032
8033         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
8034
8035         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
8036         to reduce their size.
8037
8038 2007-01-19 Mark Mason <mason@broadcom.com>
8039
8040         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
8041         * mini-mips.c: more configuration macros, support long conditional branches, additional
8042         asserts, fix epilog instrumentation.
8043         * mini-mips.h: use standard stack walk
8044         * cpu-mips.md: increase size of div, rem and conditional branches
8045         
8046 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
8047
8048         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
8049         to cpu spec data.
8050
8051 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
8052
8053         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
8054         (compile_method): Ditto.
8055
8056         * aot-runtime.c (decode_klass_info): Ditto.
8057
8058         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
8059         needed by the code generated by inssel.brg. Also fix a warning.
8060
8061 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
8062
8063         * mini.c: deal with enums that become genericinsts by
8064         being nested in a generic class (bug #79956).
8065
8066 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
8067
8068         * mini.c: match the generic definition to check for
8069         private access with generic types (bug #78431).
8070
8071 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
8072
8073         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
8074         to make life easier for people cross-compiling that insist on not
8075         using scratchbox.
8076
8077 2007-01-17 Mark Mason <mason@broadcom.com>
8078
8079         * inssel-long.brg: patch to deal with mips missing flags
8080         * inssel-long32-mips.brg: implement overflow checks
8081         * insset-mips.brg: implement overflow checks
8082         * mini-mips.h: implement conditional exception handling
8083         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
8084           Remove unused code, minor cleanups.
8085         * exceptions-mips.c: minor cleanups
8086         * mini-ops.h: add mips conditional exception ops
8087         * cpu-mips.md: add mips conditional exception ops
8088
8089         
8090 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
8091
8092         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
8093         to deal with mips missing of flags.
8094
8095 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
8096
8097         * exceptions-ppc.c: execute fault handlers.
8098
8099 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
8100
8101         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
8102
8103 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
8104
8105         * mini.c: handle also floating point values in initialize_array.
8106
8107 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
8108
8109         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
8110         array initialization and make it conditional on the intrins option.
8111
8112 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
8113
8114         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
8115         relocations and put the patch info names close to the enum definition.
8116
8117 2007-01-15 Mark Mason <mason@broadcom.com>
8118
8119         * basic.cs, exceptions.cs: break up large tests to increase debugability.
8120
8121 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
8122
8123         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
8124
8125 2007-01-12  Raja R Harinath  <rharinath@novell.com>
8126
8127         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
8128
8129 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
8130
8131         * Makefile.am: distribute the mips sources.
8132
8133 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
8134
8135         * mini-codegen.h: handle bug #80489 here, by excluding ecx
8136         directly.
8137
8138 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
8139
8140         * cpu-x86.md: back out for now as this triggers other regressions.
8141
8142 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
8143
8144         * cpu-x86.md: force src1 and dest regpair for long shift instructions
8145         to eax:edx, so ecx can't get allocated to them (bug #80489).
8146
8147 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
8148
8149         * mini.c, mini-exceptions.c: enabled running fault handlers
8150         (bug #80469).
8151
8152 2007-01-03  Miguel de Icaza  <miguel@novell.com>
8153
8154         * driver.c: If nothing fail, do not use the string "failed",
8155         because it makes it very annoying to view test result logs on the
8156         web. 
8157
8158 2006-12-30  Miguel de Icaza  <miguel@novell.com>
8159
8160         * debug-debugger.c (mono_debugger_main): Rename "main" to
8161         "main_method" to prevent a warning.
8162
8163         Remove a warning for unused field.
8164
8165 2006-12-28  Martin Baulig  <martin@ximian.com>
8166
8167         * debug-debugger.c
8168         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
8169
8170 2006-12-22  Martin Baulig  <martin@ximian.com>
8171
8172         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
8173         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
8174         seperate `.mdb_debug_info' section, so we can access it from the
8175         debugger even if the binary is stripped.
8176
8177         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
8178         from the `.mdb_debug_info' here to prevent the linker from
8179         removing that section.
8180
8181         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
8182         mdb-debug-info64.s.
8183
8184 2006-12-19  Robert Jordan  <robertj@gmx.net>
8185
8186         * mini-x86: enable the code to return small structures in
8187         registers for FreeBSD as well. Fixes bug #80278.
8188         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
8189
8190 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8191
8192         * mini-x86.c: align the stack when calling the profiler
8193         function instrumenting the prolog (on OSX).
8194
8195 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
8196
8197         * mini.c: emit a break opcode where Debugger.Break () is called.
8198
8199 2006-12-13  Miguel de Icaza  <miguel@novell.com>
8200
8201         * mini.c (mono_method_to_ir): Provide useful information on this
8202         assert, to prevent others from debugging like I did.
8203
8204 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8205
8206         * mini.c: enable code which was incorrectly commented
8207         (bug #80235).
8208
8209 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8210
8211         * mini-x86.c: enable on OSX, too, the code to return small
8212         structures in registers.
8213
8214 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
8215
8216         * mini-x86.c: remove the use of the dynamic code manager here, too.
8217
8218 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
8219
8220         * mini.h, debug-debugger.c, tramp-*.c: fixed 
8221         mono_debugger_create_notification_function() to use
8222         mono_global_codeman_reserve () instead of a dynamic code manager.
8223
8224 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
8225
8226         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
8227         ves_array_element_address() jit icall and use a generated
8228         managed method instead (which is about 4 times faster for a rank 3
8229         array access).
8230
8231 2006-11-29  Mark Mason  <mason@broadcom.com>
8232
8233         * basic-calls.cs: additional tests for passing
8234         structures as function arguments.
8235
8236 2006-11-29  Mark Mason  <mason@broadcom.com>
8237
8238         * mini-mips.h: disable custom exception handling
8239         * mini-mips.c: throw/rethrow should use jalr to call
8240         exception stubs.  Fixed bug with passing structures
8241         by value. More support for tracing floating point
8242         functions.
8243
8244 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
8245
8246         * mini.c: fixed typo in the soft-float ldind.r4 handling
8247         (bug #80086).
8248
8249 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8250
8251         * mini.c, mini.h, driver.c: added --runtime command line
8252         option to select a different runtime than the autodetected one.
8253         * jit.h: added API for embedders to initialize with a specific
8254         runtime version.
8255
8256 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
8257
8258         * mini.c: handle also boxing of r4 values (bug #80024).
8259
8260 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
8261
8262         * mini-ppc.c: force indirect calls until we reserve
8263         enough address space for all the generated code.
8264
8265 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
8266
8267         * exceptions-arm.c: workaround bugs in the libc definition
8268         of struct ucontext.
8269
8270 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
8271
8272         * inssel.brg: fixes from me and Mark Mason.
8273
8274 2006-11-23  Dick Porter  <dick@ximian.com>
8275
8276         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
8277         semaphore display now we've fixed the initial value
8278
8279 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8280
8281         * inssel.brg: partially revert the last change to fix the build.
8282
8283 2006-11-21  Mark Mason  <mason@broadcom.com>
8284
8285         * inssel.brg: Add and use compare-and-branch macros to support
8286         architectures that do not have condition code registers (ie. MIPS).
8287         * *-mips.{c,brg,md}: Fix copyright statements
8288
8289 2006-11-20  Mark Mason  <mason@broadcom.com>
8290
8291         * Makefile.am: remove mini-codegen.c from list of MIPS sources
8292         * mini.c: Allow GET_CONTEXT to be specified by the arch port
8293         * mini.h: Added declaration for mono_print_ins()
8294         * mini-codegen.c: added ins_spec initializer for MIPS
8295         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
8296         vreg to be virtual and hreg to be non-virtual.
8297         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
8298         is not yet working/implemented correctly.
8299         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
8300         non-static, fixup calls to print_ins() from other parts in the file.
8301
8302 2006-11-20  Mark Mason  <mason@broadcom.com>
8303
8304         * basic-calls.cs: added tests for passing structures as arguments
8305         to calls.
8306
8307 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
8308
8309         * inssel-long32.brg: optimize signed division by power of two.
8310
8311 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
8312
8313         * mini-arm.c: added support for interworking with thumb code
8314         (mono must be still be built using the ARM instruction encoding).
8315
8316 2006-11-19  Miguel de Icaza  <miguel@novell.com>
8317
8318         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
8319         verifier has different rules for it.   Fixes a few verifier issues
8320         in the test suite.
8321
8322         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
8323         at the end, so people know what happened.
8324
8325 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
8326
8327         * brach-opts.c: in optimize_exception_target() make sure we
8328         are in a catch clause (fixes bug #79871).
8329
8330 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8331
8332         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
8333         more soft-float support fixes.
8334
8335 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
8336
8337         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
8338         that are passed half on the stack and half in registers.
8339
8340 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
8341
8342         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
8343         more mips integration work from Mark E Mason 
8344         <mark.e.mason@broadcom.com>.
8345
8346 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
8347
8348         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
8349         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
8350         tramp-mips.c: added sources for the mips port, not
8351         integrated in the build yet. Contributed by
8352         Mark E Mason <mark.e.mason@broadcom.com>.
8353
8354 2006-11-14  Neale Ferguson <neale@sinenomine.net>
8355
8356         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
8357
8358 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
8359
8360         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
8361         put the soft-float rules in its own file since it seems to
8362         break s390 compilation.
8363
8364 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
8365
8366         * mini-arm.c: fixed wrnings.
8367
8368 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
8369
8370         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
8371         inssel-arm.brg: ARM support for soft-float.
8372
8373 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
8374
8375         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
8376         loads and stores of 32 bit fp values.
8377
8378 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
8379
8380         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
8381
8382         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
8383         works. Fixes #79852 and #79463.
8384
8385 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8386
8387         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
8388         more soft-float support WIP and fixes.
8389
8390 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
8391
8392         * mini-arm.c: some VFP updates.
8393
8394 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
8395
8396         * mini-exceptions.c: 0 is a valid local var offset in some
8397         architectures, don't assert (bug #78508).
8398
8399 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
8400
8401         * exceptions-arm.c: fixed off by one error in stack walk code.
8402
8403 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
8404
8405         * mini.h, mini.c: more precise tracking of type load exceptions.
8406
8407 2006-11-03  Robert Jordan  <robertj@gmx.net>
8408
8409         * Makefile.am: [WIN32] Add monow.exe target.
8410         * driver.c: [WIN32] Don't detach the console when debugging.
8411         Fixes bug #79797.
8412         
8413 2006-10-30  Miguel de Icaza  <miguel@novell.com>
8414
8415         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
8416
8417 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
8418
8419         * aot-compiler.c (emit_method_info): Add a case missed earlier.
8420
8421         * driver.c (mini_regression): Fix --regression with AOT.
8422
8423         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
8424
8425 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
8426
8427         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
8428
8429         * mini-sparc.h: Don't use sigaction on sparc/linux.
8430
8431         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
8432
8433         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
8434
8435         * mini-exceptions.c: Add proper include files for getpid ().
8436
8437 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
8438
8439         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
8440         address instead of a MonoJitInfo* to avoid decoding the exception info for the
8441         method.
8442
8443         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
8444         name cache to reduce its size.
8445
8446         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8447
8448 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
8449
8450         * mini-x86.c: Save/restore the current LMF structure more efficiently using
8451         the mono_lmf TLS variable.
8452
8453         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
8454         trampoline lmf frames.  
8455
8456         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
8457
8458 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
8459
8460         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
8461         the mono_lmf TLS variable.
8462
8463         * mini-exceptions.c: Access the LMF structure through accessors.
8464
8465         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
8466         variable instead of in jit_tls->lmf.
8467
8468         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
8469         
8470         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
8471         trampoline lmf frames.
8472
8473         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
8474
8475 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
8476
8477        * mini.c trace.c mini-x86.c: Revert these too.
8478         
8479        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
8480        signature change.
8481
8482 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
8483
8484         * genmdesc.c: removed now dead code.
8485
8486 2006-10-09  Robert Jordan <robertj@gmx.net>
8487
8488         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
8489
8490 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
8491
8492         * mini.h: do not leave gaps in the opcode values.
8493
8494 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
8495
8496         * jit-icalls.h: flag functions as internal here, too.
8497
8498 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
8499
8500         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
8501         functions with the internal attribute.
8502
8503 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
8504
8505         * aot-compiler.c: fclose the file descriptor in the profile read loop.
8506
8507 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
8508
8509         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
8510         for soft-float.
8511
8512 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
8513
8514         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
8515         tail calls as on other platforms.
8516
8517         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
8518
8519         * iltests.il: Add a few tailcall tests.
8520
8521 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8522
8523         * driver.c: fix loop for old compilers (bug #79521).
8524
8525 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
8526
8527         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
8528
8529         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
8530
8531         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
8532         metadata without any code.
8533
8534         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
8535         more precise debugging information using gdb.
8536
8537 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
8538
8539         * inssel-ia64.brg: Make the helper methods static.
8540
8541 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8542
8543         * inssel-x86.brg: make the helper methods static.
8544
8545 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
8546
8547         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
8548
8549 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8550
8551         * mini.c: updates for monoburg changes.
8552         * inssel.brg: make a few helper functions static as they should.
8553
8554 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
8555
8556         * Makefile.am: Move mini-codegen.c to common_sources.
8557
8558 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8559
8560         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
8561         instructions.
8562         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
8563         mini-ppc.h: port to use the common local register allocator.
8564
8565 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8566
8567         * mini.h: Remove the comment too then.
8568
8569 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
8570
8571         * mini.h: put back backend.data which is to be used shortly and
8572         doesn't increase the size of MonoInst. If any 64 bit arch aligned
8573         pointers on 4 byte boundaries it'd have much bigger issues running
8574         and you can ifdef it out anyway.
8575
8576 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8577
8578         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
8579         MonoInst size by 4 bytes on 64 bit machines.
8580
8581 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8582
8583         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
8584         replacement with more meaningful field names. Arch maintainers, please
8585         check the assigned names are good enough for your arch.
8586
8587 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8588
8589         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
8590         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
8591
8592 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8593
8594         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
8595         relocations and memory requirements, put the optimization flags
8596         definitions in their own file.
8597
8598 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
8599
8600         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
8601
8602         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
8603
8604 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
8605
8606         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
8607
8608 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
8609
8610         * inssel.brg: use the correct function to get the size of an item
8611         in an array, given an element class.
8612         * aot-compiler.c: do not access class->class_size directly.
8613
8614 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8615
8616         * mini.h, debug-mini.c: added a debugging function to print
8617         info about local variables and arguments in a jitted method.
8618
8619 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
8620
8621         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
8622
8623         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
8624
8625 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8626
8627         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
8628         inner and outer loops when passing vtypes.
8629
8630 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
8631
8632         * mini-ppc.c: take into account the cpu errata for cache flushing
8633         which caused some random errors (bug #79381).
8634
8635 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8636
8637         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
8638         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
8639
8640 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
8641
8642         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
8643         loaded.
8644
8645         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
8646         freebsd ports tree.
8647
8648         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
8649         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
8650
8651         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
8652         displacement.
8653
8654 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
8655
8656         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
8657
8658 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
8659
8660         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
8661         macro does not have to be changed during debugging.
8662
8663         * 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>.
8664
8665         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
8666
8667         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
8668         
8669         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
8670         MONO_ARCH_NO_EMULATE_MUL is defined.
8671
8672         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
8673
8674         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
8675
8676         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
8677
8678         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
8679         
8680 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
8681
8682         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
8683         stuff to mini-exceptions.c where it is used.
8684
8685         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
8686         setup code, the real one is in mini-exceptions.c.
8687
8688         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
8689         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
8690         some changes from the freebsd ports tree.
8691
8692         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
8693         constants.
8694         
8695         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
8696
8697 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
8698
8699         * mini.c: on Linux, check for /proc to be mounted
8700         (bug# 79351, novell bug#201204).
8701
8702 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
8703
8704         * mini.c: handle cases where pthread_attr_getstack() behaves
8705         incorrectly (bug #78096).
8706
8707 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
8708
8709         * mini-arm.c: support larger stack frames (bug #79272).
8710
8711 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
8712
8713         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
8714
8715         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
8716         tokens.
8717
8718         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
8719         mono_class_from_name () to find a class from its name.
8720
8721         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
8722
8723 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
8724
8725         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
8726
8727 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
8728
8729         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
8730
8731 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
8732
8733         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
8734         callinfo->trampoline.
8735
8736         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
8737         fixes #79271.
8738         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
8739         future.
8740
8741 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
8742
8743         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
8744
8745 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
8746
8747         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
8748         stats.method_trampolines, it is already done by the generic trampoline code.
8749
8750         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
8751         
8752 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
8753
8754         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
8755
8756         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
8757
8758         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
8759
8760         * mini.c (print_jit_stats): Print mscorlib mempool size too.
8761         
8762         * mini.c (print_jit_stats): Print new stats.
8763
8764         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
8765
8766 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
8767
8768         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
8769         Address on two dimensional arrays. Fixes #78729.
8770
8771         * mini.h (MonoCompile): Add a 'skip_visibility' field.
8772
8773         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
8774         a method.
8775
8776         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
8777
8778         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
8779         #79130.
8780         
8781         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
8782         a race condition.
8783         (mini_get_ldelema_ins): Ditto.
8784
8785 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
8786
8787         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
8788         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
8789         Fixes #79213.
8790
8791 2006-08-29 Neale Ferguson <neale@sinenomine.net>
8792
8793         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
8794         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
8795
8796         * exceptions-s390x.c: Cosmetic change.
8797
8798         * tramp-s390.c: Fix warning.
8799
8800         * cpu-s390.md: Correct length of mul_imm.
8801
8802 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
8803
8804         * aot-compiler.c: added binary writer with ELF backend
8805         implementation (only on Linux/x86 for now).
8806
8807 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
8808
8809         * Makefile.am: Don't run net 2.0 AOT tests.
8810
8811         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
8812         (mono_compile_assembly): Skip net 2.0 assemblies as well.
8813
8814         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
8815
8816 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
8817
8818         * aot-compiler.c: simplified and refactored the asm-writing code
8819         to allow different backends.
8820
8821 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
8822
8823         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8824
8825         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
8826         little. Share patches of type TYPE_FROM_HANDLE as well.
8827
8828         * mini.c (mono_patch_info_equal): New helper function.
8829         (mono_patch_info_hash): Ditto.
8830
8831         * aot-compiler.c (emit_method_code): Fix s390 build.
8832
8833         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
8834         is not handled because it is stored as a flag and not as a type ctor. Fixes
8835         #79016.
8836
8837 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
8838
8839         * aot-compiler.c: Fix computation of GOT slot statistics.
8840         
8841         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
8842         Also remove support for not PIC AOT.
8843
8844         * mini.h: Bump AOT file format version.
8845
8846         * objects.cs: Add a test for #78990.
8847
8848         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
8849         (peter.dettman@iinet.net.au). Fixes #79087.
8850
8851         * basic-long.cs: Add a test for the above.
8852
8853 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
8854
8855         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
8856         
8857         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
8858         code somewhat.
8859
8860 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
8861
8862         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
8863         exceptions.
8864
8865 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
8866
8867         * mini.c: Don't verify COM proxy invoke calls
8868         
8869
8870 2006-08-10  Dick Porter  <dick@ximian.com>
8871
8872         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
8873         which process is holding semaphores locked.
8874
8875 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
8876
8877         * mini-ia64.c mini-amd64.c: Fix #79027.
8878
8879         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
8880
8881         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
8882
8883         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
8884         implicit arguments in a vararg call. Fixes #79027.
8885
8886 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
8887
8888         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
8889         (mono_get_array_new_va_signature): Ditto.
8890
8891 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
8892
8893         * aot-runtime.c: Call init_plt lazily.
8894
8895         * inssel-long.brg: Fix unsigned long->int conversion.
8896
8897         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
8898
8899         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
8900         that most data is now in the .rss/.data section.
8901
8902 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
8903
8904         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
8905
8906         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
8907
8908         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
8909
8910         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
8911
8912         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
8913         virtual call. Fixes #79010.
8914
8915         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
8916         and use the result as the this argument in the real call.
8917
8918         * generics.2.cs: Add a new test for #79010.
8919         
8920 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
8921
8922         * mini-x86.c: Fix a warning.
8923
8924         * aot-compiler.c: Add a bunch of statistics.
8925
8926         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
8927
8928 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
8929
8930         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
8931
8932 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
8933
8934         * 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>.
8935
8936 2006-07-13  Miguel de Icaza  <miguel@novell.com>
8937
8938         * mini.c (mono_method_to_ir): Obtain the original method in the
8939         CIL stream and use this to perform validation.
8940
8941         Fixed: #78816
8942
8943 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
8944
8945         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
8946         (mono_arch_call_opcode): Ditto.
8947
8948         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
8949         #78826.
8950
8951         * mini.c (mono_patch_info_dup_mp): New helper function.
8952         
8953         * aot-compiler.c (compile_method): Fix some of the memory allocated during
8954         compilation. Fixes #78827.
8955
8956 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
8957
8958         * declsec.c: Use original security informations for
8959           MONO_WRAPPER_MANAGED_TO_MANAGED.
8960
8961 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
8962
8963         * mini.c: Allow Com Interop methods/classes and
8964         don't verify COM wrapper calls
8965         
8966
8967 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
8968
8969         * inssel-long32.brg: Fix long->i4 checked conversion.
8970
8971         * exceptions.cs: Add a test for the above.
8972
8973 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
8974
8975         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
8976
8977         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
8978         leaks.
8979
8980         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
8981         #78775.
8982
8983 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
8984
8985         * mini.c: Fix solaris/x86 exception handling.
8986
8987         * Makefile.am: Get rid of $(ICU_LIBS).
8988
8989 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
8990
8991         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
8992         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
8993         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
8994
8995         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
8996
8997         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
8998         this function causes a SIGSEGV.
8999
9000 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
9001
9002         * mini.c: Remove unused solaris/x86 includes.
9003
9004 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
9005
9006         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
9007
9008 2006-06-20  Jb Evain  <jbevain@gmail.com>
9009
9010         * cpu-g4.md: fix max length of start_handler instruction.
9011
9012 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
9013         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
9014
9015 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
9016         * ssa.c: Fixed bug 78653 for SSA based deadce.
9017         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
9018         MonoInst.flags, used in SSA based deadce.
9019         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
9020         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
9021
9022 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
9023
9024         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
9025         it can end up using non executable memory on ppc64 systems
9026         running ppc32 userspace (fix from Johannes Berg).
9027
9028 2006-06-14  Dick Porter  <dick@ximian.com>
9029
9030         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
9031         4.1.1
9032
9033 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
9034         * mini.c: Made so that inline is locally disabled if it would
9035         trigger a .cctor, because too many apps depend on this behavior
9036         (which seems to be also the one of the MS CLR).
9037
9038 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
9039
9040         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
9041         No idea why this worked before.
9042
9043         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
9044         which branch to outer exception clauses since they could skip the
9045         inner finally clauses. Fixes #78633.
9046
9047         * exceptions.cs: Add a test for the above.
9048
9049         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
9050         Fixes #78629.
9051
9052         * iltests.il: Add a test for the above.
9053
9054 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
9055
9056         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
9057         after the end of a try bblock, to prevent asserts in mini_method_compile ().
9058
9059         * iltests.il: Add a test for the above.
9060
9061 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
9062
9063         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
9064         
9065         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
9066         methods as instrinsics.
9067
9068 2006-06-09  Wade Berrier <wberrier@novell.com>
9069
9070         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
9071         (simple-cee-ops.h ssapre-mini-ops.h)
9072
9073 2006-06-09  Neale Ferguson <neale@sinenomine.net>
9074
9075         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
9076         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
9077         instruction).
9078         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
9079         * cpu-s390x.md: Fix max. length values for a couple of instructions.
9080
9081 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
9082
9083         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
9084
9085 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
9086
9087         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
9088         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
9089         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
9090         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
9091         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
9092         of opcodes, so that bug 78549 should not happen again.
9093         * ssapre.c: Updated to use the renamed files.
9094
9095 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
9096
9097         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
9098         in OP_ATOMIC_EXCHANGE_I4.
9099
9100 2006-06-07  Wade Berrier <wberrier@novell.com>
9101
9102         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
9103         in mono_debugger_create_notification_function)
9104
9105 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
9106
9107         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
9108         
9109         * mini.c (type_from_stack_type): Disable some changes which do not
9110         seem to work.
9111
9112         * driver.c: Reenable opts.
9113
9114         * mini.h (MonoStackSlot): New structure to keep track of the verification state
9115         of the evaluation stack.
9116         
9117         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
9118         evaluation stack trace at entry to the bblock.
9119
9120         * mini.c (merge_stacks): New function to perform verification of stack merges.
9121         Turned off by default.
9122
9123         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
9124         STACK_MP.
9125         
9126 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
9127
9128         * local-propagation.c: Fixed bug 78549.
9129
9130 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
9131
9132         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
9133
9134 2006-06-02  Miguel de Icaza  <miguel@novell.com>
9135
9136         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
9137         tramp-arm.c, tramp-ia64.c
9138         (mono_debugger_create_notification_function): Update signature to
9139         new signature and use new protocol for creating the notification
9140         function.  
9141
9142         Should fix the build.
9143
9144 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
9145
9146         * exceptions-ppc.c (mono_jit_walk_stack)
9147         (ves_icall_get_frame_info): Fix the build
9148
9149 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
9150
9151         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
9152
9153 2006-05-31  Raja R Harinath  <rharinath@novell.com>
9154
9155         * il2tests.2.il: New file for generics CIL tests.  Add test for
9156         #78019.
9157         * Makefile.am: Update.
9158
9159         Fix #78019
9160         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
9161         to nullable types.
9162
9163 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
9164
9165         * aliasing.c: Fixed bug 78311.
9166
9167 2006-05-29  Martin Baulig  <martin@ximian.com>
9168
9169         * mini-exceptions.c (mono_find_jit_info): When computing the
9170         native offset, check whether we're actually inside the method's
9171         code; call mono_debug_print_stack_frame() to format the frame.
9172         (ves_icall_System_Exception_get_trace): Call
9173         mono_debug_print_stack_frame() to format the stack frame.
9174         (ves_icall_get_trace): Update to the new debugging API.
9175         (mono_jit_walk_stack_from_ctx): Likewise.
9176         (ves_icall_get_frame_info): Likewise.
9177
9178         * mini.c (get_method_from_ip): Use the new debugging API.
9179         (mono_print_method_from_ip): Likewise.
9180
9181         * exceptions-ppc.c
9182         (mono_jit_walk_stack): Use the new debugging API.
9183         (ves_icall_get_frame_info): Likewise.   
9184
9185 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
9186
9187         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
9188
9189 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
9190
9191         * mini.c: Added "limitator" to inline for debugging.
9192
9193 2006-05-24  Martin Baulig  <martin@ximian.com>
9194
9195         * debug-debugger.c (mono_debugger_init): Create a private,
9196         malloc()-based code manager for the notification function and
9197         intentionally leak it on exit.  This fixes the crash-on-exit race
9198         condition.
9199
9200         * tramp-amd64.c
9201         (mono_debugger_create_notification_function): Added
9202         `MonoCodeManager *' argument.
9203
9204         * tramp-x86.c
9205         (mono_debugger_create_notification_function): Added
9206         `MonoCodeManager *' argument.
9207
9208 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
9209
9210         * aliasing.c: Fixed 64 bit issue.
9211         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9212         default since all known bugs are fixed (one more time!).
9213
9214 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9215
9216         * mini.c: write barrier support.
9217
9218 2006-05-23  Martin Baulig  <martin@ximian.com>
9219
9220         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
9221         check at the top of the file.
9222
9223 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
9224
9225         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
9226         reverting changes without reason and without changelog entries.
9227
9228 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
9229
9230         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
9231         to a few opcodes. Fixes #78439.
9232
9233         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
9234         consistency with other archs.
9235
9236         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
9237
9238 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9239
9240         * debug-debugger.c: fix the build.
9241
9242 2006-05-17  Martin Baulig  <martin@ximian.com>
9243
9244         * debug-debugger.c
9245         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
9246         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
9247         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
9248         (debugger_attach): Call GC_mono_debugger_add_all_threads().
9249
9250 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
9251
9252         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
9253
9254 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
9255
9256         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
9257         MONO_TYPE_GENERICINST.
9258         
9259         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
9260         MONO_TYPE_GENERICINST.
9261
9262 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
9263
9264         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
9265         #78325.
9266
9267 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
9268
9269         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
9270         mempool.
9271         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
9272
9273 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
9274
9275         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
9276         mono_trace_cleanup ().
9277
9278         * iltests.il: Fix problem with the newly added test.
9279
9280         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
9281         due to register constraints, free up the previous hreg. Fixes #78314.
9282
9283         * iltests.il: Add new test for #78314.  
9284
9285         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
9286         Interlocked.Add. Fixes #78312.
9287
9288         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
9289         
9290 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
9291
9292         * inssel.brg (mini_emit_virtual_call): Fix a warning.
9293
9294 2006-05-05  Martin Baulig  <martin@ximian.com>
9295
9296         * debug-mini.c (mono_debug_open_block): New method.
9297
9298         * mini-amd64.c
9299         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9300         the beginning of each basic block.
9301
9302         * mini-x86.c
9303         (mono_arch_output_basic_block): Call mono_debug_open_block() at
9304         the beginning of each basic block.
9305
9306 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9307
9308         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9309         default until I understand why they break the build on amd64.
9310
9311 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
9312
9313         * mini.c (mini_cleanup): Call mono_cleanup ().
9314
9315         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
9316         errors.
9317
9318 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
9319
9320         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
9321         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
9322         default since all known bugs are fixed, and I cannot reproduce bug
9323         77944... I'm asking Matt Hargett to test again after this commit.
9324
9325 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
9326
9327         * mini-codegen.c: Fixed typo that thrashed inline.
9328
9329 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
9330
9331         * dominators.c (compute_dominators): Avoid using a worklist since
9332         it is not correct in some cases. Instead, iterate over all bblocks as
9333         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
9334
9335 2006-04-28  Miguel de Icaza  <miguel@novell.com>
9336
9337         * mini.c (mono_jit_compile_method_inner): Use
9338         mono_prepare_exception_from_error that resets the value
9339         internally.
9340
9341 2006-04-27  Miguel de Icaza  <miguel@novell.com>
9342
9343         * mini.c: Move the mini_loader_error_to_exception to metadata. 
9344         
9345 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9346
9347         * aliasing.c: Fixed bug 78210.
9348
9349 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
9350
9351         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
9352         default until all their problems (or the ones they trigger) are fixed.
9353
9354 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
9355
9356         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
9357         
9358         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
9359         as loaded only after resolving patches since that could invoke the same method.
9360
9361         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
9362
9363         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
9364         functions.
9365
9366         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
9367         AOT loader.
9368
9369         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
9370         stack.
9371
9372         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
9373         made from AOT code through the PLT table.
9374
9375         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
9376         holding the plt offset when a call is made to the aot plt trampoline.
9377         
9378 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9379
9380         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
9381         amd64 AOT support.
9382
9383         * Makefile.am (common_sources): Fix build breakage.
9384
9385         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
9386         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
9387         intra-assembly calls if possible.
9388         
9389         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
9390
9391         * mini-trampolines.c: Handle PLT entries.
9392
9393         * mini.c: Avoid creating a GOT var for calls.
9394
9395         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
9396         from mscorlib code.
9397
9398         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
9399         from mscorlib code.
9400
9401         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
9402         AOT code.       
9403
9404         * mini.h: Bump AOT file format version.
9405         
9406         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
9407         covers more cases.
9408
9409 2006-04-25  Martin Baulig  <martin@ximian.com>
9410
9411         * driver.c: Disable copyprop, consprop and inline when running
9412         inside the debugger.
9413
9414 2006-04-25  Martin Baulig  <martin@ximian.com>
9415
9416         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
9417         with `get_current_thread' and added `detach'.
9418         (MonoDebuggerMetadataInfo): Added `thread_size',
9419         `thread_tid_offset', `thread_stack_ptr_offset' and
9420         `thread_end_stack_offset'.
9421
9422 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9423
9424         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
9425         aot-runtime.c.
9426
9427         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
9428         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
9429
9430         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
9431
9432         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
9433
9434         * aot.c: Add support for ADJUSTED_IID.  
9435
9436 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
9437
9438         * aot.c (emit_method_order): Don't align method_order_end.
9439
9440         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
9441         the interface ID changes.
9442
9443 2006-04-21  Dick Porter  <dick@ximian.com>
9444
9445         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
9446         cleaning up a thread.  Fixes the new part of bug 77470.
9447
9448 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
9449
9450         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
9451         to managed wrapper.
9452                      
9453 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
9454
9455         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
9456         
9457         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
9458         SIGSEGV. Fixes #78072.
9459
9460         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
9461         unregister our SIGABRT handler.
9462
9463 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
9464
9465         * mini.c: Disabled inline where it can alter the call stack in a
9466         way visible from managed code.
9467         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
9468         default.
9469
9470 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
9471
9472         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
9473         on other platforms. Fixes #78089.
9474
9475 2006-04-13  Martin Baulig  <martin@ximian.com>
9476
9477         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
9478         determine whether we're inside the debugger.
9479
9480         * debug-debugger.h
9481         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
9482
9483 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9484
9485         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
9486         handler clauses. Fixes #78024.
9487
9488         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
9489         in the CALL_MEMBASE opcodes. Fixes #78088.
9490         (mono_arch_get_vcall_slot_addr): Ditto.
9491
9492 2006-04-10  Martin Baulig  <martin@ximian.com>
9493
9494         * debug-debugger.c: The thread handling code has now been moved
9495         into ../metadata/threads.c.
9496
9497 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9498
9499         * driver.c (mono_main): Fix --with-gc=none build.
9500
9501         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
9502         (mono_spillvar_offset_float): Ditto.
9503         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
9504         hreg, not when its !global, since on ia64, there is a third category: stacked
9505         registers.      
9506
9507 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
9508
9509         * mini.c: set MonoInst->klass for load field address and a few other
9510         places.
9511
9512 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9513
9514         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
9515
9516 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
9517
9518         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
9519         the branch opt changes.
9520
9521 2006-04-06  Dick Porter  <dick@ximian.com>
9522
9523         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
9524         
9525         * wapihandles.c (mini_wapi_seminfo): 
9526         * driver.c (mono_main): Add semaphore info option
9527
9528 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
9529
9530         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
9531         branch optimization changes. Fixes #78009.
9532
9533 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9534
9535         * mini.c: ignore accessibility of methods in managed->native wrappers.
9536
9537 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
9538
9539         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
9540         
9541         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
9542
9543 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
9544
9545         * mini.c: Modify the branch optimizations to preserve the invariant that
9546         the entries inside the in_bb and out_bb arrays are unique.
9547         (mono_unlink_bblock): Avoid creation of new arrays.
9548
9549 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
9550
9551         * mini.c (mono_unlink_bblock): Fix regression caused by previous
9552         change (#77992).
9553
9554 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
9555
9556         * mini.c (optimize_branches): Remove the "optimizations" in
9557         the cbranch1/cbranch2 -> branch cases which were causing several
9558         problems in the past. Fixes #77986.
9559
9560 2006-03-31  Chris Toshok  <toshok@ximian.com>
9561
9562         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
9563         default optimizations :(
9564
9565 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
9566
9567         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
9568         branch.
9569
9570 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
9571
9572         * local-propagation.c: Added comments to structs and removed
9573         "Mono" prefixes from local tree mover types.
9574
9575 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
9576
9577         * Makefile.am (arch_sources): Define this for each architecture so 
9578         libmono_la_SOURCES is defined in one place.
9579
9580 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
9581
9582         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
9583         from handles/.
9584
9585 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
9586
9587         * driver.c: print the GC name supplied by configure.
9588
9589 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
9590
9591         * local-propagation.c: Added tree mover, and moved here all the
9592         local propagation code from mini.c
9593         * mini.c: Added support for treeprop, and moved all the local
9594         propagation code to local-propagation.c
9595         * mini.h: Added support for treeprop
9596         * driver.c: Added support for treeprop, enabled consprop, copyprop,
9597         treeprop, inline and deadce by default
9598         * Makefile.am: Added local-propagation.c
9599
9600 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
9601
9602         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
9603
9604 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
9605
9606         * debug-debugger.c: make it compile without the Boehm GC.
9607
9608 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9609
9610         * mini.c: fixed issue with mismatch when an icall is registered
9611         with multiple names but same address.
9612
9613 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9614
9615         * declsec.c, mini-exceptions.c: use write barrier to set reference
9616         fields of managed objects.
9617
9618 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9619
9620         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
9621         (can_access_internals): Fix a warning.
9622
9623         * mini.c (print_method_from_ip): Rename this to 
9624         mono_print_method_from_ip so it gets exported.
9625
9626         * trace.c: Deal with strings inside StringBuilder's containing garbage
9627         and fix memory leaks. Fixes #77848.
9628
9629 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9630
9631         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
9632         fixes #77787.
9633
9634 2006-03-16 Neale Ferguson <neale@sinenomine.net>
9635         
9636         * mini-s390.c: Remove OP_X86_TEST_NULL.
9637
9638 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
9639
9640         * mini.c: use the correct GetHashCode() for the moving collector.
9641
9642 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
9643
9644         * liveness.c: Regalloc spill cost tuning.
9645
9646 2006-03-15 Neale Ferguson <neale@sinenomine.net>
9647         
9648         * mini-s390x.h: Correct S390_LONG macro.
9649
9650         * mini-s390x.c: Cleanup unused code.
9651
9652 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
9653
9654         * jit-icalls.h: New file.
9655
9656         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
9657         icalls and include that instead of including jit-icalls.c.
9658
9659         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
9660         OP_X86 opcodes.
9661
9662 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
9663
9664         * mini.c: when checking for member accessibility, also check for
9665         friend assemblies and for explicit interface implementations.
9666
9667 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
9668
9669         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
9670
9671         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
9672
9673         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
9674         common cases are done first.    
9675
9676         * mini-ops.h: Only define platform specific opcodes on the given platform.
9677
9678         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
9679         branch.
9680         
9681 2006-03-14  Martin Baulig  <martin@ximian.com>
9682
9683         Revert Paolo's change from r57348:
9684
9685         * mini.h: don't use gboolean for bitfields.
9686         * mini.c: verifier changes for fields and methods accessibility.
9687
9688 2006-03-13  Neale Ferguson <neale@sinenomine.net>
9689
9690         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
9691
9692         * mini-s390x.c: Fix conv_r_un.
9693
9694         * cpu-s390, cpu-s390x.md: Fix lengths.
9695
9696 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
9697
9698         * mini.c: nested types have access to all the nesting
9699         levels, not just the enclosing types.
9700
9701 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9702
9703         * mini.c: added a few more verification checks.
9704
9705 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
9706
9707         * liveness.c: Merge optimizations from the linear-il branch.
9708
9709 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9710
9711         * mini-ia64.c (emit_call): Add a comment.
9712
9713         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
9714
9715         * tramp-ia64.c: Fix some warnings.
9716
9717 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
9718
9719         * mini.h: don't use gboolean for bitfields.
9720         * mini.c: verifier changes for fields and methods accessibility.
9721
9722 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9723
9724         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
9725         lazy icall wrapper changes.
9726
9727         * dominators.c: Replace all the dominator algorithms with faster
9728         ones from the linear-il branch.
9729
9730         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
9731         the mempool.
9732
9733         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
9734         common cases are done first.
9735
9736         * mini-amd64.c: Fix some warnings.
9737
9738         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
9739         from the mempool.
9740
9741         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
9742         added code.
9743
9744         * mini.h: Add a missing prototype.
9745
9746 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
9747
9748         * mini.c: Compile icall wrappers lazily.
9749
9750         * mini-codegen.c: Use printf instead of g_print since its much faster.
9751
9752         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
9753         function.
9754
9755         * mini.c (optimize_branches): Cache the negative result from 
9756         remove_block_if_useless ().
9757
9758         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
9759         Also fix some bblock linking issues.
9760
9761         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
9762         assembly files.
9763
9764         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
9765
9766         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
9767         accessed fields first, for better cache behavior.
9768         
9769 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
9770
9771         * mini.c: speedup IList<T> array accesses.
9772
9773 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
9774
9775         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
9776         inline_costs counter. Fixes #77190.
9777
9778 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
9779
9780         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
9781         trace messages. Fixes #77706.
9782
9783 2006-03-04  Martin Baulig  <martin@ximian.com>
9784
9785         * tramp-amd64.c, tramp-x86.c
9786         (mono_debugger_create_notification_function): Use
9787         mono_global_codeman_reserve() to allocate a buffer at runtime and
9788         return it.
9789
9790         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
9791
9792         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
9793         notification function at runtime and then call `initialize' in the
9794         `MONO_DEBUGGER__debugger_info' vtable.
9795
9796 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
9797
9798         * iltests.il: Fix a visibility problem.
9799
9800 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
9801
9802         * driver.c, mini.c: add hooks for the counters API.
9803
9804 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
9805
9806         * driver.c: show disabled options.
9807
9808 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
9809
9810         * linear-scan.c: always use cost-driven selection.
9811
9812 2006-02-28  Raja R Harinath  <rharinath@novell.com>
9813
9814         * jit-icalls.c (helper_compile_generic_method): Revert change from
9815         2006-02-24.
9816
9817 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
9818
9819         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
9820
9821 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
9822
9823         * inssel.brg: style fixes, mostly to force the updated monoburg
9824         to run for people using svn.
9825
9826 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
9827
9828         * mini.c: match monoburg changes.
9829
9830 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
9831
9832         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
9833         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
9834         declaration in the header file.
9835
9836 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
9837
9838         * helpers.c: reduce relocations and mem usage.
9839
9840 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
9841
9842         * mini.h, mini-codegen.c: disable logging features if
9843         requested by configure.
9844
9845 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
9846
9847         * mini.c: tiny verifier changes.
9848
9849 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
9850
9851         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
9852         cpu-pentium.md: stack alignment changes for osx/x86,
9853         partially from Geoff Norton <gnorton@customerdna.com>.
9854
9855 2006-02-24  Raja R Harinath  <harinath@gmail.com>
9856
9857         * jit-icalls.c (helper_compile_generic_method): Update to changes
9858         in metadata/class.c.
9859
9860 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
9861         
9862         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
9863         
9864         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
9865         interface calls with large offsets.
9866
9867 2006-02-23  Raja R Harinath  <rharinath@novell.com>
9868
9869         * jit-icalls.c (helper_compile_generic_method): Document the
9870         special-case we depend on so that we can inflate the method twice
9871         with the same context with no bad side-effects.
9872
9873 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
9874
9875         * mini-x86.c, mini-amd64.c: fix for case when xen support
9876         is disabled.
9877
9878 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
9879
9880         * mini-x86.c, mini-amd64.c: generate code to access tls items
9881         in a faster way for Xen systems.
9882
9883 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
9884
9885         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
9886         updates and compilation fixes for the OSX/x86 port, mostly from
9887         Geoff Norton <gnorton@customerdna.com>.
9888
9889 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
9890
9891         * inssel.brg: faster interface call implementation
9892         to sync with the interface_offsets MonoVTable changes.
9893
9894 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9895
9896         * mini.c: more verification checks.
9897
9898 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
9899
9900         * mini.c: added a few more verification checks.
9901
9902 2006-02-17      Neale Ferguson <neale@sinenomine.net>
9903
9904         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
9905         facility on the processor and use it if available.
9906
9907 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
9908
9909         * driver.c, aot.c, mini.c: throw exception if the IL code is
9910         invalid or unverifiable.
9911
9912 2006-02-17  Raja R Harinath  <rharinath@novell.com>
9913
9914         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
9915         m.StructField.
9916
9917 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
9918
9919         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
9920
9921 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
9922
9923         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
9924         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
9925         handling of instantiated generic valuetypes.
9926
9927 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
9928
9929         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
9930         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
9931         instead.
9932
9933         * generics.2.cs: Revert the nullable reftypes tests.
9934
9935 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
9936
9937         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
9938         using __builtin_frame_address (1) as it doesn't work in the presence
9939         of optimizations. Hopefully fixes #77273.
9940
9941         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
9942         -> generics.cs change as it doesn't work with some automake versions.
9943
9944 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9945
9946         * mini.c: handle systems that sue a different way to
9947         retrieve the stack address of the current thread.
9948
9949 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
9950
9951         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
9952         it specially in the makefile.
9953
9954         * generics.2.cs: Add tests for nullable reference types.
9955
9956 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
9957
9958         * mini.c: always handle the case when mono_jit_init()
9959         is called in a thread different from the main thread,
9960         confusing libgc (bug #77309).
9961
9962 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
9963
9964         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
9965
9966 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
9967
9968         * mini.c: change optimize_branches () to use a single loop
9969         and introduce a new optimization to simplify some range checks.
9970
9971 2006-02-03  Martin Baulig  <martin@ximian.com>
9972
9973         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
9974         and merged with debugger_thread_manager_add_thread().
9975         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
9976         inform the debugger about the main thread.
9977
9978 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
9979
9980         * basic.cs: Add test for div.un/rem.un constant folding.
9981
9982 2006-02-03  Neale Ferguson <neale@sinenomine.net>
9983
9984         * cpu-s390x.md: correct int_xor_imm length
9985
9986 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
9987
9988         * generics.2.cs: New test for #77442.
9989
9990         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
9991         #77442.
9992
9993 2006-02-02  Martin Baulig  <martin@ximian.com>
9994
9995         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
9996         <mono/metadata/mono-debug-debugger.h>   
9997
9998         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
9999
10000 2006-02-02  Martin Baulig  <martin@ximian.com>
10001
10002         * debug-debugger.h: New header file for debug-debugger.c.
10003
10004         * debug-debugger.c: Big API cleanup; don't run the managed Main()
10005         function is a separate thread anymore; add support for attaching.
10006
10007 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
10008
10009         * tramp-x86.c: Fix a warning.
10010
10011 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
10012
10013         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
10014         on very large methods.
10015
10016         * aot.c (load_patch_info): Fix a warning.
10017
10018 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
10019
10020         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
10021         mini-ops.h: alu membase optimizations.
10022
10023 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
10024
10025         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
10026         to speedup StringBuilder.
10027
10028 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
10029
10030         * dominators.c (mono_compute_natural_loops): Fix detection of
10031         loop body start blocks.
10032
10033         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
10034
10035 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
10036
10037         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
10038         #75145.
10039
10040 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
10041
10042         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10043
10044 2006-01-25  Martin Baulig  <martin@ximian.com>
10045
10046         * debug-debugger.c: Moved the `MonoDebuggerManager' and
10047         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
10048         started to cleanup this file a little bit.
10049
10050 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
10051
10052         * mini.c: optimize a codepath frequently happening in generics code.
10053
10054 2006-01-23  Martin Baulig  <martin@ximian.com>
10055
10056         * Makefile.am: Only compile debug-debugger.c on supported platforms.
10057
10058         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
10059         functions directly.
10060
10061         * driver.c: debug-debugger.c is only available if
10062         `MONO_DEBUGGER_SUPPORTED' is defined.   
10063
10064 2006-01-23  Martin Baulig  <martin@ximian.com>
10065
10066         * debug-debugger.c: Only enable this on platforms where the Mono
10067         Debugger is working (x86 and x86_64).
10068
10069 2006-01-21  Martin Baulig  <martin@ximian.com>
10070
10071         The Mono Debugger is now using the normal `mono' instead of the
10072         `mono-debugger-mini-wrapper' when executing managed code.
10073
10074         * debug-debugger.c: New file; previously known as
10075         debugger/wrapper/wrapper.c.
10076
10077         * debug-mini.c (mono_init_debugger): Removed.
10078
10079         * driver.c (mono_main): Added new `--inside-mdb' command line
10080         argument which is used when running inside the debugger.
10081
10082 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
10083
10084         * liveness.c (mono_analyze_liveness): Remove some unused data
10085         structures.
10086
10087 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
10088
10089         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
10090
10091 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
10092
10093         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
10094         depends on implementation details of monobitset.
10095
10096         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
10097         Fixes #77271.
10098
10099 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
10100
10101         * liveness.c: Update after monobitset changes.
10102
10103 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
10104
10105         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
10106
10107 2006-01-11 Neale Ferguson <neale@sinenomine.net>
10108
10109         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
10110
10111         * mini-s390x.c: Remove warning messages.
10112
10113 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
10114
10115         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
10116
10117 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
10118
10119         * generics.2.cs: Add ldelem/stelem_any test.
10120
10121 2006-01-10 Neale Ferguson <neale@sinenomine.net>
10122
10123         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
10124
10125 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
10126
10127         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
10128         
10129 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
10130
10131         * generics.2.cs: Reenable vtype tests.
10132
10133         * inssel-x86.brg: Remove an icorrect valuetype rule.
10134
10135 2006-01-06 Neale Ferguson <neale@sinenomine.net>
10136
10137         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
10138         initial support for OP_ABS.
10139
10140 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10141
10142         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
10143
10144 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10145
10146         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
10147         conversion and implement LADD/LSUB.
10148
10149         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
10150         architectures.
10151
10152 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10153
10154         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
10155
10156         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
10157         architectures.
10158
10159 2006-01-05 Neale Ferguson <neale@sinenomine.net>
10160
10161         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
10162         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
10163         (stack walk problem).
10164
10165 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
10166
10167         * aot.c (mono_aot_load_method): Fix a warning.
10168
10169 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10170
10171         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
10172
10173 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10174
10175         * iltests.il: Add test for #77148.
10176
10177         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
10178         #77148.
10179
10180 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10181
10182         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
10183
10184 2006-01-03  Neale Ferguson <neale@sinenomine.net>
10185
10186         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
10187         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
10188
10189         * basic-long.cs: Add lconv-to-r4/r8 tests.
10190
10191 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10192
10193         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
10194
10195         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
10196         here as on other archs.
10197
10198 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10199
10200         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
10201
10202 2005-12-29 Neale Ferguson <neale@sinenomine.net>
10203
10204         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
10205         
10206         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
10207
10208         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
10209         instrument_prolog; Add memory_barrier instruction.
10210
10211 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
10212
10213         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
10214
10215 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
10216
10217         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
10218
10219         * aliasing.c inssel.brg: Fix warnings.
10220
10221         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
10222         could skip initialization of some parts of memory.
10223
10224         * mini.c mini-ia64.c: Fix warnings.
10225
10226         * inssel-sparc.brg: Add an implementation of lneg which actually works.
10227
10228 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
10229
10230         * aliasing.c (mono_build_aliasing_information): Add a workaround for
10231         a crash seen on sparc.
10232
10233         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
10234         
10235         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
10236
10237 2005-12-21 Neale Ferguson <neale@sinenomine.net>
10238
10239         * mini-ops.h: Add s390_backchain instruction
10240
10241         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
10242
10243         * cpu-s390.md: Add s390_backchain instruction
10244
10245         * mini-s390.c: Significant ABI changes
10246
10247         * mini-s390.h: Cater for zero length structures
10248
10249 2005-12-20 Neale Ferguson <neale@sinenomine.net>
10250
10251         * mini-s390.c: ABI fixes
10252
10253         * inssel-s390.brg: Remove debug statements
10254
10255         * cpu-s390.md: Fix length of ATOMIC_xx operations
10256
10257 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
10258
10259         * basic-float.cs: Add float<->long conversion tests.
10260
10261 2005-12-16 Neale Ferguson <neale@sinenomine.net>
10262
10263         * mini-s390.c: Fix LOCALLOC processing.
10264
10265         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
10266
10267 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
10268
10269         * iltests.il: Add tests for some opcodes not covered by the other
10270         tests.
10271
10272 2005-12-15 Neale Ferguson <neale@sinenomine.net>
10273
10274         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
10275         register loading for Tail processing; Correct trace output.
10276
10277         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
10278
10279         * cpu-s390.md: Correct size of jmp instruction. 
10280
10281 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10282
10283         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
10284
10285 2005-12-13 Neale Ferguson <neale@sinenomine.net>
10286
10287         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
10288           Bring s390 up to current level.
10289
10290 2005-12-12  Zltan Varga  <vargaz@gmail.com>
10291
10292         * generics.2.cs: Disable the newly added tests as they do not work yet.
10293         
10294         * generics.2.cs: Add valuetype tests.
10295
10296 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
10297
10298         * basic-long.cs: Add i4->u8 test.
10299
10300         * objects.cs: Add tests for JIT intrinsic.
10301
10302         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
10303         optimizations lost by a mistake.
10304
10305 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
10306
10307         * basic-long.cs: Remove a test moved to objects.cs.
10308
10309         * arrays.cs: Add more array tests.
10310
10311 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
10312
10313         * arrays.cs: Add new tests for multi-dimensional arrays.
10314
10315 2005-12-06  Raja R Harinath  <rharinath@novell.com>
10316
10317         * Makefile.am (test_sources2): Add generics.2.cs.
10318         (EXTRA_DIST): Add test_sources2.
10319
10320 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
10321
10322         Support for boxing and unboxing nullable types as well as the
10323         isinst operation on nullables, per the CLI ammendment.
10324
10325         * inssel.brg (CEE_ISINST): Special case for nullable
10326
10327         * mini.c (handle_unbox_nullable): new method
10328         (handle_box): Special case for nullable types
10329         (mono_method_to_ir): Call handle_unbox_nullable in correct
10330         places.
10331
10332         * generics.2.cs: New test suite
10333
10334         * Makefile.am: Support for regression tests with generics.
10335
10336 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
10337
10338         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
10339         allocated to registers. Fixes #76800.
10340
10341 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
10342
10343         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
10344
10345 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
10346
10347         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
10348         of platforms.
10349
10350 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
10351
10352         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
10353         objects.cs.
10354
10355         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
10356         
10357         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
10358 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
10359
10360         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
10361         single precision before storing to a single precision location.
10362
10363 2005-11-28  Raja R Harinath  <rharinath@novell.com>
10364
10365         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
10366
10367 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
10368
10369         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
10370         correct files.
10371
10372         * basic.cs: Remove test_0_byte_compares test which was moved to
10373         objects.cs a long time ago.
10374
10375 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
10376
10377         * aliasing.c: Fixed aliasing issue on 64 bit archs.
10378
10379 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
10380
10381         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
10382         handlers are called.
10383
10384         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
10385         throwing code.
10386
10387          * mini-ia64.c: Add support for the throw->branch exception 
10388         optimization.   
10389
10390         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
10391
10392 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10393
10394         * mini.c: Enabled "fastpath" deadce :-)
10395         
10396 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10397
10398         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
10399         alias analysis pass to support it.
10400         * mini.h: Likewise.
10401         * ssa.c: Likewise.
10402         * liveness.c: Likewise (liveness computation can use aliasing
10403         information to be more accurate).
10404         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
10405         moreover made so that "--compile-all" uses the given optimization
10406         flags and not the default ones.
10407         * aliasing.c: Alias analysis (new file).
10408         * aliasing.h: Likewise.
10409         * Makefile.am: added "aliasing.c" and "aliasing.h".
10410         
10411 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10412
10413         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
10414         OP_L opcodes.
10415
10416 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
10419         fp >= end_of_stack exit condition, as it is not needed, and it might
10420         become true for fp eliminated frames.
10421
10422 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10423
10424         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
10425         coded offsets.
10426
10427 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
10428
10429         * mini-arm.c: fixed alignment of doubles/longs to match
10430         the C ABI (bug #76635).
10431
10432 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
10433
10434         * aot.c: fix compilation with --enable-minimal=aot.
10435
10436 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
10437
10438         * mini-arm.c: fixed compatibility with the new
10439         floating point emulator package for compares.
10440
10441 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
10442
10443         * mini.c : reverted sig->pinvoke changes (r51396-51397).
10444
10445 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
10446
10447         * mini-exceptions.c (print_stack_frame): Output to stderr.
10448         (mono_handle_native_sigsegv): Ditto.
10449
10450 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10451
10452         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
10453         OP_LCONV_TO_OVF_I implementation.
10454
10455         * mini-amd64.c: Add support for the throw->branch exception 
10456         optimization.
10457
10458         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
10459         when the catch clause catches a more general exception, i.e. Object.
10460
10461 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
10462
10463         * cpu-ia64.md: Remove unused opcodes.
10464
10465         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
10466         specific defines for architectures defining USE_SIGACTION.
10467
10468         * mini-ia64.c: Fix some warnings.
10469
10470         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
10471         version seemed to skip a frame.
10472
10473 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10474
10475         * mini.c: Clean up the usage of sig->pinvoke flag. Now
10476         only calls which are made to native code use this flag.
10477
10478 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10479
10480         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
10481         varargs methods as well.
10482         
10483         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
10484         which have save_lmf set. Reorganize methods prologs a bit.
10485
10486         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
10487         debugger to the proper place.
10488
10489 2005-10-29  Martin Baulig  <martin@ximian.com>
10490
10491         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
10492         when running inside the debugger until the debugger has support
10493         for it.
10494
10495 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10496
10497         * mini.h: Fix a warning.
10498
10499 2005-10-24  Miguel de Icaza  <miguel@novell.com>
10500
10501         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
10502         we expose publicly, this returns the string.
10503
10504 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
10505
10506         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
10507         with fp elimination.
10508
10509 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10510
10511         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
10512         native stacktrace using the glibc 'backtrace' function if available.
10513
10514 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
10515
10516         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
10517
10518         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
10519         handle SIGSEGVs received while in native code.
10520
10521         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
10522         code, call mono_handle_native_sigsegv which will abort the runtime
10523         after printing some diagnostics, instead of converting it into a
10524         confusing NullReferenceException.
10525
10526 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10527
10528         * cpu-pentium.md: Remove unused opcodes.
10529
10530 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
10531
10532         * mini-amd64.h (MonoLMF): Add rsp field.
10533
10534         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
10535         the lmf too.
10536
10537 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
10538
10539         * mini-codegen.c (get_register_spilling): Fix some warnings.
10540
10541 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
10542
10543         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
10544         elimination during exception handling. Enable fp elimination by
10545         default.
10546
10547         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
10548         elimination.
10549
10550 2005-10-16  Martin Baulig  <martin@ximian.com>
10551
10552         * mini-exceptions.c
10553         (mono_debugger_run_finally): New public method for the debugger.
10554
10555 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10556
10557         * debug-mini.c (mono_debug_init_method): Fix warning.
10558
10559         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
10560         the 'exname' parameter const to fix some warnings.
10561
10562 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
10563
10564         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
10565         introduced by the previous patch.
10566
10567 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
10568
10569         * basic-float.cs: Add test for precision of float arithmetic.
10570
10571         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
10572         when loading/storing single values from/to memory.
10573
10574         * mini.c (mono_jit_compile_method_with_opt): Create the function
10575         pointers in the correct domain.
10576
10577 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10578
10579         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
10580         introduced by previous patch.
10581         
10582         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
10583         when out_filter_idx is NULL.
10584
10585         * mini-exceptions.c: Don't run filter clauses twice during exception
10586         handling. Fixes #75755.
10587
10588 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10589
10590         * aot.c: Add support for ldflda wrappers.
10591
10592         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
10593         #75902.
10594
10595 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
10596
10597         * mini.c, mini.h: do not consider exception handlers blocks when
10598         setting up interface variables.
10599
10600 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
10601
10602         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
10603
10604 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
10605
10606         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
10607         causes a regression.
10608
10609         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
10610
10611 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
10612
10613         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
10614         of the OP_P definitions.
10615
10616         * TODO: Add a proposal for dealing with the CEE/OP mess.
10617
10618         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
10619         optimizations from the x86 port.
10620
10621         * cpu-amd64.md: Ditto.
10622
10623         * basic.cs basic-long.cs: Add tests.
10624
10625 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
10626
10627         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
10628         Patrik Torstensson's implementation of my exception-handling
10629         optimization idea, when the exception object is not used
10630         (bug #62150).
10631
10632 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
10633
10634         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
10635         of the mul_imm optimizations from the old jit.
10636
10637 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
10638
10639         * mini.c, liveness.c: patch by Patrik Torstensson and
10640         Zoltan Varga to improve performance in methods with
10641         exception clauses.
10642
10643 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10644
10645         * driver.c: Remove 'Globalization' entry from --version.
10646
10647 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
10648
10649         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
10650         there is a profiler interested in JIT events.
10651
10652         * aot.c: Load profile files produced by the AOT profiling module, and
10653         reorder methods based on the profiling info. Add a 'method_order' table
10654         to the AOT file to make mono_aot_find_jit_info work with the reordered
10655         methods.
10656
10657         * mini.h: Bump AOT file version info.
10658
10659 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
10660
10661         * mini-arm.h: work around what looks like a gcc bug when optimizations
10662         are enabled.
10663
10664 2005-09-28  Raja R Harinath  <rharinath@novell.com>
10665
10666         * Makefile.am (AM_CFLAGS): Don't use += to append inside
10667         conditionals.  Use ...
10668         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
10669
10670 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
10671
10672         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
10673         to determine the amount of memory to copy when passing valuetypes.
10674
10675         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
10676         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
10677
10678 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
10679
10680         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
10681         information about aot.
10682
10683 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10684
10685         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10686         macros. This will allow a deadlock debugger to easily be plugged
10687         in.
10688
10689 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
10690
10691         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
10692
10693 2005-09-27  Raja R Harinath  <rharinath@novell.com>
10694
10695         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
10696         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
10697         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
10698         ($(arch_built)) [CROSS_COMPILING]: Error out.
10699
10700 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
10701
10702         * aot.c: Add support for the no_special_static flag for classes.
10703
10704 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10705
10706         * Reapply reverted patches.
10707
10708         * *: Revert r50174 as well.
10709
10710         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
10711
10712 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10713
10714         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
10715
10716 2005-09-23  Miguel de Icaza  <miguel@novell.com>
10717
10718         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
10719         part of the SIG_HANDLER_SIGNATURE.  
10720
10721 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10722
10723         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
10724         statistics.
10725
10726         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
10727         introduced by previous patch.
10728
10729 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
10730
10731         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
10732         saved registers too.
10733
10734         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
10735         upon the information returned by get_call_info ().
10736         
10737         * mini-x86.c (add_float): Fix stack size calculation.
10738         (mono_arch_call_opcode): Rewrite this so it works based up the
10739         information returned by get_call_info ().
10740         (mono_arch_get_this_vret_args): Ditto.
10741
10742 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
10743
10744         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
10745         in cinfo to determine the registers which need to be used.
10746
10747 2005-09-20  Miguel de Icaza  <miguel@novell.com>
10748
10749         * driver.c (mono_main): Add --server and --desktop flags. 
10750
10751 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
10752
10753         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
10754         registers as global registers.
10755
10756         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
10757         longer needed with the new register allocator.
10758
10759         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
10760
10761         * cpu-ia64.md: Remove unused opcodes.
10762         
10763         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
10764         
10765 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
10766
10767         * cpu-amd64.md: Remove unused opcodes.
10768
10769         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
10770         needed with the new register allocator.
10771
10772         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
10773         reg-reg moves.
10774
10775 2005-09-16  Raja R Harinath  <rharinath@novell.com>
10776
10777         * Makefile.am (check-local): Don't invoke semdel-wrapper.
10778
10779 2005-09-16  Martin Baulig  <martin@ximian.com>
10780
10781         * exceptions-amd64.c
10782         (throw_exception): Don't call mono_debugger_throw_exception() if
10783         we're a rethrow - see the FIXME in the code.
10784
10785 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
10786
10787         * mini.c (mono_init_exceptions): This only works on some architectures.
10788         
10789 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
10790
10791         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
10792         on ia64.
10793
10794         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
10795
10796         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
10797         now in mini-exceptions.c.
10798
10799 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
10800
10801         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
10802         now in mini-exceptions.c.
10803
10804 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
10805
10806         * exceptions-x86.c: Applied patch from Patrik Torstensson 
10807         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
10808
10809         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
10810         code into mini-exceptions.c. Add some assertions to it.
10811
10812 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
10813
10814         * aot.c (emit_section_change): Applied patch from "The Software Team" 
10815         (<software@solmersa.com>). Fix as errors on windows.
10816
10817 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
10818
10819         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
10820         method info into the LMF.
10821
10822 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
10823         
10824         * mini-ia64.c: Add proper unwind info for method epilogs.
10825
10826         * exceptions-ia64.c: Add some code to help debugging.
10827         
10828         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
10829
10830         * mini-exceptions.c: Fix warning.
10831
10832 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
10833
10834         * mini.c: Really fix build.
10835
10836         * mini-x86.c mini-amd64.c: Fix build.
10837
10838 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
10839
10840         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
10841
10842         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
10843         some Interlocked methods as intrinsics.
10844
10845         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
10846         for Thread methods as well.
10847
10848         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
10849
10850         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
10851
10852         * mini-ia64.c mini-x86.c mini-amd64.c 
10853         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
10854         OP_MEMORY_BARRIER.
10855         
10856         * mini.c (mono_init_exceptions): Fix build breakage.
10857
10858 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
10859
10860         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
10861         of instructions. Use the new ia64_unw_op macros for emitting unwind
10862         info.
10863
10864         * mini.c (mono_init_exceptions): Initialize exception handling
10865         related trampolines at startup.
10866
10867 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
10868
10869         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
10870
10871 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
10872
10873         * mini.c: Handle type loading errors gracefully during compilation and
10874         throw the appropriate exception.
10875
10876 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
10877
10878         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
10879         for the mono binary.
10880
10881 2005-09-09  Martin Baulig  <martin@ximian.com>
10882
10883         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
10884         the release.
10885
10886 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
10887
10888         * mini-arm.h: use emulation for conv.r.un for the release.
10889
10890 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
10891
10892         * mini-arm.c, objects.cs: more fixes and tests for them.
10893
10894 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
10895
10896         * mini-arm.c: align structures to at least 4 bytes to be able
10897         to keep our current optimized memcpy.
10898
10899 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
10900
10901         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
10902
10903 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10904
10905         * mini.c: ignore SIGPIPE.
10906
10907 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
10908
10909         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
10910
10911         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
10912
10913 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
10914
10915         * mini.h: Add prototype for mono_allocate_stack_slots_full.
10916
10917 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
10918
10919         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
10920         exception handling support.
10921         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
10922         patch by Brian Koropoff <briank@marakicorp.com>).
10923
10924 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
10925
10926         * mini.c: revert another 'optimization' which breaks when
10927         items on the eval stack need to be saved at a basic block end
10928         (bug #75940).
10929
10930 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
10931
10932         * jit-icalls.c: for arrays, ensure we always provide
10933         lower bounds.
10934
10935 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
10936
10937         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
10938         
10939         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
10940
10941 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
10942
10943         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
10944         arguments in their original register.
10945
10946 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
10947
10948         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
10949         memset/memcpy.
10950
10951         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
10952         when ssapre is enabled.
10953
10954         * inssel-long.brg: Fix bug in previous patch.
10955
10956         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
10957         multiplication by a constant.
10958
10959 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
10960
10961         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
10962         icc.
10963
10964         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
10965         saving registers.
10966
10967 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
10968
10969         * inssel-arm.brg: apply changes tested by Brian Koropoff
10970         <briank@marakicorp.com>.
10971
10972 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
10973
10974         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
10975         
10976 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
10977
10978         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
10979         to the same register if dreg is just a base register.
10980         (print_ins): Improve printing of membase opcodes.
10981
10982         * inssel-x86.brg: Add optimized ldind(reg) rules.
10983
10984         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
10985
10986 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
10987
10988         * mini.c: when running under valgrind, set the stack bottom for
10989         the GC at the actual approximate stack for the app (fixes running
10990         mono with valgrind).
10991
10992 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
10993
10994         * mini.c: do no break at the first valuetype to init found
10995         (fixes bug #75791).
10996
10997 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
10998
10999         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
11000
11001 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
11002
11003         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
11004
11005 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
11006
11007         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
11008
11009 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11010
11011         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
11012
11013         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
11014         code.
11015
11016         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
11017         code.
11018
11019         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
11020         methods.
11021
11022 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
11023
11024         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
11025
11026 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11027
11028         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
11029         in the tail recursion optimization.
11030
11031         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
11032         debug info into the assembly file.
11033
11034         * iltests.il: Add test for filter regions.
11035
11036         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
11037         initial stack of filter regions. Fixes #75755.
11038
11039 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
11040
11041         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
11042         stack requirements.
11043
11044 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11045
11046         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
11047         the check for an already compiled method on non-ia64 platforms.
11048         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
11049         proper domain.
11050
11051         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
11052
11053         * inssel-x86.brg: Add some optimized call rules.
11054
11055 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
11056
11057         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
11058         method here.
11059
11060         * mini.h mini-trampolines.c: Pass the trampoline argument to 
11061         mono_arch_patch_delegate_trampoline.
11062
11063         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
11064
11065         * mini-trampolines.c: Fix build.
11066
11067         * mini-amd64.h: Add delegate trampolines.
11068
11069         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
11070
11071         * inssel-amd64.brg: Add optimized call rules.
11072         
11073         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
11074
11075         * inssel-ia64.brg: Add optimized ldind(reg) rules.
11076
11077 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
11078
11079         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
11080         change.
11081
11082         * mini-ia64.c: Remove LMF fixmes.
11083
11084         * mini-ia64.h: Remove most fields from LMF.
11085
11086         * inssel-ia64.brg (stmt): Fix unaligned access errors.
11087
11088         * mini-trampolines.c: Add support for IA64 function descriptors.
11089
11090         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
11091         for IA64 function descriptors.
11092
11093 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
11094
11095         * tramp-arm.c: patch the vtable for virtual calls. Added
11096         support code to register/unregister the LMF.
11097         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
11098         more LMF work.
11099
11100 2005-08-19  Dick Porter  <dick@ximian.com>
11101
11102         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
11103         bit value if needed.
11104
11105 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
11106
11107         * mini.c (mini_get_method): Move handling of wrapper data here.
11108
11109         * mini.c (mono_method_to_ir): Add support for dynamic methods.
11110
11111         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
11112         virtual.
11113
11114         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
11115         bblock->code does not remain empty.
11116
11117 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
11118
11119         * arrays.cs: Add regression test for #75832.
11120
11121         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
11122         rules. Fixes #75832.
11123
11124         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
11125         instruction scheduling.
11126
11127 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
11128
11129         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
11130
11131 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
11132
11133         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
11134
11135         * mini-codegen.c: Fix VC build.
11136
11137         * cpu-pentium.md: Increase length of atomic_exhange_i4.
11138
11139 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11140
11141         * mini.h: fix signature for mono_register_opcode_emulation.
11142
11143 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
11144
11145         * mini.c: Get rid of most of the helper_sig_... constants using
11146         mono_create_icall_signature ().
11147
11148 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
11149
11150         * jit-icalls.c (helper_ldstr): New helper function.
11151
11152         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
11153
11154         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
11155         throw, load the string using a helper call instead of creating a string object.
11156
11157         * aot.c: Update after LDSTR changes.
11158
11159         * mini.h: Bump AOT file version.
11160         
11161         * aot.c: Save class size info into the AOT file. Print more statistics during
11162         compilation.
11163
11164         * mini.h: Bump AOT file version.
11165
11166         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11167         ordering of disasm cases. Fixes #74957.
11168
11169 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
11170
11171         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
11172         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
11173         the generic code needed for the ARM port.
11174
11175 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
11176
11177         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
11178         inssel-arm.brg: more ARM features and fixes.
11179
11180 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
11181
11182         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
11183         ARM port work in progress.
11184
11185 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
11186
11187         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
11188
11189         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
11190
11191         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
11192
11193         * inssel.brg (mini_emit_memset): Add support for unaligned access.
11194
11195         * *-ia64.*: Ongoing IA64 work.
11196         
11197         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
11198
11199 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11200
11201         * TODO: Remove out-of-data todo stuff.
11202
11203         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
11204         dead code.
11205
11206         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
11207
11208         * mini.h: Bump corlib version.
11209
11210 2005-07-27  Martin Baulig  <martin@ximian.com>
11211
11212         * mini-codegen.c
11213         (create_copy_ins): Added `const unsigned char *ip' argument; set
11214         `copy->cil_code' from it.
11215
11216 2005-07-27  Martin Baulig  <martin@ximian.com>
11217
11218         * mini-exceptions.c (mono_handle_exception): Don't call
11219         mono_debugger_handle_exception() for filters.
11220
11221 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
11222
11223         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
11224         as well.
11225
11226 2005-07-26  Martin Baulig  <martin@ximian.com>
11227
11228         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
11229
11230         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
11231         helper_compile_generic_method() if the method is actually virtual
11232         and non-final.
11233
11234 2005-07-26  Martin Baulig  <martin@ximian.com>
11235
11236         * mini.c
11237         (trampoline_code): Renamed to `mono_trampoline_code' and made it
11238         public; this is now accessed directly by the debugger.
11239         (mono_generic_trampoline_code): Removed.
11240
11241         * debug-mini.c
11242         (mono_debug_init_method): Also add interncalls and wrappers.
11243
11244 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
11245
11246         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
11247
11248 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
11249
11250         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
11251
11252 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
11253
11254         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
11255
11256 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11257
11258         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
11259         getting TLS offsets on AMD64 too.
11260
11261 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
11262
11263         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
11264
11265 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
11266
11267         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
11268         inssel-arm.brg, mini-arm.h: ARM port work in progress.
11269
11270 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11271
11272         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
11273
11274         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
11275         to mini.c.
11276
11277         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
11278         mono_sparc_is_virtual_call ().
11279         
11280         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
11281
11282         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
11283         trampoline parameters.
11284
11285         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
11286         
11287         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
11288         to mono_arch_get_vcall_slot_addr.
11289
11290         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
11291         trampoline code.
11292
11293         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
11294
11295 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11296
11297         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
11298
11299 2005-07-19  Martin Baulig  <martin@ximian.com>
11300
11301         * exceptions-amd64.c (throw_exception): Call
11302         mono_debugger_throw_exception() here like we're doing it on i386.
11303
11304 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
11305
11306         * mini-ia64.c: Add optimized TLS access support.
11307
11308 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
11309
11310         * mini-exceptions.c: Ongoing IA64 work.
11311
11312         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
11313
11314         * mini.c: Use the default optimization set when embedding. Fixes
11315         #75194.
11316
11317 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
11318
11319         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
11320         of trampolines to a separate file.
11321
11322         * mini-trampolines.c: New file.
11323
11324         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
11325         separate file.
11326         
11327         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
11328         amd64/ia64 code.
11329
11330         * mini-codegen.c: Fix cygwin build.
11331
11332 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
11333
11334         * mini.c: Add some minor changes needed by the IA64 port.
11335
11336         * *-ia64.*: Ongoing IA64 work.
11337
11338 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
11339
11340         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
11341         trampolines into arch-independent and arch-dependent parts.
11342
11343         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
11344
11345 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
11346
11347         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
11348
11349         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
11350         the xp-regalloc-branch for amd64.
11351
11352         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
11353         xp-regalloc-branch for x86.
11354
11355 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
11356
11357         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
11358
11359 2005-07-06  Martin Baulig  <martin@ximian.com>
11360
11361         * mini.c
11362         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
11363         (mono_jit_runtime_invoke): Likewise.
11364
11365 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
11366
11367         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
11368         on x86 too.
11369         
11370         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
11371         without loading their metadata. Reorganize the file format so exception handling+
11372         debug info is kept separate from normal method info. Create MonoJitInfo 
11373         structures for methods lazily.
11374
11375         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
11376         loading metadata.
11377         (x86_class_init_trampoline): Patch AOT class init trampolines too.
11378
11379         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
11380
11381         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
11382         in AOT code.
11383
11384         * mini.h: Bump AOT file version.
11385
11386 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
11387
11388         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11389
11390 2005-07-01  Raja R Harinath  <rharinath@novell.com>
11391
11392         * Makefile.am (check-local): Call semdel-wrapper.
11393
11394 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
11395
11396         * mini-x86.c: Revert the last change as it seems to break the build..
11397
11398 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11399
11400         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11401         
11402         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
11403
11404 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
11405
11406         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
11407         outside of the macro, so strange stuff doesn't happen with gcc4
11408         (NEW_AOTCONST_TOKEN): Likewise.
11409
11410 2005-06-28  Martin Baulig  <martin@ximian.com>
11411
11412         * mini.c (mini_class_is_system_array): New static method; use this
11413         instead of `klass->parent == mono_defaults.array_class' everywhere
11414         since this also works for the new generic array class.
11415
11416 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11417
11418         * inssel.brg: Remove warnings.
11419
11420 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
11421
11422         * mini-ia64.c: Ongoing IA64 work.
11423
11424         * basic-float.cs: Add float->i1 conversion test.
11425
11426         * iltests.il: Add conv.u4 test.
11427
11428 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
11429
11430         * inssel-long.brg: Fix bug caused by last change.
11431
11432 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
11433
11434         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
11435         BSDs.  Allows the x86 JIT to work on OSX86
11436
11437 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
11438
11439         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
11440         u4->i8 conversion.
11441
11442         * mini-ia64.c: Ongoing IA64 work.
11443
11444 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11445
11446         * mini-ia64.c: Ongoing IA64 work.
11447
11448         * driver.c: Clean up jit_code_hash as well when using --regression.
11449
11450         * inssel-long.brg: Fix long->i4/u4 conversion rules.
11451
11452         * basic-long.cs: Add tests for long->u4 conversion.
11453
11454 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
11455
11456         * mini.c: Take mono_get_domainvar out of macros. This makes sure
11457         that we do not depend on undefined C behavior: the order stuff
11458         gets evaluated within an expression. Fixes mono when compiled on
11459         GCC 4.
11460
11461 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
11462
11463         * *-ia64.*: Ongoing IA64 work.
11464
11465         * aot.c: Lower memory usage while loading AOT methods.
11466
11467         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
11468
11469         * mini.h: Bump AOT file format version.
11470
11471 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11472
11473         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
11474
11475 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
11476
11477         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
11478         not on callee assembly). Fixed some comments.
11479
11480 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
11481
11482         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
11483         it gets proper disassembly.
11484         (emit_method_info): Remove some dead code.
11485
11486         * mini.c (mini_method_compile): Allways allocate the GOT var in
11487         mono_method_to_ir for emulating opcodes.
11488
11489 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
11490
11491         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
11492         before freeing the code memory. Fixes #74990.
11493
11494         * objects.cs: Add regression test for #74992.
11495
11496         * liveness.c: Extend live ranges of arguments to the beginning of the
11497         method. Fixes #74992.
11498
11499         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
11500         so it points into the faulting instruction.
11501
11502 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
11503
11504         * jit-icalls.c (mono_imul_ovf): Add exception handling.
11505
11506         * *-ia64.*: Ongoing IA64 work.
11507
11508         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
11509
11510 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
11511
11512         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
11513
11514         * *-ia64.*: Ongoing IA64 work.
11515
11516 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
11517
11518         * basic-long.cs: Add tests for add/sub.ovf.
11519
11520         * basic.cs: Add tests for sub.ovf.
11521
11522         * *-ia64.*: Ongoing IA64 work.
11523
11524 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
11525
11526         * *-ia64.*: Ongoing IA64 work.
11527
11528         * basic.cs: Add conv.ovf.i4.un test.
11529
11530 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
11531
11532         * mini.c: (remove_block_if_useless) Fixed bug 75061.
11533         
11534 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11535
11536         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
11537
11538 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
11539
11540         * *-ia64.*: Ongoing IA64 work.
11541
11542 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11543
11544         * trace.[ch]:
11545         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
11546
11547 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
11548
11549         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
11550
11551 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
11552
11553         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
11554
11555         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
11556         of a call is callable by a near call.
11557
11558 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
11559
11560         * mini-ia64.c: Ongoing IA64 work.
11561
11562 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
11563
11564         * genmdesc.c: Make the generated array non-static.
11565
11566         * inssel-long.brg: Fix LSHR_IMM rule.
11567
11568         * *-ia64.*: Ongoing IA64 work.
11569
11570         * *-ia64.*: Ongoing IA64 work.
11571
11572 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11573
11574         * *-ia64.*: Ongoing IA64 work.
11575
11576         * *-ia64.*: Ongoing IA64 work.
11577         
11578         * mini-ia64.c: Ongoing IA64 work.
11579
11580         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
11581
11582 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11583
11584         * objects.cs basic-calls.cs: Move some tests to objects.cs.
11585         
11586         * objects.cs basic-long.cs: Move some tests to objects.cs.
11587
11588 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
11589
11590         * *-ia64.*: Ongoing IA64 work.
11591
11592         * iltests.il: Add a new test.
11593
11594         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
11595         newobj. Fixes #75042.
11596
11597 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
11598
11599         * *-ia64.*: Ongoing IA64 work.
11600         
11601         * *-ia64.*: Ongoing IA64 work.
11602         
11603         * *-ia64.*: Ongoing IA64 work.
11604
11605         * basic.cs objects.cs: Move tests accessing static variables as well.
11606
11607         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
11608
11609 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
11610
11611         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
11612
11613         * driver.c: Always print failed tests.
11614
11615         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
11616         frame pointer.
11617
11618         * *ia64*: Ongoing IA64 work.
11619
11620 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
11621
11622         * basic.cs: Add tests for add.ovf. Fix warnings.
11623
11624 2005-05-18  Miguel de Icaza  <miguel@novell.com>
11625
11626         * driver.c (mono_main): Avoid crash if no argument is passed to
11627         --break;  Do not use g_error, but f_printf.   And fix all other
11628         ocurrences of the same crash.
11629
11630 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
11631
11632         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
11633         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
11634         Fixes #74742.
11635
11636 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
11637
11638         * *-ia64.*: Add beginnings of IA64 backend.
11639
11640         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
11641
11642 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
11643
11644         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
11645         Fixes #74925.
11646
11647         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
11648
11649         * mini-amd64.c: Fix a warning.
11650
11651 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
11652
11653         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
11654         in float_neg. Fixes #74897.
11655
11656         * mini-amd64.c (emit_call): Fix another near call bug.
11657
11658 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
11659
11660         * declsec.c: Keep the appdomain information in the structure. Added a 
11661         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
11662         value gets overwritten).
11663         * declsec.h: Set the default MonoArray for the the stack to 6. Added
11664         an MonoAppDomain member to MonoSecurityFrame.
11665         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
11666         used in the stack walk. Now use a MonoArray which grow (double) when
11667         it gets full.
11668
11669 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
11670
11671         * mini.c: Re-enabled runtime cleanup, since running threads should
11672         now properly stop when exiting.
11673
11674 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
11675
11676         * mini-codegen.c: New file contaning the arch-independent local
11677         register allocator. Not used by any architectures yet.
11678
11679         * mini.h linear-scan.c: Merge some changes from the 
11680         mini-xp-local-regalloc branch.
11681
11682 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
11683
11684         * mini-amd64.c (emit_call): Fix calls to native functions when the
11685         runtime is compiled as a shared library. Fixes #74756.
11686
11687         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
11688         on a literal field. Fixes #74751.
11689
11690 2005-04-25  Raja R Harinath  <rharinath@novell.com>
11691
11692         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
11693
11694 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
11695
11696         * objects.cs: Add missing null casting test.
11697
11698 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
11699
11700         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
11701         in wrapper methods. Also rename 'address' variable to 'offset'.
11702
11703 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
11704
11705         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
11706         warnings.
11707         
11708         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
11709
11710         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
11711         work on windows.
11712
11713 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
11714
11715         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
11716
11717 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
11718
11719         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
11720         just the last bytes.
11721
11722 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
11723
11724         * aot.c (mono_compile_assembly): Fix warning.
11725
11726         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
11727         by the _MSC_VER stuff.
11728
11729 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
11730
11731         * inssel-long.brg: Fix #74588.
11732
11733         * cpu-amd64.md: Fix #74591.
11734
11735         * iltests.il: Add new regression tests.
11736
11737 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
11738
11739         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
11740         valuetype.
11741
11742 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
11743
11744         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
11745
11746         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
11747         from Bill Middleton <flashdict@gmail.com>.
11748
11749 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
11750
11751         * arrays.cs: Add new regression test. Fix warnings.
11752
11753 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
11754
11755         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
11756         and leakage in CKFINITE.
11757
11758         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
11759         this to a null op since it is called on amd64 too.
11760
11761         * exceptions-amd64.c (get_throw_trampoline): Align stack.
11762
11763         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
11764         body since this is not used on amd64.
11765         
11766         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
11767
11768         * mini-amd64.c: Remove obsolete fixmes.
11769
11770         * mini.c (print_method_from_ip): Fix debugging support.
11771
11772 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
11773
11774         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
11775         so that expressions that don't give much gain are not reduced.
11776         * ssapre.h: Likewise.
11777
11778 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
11779
11780         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
11781
11782         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
11783
11784         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
11785
11786 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
11787
11788         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
11789
11790         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
11791
11792 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
11793
11794         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
11795         stack touching.
11796
11797         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
11798
11799         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
11800
11801         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
11802
11803         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
11804         MONO_ARCH_USE_SIGACTION. Fixes #74252.
11805
11806         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
11807
11808         * mini-x86.c: Fix up stack overflow handling.   
11809
11810         * exceptions.cs: Add new regression test.
11811
11812 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
11813
11814         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
11815         mono_jit_thread_attach.
11816
11817         * mini.c (mono_method_to_ir): Verify called method is not abstract.
11818
11819 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
11820
11821         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
11822         avoid calling constructors using callvirt.
11823
11824         * inssel.brg: Fix #74073.
11825
11826 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
11827
11828         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
11829         compilation with non-GCC compilers.
11830         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
11831         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
11832
11833 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
11834
11835         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
11836         klass->interface_offsets (will likely fix bug#74073).
11837
11838 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
11839
11840         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
11841
11842 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
11843
11844         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
11845         to amd64_div_reg_size ().
11846         
11847         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
11848
11849 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
11850
11851         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
11852
11853 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
11854
11855         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
11856
11857 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
11858
11859         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
11860         
11861         * mini.c (mono_precompile_assembly): Load and precompile referenced
11862         assemblies as well. Fixes #74015.
11863
11864 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
11865
11866         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
11867
11868 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
11869
11870         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
11871         a lot of checks and (anyway) permissions cannot work until corlib is 
11872         loaded.
11873
11874 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
11875
11876         * mini-ppc.c: fixed ABI issue on sysv/ppc.
11877
11878 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
11879
11880         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
11881         calls (fixes bug#72824).
11882
11883 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
11884
11885         * mini.c: fix tail recursion elimination (see test in bug#73936).
11886
11887 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
11888
11889         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
11890         some fp functions in sse2 mode.
11891
11892 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
11893
11894         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
11895
11896 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
11897
11898         * mini.h mini.c: Add mono_get_jit_tls_key ().
11899
11900         * mini-x86.c: Enable fast TLS support on windows.
11901
11902 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
11903
11904         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
11905         * mini.c: Check for p/invoke method when generating code. If a
11906         p/invoke method, or it's class, isn't decorated with [Suppress
11907         UnmanagedCodeSecurity] then generate code to call System.Security.
11908         UnmanagedDemand (only if the security manager is active).
11909
11910 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
11911
11912         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
11913         last change as it seems to cause strange crashes.
11914         
11915 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
11916
11917         * *.c: handle unsafe function pointers where needed.
11918
11919 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
11920
11921         * mini.c (mono_jit_free_method): Remove the fixme too.
11922
11923 2005-03-15  Miguel de Icaza  <miguel@novell.com>
11924
11925         * mini.c: As discussed, make the code actually free the delegate
11926         thunk now, to enable the debugging of delegate problems, use
11927         MONO_DEBUG=1 when running Mono. 
11928
11929         This takes also care of parts of the leaks as seen by Joe.
11930
11931 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
11932
11933         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
11934         thread_tls_offset calculation.
11935
11936 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
11937
11938         * declsec.c: Reworked linkdemand checks for icall. The previous code
11939         was using the declaration code (untrusted) and didn't work as expected
11940         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
11941         specific case.
11942
11943 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
11944
11945         * iltests.il: Add new localloc test.
11946
11947         * mini-amd64.c: Handle large stack allocations the same way as on
11948         windows if stack overflow handling is working.
11949         
11950         * mini-amd64.c: Allocate the signal stack using mmap.
11951
11952         * mini.c (sigsegv_signal_handler): Fix reading of context.
11953
11954         * mini-exceptions.c: Fix up stack overflow handling.
11955
11956         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
11957
11958         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
11959
11960         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
11961
11962         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
11963
11964         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
11965         tramp_init functions as they are no longer needed.
11966
11967 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
11968
11969         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
11970         
11971         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
11972
11973         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
11974         
11975         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
11976         support that now.
11977
11978         * mini-ops.h: Add OP_LMUL_IMM.
11979
11980         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
11981         long mul/div opcodes as intrinsic.
11982
11983         * mini-amd64.c (emit_call): Handle the case when the callee might be
11984         an AOT method.
11985
11986 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
11987
11988         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
11989         extra safe.
11990         
11991         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
11992
11993         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
11994
11995 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
11996
11997         * mini.c (mono_codegen): Don't leak here, to help people running
11998         monogrind.
11999
12000 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
12001
12002         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
12003         conversions in sse2 mode.
12004
12005         * basic-float.cs: Add regression test.
12006         
12007         * mini-amd64.c: Reenable sse2.
12008
12009 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12010
12011         * mini-amd64.c: Disable sse2 until some regressions are fixed.
12012
12013 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
12014
12015         * driver.c: Copyright text should include 2005.
12016         
12017 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
12018
12019         * cpu-amd64.md (load_membase): Fix more max lengths.
12020
12021 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
12022
12023         * cpu-amd64.md (load_membase): Fix max length.
12024
12025         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
12026
12027         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
12028
12029         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
12030         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
12031
12032         * basic-float.cs: Add rounding regression test.
12033
12034         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
12035
12036 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
12037
12038         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
12039         structures in registers for pinvoke wrappers.
12040
12041 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
12042
12043         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
12044
12045 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
12046
12047         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
12048         wrapper to mono_jit_thread_attach.
12049
12050         * mini.c (mini_jit_thread_attach): New jit icall.
12051
12052         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
12053         native->managed wrappers.
12054
12055         * exceptions.cs: Add new regression test.
12056
12057         * mini.c (optimize_branches): Check regions in the cbranch to throw
12058         block case as well. Fixes #73242.
12059
12060 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
12061
12062         * mini.c: thread safety fixes.
12063
12064 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
12065
12066         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
12067         patching stuff, since delegates use jump trampolines so there is
12068         no caller.
12069
12070         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
12071         jump trampolines.
12072         
12073         * tramp-amd64.c: Fix build.
12074
12075         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
12076         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
12077
12078         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
12079         Rename this to mono_arch....
12080         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
12081
12082         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
12083
12084         * mini-amd64.c (emit_call): If both the caller and the callee is
12085         guaranteed to have 32 bit addresses, emit a normal call.
12086
12087         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
12088
12089         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
12090         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
12091         method_ptr inside delegates.
12092
12093 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
12094
12095         * mini.c (mono_jit_free_method): Free the method info even if the native code is
12096         invalidated. Fixes #73001.
12097
12098         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
12099
12100         * mini-x86.c: Only use stdcall for pinvokes on windows.
12101
12102 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
12103
12104         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
12105         * mini-x86.c: remove unreliable __thread var offset detection,
12106         use the correct accessors and enable by default.
12107
12108 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
12109
12110         * mini.c (mono_jit_free_method): Fix memory leak.
12111
12112 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
12113
12114         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
12115
12116 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
12117
12118         * cpu-amd64.md: Fix lengths of atomic opcodes.
12119
12120 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
12121
12122         * driver.c: try to not imply using ICU is any good.
12123
12124 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
12125
12126         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
12127         functions as inline ops.
12128
12129         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
12130         some Interlocked functions as inline ops.
12131
12132         * mini.c (move_basic_block_to_end): Fix bug in last patch.
12133
12134         * mini.h (MonoBasicBlock): Reorganize fields a bit.
12135
12136         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
12137
12138         * mini.c: Add support for OP_NOT_TAKEN.
12139
12140         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
12141         structures in registers for pinvoke wrappers.
12142
12143         * mini-amd64.c: Fix warnings.
12144
12145 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
12146
12147         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
12148
12149         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
12150
12151         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
12152         address instead of loading the address from it.
12153
12154         * mini-x86.c: Add support for returning small structs in registers
12155         on Win32. Fixes part of #70864.
12156         
12157 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
12158
12159         * trace.c (get_token): Improve error checking.
12160
12161 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
12162
12163         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
12164
12165 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
12166  
12167         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
12168         it can be reused for MonoClass.
12169         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
12170         _LINKDEMAND.
12171
12172 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
12173
12174         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
12175         instead of a MonoReflectionMethod. The method information wasn't used
12176         when displaying SecurityException details (but will be now).
12177
12178 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
12179
12180         * Makefile.am : windows build fix.
12181
12182 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
12183
12184         * iltests.il: Add new regression test.
12185
12186         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
12187         #72522.
12188
12189 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
12190  
12191         * mini.c: Moved linkdemand check into helper function check_linkdemand
12192         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
12193         LDFTN, LDVIRTFTN).
12194
12195 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
12196
12197         * declsec.c: Added statistics counter for different kinds of 
12198         LinkDemands.
12199         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
12200         (and commented) declaration.
12201         * mini.c: Added statistics counter for security Demand code 
12202         generation. Added display of security statistics.
12203
12204 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
12205
12206         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
12207         Fix compilation errors under gcc-2.95.
12208
12209 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
12210
12211         * mini.c, driver.c: Use the new jit trampoline hashtable
12212
12213 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12214
12215         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
12216
12217 2005-02-11  Martin Baulig  <martin@ximian.com>
12218
12219         * debug-mini.c (mono_debug_close_method): Free the line number array.
12220
12221 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12222
12223         * aot.c: Break up large methods into smaller ones. Share GOT slots for
12224         icalls.
12225
12226         * mini.h: Bump AOT file format version. 
12227
12228 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
12229
12230         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
12231         APTC and P/Invoke.
12232         * declsec.h: Added macros to get/set lazyly initialized security 
12233         informations about assemblies. Added new enum for different type of
12234         possible LinkDemand violation. Added function to check LinkDemands.
12235         * mini.h: Added a field to MonoCompile to hold any security violation
12236         detected when JITting a method (so it can be thrown later).
12237         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
12238         and CEE_CALLVIRT. Added code to throw exception at the end of
12239         mini_method_compile (note: the exception is unhandled right now).
12240
12241 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
12242
12243         * mini.c, jit-icalls.c: use the managed implementation of
12244         memset for initobj and memset, to avoid managed <-> unmanaged
12245         transitions.
12246
12247 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
12248
12249         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
12250         optimization if it would need a GOT var.
12251
12252         * basic.cs: Add tests for constant propagation and switch statements.
12253
12254         * ssa.c: Fix out-of-range constant propagation and switch statements.
12255
12256 2005-02-09    <vargaz@freemail.hu>
12257
12258         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
12259
12260 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
12261
12262         * cpu-amd64.md (load_membase): Fix max length of load_membase.
12263
12264 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
12265
12266         * mini.c: update to new signature of mono_class_get_allocation_ftn().
12267
12268 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
12269
12270         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
12271         arithmetic operations.
12272
12273 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
12274
12275         * mini-ppc.c: add a workaround for broken user code that
12276         DllImports vararg functions with non-vararg signatures.
12277
12278 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
12279
12280         * mini.c (mono_jit_compile_method_inner): Add detection and a 
12281         meaningfull error message for assemblies written in Managed C++.
12282
12283         * tramp-amd64.c mini-amd64.h: Add support for 
12284         create_trampoline_from_token ().
12285
12286         * aot.c mini-x86.c abcremoval.c: Applied patch from
12287         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
12288
12289 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
12290
12291         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
12292         which takes a MonoImage/token as parameter instead of a MonoMethod.
12293
12294         * aot.c: Use the new trampoline for initializing vtables.
12295
12296         * aot.c: Add support for ldfld/stfld_remote wrappers.
12297
12298         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
12299         rules for compare <MEM>, IMM.
12300
12301         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
12302
12303         * aot.c: Handle inherited finalizers correctly.
12304
12305 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
12306
12307         * inssel.brg (stmt): Add a missing _setup_... ().
12308
12309         * aot.c: Save some parts of the class state to the AOT file and use it
12310         to recompute that state when a class is initialized.
12311
12312         * mini.c: Install AOT hooks into the runtime.
12313
12314         * mini.h: Bump AOT file format version.
12315         
12316         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
12317         Fixes #72148.
12318
12319         * iltests.il: Add new test.
12320
12321 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
12322
12323         * mini.c: fix typo.
12324
12325 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
12326
12327         * mini.c: setup the statistical profiler in the thread attach
12328         callback to cope with the new single thread code.
12329
12330 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
12331
12332         * mini-ppc.c: ensure we have enough room for the profiler
12333         calls (fixed bug#72084).
12334
12335 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
12336
12337         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
12338         it.
12339
12340 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12341
12342         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
12343
12344 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12345
12346         * ssapre.c: Fixed an issue with down safety (this allows IronPython
12347         to succesfully execute parrotbench).
12348         * ssapre.h: Likewise.
12349
12350 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
12351
12352         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
12353         variable for stores to method arguments (fixes a SSAPRE issue).
12354
12355 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12356
12357         * mini.c: handle value types in dup, fixes gen-112.cs.
12358
12359 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
12360
12361         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
12362         sequence for calls in dynamic methods to avoid thunks.
12363
12364 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
12365
12366         * mini.c: correctly remove dynamic methods from the hashtable.
12367
12368 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12369
12370         * driver.c: Disabled SSAPRE until fix the bug that appears
12371         in IronPython's parrotbench.
12372
12373 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
12374
12375         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
12376
12377         * mini.c (mono_method_to_ir): Revert the previous change.
12378         
12379         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
12380         when AOT compiling.
12381
12382         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
12383         mono_jit_info_table_find () etc. when running under valgrind.
12384
12385         * inssel.brg: Fix warnings.
12386
12387         * mini-exceptions.c: Fix warnings.
12388
12389 2005-01-31  Martin Baulig  <martin@ximian.com>
12390
12391         * driver.c (compile_all_methods_thread_main): Don't try to compile
12392         generic methods or anything which has type parameters.
12393
12394 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
12395
12396         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
12397
12398         * TestDriver.cs: Add --verbose flags.
12399
12400         * graph.c ssa.c: Fix 64 bit warnings.
12401         
12402         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
12403         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
12404         Fix 64 bit warnings.
12405
12406         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
12407         variable not spotted by gcc.
12408         
12409         * mini-amd64.c inssel-amd64.brg: Applied patch from  
12410         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
12411         X86_COMPARE_MEMBASE opcodes.
12412
12413         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
12414
12415 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
12416
12417         * *: MonoMethod->signature might be NULL now. You *MUST* use
12418         mono_method_signature.
12419
12420 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12421
12422         * driver.c (compile_all_methods_thread_main): Compile the methods
12423         without invoking cctors.
12424
12425 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12426
12427         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
12428         * basic-calls.cs: test for the above.
12429
12430 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12431
12432         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
12433         MonoJitInfo changes.
12434
12435 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
12436
12437         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
12438         eagerly if it contains dynamic methods.
12439         
12440         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
12441
12442         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
12443         trace, it is now computed by an icall from trace_ips.
12444         
12445         * mini-exceptions.c: Fix a warning.
12446
12447 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
12448
12449         * mini-exceptions.c: don't bother getting stack trace info if
12450         it's not going to be used.
12451
12452 2005-01-27  Raja R Harinath  <rharinath@novell.com>
12453
12454         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
12455         ssapre-mini-ops.h.
12456
12457 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
12458
12459         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
12460
12461         * aot.c: Avoid calling mono_method_get_header () if not needed.
12462
12463         * mini.h: Bump AOT file format version.
12464         
12465         * mini.c (mono_emit_native_call): Allocate a GOT var here.
12466
12467         * mini.c (mono_print_tree): Print more info for calls.
12468
12469 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12470
12471         * declsec.h: Remove warning by adding missing include for marshal.h
12472
12473 2005-01-26  Martin Baulig  <martin@ximian.com>
12474
12475         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
12476         `ip' twice.
12477
12478 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
12479
12480         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
12481         flags.
12482
12483         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
12484
12485         * aot.c (mono_compile_assembly): Fix a warning.
12486
12487 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
12488
12489         * declsec.c: Look for security attributes on the original MonoMethod 
12490         (and not the wrapped one). This fix permissions on icalls.
12491
12492 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12493
12494         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12495
12496         * mini.c (mono_allocate_stack_slots): Add a fixme.
12497
12498         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12499
12500 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12501
12502         * inssel.brg: optimize casts of sealed types (more
12503         optimizations waiting for fixes in remoting).
12504
12505 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12506
12507         * inssel.brg (stmt): Add another dummy rule.
12508
12509         * driver.c: Fix warnings.
12510
12511         * driver.c (mono_main): If running under valgrind, instruct glib to use
12512         the system allocation functions so valgrind can track the memory
12513         allocated by the g_... functions.
12514
12515         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
12516
12517         * mini-ops.h: Add OP_DUMMY_STORE opcode.
12518
12519         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
12520
12521         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
12522         variables in try regions.
12523
12524         * mini.c (mini_method_compile): Don't disable optimizations on large
12525         methods when AOT compiling.
12526
12527         * mini.c (mono_allocate_stack_slots): New arch independent method to 
12528         allocate stack slots. Not yet used.
12529
12530 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
12531
12532         * debug-mini.c (mono_debug_close_method): Plug some leaks.
12533
12534 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
12535
12536         * mini-ppc.c: make the branch info relative as the code
12537         buffer can be reallocated.
12538
12539 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
12540
12541         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
12542         * driver.c: Removed the AOT/security restriction. Now initialize the
12543         security manager (in metadata) if --security is used.
12544         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
12545         rather than the pointer to declarative security, when AOT is used.
12546
12547 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
12548
12549         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
12550         basic blocks, reduced intrinsic exception throwing code size.
12551
12552 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
12553
12554         * driver.c (mini_usage): Reorder the usage screen.
12555
12556 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
12557
12558         * mini.c (mono_resolve_patch_target): Fix warning.
12559
12560 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
12561
12562         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
12563         previous patch.
12564
12565         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12566
12567         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
12568         breaks the amd64 build.
12569
12570         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
12571         register allocation. Fixes #71454.
12572
12573         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12574
12575         * arrays.cs: Add new regression test.   
12576
12577 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12578
12579         * ssapre.c: Turned usage of snprintf to GString.
12580         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
12581         (I left it on by mistake in my previous commit).
12582
12583 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
12584
12585         * mini.c, cfold.c, basic-calls.cs: preserve side effects
12586         on cond branch optimization (fixes bug# 71515).
12587
12588 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12589
12590         * abcremoval.c: Fixed bug 71062.
12591         * abcremoval.h: Likewise.
12592
12593 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12594
12595         * mini.c: Added a new functionality to optimize_branches, the removal
12596         of useless basic blocks, and fixed some problem in the removal of
12597         critical edges; some utility functions added for both purposes.
12598         * ssapre.c: Added complex expression support, and fixed bug 70637.
12599         * ssapre.h: Likewise.
12600         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
12601         enabled in SSAPRE.
12602         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
12603         * driver.c: Re-enabled SSAPRE.
12604
12605 2005-01-19  Martin Baulig  <martin@ximian.com>
12606
12607         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
12608         the result of mono_get_method_constrained().
12609
12610 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
12611
12612         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
12613         manager.
12614
12615 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
12616
12617         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
12618         be detected.  Fixes #59296.
12619
12620 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12621
12622         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
12623         which can happen. Fixes #71361.
12624
12625 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12626
12627         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
12628         manager.
12629
12630 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12631
12632         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
12633         appdomain-unload.exe to fail.
12634         
12635         * mini.c: Fix some memory leaks.
12636
12637 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
12638
12639         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
12640         Fixed bug and sped up some codepaths.
12641
12642 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12643
12644         * mini.c: Fix some memory leaks.
12645
12646         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
12647         conversion.
12648
12649         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
12650
12651         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
12652         #71320.
12653
12654         * iltests.il: Add regression test for #71320.
12655
12656 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
12657
12658         * mini.c (mono_codegen): Fix installation of profiler hooks.
12659
12660         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
12661
12662 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12663
12664         * mini.h, mini.c, cfold.c: optimize access to enum
12665         readonly fields, too. Eval conditional branches if possible
12666         to perform unreachable code removal in more cases.
12667
12668 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
12669
12670         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
12671
12672         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
12673         code manager.
12674
12675         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
12676         WinXP DEP. Fixes #71244.
12677
12678 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
12679
12680         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
12681
12682 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
12683
12684         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
12685
12686 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
12687
12688         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
12689         changes.
12690
12691         * mini.h: Bump AOT version.
12692
12693         * mini.h (MonoCompile): Change exvar to a hash table.
12694
12695         * mini.c: Allocate a separate exvar for each handler block.
12696
12697         * mini.c: Get rid of the computation of filter_lengths, its not needed.
12698
12699         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
12700         ex var with the pending exception and only throw if the two are equal.
12701         Fixes #68552.
12702         
12703         * exceptions.cs: Add tests for rethrow and nested catch clauses.
12704
12705         * mini-x86.c: Fix warnings.
12706
12707         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
12708         used by all the ports now.
12709
12710         * aot.c: Add write-symbols and save-temps options.
12711
12712 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
12713
12714         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
12715
12716 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
12717
12718         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
12719         operations.
12720
12721         * tramp-s390.c: Check vtable slot belongs to the domain.
12722
12723         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
12724         as per other platforms.
12725
12726         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
12727
12728 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
12729
12730         * driver.c: we don't run the Main() code in a subthread anymore.
12731
12732 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
12733
12734         * mini.c: added experimental rtc support in the statistical
12735         profiler: if the user has the permission, more accurate statistics
12736         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
12737         The MONO_RTC value must be restricted to what the linux rtc allows:
12738         power of two from 64 to 8192 Hz.
12739
12740 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
12741
12742         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
12743
12744 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
12745
12746         * mini-ppc.c: better icache flush for smp.
12747
12748 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
12749
12750         * mini-amd64.c (emit_move_return_value): Fix memory leak.
12751
12752         * mini-x86.c (get_call_info): Add the get_call_info () code from the
12753         amd64 port, not yet used.
12754
12755 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
12756
12757         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
12758         a struct type.
12759
12760 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
12761
12762         * driver.c: Added --security option to activate the security manager.
12763         Right now this will allow code generation for declarative demands and
12764         is disabled when AOT is specified.
12765         * mini.c: Add code generation for declarative security demands.
12766         * mini.h: Add mono_use_security_manager as an extern gboolean.
12767
12768 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
12769
12770         * aot.c (mono_compile_assembly): Speed up compilation a bit by
12771         emitting more dense assembly code.
12772
12773         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
12774         exception throwing stuff.
12775
12776 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
12777
12778         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
12779         dead code.
12780
12781         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
12782         left in by mistake.
12783
12784         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
12785         fixed.
12786
12787         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
12788
12789         * tramp-*.c: Only patch vtable slots if the object is in the current
12790         domain. Fixes appdomain-unload.exe.
12791
12792         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
12793         
12794         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
12795         x86 branch.
12796
12797 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
12798
12799         * mini.c (reverse_branch_op): New helper function.
12800
12801         * mini.c (optimize_branches): Run the new optimization only on 
12802         platforms which support it. Also reverse all kinds of branches.
12803
12804         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
12805
12806         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
12807         a throw statement.
12808
12809         * mini.c (optimize_branches): Reverse not-equals branches if the false
12810         bblock is a throw. This happens a lot of time with argument checking in
12811         corlib.
12812
12813         * mini.c (mono_codegen): Add support for placing basic blocks after
12814         the function epilogue.
12815
12816         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
12817         function epilogue.
12818         
12819 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
12820
12821         * mini.c (setup_stat_profiler): Only set this up if the platform
12822         supports ITIMER_PROF.
12823
12824 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
12825
12826         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
12827         previous patch.
12828
12829         * inssel.brg: Fix a warning.
12830
12831 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
12832
12833         * mini.c: added support for statistical profiler 
12834         (run with: --profile=default:stat).
12835
12836 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
12837
12838         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
12839
12840         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
12841
12842         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
12843         related to global registers from the amd64 port.
12844
12845 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
12846
12847         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
12848
12849         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
12850         with global registers.
12851         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
12852
12853         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
12854
12855 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
12856
12857         * debug-mini.c (encode_value): Fix off-by-one.
12858
12859         * aot.c (encode_value): Likewise.
12860
12861         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
12862
12863 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
12864
12865         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
12866         AOT.
12867
12868         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
12869         
12870         * aot.c (emit_method_info): Increase size of temp buffer.
12871
12872         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
12873         the AOT case.
12874
12875 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
12876
12877         * aot.c (emit_method_info): Fix build.
12878         
12879         * aot.c: Further rework of the AOT file format to reduce the size of
12880         the method info data.
12881
12882         * mini.h: Bump AOT file format version.
12883
12884 2004-12-27  Martin Baulig  <martin@ximian.com>
12885
12886         * mini.c (mini_get_method): New static method; call
12887         mono_get_method_full() and mono_get_inflated_method().
12888         (mono_method_to_ir): Use mini_get_method() instead of
12889         mono_get_method_full(). 
12890
12891 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
12892
12893         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
12894
12895 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
12896
12897         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
12898
12899         * inssel-amd64.brg: Add some optimization rules.
12900
12901 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
12902
12903         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
12904         standard not GC'd stuff is fine.
12905
12906 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
12907
12908         * aot.c: Rework the AOT file format to get rid of most of the global
12909         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
12910
12911         * mini.h: Bump AOT file format version.
12912         
12913 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
12914
12915         * mini.h: Bump AOT file format version.
12916
12917         * aot.c (mono_aot_is_got_entry): New function to determine if an 
12918         address is inside a GOT.
12919
12920         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
12921
12922         * cpu-pentium.md: Increase the maximum size of some instructions which
12923         might involve a got access.
12924         
12925         * mini.c (get_method_from_ip): Another debug helper function.
12926
12927         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
12928         when got var accesses are created during the decompose phase.
12929
12930         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
12931
12932         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
12933         argument mini_compile_method and to MonoCompile, and use this to
12934         determine whenever a given method is compiled for AOT. This allows the
12935         other methods compiled during AOT compilation to be free of AOT stuff,
12936         so the backends does not need to add special support for them by
12937         creating a fake GOT etc.
12938
12939         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
12940         longer needed.
12941
12942 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
12943
12944         * mini.c (mono_method_to_ir): It turns out that some of the
12945         x-appdomain wrappers are lax with types, so just ignore this for
12946         all wrappers.
12947
12948         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
12949         at the vtable->klass. If it is non-shared code we can just use the
12950         vtable.
12951
12952 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
12953
12954         * mini-ppc.c: access MonoDomain from tls, too.
12955
12956 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
12957
12958         * declsec.c: Removed unused variable (and related warning ;-)
12959
12960 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
12961
12962         * iltests.il: New test for LDELEMA on an array of ref types.
12963
12964         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
12965         all ldelema's on reftypes.
12966         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
12967         it was the wrong place to put it.
12968
12969         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
12970         register to pop to make this cleaner, at the request of Paolo.
12971
12972 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
12973
12974         * mini-ops.h (OP_GETHASHCODE): New op.
12975
12976         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
12977
12978         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
12979         operation.
12980
12981         For a microbenchmark, this reduces the cost of Hashtable.get_Item
12982         by 25%.
12983         
12984         * mini-x86.c (mono_arch_output_basic_block): Rather than
12985
12986         add ebp, 4
12987
12988         Emit
12989
12990         pop edx
12991
12992         The first is 3 bytes while the second is 1. This saves 36 kb on
12993         mscorlib, quite a big saving. When bootstraping mcs, I was able to
12994         see a small boost because of icache locality.
12995
12996         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
12997
12998 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
12999
13000         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
13001         started code sharing with the generic code.
13002
13003 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
13004
13005         * mini-ppc.c, cpu-g4.md: added code for direct access to
13006         tls data slots.
13007
13008 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
13009
13010         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
13011          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
13012         to OP_TLS_GET.
13013
13014 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
13015
13016         * declsec.c|h: Added functions to cache the declarative stack modifiers
13017         in MonoJitInfo and to create a security frame from a MonoJitInfo 
13018         structure.
13019         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
13020         created. Register internal calls for System.Security.SecurityFrame::
13021         _GetSecurityFrame and _GetSecurityStack.
13022         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
13023         the definitions for the new stack walk/callback mechanism.
13024         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
13025         first security frame for LinkDemands and InheritanceDemands) and
13026         GetSecurityStack for Demands. Both use the new mono_walk_stack code
13027         from lupus.
13028         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
13029         walk initialization (lupus).
13030
13031 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
13032
13033         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
13034         idiom.
13035         (handle_loaded_temps): Do not create a temporary variable for
13036         things that we know are temps. They will never be modified.
13037         (mono_spill_call): Set MONO_INST_IS_TEMP
13038         (mono_emulate_opcode): ditto
13039         (emit_tree): ditto
13040         (mono_method_to_ir.CEE_DUP): ditto
13041
13042 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
13043
13044         * mini.c (type_to_eval_stack_type): Make this handle the void type
13045         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
13046         (emit_tree): use ip_in_bb to special case some common idioms
13047         Update all callers to pass in the IP.
13048         (mono_method_to_ir): Make CEE_CALL* do the above as well.
13049
13050         This gives us a nice 2% speedup in mcs bootstrap.
13051
13052         * mini-x86.c (peephole_pass): Peephole pass to make
13053         mov  [foo], eax
13054         push [foo]
13055
13056         into
13057
13058         mov [foo], eax
13059         push eax
13060
13061         * mini.c (ip_in_bb): new method.
13062         (mono_method_to_ir): use this method rather than doing the hash
13063         lookup ourselves.
13064
13065         * linear-scan.c (mono_linear_scan): When expiring actives, you
13066         don't need to keep around variables that expire on this
13067         instruction. This makes it so that:
13068              a = b + 1
13069         will turn into:
13070              store (ebx add (ebx, 1))
13071         which will become
13072              add ebx, 1
13073
13074 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
13075
13076         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
13077         combination to avoid doing two copies. Fix up problems with previous
13078         patch.
13079
13080         * mini.c: Fix 64 bit warnings.
13081
13082         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
13083
13084 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
13085
13086         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
13087         changes from the x86 code.
13088
13089         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
13090
13091 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
13092
13093         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
13094         throwing code to reduce its size, unify the AOT and non-aot code and 
13095         get rid of relocations in the AOT case.
13096
13097         * mini-x86.h mini.c exceptions-x86.c 
13098         (mono_arch_get_throw_corlib_exception): New arch specific function to 
13099         raise corlib exceptions which doesn't require relocations in the 
13100         caller.
13101
13102         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
13103
13104 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
13105
13106         * mini.c (mono_emit_method_call): Only allocate the got var when it is
13107         needed.
13108
13109         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
13110         in the AOT case.
13111
13112 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13113
13114         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
13115         with add function when used from Inc/dec atomic 
13116         functions. Re-enabled optimization on x86.
13117         * mini-ops.h: renamed atomic_add functions to
13118         allow _add to match the Interlocked::Add and
13119         _add_next to match Interlocked::Inc/Dec.
13120
13121 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
13122
13123         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
13124         linking of BBs to the end BB, and enabled SSAPRE also with
13125         consprop and copyprop (which was prevented by that bug).
13126
13127 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13128
13129         * mini-x86.c: disabling the Interlocked optimizing code. 
13130
13131 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13132
13133         * aot.c (load_aot_module): Move reading of got_addr after the AOT
13134         file version check.
13135         
13136 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
13137
13138         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
13139         interlocked optimization due lack of support on x86, rewrote 
13140         exchange to take into account that base may be in eax.
13141         
13142         xsp works again; activated Interlocked optimizing code.
13143         
13144 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
13145
13146         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
13147
13148 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
13149
13150         * mini-ops.h: Add new opcodes.
13151
13152         * mini.h: Add new patch types. Add got_var to MonoCompile.
13153
13154         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
13155         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
13156         make it work with all kinds of patchable code.
13157
13158         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
13159         address of the GOT, and referencing entries in the GOT.
13160
13161         * mini.c: Add code to load the GOT address if needed by an opcode.
13162
13163         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
13164         independent AOT code on the x86 using an elf-style Global Offset Table.
13165
13166 2004-12-14  Raja R Harinath  <rharinath@novell.com>
13167
13168         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
13169
13170 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13171
13172         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
13173         when running xsp.
13174
13175 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
13176
13177         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
13178         of Interlocked:Increment/Decrement/Add as inline ops.
13179         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
13180
13181 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
13182
13183         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
13184         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
13185
13186 2004-12-12  Duncan Mak  <duncan@ximian.com>
13187
13188         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
13189         again. `patch_info->table_size' is no longer valid after Zoltan's
13190         commit #37636.
13191
13192 2004-12-12  Martin Baulig  <martin@ximian.com>
13193
13194         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
13195         if we are the "real" method, ie. not an inlined method inside it.
13196
13197 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
13198
13199         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
13200         before we look in the special fields table. This fixes
13201         ../tests/thread-static-init.cs.
13202
13203 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13204
13205         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
13206         for Array get_Rank and get_Length. Fixes bug #70465.
13207
13208 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
13209
13210         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
13211         separate structure to reduce the size of MonoJumpInfo.
13212
13213 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
13214
13215         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
13216
13217 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
13218
13219         * mini.c (mini_get_inst_for_method): Changed to allow ports
13220         to return a MonoInst instead of opcode 
13221         (renamed mini_get_opcode_for_method to better reflect the new functionality)
13222         
13223         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
13224         Allow ports to return a created MonoInst instead of op-code, will enable
13225         new optimizations.
13226         (renamed mini_get_opcode_for_method to better reflected the functionality)
13227
13228 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
13229
13230         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
13231
13232 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13233
13234         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
13235         Fixes #69985.
13236
13237 2004-12-08  Martin Baulig  <martin@ximian.com>
13238
13239         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
13240         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
13241
13242 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
13243
13244         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
13245         correctly.
13246
13247         * exceptions.cs: Disable some tests which depend on properties of x86 fp
13248         arithmetic.
13249
13250 2004-12-08  Raja R Harinath  <rharinath@novell.com>
13251
13252         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
13253
13254 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
13255
13256         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
13257         bug introduced by the previous patch.
13258
13259 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13260
13261         * mini-ppc.c, objectc.cs: handle large structs passed by value
13262         (fixes bug #69972).
13263
13264 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
13265
13266         * mini-ppc.c: OP_ARGLIST implementation from
13267         Geoff Norton  <gnorton@customerdna.com>.
13268
13269 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
13270
13271         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
13272         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
13273
13274 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
13275
13276         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
13277
13278 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13279
13280         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
13281         support.
13282
13283 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
13284
13285         * mini-sparc.c: Zero out localled-ed memory.
13286
13287         * iltests.il: Add tests for zeroing out localloc-ed memory.
13288
13289 2004-12-04  Martin Baulig  <martin@ximian.com>
13290
13291         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
13292         mono_method_get_signature_full().       
13293
13294 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
13295
13296         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
13297         and some utility functions (always for SSAPRE), integrated SSAPRE.
13298         * mini.h: Likewise.
13299         * driver.c: Added ssapre option.
13300         * ssa.c: Small fix on OP_ARG handling.
13301         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
13302         * Makefile.am: Likewise.
13303
13304 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
13305
13306         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
13307         now in the xp code.
13308
13309         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
13310         icall.
13311
13312 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13313
13314         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
13315         
13316         * cpu-s390.md : Increase instruction length of oparglist.
13317
13318         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
13319
13320 2004-11-30  Martin Baulig  <martin@ximian.com>
13321
13322         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
13323         virtual generic methods.  We call a special helper_compile_generic_method()
13324         icall to retrieve the method from the vtable, inflate and compile
13325         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
13326
13327         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
13328
13329 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
13330
13331         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
13332
13333 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
13334
13335         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
13336         Fixes #69929.
13337
13338 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
13339
13340         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
13341         platforms with PIC aot.
13342
13343 2004-11-28  Martin Baulig  <martin@ximian.com>
13344
13345         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
13346         Fixes gen-112.cs.
13347
13348 2004-11-28  Martin Baulig  <martin@ximian.com>
13349
13350         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
13351         the result of mono_type_get_underlying_type() to check whether
13352         we're byref.
13353
13354 2004-11-26  Martin Baulig  <martin@ximian.com>
13355
13356         * mini.c
13357         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
13358         in the g_assert().
13359
13360 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
13361
13362         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
13363         the same way as the other arguments so they won't get clobbered.
13364
13365         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
13366         calls through R11 since it is clobbered by the trampoline code.
13367
13368 2004-11-26  Raja R Harinath  <rharinath@novell.com>
13369
13370         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
13371         pick up in-tree mscorlib.dll.
13372
13373 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
13374
13375         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
13376
13377         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
13378         runtime data/code are now stored in a table similar to the GOT in ELF. 
13379         This allows the code itself to be position independent.
13380
13381         * aot.c: Fix loading of referenced assemblies after the lazy assembly
13382         loading changes.
13383
13384         * aot.c: Attach ELF type (object/function) directives to all global
13385         symbols.
13386
13387         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
13388
13389         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
13390
13391         * mini-amd64.h: Turn on PIC AOT code.
13392
13393         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
13394         returning the offset within an OP_AOTCONST instruction where the GOT
13395         offset needs to be added.
13396
13397         * mini.h: Bump AOT file format version.
13398
13399 2004-11-25  Martin Baulig  <martin@ximian.com>
13400
13401         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
13402         uninflated generic methods.
13403
13404 2004-11-25  Martin Baulig  <martin@ximian.com>
13405
13406         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
13407
13408 2004-11-24  Martin Baulig  <martin@ximian.com>
13409
13410         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
13411         original klass (this only applies for generic instances).
13412
13413 2004-11-24  Martin Baulig  <martin@ximian.com>
13414
13415         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
13416         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
13417         that array).
13418
13419 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
13420
13421         * mini.c (mono_method_to_ir): Disable inlining for methods containing
13422         localloc. Fixes #69678.
13423
13424         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
13425         
13426 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
13427
13428         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
13429         used SSE registers on pinvoke calls. Fixes #69774.
13430
13431 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
13432
13433         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
13434         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
13435
13436 2004-11-23  Raja R Harinath  <rharinath@novell.com>
13437
13438         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
13439         Refer directly to the mcs/ tree.
13440
13441 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13442
13443         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
13444         Check if a trampoline for a synchronized method is required. 
13445
13446 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
13447
13448         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
13449         with localloc if needed. Throe arithmetric exception in
13450         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
13451         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
13452
13453 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
13454
13455         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
13456         types before switching on type.  Fixes #69622.
13457
13458 2004-11-19  Raja R Harinath  <rharinath@novell.com>
13459
13460         * Makefile.am (check-local): New.  Integrate into 'make check'.
13461         (MCS,RUNTIME): Define using in-tree mono and mcs.
13462         (ILASM): New.
13463         (%.exe): Use $(ILASM).
13464
13465 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
13466
13467         * mini-ppc.c: adjust initial prolog size (bug #69691).
13468
13469 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
13470
13471         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
13472         #69664.
13473
13474 2004-11-17  Raja R Harinath  <rharinath@novell.com>
13475
13476         * Makefile.am (clean-local): Rename from 'clean'.
13477
13478 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13479
13480         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
13481         to mono_arch_is_int_overflow. 
13482         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
13483         SIGFPE events.
13484
13485 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
13486
13487         * declsec.c|h: New files to support declarative security attributes.
13488         Added function to check if a method has (applicable) security.
13489         * mini.c|h: Add check for declarative security attributes in
13490         mono_method_check_inlining.
13491         * Makefile.am: Added declsec.c and declsec.h to the build.
13492
13493 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
13494
13495         * mini.c, mini.h: update to keep dynamic code info per-domain.
13496
13497 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
13498
13499         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
13500         (mini_init): Get rid of it from here too.
13501
13502 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
13503
13504         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
13505         implemented OP_RETHROW (patch by Geoff Norton
13506         <gnorton@customerdna.com>).
13507
13508 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
13509
13510         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
13511         between appdomains.  Fixes appdomain-unload on PPC.
13512
13513 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
13514
13515         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13516         mini-exceptions.c: handle the new wrapper types.
13517         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
13518         token value as a MonoClass* when compiling a wrapper.
13519         mono_jit_create_remoting_trampoline now takes an additional
13520         MonoRemotingTarget parameter.
13521         
13522 2004-11-10  Martin Baulig  <martin@localhost>
13523
13524         * mini.c (mono_method_to_ir): Use `generic_container->context'
13525         rather than creating a new one.
13526
13527 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13528
13529         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
13530
13531         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
13532
13533 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
13534
13535         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
13536         the experimental aot cache stuff.
13537
13538 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
13539
13540         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13541         mini-exceptions.c: update to exception clause structure changes.
13542
13543 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13544
13545         * exceptions-x86.c (throw_exception): Fix warnings.
13546
13547         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
13548         for OP_RETHROW.
13549
13550 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13551
13552         * exceptions-sparc.c (get_throw_exception): Really fix this.
13553
13554 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
13555
13556         * tramp-*.c: we no longer support icalls without wrappers, so
13557         a bit of code can be removed here
13558
13559 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
13560
13561         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
13562         patch.
13563
13564         * cpu-sparc.md: Add op_rethrow.
13565
13566         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
13567
13568         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
13569
13570         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
13571         * mini-ops.h: Add OP_RETHROW.
13572
13573         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
13574
13575         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
13576
13577 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
13578         
13579         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
13580         Makes the output much easier to read
13581
13582 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
13583
13584         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
13585         prevents another huge leak when compiling with ssa. Secondly, the
13586         performance of doing this rather than freeing the lists is much
13587         better. GList does a lock every time you allocate a list link,
13588         so that it can use a memory pool. So, it is better to just use
13589         a memory pool of our own.
13590         
13591         * ssa.c, linear-scan.c: replace g_list_remove_link with
13592         g_list_delete.  The remove one does not free the GList, so we were
13593         leaking memory. On -O=all --compile-all with corlib, this cut down
13594         3 MB of allocations.
13595
13596 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
13597
13598         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
13599
13600         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
13601
13602         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
13603         into a new function mono_create_jit_trampoline ().
13604
13605 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
13606
13607         * trace.c (get_spec): Allow tracing of classes without a namespace.
13608
13609 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
13610
13611         * mini.c: Fix pointer overwrite in mini_method_compile.
13612
13613 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
13614
13615         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
13616         The darwin ABI needs some special handling for 1 and 2 byte structs
13617         Lets use lbz/lhz instead of lwz everywhere.
13618         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
13619         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
13620         Use stb/sth for the former, and put the latter always on stack instead of in
13621         argument registers.
13622
13623 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
13624
13625         * trace.c (is_filenamechar): Add '_'.
13626
13627 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
13628
13629         * mini-s390.c: Fix prolog length to allow for large trace requirements.
13630
13631         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
13632
13633 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
13634
13635         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
13636         depends on libmonogc. Fixes #68805.
13637
13638 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
13639
13640         * mini.c (mono_jit_free_method): Provide extra information for
13641         this error.  Currently this leaks, but will be turned into a
13642         developer option in the future.
13643
13644 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
13645
13646         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
13647
13648 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
13649
13650         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
13651         boundary. Fixes reading of PATCH_INFO_R4 and R8.
13652         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
13653
13654 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
13655
13656         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
13657         trampolines for AOT code.
13658
13659 2004-10-22    <vargaz@freemail.hu>
13660
13661         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
13662         constructed types. Fixes #68136.
13663
13664 2004-10-21  Martin Baulig  <martin@ximian.com>
13665
13666         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
13667         if it returns true, unwind the stack to the call instruction.
13668
13669 2004-10-21    <vargaz@freemail.hu>
13670
13671         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
13672
13673         * mini.h: Bump AOT version number.
13674
13675         * objects.cs: Add another test for unbox trampolines.
13676
13677         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
13678         valuetype methods.
13679
13680 2004-10-20    <vargaz@freemail.hu>
13681
13682         * driver.c: Add SHARED to the set of optimizations tested.
13683
13684         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
13685
13686         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
13687         used by CEE_NEWARR.
13688
13689         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
13690
13691 2004-10-20  Martin Baulig  <martin@ximian.com>
13692
13693         * mini-exceptions.c (mono_handle_exception): Call
13694         mono_debugger_handle_exception() to tell the debugger about
13695         catch/finally clauses.
13696
13697 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
13698
13699         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
13700
13701         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
13702         #68447.
13703
13704 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
13705
13706         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
13707         methods as their native size, fixed bug #57543, #57545.
13708         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
13709         This saves a temporary register and mullw call down into 1 (minor perf
13710         increase for cases like sum = sum * 5;  This use to translate into:
13711             li r11,5
13712             mullw r28,r28,r11
13713         It now translates to
13714             mulli r28,r28,5
13715
13716 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
13717
13718         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
13719         #68388.
13720
13721 2004-10-11  Martin Baulig  <martin@ximian.com>
13722
13723         * mini.c (mono_method_to_ir): If we're a generic method, get the
13724         MonoGenericContainer from our MonoMethodNormal and create a
13725         MonoGenericContext from it.
13726
13727 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
13728
13729         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
13730
13731         * basic-long.cs: Add test for checked i8->i2 cast.
13732
13733 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
13734
13735         * inssel-ppc.brg: added a couple of speedup rules.
13736
13737 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
13738
13739         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
13740         to speed up rebuilds.
13741
13742 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13743
13744         * mini-s390.c: Minor fix to OP_OR_IMM.
13745
13746 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
13747
13748         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
13749         better. Fixes appdomain-unload.exe on sparc.
13750
13751 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
13752
13753         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
13754         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
13755         see bug 67324.
13756
13757 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
13758
13759         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
13760
13761 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
13762
13763         * mini.c: Always generate a field read/write wrapper for members
13764         of the class MarshalByRefObject since the actual instance could
13765         be a CBO.
13766
13767 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
13768
13769         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
13770
13771 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
13772
13773         * driver.c mini.h trace.c: Move the setting of the main assembly into
13774         a separate function called mono_trace_set_assembly () and call it after
13775         actually loading the main assembly. Fixes #66872.
13776
13777 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
13778
13779         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
13780         using the code manager.
13781
13782 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
13783
13784         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
13785
13786 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
13787
13788         * cpu-amd64.md: Fix bug in previous patch.
13789         
13790         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
13791         #66650.
13792
13793 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
13794
13795         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13796         mini-exceptions.c: updates for changed stack walk interface.
13797
13798 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13799
13800         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
13801
13802 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
13803
13804         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
13805
13806 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
13807
13808         * driver.c (mini_regression_list): Do not call mono_assembly_close 
13809         since assemblies can't be unloaded.
13810         
13811 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
13812
13813         * cpu-amd64.md: Fix more instruction lengths.
13814
13815         * cpu-amd64.md: Fix lengths of some instructions.
13816
13817 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
13818
13819         * inssel.brg: Make the array ldelema check aot friendly.
13820
13821 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
13822
13823         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
13824
13825         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
13826
13827 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
13828
13829         * mini-x86.c: Fix build.
13830
13831         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
13832         mono_type_get_underlying_type () helper function to simplify code.
13833         
13834 2004-09-09  Martin Baulig  <martin@ximian.com>
13835
13836         * mini-amd64.c: Don't access `type->data.klass' directly, call
13837         mono_class_from_mono_type() instead since the type may be a
13838         generic instance.
13839
13840 2004-09-09  Martin Baulig  <martin@ximian.com>
13841
13842         * mini-amd64.c (get_call_info): Fix support for generic instances.
13843         (add_valuetype): Use mono_class_from_mono_type() to get the class
13844         since we can be a generic instance.
13845
13846 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
13847
13848         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
13849
13850 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
13851
13852         * liveness.c: reset spill costs on each scan: bug 62107
13853
13854 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
13855
13856         * exceptions-sparc.c (mono_arch_find_jit_info): remove
13857         unnecessary line that doesn't compile
13858
13859 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
13860
13861         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
13862         trampolines, make them call an error function so people can fix their
13863         code.
13864
13865 2004-09-06  Martin Baulig  <martin@ximian.com>
13866
13867         * mini.c (mono_method_to_ir): When initializing locals, handle a
13868         generic instances like a valuetype if it's a valuetype and like a
13869         class if it's a class.
13870
13871 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
13872
13873         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
13874         stack. Fixes #64674.
13875
13876         * exceptions.cs: Add test for unwinding of call arguments.
13877
13878 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
13879
13880         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
13881         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
13882         set the carry/borrow flag). The sparc and s390 implementations
13883         can now use optimized versions (and simplify the code). ppc bugfixes.
13884
13885 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
13886
13887         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
13888
13889 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
13890
13891         * inssel-amd64.brg: Remove leftover 32 bit rule.
13892
13893         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
13894
13895 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
13896
13897         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
13898         mono_arch_find_jit_info functions into a new function. Fix a memory
13899         leak.
13900
13901         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
13902         refactored code.
13903         
13904 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
13905
13906         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
13907         as well.
13908         
13909         * exceptions.cs: Add array size tests.
13910
13911         * mini.c: Allocate a separate icall wrapper for each arity of 
13912         mono_array_new_va. Fixes #59509.
13913
13914         * exceptions.cs: Add testcase for 64578.
13915
13916         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
13917
13918         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
13919         
13920 2004-09-02  Martin Baulig  <martin@ximian.com>
13921
13922         * mini.c (mono_method_to_ir): When initializing the locals, call
13923         handle_initobj() on the generic instance itself, not its
13924         underlying type.
13925
13926 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
13927
13928         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
13929         MonoJitInfo for dynamic methods.
13930
13931         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
13932
13933         * mini.c: Add support for freeing JIT data for dynamic methods.
13934         
13935 2004-09-01  Martin Baulig  <martin@ximian.com>
13936
13937         * mini-x86.c (is_regsize_var): Added support for generic
13938         instances.
13939         (mono_arch_emit_prolog): Make this compile again, use
13940         `x86_push_imm_template (code)'.
13941
13942 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
13943
13944         * mini-x86.c: make all push_imm instructions that get
13945         patched always emit the long form
13946
13947 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
13948
13949         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
13950         in a per-domain hash.
13951
13952         * mini-amd64.c (merge_argument_class_from_type): Handle generic
13953         types.
13954
13955 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
13956
13957         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
13958         work.
13959         
13960         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
13961         work.
13962
13963         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
13964         Beginnings of SSE2 support.
13965
13966         * exceptions.cs: Add more tests for checked int<->uint casts.
13967
13968 2004-08-28  Martin Baulig  <martin@ximian.com>
13969
13970         * mini-x86.c (mono_arch_instrument_epilog): Added support for
13971         generic instances.
13972
13973         * mini.c
13974         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
13975         Handle generic instances recursively.
13976
13977 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
13978
13979         * iltests.il: test for conv.u8 on a constant
13980
13981 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
13982
13983         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
13984         LCONV_x4 (shrun_32 (membase)).
13985
13986 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
13987
13988         * inssel-x86.brg: c&p rules for push/setret of long
13989
13990 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
13991
13992         * inssel-x86.brg: c&p rules for compare (base, regvar) and
13993         compare (regvar, base)
13994
13995         * inssel-x86.brg: more burg love
13996
13997         * inssel.brg: more cleanup
13998
13999         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
14000
14001 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
14002
14003         * basic-long.cs, basic-calls.cs: new tests for optimization.
14004
14005 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
14006
14007         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
14008         patch.
14009
14010 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14011
14012         * mini-amd64.c (read_tls_offset_from_method): Add another case.
14013         
14014 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
14015
14016         * inssel.brg (mini_emit_memcpy): use 
14017         NO_UNALIGNED_ACCESS to disable memcpy optimization
14018
14019 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
14020
14021         * mini-amd64.c: Handle generic types in various places.
14022
14023         * mini.c (mono_method_to_ir): Handle generic types in init locals.
14024
14025 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
14026
14027         * mini.c (handle_box): Fix warning.
14028
14029         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
14030
14031         * mini-amd64.h: Enable the emit_state optimization.
14032
14033         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
14034
14035         * mini-amd64.c: Add some new 64 bit peephole opts.
14036
14037         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
14038
14039         * cpu-amd64.md: sreg1 of div instructions must be %rax.
14040
14041         * mini-amd64.c: Register allocator fixes.
14042
14043         * mini.c: Add an optimization to emit_state to avoid allocation of new
14044         registers on some platforms.
14045
14046 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
14047
14048         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
14049
14050         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
14051         allocation. Fixes #63085.
14052
14053         * basic-long.cs: Add new regression test.
14054
14055         * mini-amd64.c: Register allocator improvements.
14056
14057 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
14058
14059         * mini-amd64.c (read_tls_offset_from_method): Add another code
14060         sequence.
14061
14062         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
14063         instruction sequence for nullifying class init trampolines.
14064
14065         * objects.cs: Add new regalloc test.
14066
14067         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
14068
14069 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14070
14071         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
14072         
14073         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
14074         arguments.
14075
14076         * driver.c: Fix profiling after TLS changes.
14077         
14078         * driver.c (mono_main): Set mono_stats.enabled if needed.
14079
14080         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
14081         CEE_BOX.
14082
14083 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
14084
14085         * mini-x86.c: use a 1 op rather than a 2 op tls access
14086         instruction -> faster.
14087
14088 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
14089
14090         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
14091         x86 backend.
14092
14093 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
14094
14095         * exceptions-sparc.c (throw_exception): fix typo
14096
14097 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
14098
14099         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
14100         set tree->dreg correctly with tls. Allow any
14101         register to be used.
14102
14103         * mini-x86.c (read_tls_offset_from_method): add new code
14104         generation pattern seen with GCC.
14105
14106
14107 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
14108
14109         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
14110         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
14111         exceptions-sparc.c: fix some performance issues in exception
14112         handling and setting of the stack trace for exceptions that were
14113         already thrown.
14114
14115 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14116
14117         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
14118         x86 backend.
14119         
14120         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
14121         registers.
14122
14123 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
14124
14125         This patch inlines tls access, when possible.
14126         
14127         * mini.h: new arch functions for TLS intrinsics.
14128         All platforms updated with a stub.
14129
14130         * mini.c: use the new intrinsics
14131
14132         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
14133         arch specific intrinsic for tls variables
14134
14135 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
14136
14137         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
14138         under windows.
14139
14140 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14141
14142         * mini.c: thread local allocation
14143
14144 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
14145
14146         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
14147
14148         * Makefile.am: Link against the static version of libmonogc.
14149         
14150         * Makefile.am: Link the static versions of the convenience libraries
14151         into the mono executable.
14152
14153         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
14154
14155 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
14156
14157         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
14158         on integer overflow.
14159
14160         * mini-amd64.c: Reorganize function call code.
14161
14162         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
14163
14164 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14165
14166         * inssel-x86.brg: use xor eax,eax.
14167         
14168         * basic.cs: new tests
14169
14170 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14171
14172         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
14173         in exception throwing code.
14174         
14175 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14176
14177         * inssel-x86.brg: use xor esi,esi.
14178
14179 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14180
14181         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
14182         can trace methods compiled during mini_init () too.
14183
14184         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
14185         CEE_CONV_U4.
14186
14187 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
14188
14189         * Makefile.am: static link on x86 (r=zoltan)
14190
14191 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
14192
14193         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
14194         code since it causes some programs to fail.
14195
14196 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
14197
14198         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
14199
14200 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14201
14202         * mini.c: ovfops_op_map - add STACK_OBJ case for
14203         CONV_I 
14204         * basic.cs: add test_0_pin_string as test
14205         case for above.
14206
14207 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
14208
14209         * Makefile.am: build C# if srcdir != builddir
14210
14211 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
14212
14213         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
14214         fall-through blocks.
14215
14216 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
14217
14218         * driver.c: enable loop by default again and include abcrem in -O=all.
14219
14220 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
14221
14222         * iltests.il: Add some localloc tests.
14223
14224         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
14225
14226         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
14227         Fixes #62574.
14228
14229         * inssel-amd64.brg: Add some optimizations.
14230
14231         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
14232         for gcc-3.4.
14233
14234         * Makefile.am: Statically link mono against libmono on AMD64.
14235         
14236         * mini-amd64.c inssel-amd64.brg: Optimizations.
14237
14238 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
14239
14240         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
14241
14242         * tramp-amd64.c: Patch calling code in trampolines.
14243
14244 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
14245
14246         * mini-amd64.c: pinvoke struct passing fixes.
14247
14248 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
14249
14250         * mini-sparc.c: redo change, make mono_arch_cpu_init call
14251         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
14252
14253 2004-08-05  Duncan Mak  <duncan@ximian.com>
14254
14255         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
14256         CEE_LDELEM_ANY.
14257
14258 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14259
14260         * mini-amd64.c (emit_move_return_value): Move return value for normal
14261         calls too.
14262
14263 2004-08-05  Martin Baulig  <martin@ximian.com>
14264
14265         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
14266         `type->type'; just modify `type' itself when dealing with enums
14267         and generic instances.
14268         (check_call_signature): Make `simple_type' a `MonoType *'.
14269
14270 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14271
14272         * mini.c: Use OP_PADD to add offsets to addresses.
14273
14274         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
14275
14276 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
14277
14278         * mini-sparc.c (mono_arch_emit_epilog): fix check
14279         for folding last op into restore instruction
14280
14281 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
14282
14283         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
14284         helper methods using the code manager.
14285         
14286         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
14287
14288         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
14289
14290 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14291         
14292         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
14293           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
14294
14295         * mini-s390.c: fix tail processing
14296
14297 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
14298
14299         * mini-ppc.c: mul.ovf.un exception name fix.
14300
14301 2004-08-03  Martin Baulig  <martin@ximian.com>
14302
14303         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
14304         instances; before jumping to `handle_enum', also modify `ptype'.
14305
14306 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
14307
14308         * cpu-sparc.md: fcall maximal length too small.
14309
14310 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
14311
14312         * mini-amd64.c mini.h: Add initial support for passing/returning 
14313         structures to/from pinvoked methods.
14314
14315 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
14316
14317         * mini-ppc.c: reg allocator fix.
14318
14319 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
14320
14321         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
14322
14323         * inssel.brg: Optimize memset on 64 bit machines.
14324
14325         * mini-amd64.c: Fix some vararg cases.
14326
14327 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14328
14329         * mini-s390.c: Corrected macro in emit_float_to_int
14330
14331         * s390-abi.cs: Tests to exercise the s390 ABI
14332
14333 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14334
14335         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
14336         caller saved regs.
14337
14338         * basic.cs: Add a test for add.ovf.un.
14339
14340 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
14341
14342         * mini-sparc.c: add case for OP_IDIV_UN
14343
14344 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14345
14346         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
14347         
14348         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
14349
14350 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
14351
14352         * basic.cs: regression tests.
14353
14354         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
14355         regressions.
14356
14357 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
14358
14359         * basic.cs: Add a new test.
14360
14361         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
14362         and AOT. Various fixes and optimizations.
14363
14364         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
14365
14366 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
14367
14368         * mini-ppc.c: make sure temp regs are not used for global reg
14369         allocation.
14370
14371 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
14372
14373         * cpu-sparc.md: conv_i8 fix for 64bits
14374
14375         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
14376
14377 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
14378         
14379         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
14380         add opcode for cmp BYTE PTR [eax], imm.
14381
14382         * inssel.brg: Make memcpy and memset takes bases.
14383
14384 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14385
14386         * *-amd64.*: More AMD64 work.
14387         
14388 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14389
14390         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
14391         add a compare-not-equal opcode.
14392         
14393 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
14394
14395         * mini.c: Use mono_init_from_assembly instead of mono_init.
14396         
14397 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14398
14399         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
14400
14401         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
14402
14403         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
14404
14405         * inssel.brg: 64 bit fixes.
14406
14407         * mini.h (MonoCallInst): Add some AMD64 specific data.
14408
14409         * mini.h: Add some OP_P opcodes.
14410
14411 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14412
14413         * basic.cs: tests for 61797 and 61740
14414
14415 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
14416
14417         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
14418         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
14419
14420 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
14421
14422         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
14423
14424         * *-amd64*.*: Ongoing AMD64 work.
14425
14426 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
14427
14428         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
14429
14430         * *-amd64*: Ongoing AMD64 work.
14431
14432         * mini-arch.h: Add AMD64 support.
14433
14434         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
14435
14436         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
14437
14438         * mini-ops.h: Add new opcodes.
14439
14440         * Makefile.am: Add AMD64 support.
14441
14442         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
14443         rules into the inssel-long*.brg files.
14444
14445         * *-amd64.*: Add beginnings of AMD64 backend.
14446
14447 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
14448
14449         * mini.c (print_dfn): commenting out the code that prints
14450         the cil. With -O=deadce, this makes -v -v crash.
14451         
14452         * cpu-pentium.md: make checkthis have a length of 2
14453
14454 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
14455
14456         * mini-sparc.h: fix implementations of __builtin
14457         functions for Sun compiler for V9.
14458
14459 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
14460
14461         * mini.c: use the new stelem.ref wrapper
14462         * exceptions.cs, arrays.cs: new stelem.ref tests
14463
14464 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14465
14466         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
14467         new XSP should work with these changes).
14468
14469 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
14470         
14471         * inssel-{long32,x86,}.brg: trivial optimizations.
14472         
14473 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
14474
14475         * mini.c: load value when emitting box operation in
14476         constrained calls.
14477
14478 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
14479
14480         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
14481         is one byte shorter than cmp DWORD PTR [eax], 0.
14482
14483 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
14484
14485         * inssel-ppc.brg: arguments on the stack are always
14486         relative to the stack pointer (spotted by Neale Ferguson).
14487
14488 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14489
14490         * exceptions-x86.c: delay appending the method name to the trace until
14491         after mono_jit_info_table_find is called, as this gets the real
14492         MonoMethod.
14493
14494 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
14495
14496         * aot.c: register roots
14497
14498 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14499
14500         * aot.c : I could just use PLATFORM_WIN32 flag.
14501
14502 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14503
14504         * aot.c : Reverting the previous fix. This time it broke linux build.
14505
14506 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14507
14508         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
14509
14510 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
14511
14512         * mini.c (handle_stack_args): Remove some more debugging code.
14513         
14514         * mini.c (handle_stack_args): Remove debug output left in by mistake.
14515
14516         * driver.c mini.h aot.c: Allow additional options to be specified with
14517         --aot and pass them to mono_compile_assembly.
14518
14519         * aot.c: Add experimental code to AOT compile all loaded assemblies
14520         on demand and save the code into a cache in the filesystem.
14521
14522         * aot.c: Add support for more wrapper methods.
14523         
14524         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
14525         58863.
14526
14527         * cpu-*.md: Remove removed opcodes.
14528
14529         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
14530         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
14531         related icalls to marshal.c.
14532
14533 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
14534
14535         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
14536
14537         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
14538
14539         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
14540
14541 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
14542         * liveness.c: If liveness is recomputated we need to reset the information
14543         for each variable. This way, if the liveness range has been narrowed
14544         by optimizations that happened after the last computation, we can return
14545         a smaller range.
14546         
14547         For example, if you have
14548         
14549         {
14550                 int i = 0;
14551                 
14552                 // Tons of code that does not affect i
14553                 
14554                 i = foo ();
14555                 ...
14556         }
14557         
14558         i = 0 is dead code and will be removed by SSA. However, when
14559         linear scan gets to the code, i will still appear to be live
14560         throughout the entire block. This prevents good register allocation.
14561
14562 2004-07-06  Martin Baulig  <martin@ximian.com>
14563
14564         * debug-mini.c (mono_debug_init_method): Allow
14565         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
14566         (mono_debug_add_icall_wrapper): New method.
14567
14568         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
14569
14570 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
14571
14572         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
14573         optimization.
14574
14575 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
14576
14577         * aot.c (mono_aot_load_method): Fix loading of debug info.
14578
14579 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14580
14581         * aot.c: Add logging support.
14582
14583 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14584
14585         * mini.h: Add prototype for mono_print_method_from_ip.
14586
14587         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
14588
14589         * inssel.brg: 64 bit fixes.
14590
14591         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
14592         inssel-long32.brg.
14593
14594         * Makefile.am: Add SPARC64 support.
14595
14596 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14597
14598         * aot.c: Fix alignment problems on 32 bit platforms.
14599
14600 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14601
14602         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
14603         SPARC64.
14604
14605         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
14606         problems.
14607
14608         * mini.h: Bump AOT file version. Some 64 bit fixes.
14609
14610 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14611
14612         * inssel-sparc.brg: Add new rule to avoid register moves.
14613
14614         * inssel.brg: Add ldind_to_load_membase helper function.
14615
14616 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
14617
14618         * mini.c: OffsetToStringData intrinsic.
14619         
14620 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14621
14622         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
14623
14624         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
14625         regression tests.
14626
14627         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
14628 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
14629
14630         * mini.c: reinstated mono_compile_get_interface_var()
14631         on x86, too, since the change breaks the Gtk# build there as well.
14632
14633 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14634
14635         * driver.c: remove loop from the default optimizations: it seems to
14636         interact badly with some of the other options (see bug #60613).
14637
14638 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
14639
14640         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
14641         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
14642
14643 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
14644
14645         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
14646         vararg-using methods.
14647
14648 2004-06-21  Martin Baulig  <martin@ximian.com>
14649
14650         * mini/mini-exceptions.c
14651         (mono_handle_exception): Added `gpointer original_ip' argument.
14652         After calling mono_unhandled_exception(), call
14653         mono_debugger_unhandled_exception() and if that returns true,
14654         restore the context and return.
14655
14656 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
14657
14658         * mini-ppc.c: prefer the use of relative branches so
14659         they won't need to be patched in aot code (patch from Patrick Beard).
14660
14661 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
14662
14663         * aot.c: patch from Patrick Beard to make the output assembly
14664         more correct for the MacOSX assembler. Small tweak to
14665         generate sane images on Linux/PPC, too.
14666
14667 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14668
14669         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
14670         case until bug #59509 is fixed (shows up in #60332).
14671
14672 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14673
14674         * mini.c: make sure the needed wrappers are compiled, too, with
14675         precomp.
14676
14677 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
14678
14679         * driver.c: remove NPTL reference in --version output.
14680
14681 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14682
14683         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
14684         generate valid assembly for the Mach-O assembler.
14685
14686 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
14687
14688         * driver.c: don't include abcrem in the all optimization specifier
14689         since it slows down jit compilation too much for now.
14690
14691 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
14692
14693         * mini.c: use BIGMUL only if both operands have the same signage.
14694         * iltests.il: Test for bug 60056. (errors related to signage in
14695         BIGMUL).
14696
14697         r=lupus.
14698
14699 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
14700
14701         * mini.c, aot.c: memory leak fixes.
14702
14703 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
14704
14705         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
14706
14707 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
14708
14709         * Makefile.am: remove the -static hack completely, it links in
14710         statically glib as well.
14711
14712 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
14713
14714         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
14715         * exceptions.cs: make it compile with new mcs/csc.
14716
14717 2004-06-03 Massimiliano Mantione <massi@ximian.com>
14718         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
14719         and added relevant test case.
14720
14721 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
14722
14723         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
14724         regressions in gtk-sharp.
14725
14726 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
14727
14728         * exceptions.cs: New regression tests.
14729
14730         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
14731
14732 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
14733
14734         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
14735
14736 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
14737
14738         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
14739
14740         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
14741
14742 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
14743
14744         * mini.c (mono_jit_runtime_invoke): Init class in this
14745         method instead of trusting mono_jit_compile_method to
14746         do the work (because wrappers can be in object class)
14747
14748 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
14749
14750         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
14751
14752         * basic-long.cs: New regression test.
14753
14754 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
14755
14756         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
14757         and div/rem checks.
14758
14759 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
14760
14761         * Makefile.am: fix miguel's change to build mono statically against
14762         libmono (track build dependencies).
14763
14764 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
14765
14766         * cfold.c: Some glib versions do not have G_MININT32.
14767
14768 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
14769
14770         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
14771         with precision of tan, atan, sin and cos, and implemented related
14772         regressions tests (fixes bug 54467, but one new problem appeared and
14773         is not fixed yet).
14774
14775 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
14776
14777         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
14778
14779         * exceptions.cs: Add test for constant folding && division by zero.
14780
14781         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
14782         since driver.c is in libmono too, so the optimization was useless.
14783
14784         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
14785         variable to driver.c so the compiler can emit more efficient code to
14786         access them.
14787
14788 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14789
14790         * Makefile.am: don't distribute generated inssel.[ch] files.
14791
14792 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
14793
14794         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
14795         into the default appdomain. Fixes #58707.
14796
14797         * jit-icalls.c: Remove the broken approximation for truncl, doing
14798         no conversion is better.
14799
14800         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
14801         Fixes #58863.
14802
14803 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
14804
14805         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
14806         of the mcrxr instruction which is not available on some processors
14807         even if it's documented to be. Implement add and sub overflow correctly
14808         (still not complete for long unsigned). Speed up icalls a bit.
14809
14810 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
14811
14812         * mini.c (mono_jit_compile_method_with_opt): Make sure that
14813         we run .cctor in the current domain instead of target_domain.
14814         
14815         Fixes bug #58558, .cctor not being called in -O=shared.
14816
14817 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
14818
14819         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
14820
14821 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
14822
14823         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
14824         which can be done with an imm8, do it that way.
14825         (mono_arch_output_basic_block): ditto for a jmp
14826         (mono_arch_emit_prolog): Computate maximum offset of a label.
14827
14828 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
14829
14830         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
14831         now tries to allocate prefered physical reg's for virtual
14832         regs. This reduces the number of emited spills/loads with
14833         20-30% on our core assemblies.
14834
14835 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14836
14837         * jit-icalls.c: truncl() is not needed and trunc() is
14838         the correct thing to do anyway (bug #58287).
14839
14840 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
14841
14842         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
14843         if available.
14844
14845 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
14846
14847         * driver.c: enable loop optimizations by default.
14848
14849 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
14850
14851         * mini-x86.c: fix calc of max loop size when aligning loops start.
14852
14853 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
14854
14855         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
14856         the stack.
14857
14858 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
14859
14860         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
14861         should set carry.
14862
14863         * basic-long.cs: Add tests for add/subtract of immediates with carry.
14864
14865         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
14866         
14867         * mini.c (inline_method): Allways inline some wrappers even if the cost
14868         is too large. Fixes #58785.
14869
14870         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
14871         
14872 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
14873
14874         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
14875         (crichton@gimp.org). Beginning of support for sparc/linux.
14876
14877         * mini-sparc.c: Optimize retrieval of LMF address.
14878
14879 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
14880
14881         * exceptions-ppc.c:  handle alloca in methods with clauses.
14882
14883 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
14884
14885         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
14886
14887 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
14888
14889         * mini.c: Delegate most of the abort signal work to 
14890           mono_thread_request_interruption, which also handles Stop and Suspend
14891           states.
14892
14893 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
14894
14895         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
14896         supports the save/restore lmf opcodes.
14897
14898 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
14899
14900         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
14901         by gcc-3.4 as well.
14902
14903         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
14904
14905 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
14906
14907         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
14908         methods which contain array accesses.
14909
14910         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
14911         boundaries. Fixes #58537.
14912
14913         * iltests.il: Add regression test for #58537.
14914
14915 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
14916
14917         * mini-x86.c (mono_arch_local_regalloc): Last part of
14918         fix for bug #58633 (releasing register to early).
14919
14920 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
14921
14922         * basic-long.cs: Add new regression test.
14923
14924 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
14925
14926         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
14927         register too early on the chain.
14928
14929 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
14930
14931         * mini.c (create_helper_signature): Use a helper function to reduce
14932         the code which needs to be written. Also set the calling convention of
14933         icalls on windows. Fixes #57840.
14934
14935 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
14936
14937         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
14938         exceptions-ppc.c: added helper function to get the instruction address
14939         from a signal handler context.
14940
14941 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14942
14943         * helpers.c: use g_get_tmp_dir. Invokes happyness 
14944         from gonzalo.
14945
14946 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14947
14948         * helpers.c: Add new env variable to pass args to objdump.
14949         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
14950
14951 2004-05-17  Radek Doulik  <rodo@ximian.com>
14952
14953         * Makefile.am (common_sources): added abcremoval.h so it get
14954         disted and daily mono packages on go-mono.com will build again
14955
14956 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
14957
14958         * abcremoval.c: Fixed coding style, added copyright header.
14959
14960         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
14961
14962         * mini.h: Added prototype for abc removal main function.
14963
14964         * build_relations_propagation_table.pl: Added copyright header.
14965
14966 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
14967
14968         * basic-long.cs: reg test for complex ceq_long bug.
14969
14970 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
14971
14972         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
14973         reg in long and clob case (bug #58343). Fixed/added comments.
14974
14975 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
14976
14977         * mini.c (mono_jit_runtime_invoke): Follow new convention
14978         of calling the invoke method with an function pointer.
14979
14980 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
14981
14982         * ChangeLog: Fix author of memory leak patch.
14983
14984 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
14985
14986         * Makefile.am: fix make dist as well...
14987
14988
14989 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
14990
14991         * cfold.c: Made so that conversions from pointer to int4 are no-ops
14992         on archs where pointers are 4 bytes long.
14993
14994         * Makefile.am: Added abcremoval.c source file.
14995
14996         * abcremoval.c: Added abcremoval.c.
14997
14998         * abcremoval.h: Added abcremoval.h.
14999
15000         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
15001
15002         * inssel.brg: Enabled bounds check removal.
15003
15004         * mini.c: Added support for abcrem optimization.
15005
15006         * mini.h: Added abcrem optimization label.
15007
15008         * driver.c: Added support for abcrem optimization.
15009
15010         * propagated_relations_table.def: Added propagated_relations_table.def.
15011
15012 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
15013
15014         * mini.c, cfold.c: fix style.
15015
15016 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15017
15018         * mini.c: handle issue with the low-level implementation of
15019         some long opcodes (bug #54209).
15020
15021 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
15022
15023         * basic.cs: test for my new cmov stuff.
15024
15025 2004-05-13      Patrik Torstensson
15026
15027         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
15028         opt and added peephole documentation.
15029
15030 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
15031
15032         * tramp-ppc.c: rewrote the generic trampoline code.
15033
15034 2004-05-11      Patrik Torstensson
15035
15036         * mini-x86.c: optimize long shl/shr asm code (one less branch)
15037
15038 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
15039
15040         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
15041
15042         * mini.h mini.c dominators.c: Applied patch from Derek Woo
15043         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
15044
15045         * mini.c: Add new icalls for AsAny marshalling.
15046
15047 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
15048
15049         * tramp-ppc.c, mini-ppc.c: more cleanups.
15050
15051 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15052
15053         * mini.c: no warnings.
15054
15055 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15056
15057         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
15058
15059 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
15060
15061         * mini.c: In the thread abort signal handler, if the thread is in the
15062         process of being stoped, don't throw the Abort exception, just stop the
15063         thread.
15064
15065 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
15066
15067         * tramp-ppc.c: removed old code.
15068
15069 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15070
15071         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
15072         do some simple speed optimizations on ppc.
15073
15074 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
15075
15076         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
15077         and large offsets in load/store.
15078
15079 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15080
15081         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
15082         it causes regressions.
15083
15084 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
15085
15086         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
15087         support.
15088
15089 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
15090
15091         * jit-icalls.c: remove warnings.
15092         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
15093         speedups for unsafe code.
15094
15095 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
15096
15097         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
15098
15099 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
15100
15101         * basic-calls.cs: Add new regression test.
15102
15103         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
15104         more portable.
15105
15106         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
15107
15108         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
15109         is no longer used.
15110
15111 2004-05-06      Patrik Torstensson
15112
15113         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
15114         long reg allocation in any reg (not only eax:edx) and implemented 
15115         long shl/shr ops in asm instead of helpers.
15116
15117 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
15118
15119         * mini-sparc.h: Fix warnings.
15120
15121         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
15122         stack.
15123
15124         * mini-exceptions.c (mono_handle_exception): Call the filter in a
15125         separate statement for clarity.
15126
15127         * mini-sparc.c: Update status.
15128
15129 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
15130
15131         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
15132         here.
15133
15134 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15135
15136         * inssel-ppc.brg: another small pre-release workaround:
15137         we don't do overflow detection for long_sub_un.
15138
15139 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15140
15141         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
15142         (also works around a weird ppc bug: 57957).
15143
15144 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
15145
15146         * tramp-ppc.c: trampoline fixes.
15147
15148 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
15149
15150         * mini-ppc.c: fixed typos.
15151
15152 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
15153
15154         * mini-ppc.c, exceptions-ppc.c: more code saves registers
15155         at the top of the stack. Fixed typos. Use a frame registers
15156         for all the methods with exception clauses.
15157
15158 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15159
15160         * exceptions-ppc.c: restore fp registers.
15161
15162 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
15163
15164         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
15165         order from the stack top (moved the stack room to save the
15166         return value for trace after the param area). Fixed corruption
15167         in restoring registers on unwind.
15168
15169 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
15170
15171         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
15172
15173 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15174
15175         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
15176         and prolog/epilog for methods that use it. Allow
15177         enough param area room for varargs methods. Fix miguel's
15178         breakage in exception handling.
15179
15180 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
15181
15182         * Makefile.am: run genmdesc only on current arch.
15183
15184 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15185
15186         * exceptions-x86.c:
15187         * mini-x86.h: fix the build on windows.
15188
15189 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
15190
15191         * 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.
15192
15193         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
15194
15195         * mini-exceptions.c: New file.
15196         
15197         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
15198         Move some parts of the x86 exception handling code to an 
15199         arch-independent file so it can be shared with other ports.
15200
15201 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
15202
15203         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
15204
15205 2004-04-26  David Waite  <mass@akuma.org>
15206
15207         * driver.c: remove comma from end of enumeration declaration
15208
15209 2004-04-26  Jackson Harper  <jackson@ximian.com>
15210
15211         * driver.c: parse config file before loading first assembly. This
15212         allows the user gac to be enabled/disabled. 
15213         
15214 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
15215
15216         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
15217         simpler mechanism: we do not care what is encoded initially
15218         (branch absolute or relative), we care about the code and its
15219         target.  I kept the old code for reference for now.
15220
15221         The new code tries first to determine if the jump is anywhere in
15222         the -/+32 absolute meg range, if it succeeds, it encodes using the
15223         absolute branch;  If not, it tried to find something in the
15224         relative range, if not, it uses the handle_thunk code. 
15225
15226 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
15227
15228         * exceptions-ppc.c: use the correct ip register on macosx.
15229
15230 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
15231
15232         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
15233
15234 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
15235
15236         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
15237         Raise exception on integer divide by zero by hand since the hw
15238         doesn't support it. Handle NaNs in FP compares.
15239
15240 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
15241
15242         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
15243         code reducing duplication between the platforms and enabled
15244         signal exception handling (on linux for now).
15245
15246 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
15247
15248         * exceptions-ppc.c: more macosx support.
15249
15250 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
15251
15252         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
15253
15254 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15255
15256         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
15257
15258 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
15259
15260         * iltests.il: more tests.
15261
15262 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15263
15264         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
15265         vars as well.
15266
15267 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
15268
15269         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
15270
15271 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
15272
15273         * liveness.c: Mark variables as volatile in all basic blocks reachable
15274         from exception clauses.
15275
15276 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
15277
15278         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
15279         inlining.
15280
15281 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
15282
15283         * iltests.il, basic.cs: more tests for regalloc.
15284
15285 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
15286
15287         * iltests.il: Some tests for register allocation modifications
15288         I have locally.
15289
15290 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
15291
15292         * exceptions.cs: Add regression test for bug #56782.
15293
15294         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
15295         original stack trace if an exception is rethrown. Fixes #56782. Oh,
15296         the beauty of fixing the same thing in 5 different files...
15297
15298 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
15299
15300         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
15301         methods.
15302
15303 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
15304
15305         * mini.c: Add support for STRWLPARRAY marshalling convention.
15306
15307 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
15308
15309         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
15310         to init the context to setup the regs pointer).
15311
15312 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
15313
15314         * exceptions-ppc.c: more exceptions work.
15315
15316 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
15317
15318         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
15319         not allowed.
15320
15321 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15322
15323         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
15324         can use the memory directly.
15325
15326         * cpu-pentium.md: Update documentation from a post from Zoltan. 
15327
15328         add x86_add_membase, x86_sub_membase, x86_mul_membase
15329
15330 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
15331
15332         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
15333         GENERAL_REGS they were also hardcoded for all PPC ports.
15334
15335         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
15336
15337         Remove hard-coded limit for floating point registers, use
15338         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
15339
15340         Notice that in MacOS X calling conventions you can fit a lot more
15341         floating point values in registers, so I should update the PInvoke
15342         test to excercise the passing of floating point values on the
15343         stack (currently broken).
15344         
15345 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
15346
15347         * tramp-ppc.c (create_trampoline_code): Added
15348         JUMP_TRAMPOLINE_SIZE. 
15349         (ppc_magic_trampoline): Follow the pattern from
15350         x86_magic_trampoline: if code is set to zero, return. 
15351         (create_trampoline_code): Always pass MonoMethod to the jump
15352         trampoline, before it was passing a null.
15353         (mono_arch_create_jump_trampoline): Implement the jump stub, could
15354         share the code with mono_arch_create_jit_trampoline. 
15355
15356         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
15357         implemented.
15358         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
15359         implemented.  
15360
15361         * cpu-g4.md: Added length for jmp instruction, the worst case
15362         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
15363         for save_lmf).
15364
15365 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
15366
15367         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
15368
15369 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
15370
15371         * mini.c: Only set bblock->real_offset when adding a new bblock, and
15372         before each IL instruction.
15373
15374         * mini.c (CEE_BOX): Fix warnings.
15375
15376 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15377
15378         * mini.c: removed a few unused vars and extra whitespace.
15379
15380 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
15381
15382         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
15383         checks.
15384         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
15385         index.
15386         (OP_GETCHR): use the above
15387         (CEE_LDELEMA): use the above.
15388
15389         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
15390         version of the generic impl.
15391         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
15392         (CEE_LDELEMA): use the above.
15393
15394 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15395
15396         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
15397         Fixes #56317.
15398
15399         * iltests.il: Added new regression test for #56317.
15400
15401 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15402
15403         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
15404         under NetBSD. Fixes #56450.
15405
15406         * liveness.c (update_gen_kill_set): Fix previous patch.
15407
15408 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15409
15410         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
15411
15412 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
15413
15414         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
15415         ldsfld and ldsflda.
15416
15417         * inssel-sparc.brg: Add more optimizations.
15418
15419         * mini-sparc.c: Replace multiply/divide with shifts if possible.
15420
15421 2004-04-01  Martin Baulig  <martin@ximian.com>
15422
15423         * mini.c (handle_box): New static function; moved the
15424         implementation of CEE_BOX here.
15425         (mono_method_to_ir): Added `constrained_call' variable.
15426         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
15427         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
15428         mono_method_get_constrained() to get the method.
15429
15430 2004-04-01  Martin Baulig  <martin@ximian.com>
15431
15432         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
15433         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
15434         (mono_method_to_ir): We don't need these macros anymore since
15435         mono_class_get_full() already takes care of it. 
15436
15437 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15438
15439         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
15440         use @function (as doesn't accept #function here) and check the return
15441         value of system and stop if fails.
15442
15443 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15444
15445         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
15446
15447 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
15448
15449         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
15450
15451         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
15452
15453         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
15454         #56223.
15455
15456         * basic-long.cs: Add test for negation of Int64.MinValue.
15457
15458 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
15459
15460         * mini-sparc.c: Update status.
15461
15462         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
15463
15464         * exceptions-sparc.c: Fix return value in filters.
15465
15466         * inssel-sparc.brg: Fix register allocation in some rules.
15467
15468 2004-03-28  Martin Baulig  <martin@ximian.com>
15469
15470         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
15471         if neccessary.  
15472
15473 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
15474
15475         * mini-x86.c (mono_arch_patch_code): Fix warnings.
15476         
15477         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
15478         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
15479         remove unused conv_u4 opcode.
15480
15481         * mini-x86.c: Remove valgrind workaround since it slows down things
15482         even when mono is not run under valgrind.
15483
15484 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
15485
15486         * mini-sparc.c: Update status.
15487
15488         * inssel-sparc.brg: Add some optimizations.
15489
15490         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
15491         future delay slot filling. Add support for varargs, tail calls and JMP.
15492
15493         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
15494         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
15495
15496         * inssel.brg: Fix register allocation in OP_ARGLIST.
15497
15498         * inssel.brg: Fix warnings.
15499
15500 2004-03-25  Martin Baulig  <martin@ximian.com>
15501
15502         * mini.c (inflate_generic_field): Removed.
15503         (mini_get_method): Removed, use mono_get_method_full(),
15504         (mini_get_class): Removed, use mono_class_get_full().
15505         (mono_method_to_ir): Pass our generic context to
15506         mono_field_from_token().        
15507
15508 2004-03-25  Martin Baulig  <martin@ximian.com>
15509
15510         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
15511         of a `MonoMethod *'.
15512         (mini_get_method): Take a `MonoGenericContext *' instead
15513         of a `MonoMethod *'.
15514         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
15515         a new local variable called `generic_context' which holds the
15516         current `MonoGenericContext *'; use it to lookup things.
15517
15518 2004-03-24  Martin Baulig  <martin@ximian.com>
15519
15520         * mini.c (mini_get_class): New static method; if we're inside a
15521         generic instance, inflate the class if neccessary.
15522         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
15523
15524 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
15525
15526         * iltests.il: New regression test for #55976.
15527
15528         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
15529         #55976.
15530
15531 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15532
15533         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
15534         output.
15535
15536 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15537
15538         * liveness.c: Consider SSA stores as well as loads when making vars
15539         volatile.
15540
15541         * exceptions.cs: New regression tests for register allocation.
15542         
15543 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
15544
15545         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
15546         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
15547           domain lock only to protect puntual access to data structures.
15548           Added access lock for sighash, jit_icall_hash_name, 
15549           jit_icall_hash_addr and domain->code_mp.
15550
15551 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
15552
15553         * driver.c: Print SIGSEGV handling method.
15554
15555         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
15556
15557         * mini.c (setup_jit_tls_data): Handle case when this is called
15558         multiple times for a thread.
15559
15560         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
15561         is different from fbxx_un. Fixes #54303. Also use constants instead of
15562         magic numbers in a lot of places.
15563
15564 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
15565
15566         * exceptions.cs: Fix cctor test when --regression is used.
15567
15568 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
15569
15570         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
15571         for Linux/ppc.
15572
15573 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
15574
15575         * inssel-ppc.brg: fixed register assignments for some rules.
15576
15577 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15578
15579         * exceptions.cs: Add test for exceptions in static constructors.
15580
15581         * mini.c (mono_jit_compile_method_with_out): Move the calling of
15582         static constructors outside the domain lock. Fixes #55720.
15583
15584 2004-03-17  Martin Baulig  <martin@ximian.com>
15585
15586         * mini.c (get_generic_field_inst): Removed, this'll never happen.
15587         (inflate_generic_field): Take the `MonoMethod *' instead of the
15588         `MonoClass *' and added support for generic method.
15589         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
15590         have a `field->parent->gen_params', only inflate the field if it's
15591         an open constructed type.
15592
15593 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15594
15595         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
15596         exception object instead of the preconstructed ones.
15597
15598 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15599
15600         * mini.c: reverted changed to sigsegv_signal_handler commited
15601         accidentally in the previous patch.
15602
15603 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15604
15605         * mini.c:
15606         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
15607         running --aot with an old assembly.
15608
15609 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
15610
15611         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
15612         point values.
15613
15614         * mini-sparc.c: Add support for v9 branches with prediction.
15615
15616 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
15617
15618         * mini.c (mini_init): #warning is GNUC only
15619
15620         * mini-sparc.h: implement __builtin_frame_address
15621         and __builtin_return_address for Sun C compiler
15622
15623 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
15624
15625         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
15626
15627 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
15628
15629         * basic-calls.cs: Add test for unaligned byref long argument passing.
15630
15631         * mini-ops.h: Add sparcv9 compare and branch instructions.
15632
15633         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
15634         v9 instructions if we have a v9 cpu.
15635
15636         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
15637         registers for global allocation.
15638
15639         * exceptions-sparc.c: Fixes.
15640         
15641 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
15642
15643         * liveness.c (mono_analyze_liveness): Optimized version.
15644
15645         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
15646
15647         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
15648         sparc work.
15649
15650         * basic-float.cs basic-calls.cs: New regression tests.
15651
15652 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
15653
15654         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
15655         sigaltstack implementation.
15656
15657         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
15658         
15659         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
15660         stuff if SIGSEGV_ON_ALTSTACK is not defined.
15661
15662 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
15663
15664         * mini.c: Fix warnings.
15665         
15666         * mini.c (mono_resolve_patch_target): New function which contains the
15667         arch independent part of the patching process.
15668
15669         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
15670         patching code to a separate function.
15671
15672 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
15673
15674         * mini.c (add_signal_handler): ifdef out on Windows
15675
15676 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
15677
15678         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
15679         cpu-sparc.md: Add exception handling support + other fixes.
15680
15681         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
15682         typed GC detection in --version.
15683
15684         * basic.cs exceptions.cs: New regression tests.
15685
15686         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
15687         the arch specific code can store data during a compilation.
15688
15689         * mini-ops.h: Add OP_SETFRET.
15690
15691         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
15692         function, register a separate icall for each arity, so the icalls can
15693         get a wrapper.
15694         
15695         * mini.c (mono_print_tree): Print negative offsets in a more readable
15696         form.
15697         
15698         * mini.c: Make signal handling work on sparc.
15699         
15700         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
15701
15702         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
15703
15704         * jit-icalls.c: Emulate truncl by aintl on solaris.
15705
15706         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
15707
15708 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
15709
15710         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
15711
15712 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
15713
15714         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
15715         a MarshalByRef type, inline a method that performs the check, taking into
15716         account that the object can be a proxy. Also implemented tow new opcodes:
15717         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
15718         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
15719         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
15720
15721 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
15722
15723         * mini-ppc.c: if a relative branch displacement is too big
15724         but it points to and area reachable with an absolute branch, 
15725         avoid the thunks.
15726
15727 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
15728
15729         * mini.c: optimize small copies in cpblk.
15730
15731 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
15732
15733         * basic-calls.cs basic-float.cs: New regression tests.
15734
15735         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
15736         negative offsets from %fp. Implement localloc. Fix local register 
15737         allocation. Fix the case when the this argument needs to be saved to
15738         the stack. Implement some missing opcodes.
15739
15740 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
15741
15742         * mini.c (mini_method_compile): Reenable global regalloc in methods
15743         with exception handlers.
15744
15745         * linear-scan.c (mono_varlist_sort): Fix warning.
15746
15747         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
15748
15749         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
15750         regalloc costs.
15751
15752         * liveness.c: Make all variables uses in exception clauses volatile, to
15753         prevent them from being allocated to registers. Fixes #42136.
15754
15755 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
15756
15757         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
15758         causes regressions.
15759
15760         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
15761         argument to mono_arch_regalloc_cost.
15762
15763         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
15764         precisely.
15765
15766 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
15767
15768         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
15769         Make the cost of allocating a variable to a register arch dependent.
15770
15771         * basic-calls.cs: Fix compilation of tests.
15772         
15773         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
15774         helper function to cut back on the number of #ifdefs needed.
15775
15776         * mini-ppc.c: Fix compilation.
15777
15778         * basic-calls.cs: New regression tests.
15779
15780         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
15781
15782         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
15783         of l0 since that is callee saved.
15784
15785         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
15786         to virtual calls.
15787
15788         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
15789         of delay instruction.
15790
15791         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
15792
15793         * mini.h (MonoCallInst): Add 'virtual' flag.
15794
15795         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
15796
15797 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
15798
15799         * *.cs: New regression tests.
15800
15801         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
15802         work.
15803
15804         * mini.c (mono_runtime_install_handlers): Fix build.
15805
15806         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
15807         'signal_stack_size' members.
15808
15809         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
15810         alternate signal stack.
15811
15812         * exceptions-x86.c: Add stack overflow handling.
15813
15814         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
15815         functions to arch independent code.
15816
15817         * mini.c (mono_print_tree): Print more detailed info for load_membase
15818         opcodes.
15819         
15820 2004-02-23  Martin Baulig  <martin@ximian.com>
15821
15822         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
15823
15824 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
15825
15826         * mini-x86.c: fixed reg allocation for div/rem.
15827
15828 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
15829
15830         * driver.c (mono_main): Report some configuratio options on --version.
15831
15832 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
15833
15834         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
15835         low in the address space. Correctly flush memory in thunks where we
15836         output native code.
15837
15838 2004-02-20  Martin Baulig  <martin@ximian.com>
15839
15840         * mini.c (mini_get_method): New static method; inflate all generic
15841         methods and methods in open generic instances.
15842         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
15843         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
15844
15845 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
15846
15847         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
15848
15849         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
15850
15851 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
15852
15853         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
15854
15855         * mini-sparc.c (flushi mono_arch_output_basic_block): make
15856         it compile using Sun's compiler.
15857
15858 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
15859
15860         * 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.
15861
15862         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
15863
15864 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
15865
15866         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
15867         code.
15868         * mini-ppc.c: handle calls outside of the allowed range with thunks
15869         allocated using the code manager.
15870         * tramp-ppc.c: use the code manager to hold generated native code.
15871         Fixed the magic trampoline to just patch vtable entries.
15872
15873 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
15874
15875         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
15876         independent file.
15877
15878 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
15879
15880         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
15881         PPC.
15882
15883         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
15884         if we have a working __thread implementation.
15885
15886         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
15887         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
15888
15889 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
15890
15891         * mini-x86.c: Fix compilation under gcc 2.
15892         
15893 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
15894
15895         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
15896         contains a call to the wrapped function.
15897
15898         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
15899         OP_<CALL>_IMM opcodes, and use them under X86.
15900         
15901         * mini.c (mono_jit_find_compiled_method): Fix warning.
15902
15903         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
15904
15905         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
15906
15907         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
15908         functionality to mini.c.
15909
15910         * mini.c (mono_create_jump_trampoline): New function to create a jump
15911         trampoline. Return a compiled method instead of a trampoline if it
15912         exists. Add a cache for jump trampolines.
15913
15914         * mini.c (mono_jit_find_compiled_method): New function to return a
15915         compiled method if it exists.
15916
15917         * mini-x86.c: Call mono_create_jump_trampoline instead of 
15918         mono_arch_create_jit_trampoline.
15919
15920         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
15921         a jump trampoline. Fixes #52092.
15922         
15923 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
15924
15925         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
15926         which is not up-to-date. Add check_corlib_version () instead.
15927
15928         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
15929         have to call it.
15930         
15931         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
15932         since newer valgrind versions do not need it.
15933
15934         * mini.c (mono_jit_compile_method_with_opt): New helper function to
15935         compile a method with a given set of optimizations.
15936
15937         * mini.c: Compile icall wrappers on-demand instead of at startup.
15938
15939         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
15940         wrapper for an icall.
15941
15942 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
15943
15944         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
15945         #54063.
15946
15947         * iltests.il: Add test for non-empty stack before switch instruction.
15948
15949 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
15950
15951         * mini.c: Add support for new stringbuilder marshalling conventions.
15952
15953         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
15954
15955 2004-02-01  Martin Baulig  <martin@ximian.com>
15956
15957         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
15958         in `ginst->mtype_argv'.
15959
15960 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
15961
15962         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
15963         facilitate grepping.
15964
15965 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
15966
15967         * mini.c: fixed buglet in initobj generic implementation for references.
15968
15969 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
15970
15971         * Makefile.am: make the version script conditional.
15972         * jit-icalls.c: handle missing truncl().
15973
15974 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
15975
15976         * exceptions.cs: Add more tests for double->int conversion.
15977
15978         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
15979         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
15980
15981 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
15982
15983         * driver.c: make --verbose --version emit an error
15984         if the loaded corlib doesn't match the runtime version.
15985
15986 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
15987
15988         * mini-ppc.h: export ppc_patch().
15989         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
15990         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
15991         on par or better than on MacOSX.
15992
15993 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
15994
15995         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
15996         mono_lookup_pinvoke_call.
15997
15998         * mini-x86.c: Under windows, the default pinvoke calling convention is
15999         stdcall. Fixes #52834.
16000
16001         * mini.c (optimize_branches): Add an upper bound to the number of
16002         iterations to prevent infinite loops on strange loops. Fixes #53003.
16003
16004 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
16005
16006         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
16007         and ISINST. Fixes #52093.
16008
16009         * objects.cs (test_0_vector_array_cast): New tests.
16010         
16011 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
16012
16013         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
16014         checking in Array.Set ().
16015
16016         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
16017         #52590.
16018
16019         * object.cs (test_0_multi_array_cast): New regression test.
16020
16021 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
16022
16023         * exceptions-ppc.c: fix build on Linux/PPC.
16024
16025 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
16026
16027         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
16028         running under valgrind.
16029         (x86_magic_trampoline): Fix build bustage.
16030
16031         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
16032         negative values as well. This is needed for the encoding of the line number
16033         info, since sometimes the line numbers are not in increasing order.
16034
16035 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
16036
16037         * cpu-pentium.md (localloc): Increase the size of the localloc 
16038         instruction since it is a loop under Win32.
16039
16040         * debug-mini.c (record_line_number): Get rid of unneccesary memory
16041         allocation.
16042
16043 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
16044
16045         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
16046         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
16047         Max Horn (max@quendi.de). Fix file names in comments.
16048
16049 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
16050
16051         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
16052         avoid stack overflow.
16053         (replace_usage): Avoid uninitialized variable warnings.
16054
16055         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
16056         and taking the address of valuetype variables.
16057
16058 2004-01-03  Patrik Torstensson
16059
16060         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
16061         for other purposes than FP later on.
16062
16063 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
16064
16065         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
16066         of tail calls.
16067
16068 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
16069
16070         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
16071
16072 2003-12-30  Patrik Torstensson <p@rxc.se>
16073
16074         * mini-x86.h: Decreased number of availiable fp regs.
16075         Solves corner cases with FP spilling.
16076
16077 2003-12-23  Patrik Torstensson <p@rxc.se>
16078
16079         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
16080         for floating point stack tracking / spilling on x86. 
16081         Fixes bug #49012.
16082         
16083         * basic-float.cs: added float mul overflow test.
16084
16085 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
16086
16087         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
16088
16089 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16090
16091         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
16092         supports for cond branches that overflow the immediate
16093         overflow offset. mcs can compile simple programs.
16094
16095 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
16096
16097         * exceptions-ppc.c: exception handling support wip:
16098         finally handlers get run on exception.
16099
16100 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
16101
16102         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
16103         profiling.
16104
16105 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16106
16107         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
16108         initial support for stack walking and unwinding.
16109
16110 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
16111
16112         * driver.c (mono_main): Make corlib-out-of-sync message more 
16113         descriptive. Also remove verify_corlib call.
16114
16115 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16116
16117         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
16118         not overlap with other call's arguments, too.
16119
16120 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
16121
16122         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
16123         move to arch-specific code the choice of arch-specific
16124         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
16125         * mini.c: ensure emulation calls will not interleave
16126         with other calls.
16127
16128 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
16129
16130         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
16131         the magic trampoline stack frame is dropped before executing
16132         the new method.
16133
16134 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
16135
16136         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
16137         and integer to fp conversions. Added support for overflowing
16138         arguments on the stack. Reserve a couple more registers as temps.
16139         Added support for aot compilation (as output still needs to be
16140         tweaked, though).
16141
16142 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16143
16144         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
16145         Don't overwrite return register in some corner cases.
16146
16147 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
16148
16149         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
16150         static constructors when AOT compiling.
16151
16152         * driver.c (mono_main): Call mono_check_corlib_version.
16153
16154 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16155
16156         * cpu-g4.md, basic.cs: fixed div target register.
16157
16158 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
16159
16160         * mini-ppc.c, basic.cs: shl_imm fix with test.
16161
16162 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16163
16164         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
16165         structures by value. Misc fixes.
16166         * objects.cs: more tests.
16167
16168 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
16169
16170         * mini-ppc.c: lconv.ovf.i implemented.
16171
16172 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16173
16174         * mini.c:
16175         (mini_init): don't error out if someone already called g_thread_init.
16176
16177 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
16178
16179         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
16180         to be any type per the spec. Fix abnormal memory usage when
16181         the same object is repeatedly thrown.
16182
16183 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
16184
16185         * mini.c: check for overruns in IL code.
16186
16187 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
16188
16189         * TODO: Add/remove some todo entries.
16190
16191 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
16192
16193         * driver.c (mono_main): Call mono_verify_corlib.
16194
16195 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
16196
16197         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
16198         This has been moved to mini.c
16199         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
16200         type being casted is marshalbyref it could be a proxy, so instead of
16201         emitting the type check code, emit a call to a runtime method that will
16202         perform the check by calling CanCastTo if needed.
16203
16204 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
16205
16206         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
16207         methods with large stack frames under Win32.
16208
16209 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
16210
16211         * Makefile.am: Distribute regression tests.
16212
16213         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
16214         at the end instead of inserting each variable into the sorted list.
16215
16216         * linear-scan.c (mono_varlist_sort): New helper function.
16217         
16218 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
16219
16220         * mini.c: ensure arguments and locals are within bounds.
16221
16222 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
16223
16224         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
16225         related fixes.
16226
16227 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16228
16229         * mini.c (mono_cprop_copy_values): Fix crash.
16230
16231         * aot.c: Set verbosity back to 0.
16232         
16233 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16234
16235         * regalloc.c: complete memory leak fix by Laurent Morichetti
16236         (l_m@pacbell.net).
16237
16238 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
16239
16240         * driver.c (main_thread_handler): Revert the previous patch.
16241
16242         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
16243         under valgrind.
16244
16245         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
16246         memory from the memory pool.
16247
16248         * driver.c (main_thread_handler): Turn on all optimizations when
16249         --aot is used.
16250
16251         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
16252         an array for better performance.
16253
16254         * regalloc.c (mono_regstate_assign): Fix memory leak.
16255
16256         * debug-mini.c (mono_debug_serialize_debug_info): New function to
16257         serialize the debug info.
16258
16259         * debug-mini.c (mono_debug_add_aot_method): New function to load the
16260         debug info from the serialized representation.
16261
16262         * aot.c: Save debug info into the generated file and load it when 
16263         loading a method.
16264
16265         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
16266
16267 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16268
16269         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
16270         More FP-related fixes.
16271
16272 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
16273
16274         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
16275         and register allocation buglet. Hello world now runs.
16276
16277 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
16278
16279         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
16280         * tramp-ppc.c: fixed class init trampoline.
16281         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
16282
16283 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16284
16285         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
16286         mini.c: more ppc changes/fixes.
16287
16288 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16289
16290         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
16291         Also optimize the case when the arguments are the same in the caller 
16292         and in the callee.
16293
16294         * iltests.il: Add tests for tail calls with valuetype arguments.
16295
16296 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16297
16298         * mini-ppc.c: fixes for struct return type.
16299
16300 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
16301
16302         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
16303         mono_spillvar_offset() to arch-specific code.
16304
16305 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
16306
16307         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
16308
16309 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
16310
16311         * exceptions-x86.c: Fix stack space leaks.
16312         
16313         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
16314         registers from the lmf if the method has save_lmf set.
16315
16316 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
16317
16318         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
16319         of icall wrappers into InvokeInDomain, since these are now per-domain.
16320
16321 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
16322
16323         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
16324         make some opcode emulation and intrinsic ops enabled/disabled 
16325         according to the architecture. More fixes.
16326
16327 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
16328
16329         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
16330
16331 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
16332
16333         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
16334         arch-specific handling for 'this' and struct return type to
16335         arch-specific code.
16336
16337 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16338
16339         * aot.c: prevent divide by zero error when reporting (it happened with
16340         Accessibility.dll).
16341
16342 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
16343
16344         * mini.h (inst_switch): Remove unused macro.
16345
16346 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16347
16348         * aot.c:
16349         (load_aot_module): free 'info->methods' and 'info' properly. No more
16350         "free(): invalid pointer blah" messages when you have an old aot
16351         compiled assembly.
16352
16353 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
16354
16355         * jit-icalls.c, mini.c: Added support for context static fields.
16356
16357 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16358
16359         * mini.c (mono_method_blittable): Methods which set LastError are not 
16360         blittable either. Fixes #51108.
16361         
16362 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
16363
16364         * mini.c: flush icache.
16365         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
16366
16367 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
16368
16369         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
16370
16371 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
16372
16373         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
16374         safe on IA32.
16375
16376         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
16377         vararg calls.
16378
16379         * inssel.brg (CEE_MKREFANY): Fix AOT case.
16380
16381 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
16382
16383         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
16384         instruction when the result is discarded.
16385
16386         * iltests.il (test_0_div_regalloc): New regression test.
16387
16388         * arrays.cs: Fix compilation error.
16389
16390 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
16391
16392         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
16393         float rules to inssel-x86.brg: sane architectures with FP registers
16394         don't need to implement these rules.
16395
16396 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16397
16398         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
16399
16400 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16401
16402         * mini.h, inssel-long32.brg: fixed endianess issues in int64
16403         implementation of 32 bit systems.
16404
16405 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16406
16407         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
16408         (Jeroen Zwartepoorte).
16409
16410 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
16411
16412         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
16413         the caller and the callee matches.
16414         
16415         * mini.c (mono_method_to_ir): Add comment.
16416
16417         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
16418         signbit is missing on some platforms.
16419
16420 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
16421
16422         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
16423
16424         * mini.c (setup_jit_tls_data): Call the new function.
16425         
16426         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
16427
16428         * mini-x86.c: Add experimental support for fast access to the lmf
16429         structure under NPTL/Linux 2.6.x.
16430
16431 2003-11-06  Martin Baulig  <martin@ximian.com>
16432
16433         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
16434         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
16435         the debugger.
16436
16437 2003-11-02  Martin Baulig  <martin@ximian.com>
16438
16439         * mini.c (inflate_generic_field): New static method.
16440         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
16441         generic instance and the field is declared in a generic type, call
16442         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
16443
16444 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
16445
16446         * mini.h mini.c (mono_method_same_domain): New function to return
16447         whenever the caller and the callee are in the same domain.
16448
16449         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
16450
16451 2003-10-30  Martin Baulig  <martin@ximian.com>
16452
16453         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
16454         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
16455         method parameters.
16456         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
16457         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
16458
16459 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
16460
16461         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
16462         propagation.
16463
16464         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
16465         object here, so it is in the correct appdomain etc.
16466
16467 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
16468
16469         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
16470         already done.
16471         (mono_method_to_ir): Avoid freeing the type created returned from
16472         mono_type_create_from_typespec, since it is put into an internal cache
16473         by the function. Fixes pointer.exe.
16474
16475         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
16476         trampolines for icalls and pinvokes as well. Fixes #33569.
16477
16478 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
16479
16480         * mini.c: Update after appdomain changes.
16481
16482         * mini.c (mono_jit_compile_method_inner): Allways compile native
16483         method wrappers in the root domain, since there can only be one
16484         instance of them, whose address is stored in method->info.
16485
16486 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
16487
16488         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
16489         environment variable. Instead detect automatically whenever running
16490         under valgrind using the magic macro RUNNING_ON_VALGRIND from
16491         valgrind.h.
16492
16493 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
16494
16495         * trace.c, trace.h: New files that implement the new trace option
16496         parsing. 
16497
16498         * driver.c: Document new --trace options.
16499
16500         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
16501         mini-x86.c: Apply:
16502
16503         -       if (mono_jit_trace_calls)
16504         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
16505
16506         * mini.h: prototypes.
16507         
16508 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
16509
16510         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
16511
16512         * mini.c inssel.brg: Implement typedefbyref opcodes.
16513
16514         * mini.c (mono_jit_compile_method): Remove unused local variable.
16515
16516         * mini.c (mono_jit_compile_method_inner): Ditto.
16517         
16518 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
16519
16520         * tramp-x86.c (x86_class_init_trampoline): Fix build.
16521         
16522         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
16523
16524 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
16525
16526         * mini.c (mono_no_aot): Remove unused global variable.
16527
16528         * mini.c: Thread safety fixes.
16529
16530 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
16531
16532         * mini.c (mono_create_class_init_trampoline): Add a lock around
16533         class_init_hash_addr.
16534
16535         * arrays.cs (test_0_newarr_emulation): Add new regression test for
16536         #30073.
16537
16538         * mini.c: Decompose the NEWARR instruction before decomposing its
16539         arguments. Fixes #30073.
16540
16541 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
16542
16543         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
16544         convention.
16545
16546 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
16547
16548         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
16549
16550         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
16551
16552         * driver.c: Add support for compiling icall wrappers to --compile.
16553
16554 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
16555
16556         * inssel.brg: The empty value in class->interface_offsets is -1, not
16557         0. Fixes #49287.
16558
16559 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
16560
16561         * objects.cs: New test for 'is' operator on an array of interfaces.
16562
16563 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
16564
16565         * tramp-ppc.c: update trampoline code to support jumps
16566         and class initialization.
16567
16568 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
16569
16570         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
16571
16572         * inssel.brg (OP_UNBOXCAST): Fix #46027.
16573
16574         * inssel.brg (OP_UNBOX): Remove unused rule.
16575
16576         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
16577         region instead of one for each method. Fixes #47813.
16578
16579 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
16580
16581         * exceptions.cs (test_0_nested_finally): New regression test for
16582         nested exception handlers.
16583
16584         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
16585
16586         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
16587
16588         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
16589         inlining.
16590
16591         * mini.c (mono_method_check_inlining): Make the inlining limit 
16592         configurable by an environment variable.
16593         
16594         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
16595
16596         * mini.h: Bump AOT file version.
16597
16598         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
16599         token, store the image along with the token, since the token might not 
16600         refer to the same image as the method containing the relocation, 
16601         because of inlining.
16602
16603 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
16604
16605         * mini.c (mono_precompile_assemblies): New function to compile
16606         all methods in all loaded assemblies.
16607
16608         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
16609
16610         * regalloc.h regalloc.c (MonoRegState): Change the type of 
16611         iassign and fassign to int*, since they can contain large negative
16612         values if the register is spilled. Also added some comments. Fixes
16613         #45817.
16614
16615         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
16616         under Win32. Fixes #42964.
16617
16618 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
16619
16620         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
16621
16622         * aot.c: Added support for AOT compiling methods which contain calls
16623         to wrappers. Currently, only remoting-invoke-with-check wrappers are
16624         handled.
16625         
16626         * driver.c (compile_all_methods): Run the compilation in a thread
16627         managed by mono. Fixes #44023.
16628
16629         * mini.c (mono_codegen): Print full method name in verbose output.
16630
16631         * mini-x86.c (mono_arch_patch_code): Fix warning.
16632         
16633         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
16634         jumps, since the method we are jumping to might be domain-specific.
16635
16636         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
16637
16638 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
16639
16640         * inssel.brg: string chars are unsigned.
16641
16642 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
16643
16644         * TODO: New todo item.
16645
16646         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
16647         which calls mono_runtime_class_init and patches the call site to
16648         avoid further calls.
16649         (mono_arch_create_class_init_trampoline): New arch specific function 
16650         to create a class init trampoline.
16651         (create_trampoline_code): Generalized so it can create
16652         class init trampolines as well.
16653
16654         * mini.c (helper_sig_class_init_trampoline): New helper variable.
16655         (mono_create_class_init_trampoline): New function to create and cache
16656         class init trampolines.
16657         (mono_find_class_init_trampoline_by_addr): New function to lookup the
16658         vtable given the address of a class init trampoline. Used by the
16659         patching process.
16660         (mono_codegen): Generate a call to a trampoline instead of
16661         mono_runtime_class_init in LDSFLD[A].
16662         (mono_codegen): Add relocations for the new trampoline.
16663         
16664         * mini.h mini-x86.c aot.c: Added a new relocation type: 
16665         MONO_PATCH_INFO_CLASS_INIT.
16666
16667         * mini.h: Bump AOT version number.
16668
16669         * aot.c: Create a copy of the loaded code instead of using the original
16670         so methods which call each other will be close in memory, improving
16671         cache behaviour.
16672         
16673         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
16674         patch since it breaks the regression tests.
16675         
16676         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
16677         for the register saving instruction sequence since the 
16678         frame_state_for function in glibc 2.3.2 don't seem to detect it.
16679
16680 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
16681
16682         * TODO: Fix todo item && remove another.
16683
16684 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
16685
16686         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
16687         previous checkin.
16688
16689         * aot.c: Moved the check for MONO_LASTAOT into the initialization
16690         function of the module.
16691
16692         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
16693         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
16694         --no-aot command line option.
16695
16696 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
16697
16698         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
16699         by Bernie Solomon (bernard@ugsolutions.com).
16700
16701         * inssel.brg: Refactor the interface offset table related code into
16702         its separate functions and add support for the AOT case.
16703
16704 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
16705
16706         * aot.c (mono_aot_get_method_inner): Fix memory leak.
16707         
16708         * aot.c: Added mono_aot_verbose variable and made all debugging
16709         output depend on the value of this variable.
16710
16711         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
16712         method_label and info_label.
16713
16714         * mini.h mini-x86.c aot.c: Added a new relocation type 
16715         MONO_PATCH_INFO_IID for klass->interface_id.
16716
16717         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
16718         the MonoJitInfo structure.
16719
16720         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
16721         a non-root appdomain in shared mode.
16722
16723 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
16724
16725         * aot.c: make aot loader less verbose. Remove free of unused variable.
16726
16727 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
16728
16729         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
16730
16731         * .cvsignore: Added *.dll.
16732
16733         * mini.c (mono_print_tree_nl): New function callable while debugging.
16734
16735         * mini.c (mono_print_code): Export this.
16736
16737         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
16738         patched code.
16739
16740 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
16741
16742         * mini.h (MonoCompile): Added 'jit_info' field.
16743
16744         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
16745         the cfg structure, since it is needed by the AOT compiler.
16746
16747         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
16748
16749         * aot.c: A major rewrite. Changes include:
16750         - save exception tables for methods which have them.
16751         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
16752         to g_module_symbol.
16753         - reworked the file format so it is now much smaller and needs
16754         fewer relocation entries.
16755         
16756 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
16757
16758         * aot.c (load_aot_module): Fix build bustage on platforms without
16759         Boehm GC.
16760
16761 2003-09-04  Martin Baulig  <martin@ximian.com>
16762
16763         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
16764
16765 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
16766
16767         * TODO: Some new optimization ideas.
16768
16769         * aot.c: Move AOT module loading logic here from mono_assembly_open.
16770
16771         * aot.c: Save the optimization flags used to compile the code into
16772         the AOT module.
16773
16774         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
16775         support emitting domain specific code.
16776         
16777         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
16778         no longer domain neutral. It can be made domain neutral by compiling 
16779         with --optimize=shared.
16780
16781         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
16782         between appdomains.
16783
16784         * driver.c mini.h mini.c: New --no-aot debugging option which disables
16785         loading of AOT code.
16786
16787         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
16788         
16789         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
16790         if there is no domain neutrality information.
16791
16792 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
16793
16794         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
16795         format version into the generated library.
16796
16797         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
16798         callee method into the caller since one of them could be shared.
16799
16800         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
16801         system exceptions from AOT code now works.
16802
16803         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
16804         method if it is domain neutral and the callee is not.
16805
16806         * graph.c (cfg_emit_one_loop_level): Fix warning.
16807
16808 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
16809
16810         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
16811         last checkin.
16812
16813 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
16814
16815         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
16816         is needed  by code which is executed before mono_runtime_init ().
16817         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
16818         
16819         * mini.c (mono_thread_abort): Fix warning.
16820         (mono_jit_compile_method): Call static constructor in the AOT case too.
16821
16822         * aot.c (mono_compile_assembly): Fix warning.
16823
16824 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16825
16826         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
16827
16828 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
16829
16830         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
16831
16832         * cpu-pentium.md: Fix the length of call opcodes so they include the
16833         ESP restoring instruction. Fixes #47968.
16834
16835 2003-08-28  Martin Baulig  <martin@ximian.com>
16836
16837         * mini-x86.c (mono_arch_call_opcode): Added support for
16838         MONO_TYPE_GENERICINST.
16839
16840         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
16841
16842 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
16843
16844         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
16845         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
16846
16847         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
16848         metadata_section.
16849
16850 2003-08-26  Martin Baulig  <martin@ximian.com>
16851
16852         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
16853         when reporting an error, set this to the actual error location.
16854         (mono_method_to_ir): Report the correct error location if
16855         get_basic_blocks() returned an error.
16856
16857 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
16858
16859         * mini.c (mono_type_blittable): OBJECT is not blittable.
16860         (mono_method_blittable): Methods which have marshalling descriptors
16861         are not blittable either. Fixes #47842.
16862
16863 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
16864
16865         * driver.c mini.c: Use an environment variable instead of a global 
16866         variable. Also fix the build.
16867
16868         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
16869         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
16870         reporting this. 
16871
16872         * driver.c mini.c: Added --with-valgrind option to turn off some
16873         code which prevents mono from running under valgrind.
16874
16875         * mini.c (mono_emit_call_args): Fixed warning.
16876
16877         * mini.c (mono_emulate_opcode): Fixed warning.
16878
16879 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
16880
16881         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
16882         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
16883         regalloc.c, regalloc.h: specify available registers in arch-specific
16884         code and support floats in the regallocator (patch by Laurent Morichetti 
16885         <l_m@pacbell.net>)
16886
16887 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
16888
16889         * mini.c: mono_thread_current() can be called only after
16890         mono_runtime_init(): rearrange code to not call it early on.
16891
16892 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
16893
16894         * mini.c: allocate jump tables in the code mempools.
16895
16896 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
16897
16898         * mini.c, mini.h: make sure per-thread data allocated by the jit is
16899         freed.
16900
16901 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
16902
16903         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
16904         12 to 16.  This fixes bug #47453.
16905
16906
16907 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
16908
16909         * mini-ppc.c: fixed indexed load and unsigned compares.
16910
16911 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
16912
16913         * mini.c: reenabled installation of handler for
16914           thread abort signal.
16915
16916 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
16917
16918         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
16919         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
16920         until it's fixed and actually useful.
16921
16922 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
16923
16924         * inssel-long32.brg: couple more opcodes implemented.
16925
16926 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
16927         
16928         * mini-sparc.c: Even more opcodes implemeted.
16929
16930 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
16931
16932         * mini-sparc.c: More opcodes implemented.
16933
16934 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
16935
16936         * mini-sparc.c: More opcodes implemented.
16937
16938 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
16939
16940         * inssel-sparc.brg: Add some needed rules.  Direct
16941         copy from PPC.
16942         * Makefile.am: Use inssel-sparc.brg
16943         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
16944         an assert happy for now.
16945
16946 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
16947
16948         * mini-sparc.c: Fixed compile errors.
16949         * exceptions-sparc.c: Same.  We now produce a mono binary 
16950         on sparc-linux.  Yea.
16951
16952 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
16953
16954         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
16955         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
16956         They compile, but do not work.
16957
16958 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
16959
16960         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
16961         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
16962         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
16963         (ct@gentoo.org).
16964
16965 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
16966
16967         * mini.c: more opcodes implemented and better support for generics.
16968
16969 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
16970
16971         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
16972         * mini.c, mini.h: first cut at generics support: some new instructions 
16973         added and changed the behaviour of some of the existing ones.
16974
16975 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
16976
16977         * mini.c: Removed definition of metadata_shared mutex here.
16978
16979 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
16980
16981         * mini-x86.c: make vararg calls work for instance methods.
16982
16983 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
16984
16985         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
16986         returns the arguments in a separte list, now.
16987
16988 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
16989
16990         * aot.c, mini.c: updates for array type representation changes.
16991
16992 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
16993
16994         * mini.c: register function to perform jit shutdown.
16995
16996 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
16997
16998         * mini.c: use a faster allocator if possible.
16999
17000 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17001
17002         * aot.c: some cleanups and portability changes.
17003
17004 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17005
17006         * mini.c: use faster allocation for CEE_BOX if possible.
17007
17008 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17009
17010         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
17011         Moved inlined mempcy code to its own function so that is can be
17012         reused. Added an inline memset function as well (optimized initobj).
17013         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
17014
17015 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17016
17017         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
17018
17019 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
17020
17021         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
17022         arch code can setup the cpu for CLR execution, if needed.
17023         We use it on x86 to set the precision of FP operations.
17024
17025 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
17026
17027         * mini.c: disable some optimizations if we can guess they'll cost too
17028         much for a given method.
17029
17030 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17031
17032         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
17033         
17034 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
17035         * mini.h mini.c mini-x86.c: Added instruction level coverage 
17036         info collection support.
17037
17038 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17039
17040         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
17041         is now implemented in the profiling API. Get rid of a couple of
17042         unnecessary global variables.
17043
17044 2003-06-15  Nick Drochak <ndrochak@gol.com>
17045
17046         * basic-long.cs: tests for negative values for bigmul, and unsigned.
17047         * cpu-g4.md: add op_bigmul and op_bigmul_un
17048         * cpu_pentium.md: add op_bigmul_un
17049         * inssel-long32.brg: add rule for unsigned bigmul
17050         * mini-ops.h: define OP_BIGMUL_UN
17051         * mini-x86.c: THE BUG: handle (un)signed properly
17052         * mini.c: choose unsigned opcode if needed.
17053         This set of patches fixes bug #44291
17054
17055 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
17056
17057         * mini.c (optimize_branches): improved to handle all kinds of
17058         conditional branches.
17059
17060 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17061
17062         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
17063         don't raise exceptions.
17064
17065 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17066
17067         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
17068         to arch-specific files.
17069
17070 2003-06-09  Martin Baulig  <martin@ximian.com>
17071
17072         * Makefile.am (libs): Added $(LIBGC_LIBS).
17073
17074 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
17075
17076         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
17077         and OP_ATAN (fixes bug#44293).
17078
17079 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
17080
17081         * Makefile.am, mini-x86.c: rename cpu description array to
17082         pentium_desc, since some compilers define the 'pentium' preprocessor
17083         symbol.
17084
17085 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
17086
17087         * mini.c (mini_select_instructions): add explicit branch if the
17088         following block is not the false target of a conditional branch -
17089         we need this with any optimization that reorder or remove bblocks
17090
17091         * mini.c (optimize_branches): bug fixes
17092
17093 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
17094
17095         * mini.c (mono_method_to_ir): inline static readonly fields
17096
17097         * ssa.c (fold_tree): start cfold support for long (very simple
17098         cases only)
17099
17100         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
17101
17102 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17103
17104         * inssel.brg: fixed memcpy (bug #44219).
17105
17106 2003-06-05  Dick Porter  <dick@ximian.com>
17107
17108         * driver.c: Set the glib log levels to not abort if g_message
17109         recurses.
17110
17111         g_set_prgname() has to happen before mini_init() so that the
17112         process handle gets the info.
17113         
17114 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17115
17116         * driver.c: add intrins to the default optimizations to get wider
17117         exposure.
17118
17119 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17120
17121         * mini.h: some large basic blocks will overflow a 16-bit
17122         integers for symbolic registers.
17123
17124 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17125
17126         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
17127         (mono_arch_output_basic_block): fix bug 43499 
17128
17129 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17130
17131         * mini.c: kill duplicated definition of mono_debug_format.
17132
17133 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
17134
17135         * mini-x86.c, arrays.cs: fixed register allocation bug.
17136
17137 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
17138
17139         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
17140
17141         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
17142
17143 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17144
17145         * mini.c:
17146         (print_method_from_ip): also print source location information if
17147         available.
17148
17149 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
17150
17151         * mini.c (mono_find_block_region): bug fix in region code
17152         (mini_method_compile): enable removing unreachable code again, but
17153         only in methods without exception clauses.
17154
17155 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
17156
17157         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
17158         Implemented arglist opcode and handling of TypedReference type.
17159         Fixed x86 call convention when a structure is returned.
17160         Minimal support for calling static vararg methods.
17161
17162 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
17163
17164         * mini.c (mini_method_compile):  always remove unreachable code,
17165         because the code in them may be inconsistent  (access to dead
17166         variables for example).
17167
17168 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17169
17170         * driver.c, debug-mini.c: warning fixes.
17171
17172 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
17173
17174         * Makefile.am, jit.h, mini.h: install header for embedding mono.
17175
17176 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
17177
17178         * mini.c: thread-static fields are registered in mono_class_vtable(),
17179         so ensure the function is called before checking for them.
17180
17181 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
17182
17183         * mini.c (optimize_branches): fix for bug 43586
17184
17185         * jit-icalls.c (mono_llmult_ovf): added an additional check for
17186         overflow (fixes Bug #43639)
17187
17188 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17189
17190         * mini.c, objects.cs: allow the use of stobj for primitive types.
17191
17192 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17193
17194         * mini.c: be less strict about argument checking until we support
17195         running the verifier.
17196
17197 2003-05-27  Nick Drochak <ndrochak@gol.com>
17198
17199         * basic-long.cs: tests for (ulong)int * (ulong)int also
17200         * mini.c: use the same trick for (ulong)int * (ulong)int
17201
17202 2003-05-27  Nick Drochak <ndrochak@gol.com>
17203
17204         * basic-long.cs: add regression test for (long)int * (long)int
17205         * cpu-pentium.md: add op_bigmul specification
17206         * inssel-long32.brg: add OP_BIGMUL rule
17207         * mini-ops.h: add OP_BIGMUL
17208         * mini-x86.c: register allocator: handle case where src1 needs to be
17209         in EAX.
17210         * mini.c: substitute special BIGMUL opcode in the tree for 
17211         (long)int * (long)int
17212
17213 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
17214
17215         * jit-icalls.c: call the type ctor on field access if needed.
17216
17217 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17218
17219         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
17220         to a method (including results of ldelema, bug#43207).
17221
17222 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
17223
17224         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
17225         colors to show exception handler blocks.
17226
17227         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
17228         (fix for pinvoke7.cs).
17229
17230 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17231
17232         * mini.h, mini.c: ensure correct initialization order for types that
17233         require it. Prepare for lazy compilation of jit icall wrappers.
17234         Provide a name for opcode emulation to reduce unneeded mallocing.
17235
17236 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
17237
17238         * mini-x86.c: better register restoring code and profiling
17239         support for tail calls.
17240
17241 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
17242
17243         * mini.h, driver.c: prepare for leaf methods optimization.
17244
17245 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17246
17247         * mini.c: get targets of branches before converting a method.
17248
17249 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
17250
17251         * mini.c (optimize_branches): added some experimental code (disbaled) 
17252
17253 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
17254
17255         * mini.c (optimize_branches): fix branch to branch optimization 
17256
17257         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
17258
17259         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
17260
17261         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
17262
17263         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
17264         if needed.
17265
17266 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
17267
17268         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
17269         enable use of interface variables again.
17270
17271         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
17272         I1 to registers because there is no simply way to sign extend 8bit
17273         quantities in caller saved registers on x86.
17274
17275         * inssel-float.brg: set costs of some rules to 2 so
17276         that monobure always select the arch. specific ones if supplied,
17277         regardless of the order we pass the files to monoburg.
17278
17279 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17280
17281         * mini.c, mini-x86.c: since the magic trampoline for jumps
17282         can't patch the code directly, we do it as soon as the
17283         method gets compiled.
17284
17285 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
17286
17287         * mini-x86.c, mini.h: introduce a new patching method
17288         to support CEE_JMP and tail calls.
17289         * mini.c: obey tail.call. Don't precompile methods target
17290         of CEE_JMP.
17291         * tramp-x86.c: new trampoline code to handle methods
17292         reached through a jump.
17293
17294 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
17295
17296         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
17297         bit values to registers
17298
17299 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
17300
17301         * mini.c (mono_compile_get_interface_var): share interface
17302         variables if possible.
17303
17304 2003-05-16  Martin Baulig  <martin@ximian.com>
17305
17306         * debug-mini.c (mono_init_debugger): New function to initialize
17307         the debugger.  This is not in the debugger since it needs to
17308         access some of mini's internals.
17309
17310 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17311
17312         * mini.c (mono_method_to_ir): inlining fixes/cleanups
17313
17314 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
17315
17316         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
17317         for value type handling.
17318
17319 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
17320
17321         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
17322         (mono_method_check_inlining): enable inlining of all kinds of wrappers
17323
17324 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
17325
17326         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
17327           the constructor through a proxy.
17328
17329 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17330
17331         * jit-icalls.c, inssel.brg: fixes to array element address
17332         calculations.
17333
17334 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
17335
17336         * mini-x86.c (is_regsize_var): allocate pointer to registers
17337
17338 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17339
17340         * driver.c: fixed typo, added intrins to the set of optimizations
17341         tested with regressions.
17342
17343 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
17344
17345         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
17346         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
17347         test case.
17348
17349 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
17350
17351         * inssel.brg: remove some common pop instructions without side effects
17352
17353 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
17354
17355         * inssel-x86.brg: fixed thinko in int to double conversions.
17356
17357 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
17358
17359         * mini.c, jit-icalls.c: added runtime thread-static variable support.
17360
17361 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
17362
17363         * inssel-long32.brg: two more missing instructions.
17364
17365 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
17366
17367         * mini.c (mono_emit_call_args): set the cil_code for all arguments
17368         if not already set.
17369
17370 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
17371
17372         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
17373         correctly.
17374
17375         * basic-float.cs: Added tests for negative zero.
17376
17377 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
17378
17379         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
17380         a couple of missing operations for long casts, with test cases.
17381
17382 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17383
17384         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
17385
17386 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
17387
17388         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
17389         code size estimation.
17390
17391 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
17392
17393         * mini.c (mono_jit_create_remoting_trampoline): make it work with
17394         abstract methods (fix bug 42542)
17395
17396         * aot.c: add ability to handle array types
17397         
17398 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
17399
17400         * mini.c: Call the _specific versions of the object allocation
17401         functions if possible.
17402
17403 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17404
17405         * driver.c: call setlocale ().
17406
17407 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17408
17409         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
17410         windows build.
17411
17412 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
17413
17414         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
17415
17416         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
17417         wrappers (fix bug 42122)
17418
17419 2003-05-04  Martin Baulig  <martin@ximian.com>
17420
17421         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
17422
17423         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
17424         s/mini_set_defaults/mono_set_defaults/g.
17425
17426 2003-05-04  Martin Baulig  <martin@ximian.com>
17427
17428         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
17429
17430 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17431
17432         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
17433         (reported by Don Roberts).
17434
17435 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17436
17437         * mini.c: temporarily work around two bugs for this release.
17438
17439 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17440
17441         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
17442         that contains -export-dynamic and it makes using the ld script
17443         useless.
17444         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
17445
17446 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17447
17448         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
17449         specific cpu.
17450
17451 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17452
17453         * mini.c: make sure leave calls all the needed finally blocks,
17454         even when the target jumps out of multiple exception clauses.
17455
17456 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17457
17458         * ldscript, Makefile.am: add linker script to reduce the number of
17459         exported symbols (should also fix the issues with libwine defining
17460         some of the same symbols in io-layer).
17461
17462 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
17463
17464         * driver.c (mini_main): Avoid assertion when no file name is given on 
17465         the command line.
17466
17467 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
17468
17469         * driver.c: added --version/-V command line option.
17470         Added the inline optimization in the regression tests.
17471
17472 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17473
17474         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
17475         to the type in the method signature (fixes bug#42134).
17476
17477 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
17478
17479         * mini.c: when inlining, check this is not null only when needed (bug #42135).
17480
17481 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
17482
17483         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
17484
17485 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17486
17487         * driver.c: fixed bug #42100.
17488
17489 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
17490
17491         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
17492
17493 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17494
17495         * mini.c: moved most of the code required to do inlining to its own
17496         function so it can be reused. Inline also ctors if appropriate.
17497
17498 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
17499
17500         * Makefile.am: Link with -export-dynamic so shared libs loaded by
17501         the runtime can call mono API functions.
17502
17503 2003-04-27  Martin Baulig  <martin@ximian.com>
17504
17505         * debug-mini.c (mono_debug_init_method): Added
17506         `guint32 breakpoint_id' argument; if the method has a breakpoint,
17507         send a notification to the debugger.
17508
17509         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
17510         running in the Mono Debugger, just pass the breakpoint number to
17511         mono_debug_init_method().
17512
17513         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
17514
17515 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
17516
17517         * mini.c: allow some more unsafe compares.
17518
17519 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17520
17521         * mini-x86.c, Makefile.am: make distcheck works (partially from
17522         a patch by Richard Lee <r.h.lee@attbi.com>).
17523         * regset.c, regset.h: removed, they are unused.
17524
17525 2003-04-25  Dick Porter  <dick@ximian.com>
17526
17527         * driver.c: Usage reports the name as 'mono' not 'mini'
17528         * exceptions-x86.c: Build and run on freebsd
17529
17530 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
17531
17532         * Makefile.am: install the program with the 'mono' name and
17533         the library as libmono instead of mini and libmini.
17534
17535 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17536
17537         * driver.c: provide the APIs for the embedding interface of the old jit.
17538
17539 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
17540
17541         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
17542
17543 2003-04-23  Martin Baulig  <martin@ximian.com>
17544
17545         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
17546
17547         * driver.c: Added `--debug' command line argument to enable
17548         debugging support.
17549
17550 2003-04-23  Martin Baulig  <martin@ximian.com>
17551
17552         * debug.[ch]: Removed.  The code is now in
17553         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
17554
17555         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
17556         last six months.
17557
17558 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
17559
17560         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
17561
17562 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17563
17564         * mini.c:
17565         (mini_cleanup): moved mono_runtime_cleanup call after the call to
17566         mono_domain_finalize.
17567         (mini_method_compile): use mono_method_profile* if the the option is
17568         enabled.
17569
17570 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
17571
17572         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17573         methods with their wrapper.
17574
17575         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17576         methods with their wrapper.
17577
17578         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
17579         their wrapper.
17580
17581         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
17582         wrapper.
17583
17584         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
17585         methods.
17586
17587 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
17588
17589         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
17590
17591 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
17592
17593         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
17594         of the mempool. This is slightly faster and uses less memory
17595
17596 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17597
17598         * mini.c: avoid O(n) allocation for variables.
17599
17600 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17601
17602         * mini.c: handle items on the stack after inlining methods.
17603
17604 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17605
17606         * mini.c: make the method->opcode optimization dependent
17607         on MONO_OPT_INSTRINS and do it lazily.
17608
17609 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17610
17611         * driver.c: print overall results at the end of regression run.
17612
17613 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
17614
17615         * inssel.brg: don't overwrite symbolic registers.
17616
17617 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17618
17619         * inssel-x86.brg: fix conversion from long to float.
17620
17621 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
17622
17623         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
17624
17625 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
17626
17627         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
17628
17629         * driver.c: Added --print-vtable option as in the old JIT.
17630
17631 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17632
17633         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
17634
17635 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
17636
17637         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
17638
17639 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
17640
17641         * mini.c regalloc.c regalloc.h: Fix memory leak.
17642
17643 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
17644
17645         * aot.c (mono_aot_get_method): register all used strings
17646
17647 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17648
17649         * mini.c: always intern strings references with ldstr at compile time.
17650
17651 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17652
17653         * Makefile.am: add BUILT_SOURCES.
17654
17655 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17656
17657         * driver.c: give a better error message when the assembly to execute
17658         doesn't have an entry point.
17659
17660 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
17661
17662         * Makefile.am: added hack for automake
17663
17664         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
17665         correct sematics.
17666
17667         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
17668
17669 22003-04-07  Martin Baulig  <martin@ximian.com>
17670
17671         * Makefile.am: Added Makefile.am.
17672
17673         * debugger-main.c: Removed, this is now in the debugger where it
17674         belongs.
17675
17676         * mini.pc.in: Call this package `mini' for the moment.
17677
17678
17679
17680
17681
17682
17683
17684
17685
17686
17687
17688
17689
17690