2008-11-17 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
2
3         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
4         ir-emit.h.
5
6         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
7         mono_alloc_ireg () instead.
8
9         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
10         macros.
11
12         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
13         on amd64.
14
15         * aot-runtime.c (load_aot_module): Disable AOT when running under
16         CAS.
17
18         * mini-amd64.h: Change the monitor fastpath defines to check for
19         !PLATFORM_WIN32 so they work on *bsd too.
20
21         * mini.h mini.c mini-hhpa.c: Remove more unused code.
22
23         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
24
25         * mini.h (MonoCompile): Remove new_ir flag.
26
27         * regalloc.h regalloc.c: Remove unused code.
28
29         * cpu-*.md: Remove more unused opcodes.
30
31         * simple-cee-ops.h simple-mini-ops.h: Removed.
32
33         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
34         
35 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
36
37         * aliasing.h: Removed.
38
39         * *.c: Remove references to aliasing.h and inssel.h.
40
41         * mini.c: Remove additional unused functions.
42
43         * mini-ops.h cpu-*.md: Remove unused opcodes.
44
45 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
46
47         Remove the old JIT code.
48
49         * inssel*.brg: Removed.
50
51         * ssa.c abcremoval.c aliasing.c: Removed.
52
53         * ssa2.c: Renamed to ssa.c.
54
55         * abcremoval2.c: Renamed to abcremoval.c.
56
57         * *.c: Removed all !cfg->new_ir code.
58
59         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
60         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
61
62         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
63         
64 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
65
66         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
67         to simplify the code and cut back on the number of global symbols in the AOT
68         file.
69         
70         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
71
72 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
73
74         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
75         with the got/got_info tables.
76
77         * mini.h: Bump AOT file format version.
78         
79         * unwind.h: New file, contains definitions for stack unwinding.
80
81         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
82         to cfg->unwind_ops.
83         
84         * aot-compiler.c: Generalize the emitting of unwind information to use the
85         information in cfg->unwind_ops.
86
87         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
88
89         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
90         AOT method frames. Enable writing symbols for methods by default.
91
92 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
93
94         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
95         and make it work with vectors of element sizes 1, 2 and 4.
96
97         * simd-intrinsics.c: Enable getter for all vectors with element size
98         1, 2 or 4.
99
100         * simd-methods.h: Add the names of other getters.
101
102         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
103
104         * cpu-x86.md: Same.
105
106         * mini-x86.c: Same.
107
108 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
109
110         * mini-ppc.h: portability fix.
111
112 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
113
114         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
115         buggy and will overwrite it.
116
117 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
118
119         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
120         Use it to emit local symbols for all methods so AOTed methods show up with
121         their full name in gdb/valgrind output.
122
123 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
124
125         * mini-ppc.c: portability fixes.
126
127 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
128
129         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
130         entries out of the if (!generic_shared...) code so it is always done.
131         (mono_class_init_trampoline): Do the patching when running under valgrind
132         too, newer versions of valgrind have no problems with it.
133
134 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
135
136         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
137         further sections.
138
139 2008-11-13  Mark Probst  <mark.probst@gmail.com>
140
141         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
142         filters.
143
144 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
145
146         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
147
148 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
149
150         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
151
152         * cpu-x86.md: Same.
153
154         * mini-x86.c: Same.
155
156         * simd-intrinsics.c: Same.
157
158 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
159
160         * simd-intrinsics.c: Enable constructor intrinsics for all types.
161
162 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
163
164         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
165         to work with more Vector types.
166
167 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
168
169         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
170         store the elemens directly instead of using and intermediate.
171
172 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
173
174         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
175
176         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
177         to preserve %eax for aot plt trampolines.
178
179         * aot-compiler.c (compile_method): Don't skip synchronized methods.
180         (encode_method_ref): Flag synchronized methods so they won't go through
181         the AOT trampoline.
182
183         * aot-compiler.c: Additional work to support AOTing synchronized methods/
184         wrappers.
185
186         * cpu-ia64.md (jmp): Increase max length.
187
188 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
189
190         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
191         open generic classes.
192
193         * aot-compiler.c: Enable the ELF writer on ELF platforms.
194
195         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
196         box+brtrue optimization since it causes test failures on x86.
197
198 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
199
200         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
201
202         * cpu-x86.md: Same.
203
204         * mini-x86.c: Same.
205
206         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
207         for simd ctor values. 
208
209         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
210         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
211
212 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
213
214         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
215         LogicalRightShift.
216
217         * simd-instrincs.c: Same.
218
219         * basic-simd.cs: Same.
220
221 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
222
223         * ratests.cs: Add more tests.
224
225         * regalloc2.c (add_spill_code): Handle more corner cases.
226
227 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
228
229         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
230         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
231         both the source an destination of an instruction.
232
233 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
234
235         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
236         wapihandles.c: more portability changes.
237
238 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
239
240         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
241         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
242         safe to execute in a signal handler and the kernel provides better
243         the info in /proc/self/smaps. Avoid the assert on sigaction during
244         cleanup.
245
246 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
247
248         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
249         do the bblock linking hack if it is actually needed.
250
251         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
252         up linking.
253
254         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
255         crash problem is fixed.
256
257         * branch-opts.c (mono_remove_critical_edges): Link up newly added
258         bblocks.
259
260         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
261         for catch clauses.
262         (mini_method_compile): Set the starting value of next_vreg to 
263         MAX_IREGS + MAX_FREGS when using globalra.
264
265         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
266         filter clauses with BB_EXCEPTION_HANDLER.
267
268         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
269
270 2008-11-10  Mark Probst  <mark.probst@gmail.com>
271
272         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
273         space for stdcall.  Fixes regressions on Win32.
274
275 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
276
277         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
278         bblocks.
279         (linear_scan): Remove an assert which doesn't seem to be needed.
280
281         * local-propagation.c (mono_local_deadce): Avoid a call to
282         MONO_DELETE_INS which would screw up the instruction linking.
283
284         * mini.c (mono_decompose_op_imm): Make this work with globalra.
285
286         * regalloc2.c: Upgrade to work the current JIT code.
287
288 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
289
290         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
291         case.
292
293         * aot-runtime.c: Remove some dead code.
294
295         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
296         consistency.
297         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
298
299         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
300         trampolines using sscanf since atoi doesn't work on large unsigned values.
301
302         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
303         Initialize code_size.
304
305 2008-11-08  Mark Probst  <mark.probst@gmail.com>
306
307         * method-to-ir.c (mini_emit_inst_for_method): Make
308         Interlocked.CompareExchange work for Int arguments on 32 bit
309         archs, as well.
310
311 2008-11-07  Mark Probst  <mark.probst@gmail.com>
312
313         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
314
315 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
316
317         * main.c Fix MSVC build.
318
319         Contributed under MIT/X11 license.
320
321 2008-11-06  Mark Probst  <mark.probst@gmail.com>
322
323         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
324         alignment larger than 8 bytes are aligned correctly, too.
325
326         * mini.c: Honor the min_align field of MonoClass when laying out
327         the stack.
328
329 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
330
331         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
332
333         * aot-compiler.c (emit_plt): Fix a warning.
334         
335         * aot-compiler.c: Implement ARM support in the binary writer.
336
337 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
338
339         * basic-simd.cs: Add test for getter with byref arg.
340         Fix the naming of a few tests.
341         Add missing checks to a test.
342
343 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
344
345         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
346
347         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
348         most of the full-aot support for monitor enter/exit trampolines.
349
350         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
351         enter/exit trampoline creation functions.
352
353         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
354         make dist.
355
356 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
357
358         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
359         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
360         implement the needed functionality without adding crap to the runtime.
361
362 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
363
364         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
365         non-x86 builds.
366
367         * mini.c (mono_build_date): New global version holding the build date in
368         string format.
369         
370         * Makefile.am (buildver.c): Generate a file containing the build date.
371
372         * main.c: Set the build date from the generated file.
373
374         * mini.c (mono_get_runtime_build_info): New helper function returning build
375         information in a string format.
376         
377         * driver.c (mono_main): Print the build date in --version.
378
379         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
380         file when the bind-to-runtime-version option is used.
381
382 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
383
384         * simd-intrinsics.c: Fix bug when using getters and byref args. 
385
386 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
387
388         * simd-methods.h: Rename prefetch methods.
389
390         * simd-intrinsics.c: Same.      
391
392 2008-11-05  Mark Probst  <mark.probst@gmail.com>
393
394         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
395         sizes.
396
397 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
398
399         * aot-compiler.c: Use the bundled elf header files instead of depending on
400         the system one.
401         
402         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
403         mempool.
404
405         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
406         on every call.
407
408 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
409
410         * cpu-x86.md: Add store nta ops.
411
412         * mini-ops.h: Same.
413
414         * mini-x86.c: Same.
415
416         * mini.h: Add an enum for simd prefetch modes.
417
418         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
419         of store. Use the changed code to support store nta.
420
421         * simd-intrinsics.c: Add prefetch ops for all vector types.
422
423 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
424
425         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
426         threads.
427         
428         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
429         names.
430
431         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
432         trampolines.
433
434 2008-11-04  Mark Probst  <mark.probst@gmail.com>
435
436         * mini-x86.c: Fixed commit.
437
438 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
439
440         * aot-compiler.c (emit_plt): Align the plt section only on x86.
441
442 2008-11-04  Mark Probst  <mark.probst@gmail.com>
443
444         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
445         and MONITOR_EXIT, for the ASM fastpaths.
446
447         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
448         available.
449
450         * mini.c, patch-info.h: Signature and patch infos for
451         Monitor.Enter/Exit trampolines.
452
453         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
454
455         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
456         Monitor.Enter/Exit ASM fastpath for Linux.
457
458 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
459
460         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
461
462         * objects.cs: Add a new test.
463         
464         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
465
466         * aot-runtime.c (load_method): Run class initialization in the PLT case even
467         if MONO_LOG_LEVEL is set.
468
469         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
470
471         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
472
473         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
474         
475         * aot-compiler.c: Change the relocation code to use virtual addresses instead
476         of file offsets. Align the sections belonging to the data segment to 
477         PAGESIZE.
478
479 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
480
481         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
482         elf.h. Port it to amd64.
483
484 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
485
486         * driver.c: Enable SIMD by default.
487
488 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
489
490         * cpu-x86.md: Add prefetch op.
491
492         * mini-ops.h: Same.
493
494         * mini-x86.c: Same.
495
496         * mini.h: Add an enum for simd prefetch modes.
497
498         * simd-methods.h: Add prefetch function names.
499
500         * simd-intrinsics.c: Add prefetch ops for all vector types.
501
502 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
503
504         * aot-compiler.c (emit_bytes): Speed this up a little.
505
506 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
507
508         * aot-compiler.c: Add JIT time etc. statistics.
509         
510         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
511
512         * mini.h (MonoCompile): Add 'got_offset' field.
513
514         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
515         method_got_offsets array.
516
517         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
518         wrappers.
519
520         * aot-compiler.c (compile_method): Add generic method instances referenced
521         by the method to the list of methods to be compiled, this is required so if
522         A<T> references B<T>, and another assembly references A<int>, then it will
523         also get a copy of B<int>.
524
525         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
526         when checking for monitor enter/exit.
527
528 2008-10-30  Mark Probst  <mark.probst@gmail.com>
529
530         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
531         for Monitor.Enter and Monitor.Exit if enabled.
532
533         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
534         Solaris.
535
536 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
537
538         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
539         of an OP_MOVE. Fixes #440046.
540
541         * basic-long.cs: Add a new test.
542
543 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
544
545         * mini.h: Add synchronization note for the managed counter-part.
546
547         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
548         returns the simd caps of the current cpu.
549
550 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
551
552         * basic-simd.cs: Remove Console.WriteLine.
553
554 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
555
556         * basic-simd.cs: New tests for Vector2ul.
557
558 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
559
560         * simd-intrinsics.c: Add new vector type Vector2ul.
561
562 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
563
564         * basic-simd.cs: New tests for Vector2l.
565
566 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
567
568         * cpu-x86.md: Add long version of most packed int ops.
569
570         * mini-ops.h: Same.
571
572         * mini-x86.h: Same.
573
574         * simd-intrinsics.c: Add new vector type Vector2l.
575
576 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
577
578         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
579
580         * simd-methods.h: Remove SN_op_BitwiseXor.
581
582 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
583
584         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
585         alignment.
586
587 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
588
589         * basic-simd.cs: Test for Vector2d.
590
591         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
592         value.
593
594 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
595
596         * cpu-x86.md: Add double version of all packed float ops.
597
598         * mini-ops.h: Same.
599
600         * mini-x86.h: Same.
601
602         * simd-intrinsics.c: Add new vector type Vector2d.
603
604         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
605
606         * simd-methods.h: Add Duplicate.
607
608 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
609
610         * basic-simd.cs: Test for packing with signed saturation.
611
612 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
613
614         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
615         found in the TYPESPEC table.
616
617 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
618
619         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
620         too.
621
622         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
623
624         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
625         instead of the RVA, since the RVA can be changed by tools like the cil 
626         stripper.
627
628         * method-to-ir.c (mono_method_to_ir2): Ditto.
629
630         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
631         (deserialize_variable): Ditto.
632
633 2008-10-25  Martin Baulig  <martin@ximian.com>
634
635         * debug-mini.c (write_variable): Use
636         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
637
638 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
639
640         * cpu-x86.md: Add unsigned variants of packd and packw.
641
642         * mini-ops.h: Same.
643
644         * mini-x86.h: Emit the right instruction for packd and packw.
645         Add unsigned variants of packd and packw.
646
647         * simd-intrinsics.c: Packd and packw were used in place of their
648         unsigned variants. Change that.
649         Add intrinsics for (Signed)PackWithSignedSaturation.
650
651         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
652
653 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
654
655         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
656
657 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
658
659         * mini-ops.h: Remove dword packed add/sub with saturation ops.
660
661         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
662
663         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
664         sse instructions.
665
666         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
667
668 2008-10-24  Mark Probst  <mark.probst@gmail.com>
669
670         * method-to-ir.c, mini.c: Special casing for the synchronized
671         wrapper for the ldtoken+GetTypeFromHandle case.
672
673 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
674
675         * mini.c (mono_replace_ins): Move this to branch-opts.c.
676
677         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
678         created/split bblocks.
679
680 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
681
682         * mini-ops.h: Add packed signed mul high.
683         
684         * cpu-x86.md: Same.
685
686         * mini-x86.c (mono_arch_output_basic_block): Same.
687
688         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
689
690         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
691
692 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
693
694         * basic-simd.cs: Tests for Vector16sb.
695
696 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
697
698         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
699
700 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
701
702         * mini-ops.h: Add packed signed min, max and compare greater.
703         
704         * cpu-x86.md: Same.
705
706         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
707         saturation.
708
709         * simd-methods.h: Add CompareGreaterThan.
710
711         * simd-methods.h: Remove CompareEquals.
712
713         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
714
715         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
716
717         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
718         CompareEqual.
719
720 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
721
722         * basic-simd.cs: Fix tests due to change in the API.
723
724 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
725
726         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
727
728 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
729
730         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
731
732         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
733         inst_offset as this has invalid values for LDADDR.
734
735 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
736
737         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
738
739         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
740
741 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
742
743         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
744         for accessing field->data.
745
746 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
747
748         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
749
750 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
751
752         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
753
754         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
755
756 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
757
758         * dominators.c (mono_compute_natural_loops): Allocate GList enties
759         from the cfg mempool.
760
761 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
762
763         * basic-simd.cs: Tests for new methods in Vector8us.
764
765 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
766
767         * mini-ops.h: Add multiply and store high.
768         
769         * cpu-x86.md: Same.
770
771         * mini-x86.c (mono_arch_output_basic_block): Same.
772
773         * simd-methods.h: Same.
774
775         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
776         and CompareEqual.
777
778 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
779
780         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
781         mono_class_setup_vtable ().
782
783         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
784         mono_class_get_vtable_entry () for accessing klass->vtable.
785
786         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
787
788         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
789         found.
790
791         * method-to-ir.c (mono_save_token_info): Don't save references made from
792         wrappers.
793
794         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
795         of generic instances.
796
797         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
798
799 2008-10-19  Mark Probst  <mark.probst@gmail.com>
800
801         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
802         OP_JMP depends on the method signature.  Calculate it properly.
803
804 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
805         
806         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
807         called directly.
808
809         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
810         instances.
811         (emit_extra_methods): Add another table mapping method indexes to 
812         offsets in the extra_method_info table.
813
814         * mini.h: Bump AOT file format version.
815         
816         * aot-runtime.c: Merge most of the code from mono_aot_get_method
817         and mono_aot_get_method_from_token () into one function.
818
819 2008-10-19  Mark Probst  <mark.probst@gmail.com>
820
821         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
822         separate counter.
823
824 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
825
826         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
827         methods.
828
829         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
830         disable_aot.
831
832         * mini.c (mono_patch_info_equal): Compare the generic context as well.
833
834         * mini.h: Bump aot file format version.
835
836         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
837         AOT file can contain native code for methods which are not in the METHOD
838         table. Generate code for non-sharable generic instances of generic methods
839         found in the METHODSPEC table.
840         
841         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
842         encoding generic type handles.
843
844         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
845         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
846
847         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
848         macros + MONO_ADD_INS.
849
850         * mini.c (mono_jump_info_token_new2): New function which takes a generic
851         context as well.
852
853         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
854
855         * mini.h: Bump aot file format version.
856
857         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
858
859 2008-10-17  Mark Probst  <mark.probst@gmail.com>
860
861         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
862         platforms, with definable stack alignment value.  Set to 16 now
863         for all platforms.
864
865         * mini.c, mini.h, driver.c: Command line option for disabling
866         stack alignment.
867
868 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
869
870         * basic-simd.cs: Tests for new methods in Vector4ui.
871
872 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
873
874         * mini-ops.h: Add packed int shuffle.
875         
876         * cpu-x86.md: Same.
877
878         * mini-x86.c (mono_arch_output_basic_block): Same.
879
880         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
881         extract mask, max, min, shuffle.
882
883         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
884
885 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
886
887         * basic-simd.cs: Tests for new methods in Vector8us.
888
889 2008-10-17  Mark Probst  <mark.probst@gmail.com>
890
891         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
892         RuntimeTypeHandle, not a TypedReference.
893
894 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
895
896         * simd-intrinsics.c: remove relocations.
897
898 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
899
900         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
901         optimizations from the x86 backend.
902
903 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
904
905         * simd-methods.h, simd-intrinsics.c: debloat method names and
906         prepare for no relocations.
907
908 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
909
910         * mini-ops.h: Add packed min/equal and sum of absolute differences.
911         
912         * cpu-x86.md: Same.
913
914         * mini-x86.c (mono_arch_output_basic_block): Same.
915
916         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
917         extract mask, max, min and sum of absolute differences.
918
919         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
920         method name.
921
922 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
923
924         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
925         Renamed one test for consistency.
926
927 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
928
929         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
930         fix to the code that deal with other blocks.
931
932 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
933
934         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
935
936 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
937
938         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
939         that deals with vreg interference. Explicitly check for OP_LDADDR to be
940         able to process the source reg.
941
942 2008-10-16  Martin Baulig  <martin@ximian.com>
943
944         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
945
946         * inssel.brg: Add `OP_HARD_NOP'.
947
948         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
949
950         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
951         `OP_HARD_NOP' instruction when running inside the debugger.
952
953         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
954         `OP_HARD_NOP' instruction when running inside the debugger.
955
956 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
957
958         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
959         now works. The issue with the regalloc tripping up no longer
960         happens.
961
962         * simd-intrinsics.c (load_simd_vreg): Same.
963
964 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
965         
966         * basic-simd.cs: Tests for new Vector8ui methods.
967
968 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
969
970         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
971         only for type. This fixes crashes where MonoInst::klass is checked
972         for ops of type != VTYPE or OBJ.
973
974         * simd-intrinsics.c (load_simd_vreg): Same.
975
976 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
977
978         * mini-ops.h: Add ops for packed shuffle/max/avg and
979         extract mask.
980         
981         * cpu-x86.md: Same.
982
983         * mini-x86.c (mono_arch_output_basic_block): Same.
984
985         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
986         extract mask.
987
988         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
989         to emit extract mask op.
990
991         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
992         to emit word shuffles.
993
994 2008-10-15  Mark Probst  <mark.probst@gmail.com>
995
996         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
997         the largest alignment needed by a variable, but at least
998         sizeof(gpointer).
999
1000 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1001
1002         * basic-simd.cs: Tests for the fixes in the last commit.
1003
1004 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1005
1006         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
1007         no longer handles STACK_PTR input.
1008
1009         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
1010
1011         * simd-intrinsics.c (load_simd_vreg): New function that works like 
1012         get_simd_vreg   but handles STACK_PTR input.
1013
1014         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
1015         as the input can be an arbitrary pointer.
1016
1017         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
1018         LDADDR local optimization directly otherwise use a store op.
1019
1020 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1021
1022         * basic-simd.cs: Tests for dup low and dup high.
1023
1024 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
1025
1026         * mini-ops.h: Add dup low and dup high ops.
1027         
1028         * cpu-x86.md: Same.
1029
1030         * mini-x86.c (mono_arch_output_basic_block): Same.
1031
1032         * simd-intrinsics.c (vector4f_intrinsics): Same.
1033
1034 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1035
1036         * basic-simd.cs: Tests for recently added functionality.
1037
1038 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1039
1040         * mini-ops.h: Add remaining sse1 fp ops.
1041         
1042         * cpu-x86.md: Add remaining sse1 fp ops.
1043
1044         * mini-x86.c (mono_arch_output_basic_block): Same.
1045
1046         * mini.h: Add enum for simd FP compare conditions.
1047
1048         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
1049
1050         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
1051         so the backed can generate the appropriate op.
1052
1053 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
1054         This patch squeese one more byte from the SimdIntrinsc struct.
1055
1056         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
1057         a a shift amount intead of simply or'ing it.
1058
1059         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
1060
1061         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
1062         byte so we can have an aditional flags field without increasing struct size.
1063
1064         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
1065         against the simd_supported_versions bitmask.
1066
1067         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
1068
1069 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
1070
1071         * mini.c: remove rawbuffer code (the only use here is unsafe because
1072         it takes locks during signal handling and the kernel now provides much
1073         better info in proc/pid/smaps these days).
1074
1075 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
1076
1077         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
1078         OP_X86_PUSH_OBJ. Fixes #434620.
1079
1080         * objects.cs: Add a test.
1081         
1082 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
1083
1084         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
1085         that the packuswb/packusdw don't work with unsigned numbers for what
1086         would be negative numbers in signed format.
1087
1088         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
1089         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
1090
1091         * mini-ops.h: Add doubleword forms of many ops and packing ones.
1092
1093         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
1094
1095         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
1096
1097         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
1098
1099         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
1100         add more ops.
1101
1102         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
1103         version as the enum in mini.h.
1104
1105         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
1106         for sse3 ops, check the simd_version field if present. This way the code
1107         works with all versions of sse.
1108
1109 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1110
1111         * simd-intrinsics.c: Fixed intrinsic name typo.
1112
1113         * mini.h: Added missing simd exported function.
1114
1115         * basic-simd.cs: Added tests for Vector4ui.
1116         Fixed broken test for Vector16b.
1117
1118 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
1119
1120         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
1121         the max length to 64.
1122
1123 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1124
1125         * method-to-ir.c: Only do the fast virtual generic method call for
1126         non-wrapper methods.
1127
1128         * mini.h, mini-trampolines.c: The new generic virtual remoting
1129         trampoline handles virtual method calls via the vtable (as done by
1130         the fast virtual generic method calls) to remoting proxies.
1131
1132         * mini.c (mono_jit_create_remoting_trampoline): For generic
1133         methods reate a generic virtual remoting trampoline.
1134
1135         * mini-amd64.h: Enable fast virtual generic method calls again.
1136
1137 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1138
1139         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
1140         restore registers when doing tail calls.
1141
1142 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1143
1144         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
1145         Vector4ui.
1146
1147 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1148
1149         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
1150
1151 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1152
1153         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
1154
1155 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1156
1157         * basic-simd.cs: Retrofit for API changes.
1158
1159 2008-10-10  Mark Probst  <mark.probst@gmail.com>
1160
1161         * mini-ppc.c: Handle integer stack arguments for tail calls.
1162
1163 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
1164
1165         * optflags-def.h: Removed sse3 optimization.
1166
1167         * driver.c: Same.
1168
1169         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
1170         sse3.
1171
1172         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
1173
1174         * mini.h: Added enumeration with simd versions.
1175
1176         * simd-intrinsics.c (emit_intrinsics): Use the new static var
1177         for detecting SSE3.
1178
1179         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
1180
1181         * mini.c (mini_init): Call mono_simd_intrinsics_init.
1182
1183 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1184
1185         * basic-simd.cs: Added tests for Vector8u and Vector16u.
1186
1187         * basic-simd.cs: Fixed test naming.
1188
1189 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
1190
1191         * mini-ops.h: Added ops for packed and saturated math, shifts
1192         and packing/unpacking.
1193
1194         * cpu-x86.md: Added descriptors for the above ops.
1195
1196         * mini-x86.c: Added code to emmit the above ops.
1197
1198         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
1199
1200 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
1201
1202         * aot-compiler.c (compile_method): Enable AOT for generic code.
1203
1204         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
1205
1206 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
1207
1208         * mini.c: add a workaround for a common screwup that ends up blamed
1209         to mono (other processes blocking signal delivery).
1210
1211 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1212
1213         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
1214         in the LDFLD/STFLD opcodes. Fixes #432673.
1215
1216         * iltests.il.in: Add a new test.
1217
1218 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
1219
1220         * mini-arm.c: attach the thread in unmanaged->managed transitions
1221         using delegates (bug #433148).
1222
1223 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1224
1225        * basic-simd.cs: Use new ShuffleSel constants.
1226
1227 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
1228
1229         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
1230
1231         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
1232         only disable simd intrinsics if no sse2 is detected.
1233
1234         * optflags-def.h: Added sse3.
1235
1236         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
1237         is disabled.
1238
1239 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
1242         when adding delegate-invoke wrappers.
1243
1244 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1245
1246         * Makefile.am: Reenable the simd tests.
1247
1248 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
1249
1250         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
1251           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
1252           other vreg is allocated to that hreg.
1253
1254         Contributed under MIT/X11 license.
1255
1256 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
1257
1258         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
1259         yet checked in.
1260
1261 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1262
1263         * basic-simd.cs: New test suite for SIMD intrinsics.
1264
1265         * Makefile.am: Added new tests.
1266
1267 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
1268
1269         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
1270
1271         * mini-ops.h: Same.
1272
1273         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
1274
1275         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
1276         using SSE2 aware opcodes.
1277
1278         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
1279         is enabled, this code path is only reachable if conversion ops are emmited after
1280         mono_method_to_ir.
1281
1282         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
1283
1284         This optimization saves 6 bytes per conversion against the old version.
1285
1286 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1287
1288         * aot-compiler.c (compile_method): Don't skip methods referencing 
1289         generic methods without a corresponding entry in token_info_hash, since
1290         encode_method_ref () can handle all generic methods now.
1291
1292         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
1293         generic context is set.
1294         
1295         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
1296         generic sharing of LDTOKEN.
1297
1298 2008-10-06  Mark Probst  <mark.probst@gmail.com>
1299
1300         * mini-amd64.h: Temporarily disabled fast virtual generic method
1301         calls because it breaks the System.Runtime.Remoting tests.
1302
1303 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1304
1305         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
1306
1307         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
1308         so inlining actually works.
1309         (check_inline_caller_method_name_limit): Ditto.
1310
1311 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
1312
1313         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
1314         64 bit safety (from Olaf Hering and Andreas Färber).
1315
1316 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
1317         
1318         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
1319         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
1320         unused virtual call support code.
1321
1322         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
1323         
1324         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
1325         which can't use aot trampolines.
1326         (decode_patch): Don't create aot trampolines for methods which can't use
1327         them.
1328
1329         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
1330         use aot trampolines.
1331
1332         * mini.h: Bump AOT image format version.
1333         
1334 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
1335
1336         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
1337         to save_token_info () since cmethod is inflated for constrained calls.
1338
1339         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
1340
1341 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
1342
1343         * Makefile.am: Add build rules for ppc64.
1344         This avoids the build failing at pedump with unresolved symbols
1345         due to lack of arch_sources. Instead it will now fail earlier
1346         due to lack of cpu-ppc64.md.
1347
1348         Contributed under MIT/X11 license.
1349
1350 2008-10-04  Mark Probst  <mark.probst@gmail.com>
1351
1352         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
1353         tail calls.
1354
1355         * iltests.il.in: Add test case for tail call with many arguments.
1356
1357 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
1358
1359         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
1360         to the fast virtual generic method code until the aot case is fixed.
1361
1362 2008-10-03  Mark Probst  <mark.probst@gmail.com>
1363
1364         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
1365
1366 2008-10-03  Mark Probst  <mark.probst@gmail.com>
1367
1368         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
1369         thunks.
1370
1371 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
1372         
1373         * simd-intrinsics.c: Forgot to add this one.
1374
1375         * mini-codegen.c: Fix macro in case SIMD is not supported.
1376
1377 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
1378         
1379         This patch land initial JIT support for simd intrinsics.
1380
1381         * mini-x86.h: Added new define to make --enable_minimal work on x86.
1382
1383         * Makefile.am: Added simd-intrinsics.c
1384
1385         * simd-intrinsics.c: New file with simd instrinsic related
1386         code.
1387
1388         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
1389
1390         * cpu-x86.md: Add simd related instructions.
1391
1392         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
1393
1394         * driver.c: Added two new --regression variants.
1395
1396         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
1397
1398         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
1399
1400         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
1401         extract some complicated logic to helper functions.
1402
1403         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
1404
1405         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
1406
1407         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
1408         the specialized simplification pass.
1409
1410         * method-to-ir.c (mono_spill_global_vars): Use new macro.
1411
1412         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
1413
1414         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
1415         table.
1416
1417         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
1418         if MONO_ARCH_NEED_SIMD_BANK is defined.
1419
1420         * mini-ops.h: Added the new simd ops.
1421
1422         * mini-x86.c: Added mono_arch_xregname.
1423
1424         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
1425
1426         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
1427
1428         * mini-x86.h: Define simd related MONO_ARCH macros.
1429
1430         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
1431
1432         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
1433
1434         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
1435         MONO_CLASS_IS_SIMD to deal with simd related IR.
1436
1437         * mini.h (MonoInst): Added spill_var to the backend union.
1438
1439         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
1440
1441         * mini.h: Added forward declarations of the new simd fuctions.
1442
1443         * optflags-def.h: Added new optimization names SIMD.
1444
1445         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
1446
1447         * regalloc.h: Added support for working with 3 register banks.
1448
1449         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
1450
1451         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
1452
1453 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
1454
1455         * mini-exceptions.c: remove 64 bit related ifdef clutter.
1456
1457 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
1458
1459         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
1460         instead of one on 64 bit systems.
1461
1462         * method-to-ir.c: Remove unused includes.
1463
1464 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
1465
1466         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
1467         cfg->used_int_regs, since the two are different on arm.
1468
1469 2008-10-02  Mark Probst  <mark.probst@gmail.com>
1470
1471         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
1472         mono_method_get_vtable_index() to get the vtable index.
1473
1474 2008-10-02  Mark Probst  <mark.probst@gmail.com>
1475
1476         * method-to-ir.c (mono_method_to_ir2): Don't create native
1477         wrappers for array methods, because they're never called (and if
1478         they were called they wouldn't work).
1479
1480 2008-10-02  Mark Probst  <mark.probst@gmail.com>
1481
1482         * method-to-ir.c (mono_method_to_ir2): Array methods are
1483         special-cased and must not be invoked indirectly via the (M)RGCTX
1484         when generic sharing is turned on.  Fixes #431413.
1485
1486 2008-10-01  Mark Probst  <mark.probst@gmail.com>
1487
1488         * method-to-ir.c: When generic sharing is active, call
1489         non-interface virtual generic methods via the standard trampoline.
1490
1491         * mini-trampolines.c: Handle virtual generic shared methods.
1492
1493         * mini.h, mini-x86.c, mini-x86.h: New argument for
1494         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
1495         method thunks and which is the trampoline to call if the lookup
1496         fails.  Enable the virtual generic method thunk for x86.
1497
1498         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
1499         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
1500         argument but assert that it's NULL, because these archs don't yet
1501         implement the virtual generic method thunk.  Changes in the IMT
1502         thunk data structures.
1503
1504 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
1505
1506         * aot-compiler.c (emit_globals): Avoid invalid characters in
1507         the static linking symbol.
1508
1509         * objects.cs: Add a test for the range check optimization. Fix warnings.
1510
1511         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
1512         optimization from the current JIT.
1513
1514         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
1515         later in decompose_array_access_opts () to allow more optimizations.
1516
1517         * method-to-ir.c (mono_handle_soft_float): Rename this to 
1518         mono_decompose_soft_float () for consistency.
1519
1520         * mini-ops.h: Fix arguments of OP_STRLEN.
1521
1522         * method-to-ir.c (save_cast_details): Extract the cast details saving code
1523         into a separate function.
1524         (reset_cast_details): Ditto.
1525         (handle_unbox): Save cast details. Fixes #431254.
1526
1527         * method-to-ir.c: Remove some obsolete FIXMEs.
1528
1529 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1530
1531         * ir-emit.h (alloc_dreg): Write a warning before crashing.
1532
1533 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1534
1535         * mini-codegen.c: More work on macros to make them
1536         ready for multiple regbanks.
1537
1538 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1539
1540         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
1541
1542         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
1543
1544 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1545
1546         * mini-codegen.c (mono_spillvar_offset): Proper support for
1547         multiple regbanks.
1548
1549 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
1550
1551         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
1552         the stack overflow changes.
1553
1554 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1555
1556         * mini-codegen.c: Make all bank macros depend on reg_bank.
1557
1558         * mini-codegen.c (mono_local_regalloc): Make free mask
1559         initialization regbank aware.
1560
1561 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1562
1563         * mini-codegen.c (mono_local_regalloc): Extract callee
1564         mask selection to a function and make it regbank aware.
1565
1566 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
1567
1568         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
1569         code to deal with many regbanks.
1570
1571 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
1572
1573         * mini-codegen.c: More fp->regbank changes.
1574
1575 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
1576
1577         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
1578         of a hardcoded constant.
1579
1580 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
1581
1582         * method-to-ir.c (type_from_stack_type): Fix typo.
1583
1584 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
1585
1586         * mini-ia64.c (emit_move_return_value): Convert float return values to
1587         double.
1588
1589         * objects.cs: Add a new test.
1590         
1591         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
1592         VARARG methods to fix an assert later.
1593
1594         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
1595         end so it at least compiles.
1596
1597 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
1598
1599         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
1600
1601 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
1602
1603         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
1604         optimization to a new function (emit_optimized_ldloca_ir) and enable
1605         it for both ldloca and ldloca_s.
1606
1607 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
1608
1609         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
1610         gshared CASTCLASS code.
1611
1612         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
1613         amd64, where the libc stack unwinder encounters stack frames referring to
1614         native code in unmapped memory.
1615
1616         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
1617         sharing.
1618
1619         * generics.cs: Add new test.
1620
1621 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
1622
1623         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
1624         add a check that one of the ARM_FPU_ constants is defined.
1625
1626         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
1627         
1628         * mini-exceptions.c: Fix build on non-altstack platforms.
1629
1630         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
1631         sharing of vtypes.
1632
1633         * ir-emit.h: Add a comment to NEW_PCONST.
1634
1635         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
1636
1637         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
1638
1639         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
1640         after the changes to MonoJitDomainInfo.
1641
1642 2008-09-27  Mark Probst  <mark.probst@gmail.com>
1643
1644         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
1645
1646 2008-09-27  Mark Probst  <mark.probst@gmail.com>
1647
1648         * mini-ppc.c: Compiler warning fixes.
1649
1650 2008-09-27  Mark Probst  <mark.probst@gmail.com>
1651
1652         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
1653         for pinvokes.
1654
1655 2008-09-27  Mark Probst  <mark.probst@gmail.com>
1656
1657         * exceptions-ppc.c, mini-ppc.h: Compile
1658         mono_arch_handle_altstack_exception() on Darwin, too.
1659
1660 2008-09-27  Mark Probst  <mark.probst@gmail.com>
1661
1662         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
1663         work on archs which don't have generic sharing implemented, only
1664         without the vtable_arg.
1665
1666 2008-09-26  Mark Probst  <mark.probst@gmail.com>
1667
1668         * mini.c: Added comment explaining why delegate ctor icall
1669         wrappers are compiled.
1670
1671 2008-09-26  Mark Probst  <mark.probst@gmail.com>
1672
1673         * mini.c: Don't produce trampolines to delegate ctor icall
1674         wrappers but compile them upfront.
1675
1676 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
1677
1678         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
1679         runtime-set function when going back to managed code. Currently this
1680         is used to set back the protection on the soft ovf pages and/or to
1681         throw the stack overflow exception that happened in unmanaged code.
1682
1683 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
1684
1685         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
1686         runtime-set function when going back to managed code. Currently this
1687         is used to set back the protection on the soft ovf pages and/or to
1688         throw the stack overflow exception that happened in unmanaged code.
1689
1690 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
1691
1692         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
1693         the support code for restoring stack protection after stack overflows
1694         that happen in unmanaged code. Don't set the exec permission on the
1695         soft overflow area.
1696
1697 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
1698
1699         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
1700         delegate->method_ptr is set. Fixes #428054.
1701
1702 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
1703
1704         * tests.cs: Rename to ratests.cs.
1705
1706         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
1707         emit_get_rgctx_... functions.
1708
1709 2008-09-25  Mark Probst  <mark.probst@gmail.com>
1710
1711         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
1712
1713 2008-09-25  Mark Probst  <mark.probst@gmail.com>
1714
1715         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
1716         before asserting that method is sharable.
1717
1718 2008-09-25  Mark Probst  <mark.probst@gmail.com>
1719
1720         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
1721         whether method needs a static RGCTX wrapper used instead of
1722         complex conditions.
1723
1724         * generic-sharing.c, mini.h: A few functions moved to
1725         metadata/generic-sharing.c.
1726
1727 2008-09-25  Mark Probst  <mark.probst@gmail.com>
1728
1729         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
1730         Generic code sharing for value types, which essentially means
1731         treating value type methods like static methods.  The RGCTX is
1732         passed in the same way.
1733
1734 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
1735
1736         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
1737         opcode when creating multi-dimensional arrays of open types.
1738
1739         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
1740         open generic types.
1741
1742         * generics.cs: Add a test.
1743
1744         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
1745
1746 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
1747
1748         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
1749
1750         * mini.c (mini_method_compile): Set it when running under the debugger. 
1751
1752         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
1753         vreg optimization if the flag is set.
1754
1755         * driver.c (mono_main): Add --attach= option to pass options to
1756         the attach agent.
1757
1758         * mini.c (sigquit_signal_handler): Start the attach agent.
1759
1760         * ssapre.c: Disable this to save space since it is not yet ported to
1761         linear IR.
1762
1763         * regalloc2.c: Disable this to save space.
1764
1765         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
1766
1767 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
1768
1769         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
1770         the -v option useful again.
1771
1772 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
1773
1774         * mini-amd64.c (mono_arch_output_basic_block): Add support for
1775         --break-at-bb.
1776
1777         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
1778         arrays of arrays. Fixes #428406.
1779
1780         * method-to-ir.c (mini_emit_castclass): Ditto.
1781
1782         * objects.cs: Add new test.
1783         
1784 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
1785
1786         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
1787         was wrong at it choked against target_type_is_incompatible for byref types.
1788
1789 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
1790
1791         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
1792         places.
1793
1794 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
1795
1796         * mini-exceptions.c: update a few more exceptions-related counters.
1797
1798 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
1799
1800         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
1801         new functions to allocate from persistent mempools.
1802
1803 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
1804
1805         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
1806         multiple register banks in the future.
1807
1808         * mini-codegen.c (mono_local_regalloc): Fix a warning.
1809
1810 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
1811
1812         * mini.c (type_to_eval_stack_type): Remove duplicated function.
1813
1814         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
1815
1816         * mini.h: Export type_to_eval_stack_type.
1817
1818         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
1819         is only ins->klass of byref types.
1820
1821 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
1822
1823         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
1824         (mini_emit_memcpy2): Ditto.
1825
1826         * mini-amd64.c: Fix a warning.
1827
1828 2008-09-21  Mark Probst  <mark.probst@gmail.com>
1829
1830         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
1831         linking.
1832
1833 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
1834
1835         * method-to-ir.c: Extract stloc micro-optimization to a
1836         function and apply it to all cases.
1837
1838 2008-09-19  Mark Probst  <mark.probst@gmail.com>
1839
1840         * method-to-ir.c: Don't fail generic code sharing in cases we
1841         already support.
1842
1843 2008-09-18  Mark Probst  <mark.probst@gmail.com>
1844
1845         * mini-ppc.c: Handle structs in tailcalls on Darwin.
1846
1847 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
1848
1849         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
1850         implementation.
1851
1852 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
1853
1854         * trace.c: make tracing more useful and correct, with per-thread
1855         id and indent info.
1856
1857 2008-09-15  Mark Probst  <mark.probst@gmail.com>
1858
1859         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
1860         doing a method call and the argument is an R4.
1861
1862 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
1863
1864         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
1865         generic methods.
1866
1867 2008-09-13  Mark Probst  <mark.probst@gmail.com>
1868
1869         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
1870
1871 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
1872
1873         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
1874         (MONO_JUMP_TABLE_FROM_INS): Ditto.
1875
1876 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
1877
1878         * driver.c: Add a --agent argument (not supported yet) to load managed
1879         agent assemblies before loading the main assembly, similarly to how the
1880         Java VM handles agents.
1881
1882 2008-09-11  Mark Probst  <mark.probst@gmail.com>
1883
1884         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
1885         function to do stack layout of local variables.
1886
1887 2008-09-11  Mark Probst  <mark.probst@gmail.com>
1888
1889         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
1890         calculation.
1891
1892 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
1893
1894         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
1895         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
1896         JIT if DISABLE_JIT is defined.
1897
1898         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
1899         defined.
1900
1901 2008-09-10  Mark Probst  <mark.probst@gmail.com>
1902
1903         * iltests.il.in: Disable the fconv test on PPC (the result is
1904         undefined according to ECMA).
1905
1906 2008-09-10  Mark Probst  <mark.probst@gmail.com>
1907
1908         * iltests.il.in: Enable tail call tests for PPC.
1909
1910         * mini.h: Add variable for storing incoming valuetype argument
1911         addresses for tail calls.
1912
1913         * mini-ppc.c: Implement valuetype arguments and return values for
1914         tailcalls on Linux.
1915
1916 2008-09-09  Mark Probst  <mark.probst@gmail.com>
1917
1918         * mini-ppc.c: Partially implement tail calls (struct arguments and
1919         return values not supported).
1920
1921         * method-to-ir.c: Enable tail calls on PPC.
1922
1923 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
1924
1925         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
1926         runtime-invoke wrappers to work around the problem of them getting
1927         assigned to a random class.
1928
1929         * aot-runtime.c (mono_aot_get_method): Ditto.
1930         
1931 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
1932
1933         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
1934         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
1935
1936 2008-09-07  Mark Probst  <mark.probst@gmail.com>
1937
1938         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
1939         until they're implemented properly.
1940
1941         * exceptions-ppc.c: Use arch-independent exception-handling code
1942         instead of custom one.
1943
1944         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
1945         for Linear IR.
1946
1947         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
1948
1949         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
1950         applies when __powerpc__ is defined.
1951
1952 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
1953
1954         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
1955         methods to their code to avoid computing the full name of wrappers and
1956         doing a lookup in a string hash table.
1957
1958 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
1959
1960         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
1961         we identify bblocks before method_to_ir () is ran.
1962
1963         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
1964         Also avoid optimizing branches pointing to themselves.
1965
1966         * mini.c (mini_method_compile): Ditto. Fixes #422947.
1967
1968 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
1969
1970         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
1971
1972 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
1973
1974         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
1975         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
1976         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
1977         'buf'.
1978
1979         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
1980         jumped to the same entry in plt_jump_table.
1981
1982 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
1983
1984         * method-to-ir.c (initialize_array_data): Handle field with RVA from
1985         dynamic images.
1986
1987 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
1988
1989         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
1990         other assignment can be if converted. Saves 1.5% on corlib size and fixes
1991         #421807.
1992
1993 2008-08-29  Geoff Norton  <gnorton@novell.com>
1994
1995         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
1996         segment, and doesn't properly handle .space as .text.  Fixes
1997         AOT Mach/ARM
1998
1999 2008-08-29  Geoff Norton  <gnorton@novell.com>
2000
2001         * mini.c: Disable the mach exception handler when running on 
2002         ARM
2003
2004 2008-08-29  Geoff Norton  <gnorton@novell.com>
2005
2006         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
2007         globals on Darwin/ARM
2008
2009 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
2010
2011         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
2012         since too many things depend on it. Instead, call 
2013         mono_runtime_set_no_exec ().
2014         
2015         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
2016         the new JIT.
2017
2018         * aot-compiler.c: Add an 'asm-only' AOT option.
2019
2020         * mini.c: Avoid initializing the runtime when doing AOT compilation.
2021                 
2022         * aot-compiler.c (compile_method): Disable gshared support for now as it
2023         doesn't yet work.
2024
2025 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2026
2027         * mini-amd64.h : Fix a compiler warning.
2028
2029         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
2030           Changed to use a callback function to retrieve the unwind info.
2031           This avoids problems observed when code blocks were removed by
2032           unloading an app domain.
2033
2034         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
2035           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
2036           to work properly.
2037
2038         Contributed under MIT/X11 license.
2039
2040 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
2041
2042         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
2043           case to keep the stack aligned to 8.
2044
2045         Contributed under MIT/X11 license.
2046
2047 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
2048
2049         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
2050         avoid repeated linear searches.
2051
2052 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
2053
2054         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
2055         methods it can't handle.
2056         
2057         * aot-compiler.c (add_method): Avoid adding a method twice.
2058         (add_wrappers): Add runtime invoke wrappers for all methods.
2059
2060         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
2061         function to create an aot-compatible version of this trampoline.
2062
2063         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
2064
2065 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
2066
2067         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
2068
2069         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
2070         with a generic sharing failure.
2071
2072         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
2073
2074         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
2075         CEE_RETHROW. Fixes #419634.
2076
2077         * mini.c (mono_method_to_ir): Ditto.
2078
2079         * exceptions.cs: Add a new test.
2080         
2081         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
2082         to mono_type_stack_size_internal () since some callers might not pass in
2083         an rgctx.
2084
2085         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
2086         instrument_prolog. Fixes #419878.
2087
2088         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
2089         doubles in soft float mode volatile.
2090
2091 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
2092
2093         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
2094
2095         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
2096         to handle soft float correctly.
2097
2098         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
2099         the fast path.
2100
2101         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
2102
2103         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
2104         to sp, since the generics catch code requires it.
2105
2106         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
2107         copying.
2108
2109         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
2110         mono_arch_emit_imt_argument ().
2111
2112         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
2113
2114         * mini-arm.c tramp-arm.c: Generic sharing updates.
2115
2116 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
2117
2118         * mini-arm.c: Fix the arm build.
2119
2120         * generic-sharing.c (mini_type_get_underlying_type): New helper function
2121         handling enums, generic instances and generic sharing.
2122         (mini_type_stack_size_full): Ditto.
2123
2124         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
2125         
2126         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
2127
2128         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
2129
2130         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
2131         trampolines.
2132
2133         * mini-arm.c: Various small generic sharing changes.
2134
2135         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
2136         this for x86.
2137         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
2138         custom code.
2139
2140         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
2141         helper function to return a generic class init trampoline.
2142
2143         * method-to-ir.c mini.c: Use it.
2144         
2145         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
2146         arch-specfic function to return a generic class init trampoline.
2147
2148         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
2149         the GENERIC_CLASS_INIT custom code.
2150
2151         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
2152         a fatal error, not a sharing failure.
2153
2154         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
2155         needed.
2156
2157         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
2158         trampoline argument from MONO_ARCH_VTABLE_REG.
2159
2160         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2161         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2162         argument, and pass the vtable in VTABLE_REG.
2163
2164         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
2165         order of the arguments to the C trampoline: pass 'slot' as the trampoline
2166         argument, and pass the vtable in VTABLE_REG.
2167         (mono_arch_create_trampoline_code_full): Remove some special casing for
2168         the rgctx fetch trampoline.
2169
2170         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
2171         Fixes #419273.
2172
2173         * iltests.il: Add a test for it.
2174
2175 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
2178
2179         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
2180         no longer needed.
2181
2182         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
2183         use mono_jit_info_table_find () to avoid recursion.
2184         (mono_delegate_trampoline): Add a sync wrapper here.
2185
2186         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
2187         here.
2188
2189         * mini.c (mono_method_to_ir): Ditto.
2190         
2191         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
2192         add_sync_wrapper argument. Don't add a sync wrapper here.
2193         (mono_create_jump_trampoline): Don't add a sync wrapper here.
2194
2195         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
2196         
2197 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2198
2199         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
2200           of nonvolatile registers back from MonoContext to CONTEXT.
2201
2202         Contributed under MIT/X11 license.
2203
2204 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
2205
2206         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
2207           arguments on Winx64 there are only 4 argument registers.  For this
2208           logic to work the last argument must be pulled from the stack.  
2209
2210         Contributed under MIT/X11 license.
2211
2212 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
2213
2214         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2215
2216         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
2217         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
2218         encode/decode_method_ref ().
2219
2220         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
2221
2222         * aot-runtime.c (decode_patch): Ditto.  
2223
2224         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
2225         MONO_PATCH_INFO_METHOD.
2226
2227         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
2228         MonoGenericJitInfo.
2229
2230         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
2231         MonoGenericJitInfo.
2232
2233         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
2234
2235         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
2236         one from the caller.
2237
2238         * aot-runtime.c (decode_generic_inst): New function to decode and
2239         return a interned generic inst.
2240         (decode_klass_ref): Use it.
2241         (decode_method_ref): Ditto.
2242
2243         * aot-compiler.c (emit_exception_debug_info): Save 
2244         jinfo->has_generic_jit_info too.
2245
2246 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2247
2248         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
2249
2250         * iltests.il.in: Add a test for fconv_to_i.
2251
2252         * liveness.c: Disable the liveness2 pass for now to save space.
2253
2254         * regalloc2.c: Include mempool-internals.h to fix warnings.
2255
2256         * aot-compiler.c (encode_method_ref): Encode the context of generic
2257         instance methods.
2258
2259         * aot-runtime.c (decode_method_ref): Inflate generic methods using
2260         the context saved in the aot file.
2261
2262         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2263
2264         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2265
2266         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
2267         volatile so they won't be optimized away.
2268
2269 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
2270
2271         * ssa.c:
2272         * ssa2.c:
2273         * mini.c:
2274         * regalloc2.c:
2275         * dominators.c: Remove duplicated functions that now are in
2276         mempool-internals.h.
2277
2278 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * aot-compiler.c: Fix warnings.
2281
2282         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
2283
2284         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
2285
2286         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
2287         as the patch type.
2288
2289         * mini.c (mono_resolve_patch_target): Ditto.
2290         
2291         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
2292         (encode_klass_ref): Add support for encoding VARs/MVARs.
2293
2294         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
2295
2296         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
2297         the handling of the got entries into a separate 'decode_got_entry' function.
2298         Add support for RGCTX_FETCH.
2299
2300         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
2301         clobbered by the trampoline code.
2302
2303         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
2304         not clobbered by the indirect calling code.
2305
2306 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
2309         to fix the build.
2310
2311 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
2312
2313         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
2314         signature using the compilation mempool otherwise we would leak it.
2315
2316 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
2319         mono_emit_abs_call ().
2320
2321         * patch-info.h: Add GENERIC_CLASS_INIT.
2322
2323         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
2324
2325         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
2326         as their target as a near call.
2327
2328         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
2329         ABS handling code.
2330         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
2331
2332         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
2333         call to a runtime function described by a patch.
2334
2335         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
2336         mono_emit_abs_call, this has the advantage that the ABS handling code in
2337         mono_codegen () can handle them both, and can handle other stuff in the
2338         future without additional code.
2339
2340         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
2341         entry.
2342         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
2343         abs addresses.
2344
2345         * mini.h: Add missing bblock related prototypes.
2346
2347         * mini.h (MonoCompile): Remove unused reverse_inst_list and
2348         reverse_inst_list_len fields.
2349
2350         * mini.c: Refactor this file a bit by moving branch optimizations to 
2351         branch-opts.c.
2352
2353         * method-to-ir.c: Merge generic sharing changes missed earlier.
2354
2355         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
2356
2357         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
2358         shared patches. Process METHODCONST as a shared patch.
2359
2360         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
2361         as it crashes on the 2.0 mscorlib.
2362
2363         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
2364         to cause crashes.
2365         
2366         * aot-compiler.c: Use is_plt_patch () in a few additional places.
2367         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
2368         by IMT.
2369
2370         * aot-compiler.c: Reorganize the got handling code to be a bit more
2371         understandable.
2372
2373 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
2374
2375         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
2376         mono_patch_info_equals/hash, and use it to massively simplify
2377         get_plt_index ().
2378
2379         * mini.c (mono_patch_info_hash): Simplify this and add support for
2380         more patch types.
2381
2382         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
2383
2384         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
2385         handling code, since an offset is not enough to identify a trampoline.
2386
2387         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
2388
2389 2008-08-17  Mark Probst  <mark.probst@gmail.com>
2390
2391         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
2392
2393         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
2394
2395         * mini-ops.h: Argument and result types for OVF_CARRY ops.
2396
2397         * decompose.c: PPC decompositions for various ops.
2398
2399         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
2400
2401 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
2402
2403         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
2404         call the generic trampoline code using a call, instead of a jump, to
2405         remove some special casing from the generic trampoline code.
2406
2407         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
2408         (mono_codegen): Ditto.
2409
2410         * aot-compiler.c aot-runtime.c: Ditto.
2411
2412         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
2413
2414         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
2415         helper function to find the offset corresponding to a lazy fetch trampoline.
2416
2417         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
2418         when doing generic sharing.
2419
2420         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
2421         places.
2422         
2423         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
2424         mini-trampolines.c to be with the other trampoline creation functions.
2425
2426         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
2427         as it is equal to method->signature in most cases, add a 
2428         mono_emit_method_call_full variant which takes a signature and an imt
2429         argument as well.
2430
2431 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
2432
2433         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
2434         to this function, since it could be computed easily from the method 
2435         argument.
2436         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
2437         more.
2438
2439         * method-to-ir.c mini.c: Remove references to 
2440         compile_generic_method_wo_context.
2441
2442         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
2443         generic method calls.
2444         
2445         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
2446         dimensional non-szarrays.
2447
2448         * mini.c (mini_init): Register mono_array_new_1.
2449
2450         * jit-icalls.c (mono_array_new_1): New jit icall.
2451
2452         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
2453         pointing to the method.
2454
2455         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
2456         method addresses belonging to METHOD_JUMP patches in the 
2457         jump_target_got_slot_hash.
2458         (mono_aot_load_method): Ditto.
2459
2460         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
2461         METHOD_JUMP patches.
2462
2463         * mini.c (mini_create_jit_domain_info): New helper function which 
2464         initializes/frees domain->runtime_info.
2465         (mini_free_jit_domain_info): Ditto.
2466         (mini_init): Install the domain hook functions with the runtime.
2467
2468         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
2469         information maintained by the JIT.
2470
2471         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
2472         insertion into jump_table_hash into mono_codegen (), also implement proper
2473         locking.
2474
2475         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
2476         tail calls, it is already done by the aot code.
2477         
2478         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
2479         mechanism on amd64.
2480
2481         * iltests.il.in: Make the jmp test a bit more complex.
2482
2483         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
2484         generic instances which doesn't have a token.
2485
2486         * aot-runtime.c (decode_method_ref): Ditto.
2487         
2488         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
2489         can handle this case now.
2490         (handle_box): Ditto.
2491
2492 2008-08-15  Geoff Norton  <gnorton@novell.com>
2493
2494         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
2495         debugging check.
2496
2497 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
2498
2499         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
2500         calling generic methods.
2501
2502         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
2503
2504         * aot-runtime.c (decode_patch_info): Ditto.
2505
2506         * mini.c (mono_resolve_patch_target): Ditto.
2507         
2508         * patch-info.h: Add METHOD_RGCTX.
2509
2510         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
2511
2512 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
2513
2514         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
2515         arguments in registers.
2516
2517         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
2518         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
2519
2520         * mini.c (mini_method_compile): Abort aot compilation for generic
2521         methods if generic sharing is disabled.
2522         
2523         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
2524         an mrgctx.
2525
2526         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
2527         requiring an mrgctx.
2528
2529         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
2530         store instructions when converting a vcall to a normal call.
2531
2532         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
2533         mono_arch_find_jit_info.
2534
2535 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
2536
2537         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
2538         avoid calling mono_method_full_name () for every method even if the
2539         env var is not set.
2540         (check_inline_caller_method_name_limit): Ditto.
2541
2542 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
2543
2544         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
2545         assemblies in one run.
2546
2547         * aot-compiler.c (mono_compile_assembly): Only print out a count of
2548         skipped methods if it is not 0.
2549
2550         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
2551
2552 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
2553
2554         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
2555           MONO_ARCH_HAVE_UNWIND_TABLE.
2556
2557         Contributed under MIT/X11 license.
2558
2559 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
2560
2561         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
2562           from default optimizaton list on Winx64.
2563
2564         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
2565
2566         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
2567           the LMF from the MonoJitTlsData structure.
2568
2569         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
2570
2571         Contributed under MIT/X11 license.
2572
2573 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * mini.c (sigsegv_signal_handler): Fix the build.
2576
2577         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
2578         assembly->aot_module.
2579
2580         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
2581         hash table. This simplifies and speeds up a lot of code, and fixes support
2582         for .netmodules.
2583
2584         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
2585         with the runtime.
2586
2587         * mini-exceptions.c: Ditto.
2588         
2589         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
2590         'native_offset' argument, since these are computed in the 
2591         mono_find_jit_info () function.
2592
2593         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
2594         is used by exceptions-ppc.c.
2595
2596         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
2597         mono_arch_find_jit_info ().
2598         
2599         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
2600         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
2601         generic code in mini-exceptions.c.
2602
2603 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
2604
2605         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
2606
2607         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
2608         
2609         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
2610         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
2611         called while holding the loader lock. Fixes #415608.
2612         (mono_aot_get_method_from_token_inner): Ditto.
2613
2614 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
2615
2616         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
2617         to reduce differences between this and the generic implementation in
2618         mini-exceptions.c.
2619         (ves_icall_get_frame_info): Ditto.
2620
2621         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
2622
2623         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
2624         longer neccesarry.
2625
2626         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
2627         mono_arch_get_call_filter () and make it non-static, for consistency with the
2628         other architectures.
2629
2630 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
2631
2632         * mini.c:
2633         * local-propagation.c:
2634         * mini-x86.c: Correct the name of arch defines.
2635
2636 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
2637
2638         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
2639         NO_EMULATE_LONG_SHIFT_OPS define.
2640
2641 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
2642
2643         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
2644         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
2645
2646         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
2647         MACH fixes. Merged from the 2.0 branch.
2648
2649         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
2650
2651         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
2652         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
2653
2654         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
2655
2656         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
2657         mono_marshal_get_native_wrapper () signature changes.
2658
2659 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
2660
2661         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
2662         conversion bug under arm.
2663
2664 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
2665
2666         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
2667
2668         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
2669         with overflow checking.
2670
2671 2008-08-05  Marek Habersack  <mhabersack@novell.com>
2672
2673         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
2674         to the genmdesc.pl file
2675
2676 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
2679         arg_array in the soft-float versions of the LOAD/STORE macros.
2680
2681         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
2682         implementation.
2683
2684         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
2685
2686 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
2687
2688         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
2689         a float HFA. Fixes #413621.
2690
2691 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
2692
2693         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
2694         frame_size to args_size. Fixes build.
2695
2696 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
2697
2698         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
2699         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
2700
2701         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
2702         the stack are not unaligned. Fixes #413247.
2703         
2704 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
2705
2706         * mini.c: update jitted methods performance counters.
2707
2708 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
2709
2710         * mini-exceptions.c: increase the exceptions thrown performance
2711         counter in mono_handle_exception ().
2712
2713 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
2714
2715         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
2716         can work with netmodules.
2717
2718 2008-07-28  Geoff Norton  <gnorton@novell.com>
2719
2720         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
2721         regression tests.
2722
2723 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
2724
2725         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
2726         correct place.
2727
2728 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
2729
2730         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
2731           The float param registers and other param registers must be the 
2732           same index on Windows x64.
2733
2734         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
2735           ArgValuetypeAddrInIReg argument case.  Setting the argument
2736           op to OP_VTARG_ADDR (OP_REGOFFSET)).
2737
2738         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
2739           variable computed above as the copy length for arguments of storage
2740           type ArgValuetypeAddrInIReg.
2741
2742         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
2743           ArgValuetypeAddrInIReg argument case.  This case will rely on
2744           mono_arch_emit_outarg_vt to emit the correct code later in the process.
2745
2746         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
2747           a 32 byte stack allocation for all calls.  We will omit the adjustment for
2748           jump and tail call instructoins as they do not follow the typical call behavior.
2749
2750         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
2751           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
2752           local variable and pass the local variable by reference to the called method.
2753
2754         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
2755           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
2756           of a struct is passed in a register it must be saved with the other
2757           volatile argument on the stack.
2758
2759         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
2760           frame pointer the stack adjustment value must be saved to the unwind 
2761           info structure.
2762
2763         Contributed under MIT/X11 license.
2764
2765 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
2766
2767         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
2768         which got lost in the merge.
2769
2770 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
2771
2772         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
2773         build.
2774
2775         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
2776         
2777         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
2778         icalls, since they won't be patched.
2779
2780         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
2781         different code sequence when running under valgrind to prevent some valgrind
2782         errors.
2783
2784         * iltests.il.in: Add new regression test.
2785
2786         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
2787         end with a throw.
2788
2789         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
2790         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
2791
2792         * iltests.il.in: Add new test.
2793
2794         * aot-compiler.c: Fix some warnings.
2795
2796         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
2797         Fixes #412494.
2798
2799 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
2800
2801         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
2802         (mini_usage_jitdeveloper): Add a missing --wapi option.
2803
2804 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
2805
2806         * mini-codegen.c: Simplify the is_fp macros.
2807         (free_up_ireg): Remove, use free_up_reg instead.
2808         (free_up_reg): Fix the fp case.
2809
2810 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
2811
2812         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
2813         lowered earlier.
2814
2815         * exceptions-x86.c: Merge some changes which seemed to have got lost
2816         in the linear-ir merge.
2817
2818         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
2819
2820         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
2821         long vreg volatile even if the variable was already created.
2822
2823         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
2824         volatile variables.
2825
2826 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
2827
2828         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
2829
2830         * mini.c (mono_jit_compile_method_inner): Add support for 
2831         MONO_EXCEPTION_BAD_IMAGE.
2832
2833         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
2834         mini_method_get_context () returns NULL. Fixes #356531.
2835
2836         * mini.c (mono_method_to_ir): Ditto.
2837         
2838         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
2839         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
2840
2841 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
2842
2843         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
2844         in the LDFTN implementation.
2845
2846 2008-07-25  Mark Probst  <mark.probst@gmail.com>
2847
2848         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
2849         code, patch calls to icalls, too, even if they're not in the
2850         shared generic code hash.  Fixes #411962.
2851
2852 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
2853
2854         * cpu-x86.md: Increase the length of the fcall opcodes.
2855
2856         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
2857         calls returning floats.
2858
2859         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
2860         on NEWARR.
2861         
2862         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
2863         missed earlier.
2864
2865         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
2866         into the domain->method_code_hash.
2867
2868         * aot-compiler.c: Fix win32 build.
2869
2870         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
2871         
2872         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
2873         gshared NEWARR implementation.
2874
2875         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
2876
2877         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
2878         can be used outside of method_to_ir.
2879
2880         * mini.h (MonoCompile): Add arg_types field.
2881
2882         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
2883         
2884         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
2885         the values of the local arg_array and param_types array.
2886
2887 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
2888
2889         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
2890         got accesses might only get generated later when NEWOBJ is decomposed.
2891         
2892         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
2893         looking up the native code of the target method when a delegate is called
2894         for the first time.
2895
2896         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
2897         optimization.
2898
2899         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
2900
2901         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
2902         AOT work on platforms without a working dlsym implementation.
2903
2904         * mini.h: Bump AOT image format version.
2905         
2906 2008-07-24  Mark Probst  <mark.probst@gmail.com>
2907
2908         * mini-exceptions.c: Free a MonoType with
2909         mono_metadata_free_type() instead of g_free().
2910
2911         * aot-runtime.c: Free a MonoType.
2912
2913 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
2914
2915         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
2916         optimization.
2917
2918         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
2919         fp stack on x86.
2920
2921 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
2922         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
2923         profiler hook.
2924
2925 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
2926
2927         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
2928         NEWOBJ calls on valuetypes.
2929
2930         * iltests.il.in: Add new test.
2931
2932         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
2933
2934 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
2935
2936         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
2937         is no longer needed.
2938
2939         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
2940         non register sized integer arguments.
2941         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
2942         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
2943         emit_memcpy2 ().
2944
2945         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
2946         CEE_MONO_RETOBJ.
2947         
2948         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
2949         two a binop with different sized arguments is emitted.
2950
2951         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
2952         instruction in the ins==NULL case.
2953
2954 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
2955
2956         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
2957
2958         * mini-x86.c: Fix osx build.
2959
2960         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
2961         opcodes as well.
2962
2963         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
2964         instruction for non int sized variables.
2965
2966         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
2967         implementation.
2968
2969 2008-07-23  Robert Jordan  <robertj@gmx.net>
2970
2971         * method-to-ir.c: Fix MSVC build.
2972
2973 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
2974
2975         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
2976         a non int sized type, widen it to an int since newer versions of gcc seem to
2977         generate code which needs this.
2978
2979         * ssa2.c abcremoval2.c: Fix warnings.
2980
2981         * *: Merge the Linear IR branch.
2982
2983         The original branch is at trunk/branches/vargaz/mini-linear-il, and
2984         the ChangeLog file there describes all the changes done over the years. 
2985         Further documentation can be found at www.mono-project.com/Linear_IL.
2986
2987 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
2988
2989         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
2990           The float param registers and other param registers must be the 
2991           same index on Windows x64.
2992
2993         Contributed under MIT/X11 license.
2994
2995 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
2996
2997         * mini.c: Make the previous fix GC safe.
2998
2999 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
3000
3001         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
3002
3003 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
3004
3005         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
3006           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
3007           ArgValuetypeAddrInIReg instead.
3008
3009         Contributed under MIT/X11 license.
3010
3011 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * mini-codegen.c (get_register_spilling): Fix a warning.
3014
3015 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
3016
3017         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
3018         for types which the initialization fails. Raises the provided exception
3019         at the right stop after cleanup.
3020
3021 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
3022
3023         * aot-compiler.c: Free most of the memory allocated during compilation.
3024
3025         * mini.c (mini_parse_debug_options): Fix a leak.
3026         
3027         * mini.c (mini_method_compile): Don't add the method to the jit info tables
3028         during aot compilation.
3029
3030 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
3031
3032         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
3033         it has too much register pressure.
3034
3035 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
3036
3037         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
3038
3039 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3040
3041         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3042         on x86.
3043
3044         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
3045         on amd64 similar to the way it is done on arm.
3046
3047         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3048
3049         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
3050         consistency, normalize error messages, avoid loading aot-only modules in
3051         normal mode.
3052
3053         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
3054         for consistency.
3055
3056         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
3057
3058 2008-07-11  Martin Baulig  <martin@ximian.com>
3059
3060         * debug-debugger.h
3061         (MonoDebuggerInfo): Add `interruption_request'.
3062
3063 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
3064
3065         * aot-compiler.c (emit_plt): Remove some dead code.
3066
3067         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
3068
3069         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
3070         return the plt info offset belonging to a given plt entry.
3071
3072         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
3073         mono_aot_get_plt_info_offset.
3074         
3075         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
3076         similar to the amd64 code by makeing jumps through a separate jump table 
3077         instead of embedding the jump addresses into the code.
3078
3079 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
3080
3081         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
3082         method.
3083
3084 2008-07-10  Martin Baulig  <martin@ximian.com>
3085
3086         * mini.c (mini_method_compile): Disable generics sharing when
3087         running in the debugger.
3088
3089 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3090
3091         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
3092
3093         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
3094         the local register allocator from running out of registers on x86 when 
3095         using aot.
3096
3097 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
3098
3099         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
3100         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
3101         C4146.
3102
3103         Contributed under MIT/X11 license.
3104
3105 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
3106
3107         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
3108         speed up the assembler.
3109
3110 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3111
3112         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
3113         support.
3114
3115         * mini.c: Move the soft float handling macros a bit earlier, add 
3116         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
3117         place.
3118
3119         * mini.h: Add prototype for mono_arch_fixup_jinfo.
3120
3121         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
3122         read-only to help catch code allocation requests.
3123         
3124         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
3125         and turn it off when using --aot-only or when compiling with --aot=full.
3126
3127         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
3128         jump table for switches from the normal domain mempool, not the code
3129         manager.
3130
3131         * mini-trampolines.c (get_unbox_trampoline): New function to return an
3132         unbox trampoline which handles aot-only mode too.
3133
3134         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
3135         an AOTed unbox trampoline.
3136
3137         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
3138
3139 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3140
3141         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
3142         ""
3143
3144         Contributed under MIT/X11 license.
3145
3146 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
3147
3148         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
3149           the unwind information for the method at the end of the allocated block.
3150           
3151         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
3152           MonoCompileArch to hold the unwind info for SEH on Winx64
3153         
3154         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
3155           frame pointer info for the method being compiled.
3156           
3157         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
3158           the call to mono_exception_from_token.
3159           
3160         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
3161           storing the method prolog information in a format that the Winx64 SEH can understand.  This
3162           information is stored a the end of the method block because it is all 32-bit offset based.
3163
3164         Contributed under MIT/X11 license.
3165
3166 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
3167
3168         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
3169
3170         * wapihandles.c: Fix warnings.
3171
3172         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
3173         mode.
3174
3175         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
3176         mono_jit_compile_method in aot-only mode since that calls the type 
3177         initializer.
3178         
3179         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
3180         get_delegate_invoke_impl in aot-only mode.
3181
3182         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
3183
3184 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
3185
3186         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
3187
3188         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
3189         is on by default.
3190
3191         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
3192
3193         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
3194         init trampoline from the AOT file as well.
3195
3196         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
3197         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
3198         code.
3199
3200         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
3201         mono_init.
3202
3203         * exceptions-amd64.c: Add _full variants for the remaining exception code
3204         creation functions as well, allow emission of relocatable code, remove
3205         caching since that is now done by the caller.
3206
3207         * mini-exceptions.c: Add _full variants for the remaining exception code
3208         creation functions as well, add aot-only support.
3209
3210         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
3211         if we can determine a proper token for them.
3212         (add_wrappers): Add a few more wrappers.
3213         (emit_method_code): Remove some dead code.
3214         (emit_trampolines): Emit exception code too.
3215
3216         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
3217
3218         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
3219         mono_array_new_va which avoids varargs.
3220
3221         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
3222
3223         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
3224         mono_arch_create_specific_trampoline () in all places.
3225
3226         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
3227         a bit so it can be used for other things as well.
3228         
3229         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
3230         on demand as well.
3231
3232         * exceptions-amd64.c: Rename the caching from the exception code creation
3233         functions, it is done by the caller instead.
3234         
3235         * exceptions-amd64.c: Change the signature of the exception code creation 
3236         functions to allow the creation of relocatable code later.
3237
3238         * mini-exceptions.c: Add a set of functions to query the various 
3239         runtime-generated exception functions.
3240
3241         * mini.c mini-exceptions.c: Use the newly added functions instead of the
3242         mono_arch_.. () functions.
3243         
3244 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3245
3246         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
3247
3248         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
3249
3250         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
3251         (mini_get_vtable_trampoline): Ditto.
3252
3253         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
3254         code in the AOT case by returning the code size and a list of relocations to
3255         the caller.
3256
3257         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
3258
3259 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
3260
3261         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
3262           clean the stack.
3263
3264         Contributed under MIT/X11 license.
3265
3266 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
3267
3268         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
3269         so the buffer size can be computed correctly. Fixes #404735.
3270
3271         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
3272         normally as cfg->debug_info is already freed.
3273
3274 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
3275
3276         * mini-amd64.c: For calls returning vtypes in registers, don't store
3277         the return address on the stack, instead allocate a separate local for
3278         it. Fixes #404729.
3279
3280 2008-07-05  Mark Probst  <mark.probst@gmail.com>
3281
3282         * mini-trampolines.c, mini.h: Add an argument to
3283         mono_create_jit_trampoline_in_domain() for turning off the adding
3284         of the sync wrapper.
3285
3286         * mini.c: Use the JIT trampoline without sync instead of
3287         ldftn_nosync in static RGCTX invoke wrappers so that the call can
3288         be patched.
3289
3290 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3291
3292         * driver.c: Turn on GSHARED optimization by default.
3293
3294 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
3295
3296         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
3297         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
3298
3299         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
3300         create a variant of the generic trampoline code callable from AOTed trampolines.
3301
3302         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
3303         trampoline code callable from AOTed trampolines.
3304
3305         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
3306
3307 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3308
3309         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
3310         pass-through manner.
3311
3312         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
3313         and don't fail sharing for them anymore.
3314
3315         * mini-exceptions.c: Handle exceptions in shared generic methods.
3316
3317         * generic-sharing.c: When checking the context of a generic
3318         method, also check its class's context.  Don't treat wrappers as
3319         sharable.
3320
3321         * mini-trampolines.c: Some code factored out to
3322         metadata/generic-sharing.c.  Handle the MRGCTX case.
3323
3324         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
3325         we must deal with the method being of another instantiation of the
3326         class.  Add static rgctx invoke wrappers to generic methods.
3327
3328 2008-07-04  Mark Probst  <mark.probst@gmail.com>
3329
3330         * mini.c: Provide all jit infos of generic shared methods with a
3331         generic jit info.
3332
3333         * mini-exceptions.c: Handle the new situation that a generic info
3334         might be available, but not info about the this/vtable/mrgctx
3335         variable.
3336
3337 2008-07-03  Mark Probst  <mark.probst@gmail.com>
3338
3339         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
3340         generic methods.
3341
3342 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
3343
3344         * dominators.c (check_dominance_frontier): Fix a warning.
3345
3346         * mini.h: Add some missing prototypes.
3347
3348         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
3349
3350         * driver.c (mono_jit_init_version): Correct the comments since the first
3351         argument should be the name of the root domain, not a filename.
3352
3353         * aot-runtime.c (make_writable): Error out if this is called while running
3354         with --aot-only.
3355         (load_aot_module): Ditto.
3356
3357         * aot-compiler.c: Really fix the computation of method indexes.
3358
3359         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
3360         optimizations as this is no longer called frequently.
3361
3362         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
3363         method and the invoke impl code and pass it to the delegate trampoline instead of
3364         just the delegate class.
3365
3366 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
3367
3368         * aot-compiler.c: Fixup the computation of method indexes.
3369         (add_wrappers): Create the base methods of the runtime invoke wrappers using
3370         the method builder infrastructure.
3371
3372         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
3373         has no header.
3374
3375         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
3376         mode, load the method right away instead of creating a trampoline.
3377
3378         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
3379
3380         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
3381         some checks a bit.
3382
3383 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
3384
3385         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
3386         (mono_aot_load_method): Use method_index instead of method->token.
3387
3388         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
3389         can handle icalls etc. properly.
3390
3391         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
3392
3393         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
3394
3395         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
3396         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
3397         JIT_ICALL_ADDR patch type.
3398
3399         * patch-info.h: Add JIT_ICALL_ADDR patch type.
3400
3401         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
3402         request flag.
3403         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
3404
3405         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
3406
3407 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
3408
3409         * mini.c: Use domain->jit_code_hash_lock for controlling access to
3410         domain->jit_code_hash.
3411
3412 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
3413
3414         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
3415
3416 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
3417
3418         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
3419         get_this_arg_from_call, let it compute it when needed.
3420
3421         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
3422         gsctx from code only when needed.
3423
3424         * mini-trampolines.c (get_generic_context): Rename this to 
3425         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
3426         it can be called by the arch backends.
3427
3428         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
3429
3430 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
3431
3432         * driver.c (mono_main): Add experimental --aot-only command line option.
3433
3434         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
3435         set.
3436
3437 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
3438
3439         * driver.c (DllMain): Remove mono_module_handle.
3440
3441         Contributed under MIT/X11 license.
3442
3443 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
3444
3445         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
3446         for emitting methods which are not in the source assembly. Detect and report
3447         failure of assembling+linking.
3448         
3449         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
3450
3451         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
3452
3453 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
3454
3455         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
3456
3457 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
3458
3459         * mini.h: Remove some obsolete prototypes.
3460
3461         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
3462
3463 2008-06-24  Mark Probst  <mark.probst@gmail.com>
3464
3465         * mini.c (get_object_generic_inst): Variable-sized arrays are not
3466         supported by Visual Studio, so use alloca().
3467
3468 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
3469
3470         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
3471         Fixes #402585.
3472
3473 2008-06-23  Mark Probst  <mark.probst@gmail.com>
3474
3475         * mini.c: Fail sharing of a generic method if it contains an open
3476         catch clause (because we don't pass MRGCTXs yet).
3477
3478 2008-06-23  Mark Probst  <mark.probst@gmail.com>
3479
3480         * mini.c: When compiling a method with generic sharing, insert the
3481         method instantiated with an all-Object generic context into the
3482         jit info table, instead of the context of the first instantiation
3483         of the method we happen to compile.
3484
3485 2008-06-18  Martin Baulig  <martin@ximian.com>
3486
3487         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
3488         `major_version' and `minor_version'.
3489
3490 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3491
3492         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
3493         mono_method_is_generic_sharable_impl() takes an additional
3494         argument specifying whether to treat type variables as reference
3495         types.
3496
3497 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3498
3499         * mini.h: Removed obsolete prototypes.
3500
3501 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3502
3503         * mini.c: Don't fail generic sharing for initobj and sizeof - we
3504         already handle them.
3505
3506 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3507
3508         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
3509         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
3510         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
3511         tramp-x86.c: Added a MonoGenericContext* argument to
3512         mono_arch_get_unbox_trampoline() so that it can call other
3513         functions which require it.
3514
3515 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3516
3517         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
3518         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
3519         mono_arch_get_this_arg_from_call() takes a
3520         MonoGenericSharingContext* as well.
3521
3522 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3523
3524         * mini.c: Factor out code for emitting unbox into emit_unbox() and
3525         implement generic sharing of unbox.
3526
3527 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3528
3529         * mini.c: Don't compute the vtable to determine whether a field is
3530         special static, because it might not work for open types.
3531
3532 2008-06-17  Mark Probst  <mark.probst@gmail.com>
3533
3534         * mini.c: Removed the unused token_type and token_source arguments
3535         from get_runtime_generic_context_ptr().
3536
3537 2008-06-17  Marek Habersack  <mhabersack@novell.com>
3538
3539         * mini.c (ADD_BINOP): fix the build
3540
3541 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
3542
3543         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
3544         a widening op.
3545
3546 2008-06-16  Mark Probst  <mark.probst@gmail.com>
3547
3548         * mini.h: Removed class relations enum that's not used anymore.
3549
3550 2008-06-16  Mark Probst  <mark.probst@gmail.com>
3551
3552         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
3553
3554         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
3555         the lazy fetch trampoline access code.
3556
3557 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
3558
3559         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
3560
3561 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
3562
3563         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
3564
3565         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
3566
3567         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
3568
3569 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
3570
3571         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
3572         intrinsics.
3573
3574         * mini-ops.h: Add MIN/MAX_UN opcodes.
3575
3576         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
3577         intrinsics.
3578
3579         * basic-math.cs: Add more min/max tests.
3580
3581         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
3582
3583 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3584
3585         * mini.c: Small fix in the prologue of emit_castclass.
3586
3587 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
3588
3589         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
3590
3591         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
3592         do not work even for unsigned types. Fixes #400014.
3593
3594         * basic-math.cs: Add regression tests for unsigned Min/Max.
3595
3596 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3597
3598         * mini.c: Added additional context_used argument to several
3599         functions, which will be needed for sharing generic methods.  Use
3600         GET_RGCTX macro wherever appropriate.  Declare only one
3601         context_used in mono_method_to_ir().
3602
3603 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3604
3605         * mini.c, generic-sharing.c: Removed generic class relations.
3606
3607         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
3608         functions due to MRGCTX changes.
3609
3610 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3611
3612         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
3613         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
3614         with calculated IMT.
3615
3616         * mini.c: Generic sharing of calls via generic interfaces.
3617
3618         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
3619         generic method with non-constant MonoGenericContext*.  Instead,
3620         the context is taken out of the method itself.
3621
3622 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3623
3624         * mini.c: Generic sharing of ldvirtftn.
3625
3626 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3627
3628         * mini.c: Generic sharing of ldftn.
3629
3630 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3631
3632         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
3633
3634 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3635
3636         * mini.c: Generic sharing of the special case of ldtoken followed
3637         by a call to GetTypeFromHandle.
3638
3639 2008-06-13  Mark Probst  <mark.probst@gmail.com>
3640
3641         * mini.c: Generic sharing of box for nullable types.
3642
3643 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
3644
3645         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
3646         are passed on the stack. Fixes #324807.
3647
3648 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
3649
3650         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
3651         for the ArgValuetypeAddrInIReg case.
3652
3653         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
3654         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
3655
3656         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
3657         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
3658         local variable and pass the local variable by reference to the called method.
3659           
3660         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
3661         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
3662
3663         Contributed under MIT/X11 license.
3664
3665 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
3666
3667         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
3668
3669         * debug-mini.c (mono_debug_print_vars): Release memory after printing
3670         everything.
3671
3672 2008-06-10  Martin Baulig  <martin@ximian.com>
3673
3674         * debug-mini.c
3675         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
3676
3677 2008-06-09  Kornél Pál  <kornelpal@gmail.com>
3678
3679         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
3680         possible error when no arguments are passed.
3681
3682         Contributed under MIT/X11 license.
3683
3684 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
3685
3686         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
3687         where the file name is NULL.
3688
3689 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
3690
3691         * mini.c: Fix s390 build.
3692
3693 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
3694
3695         * trace.c (mono_trace_parse_options): Fix warnings.
3696
3697         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
3698
3699 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
3700
3701         * mini.c (remove_block_if_useless): Avoid printing the method name.
3702         
3703         * mini.c: Remove needless setting of ins->cil_code which is now done by 
3704         MONO_INST_NEW.
3705
3706         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
3707         LMF. Not yet used.
3708
3709         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
3710         translated code after it has been patched.
3711
3712 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
3713
3714         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
3715         avoid problems during code patching on SMP systems.
3716         (emit_call): Avoid adding a patch info which is already added by 
3717         emit_call_body.
3718         (mono_arch_emit_exceptions): Ditto.
3719
3720 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
3721
3722         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
3723         MONO_TYPE_ISSTRUCT already checks for it.
3724
3725 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
3726
3727         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
3728           structs with floats on Winx64 the float registers are not used.  
3729           The integer registers are always used..
3730         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
3731           only one register will be used and only if the size of the struct 
3732           is 1,2,4, or 8 bytes.
3733
3734         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
3735           to work for Winx64.
3736
3737         Contributed under MIT/X11 license.
3738
3739 2008-06-05  Martin Baulig  <martin@ximian.com>
3740
3741         * debug-debugger.c (debugger_lookup_class): Also call
3742         mono_class_setup_methods() here; we're only called from RTI.
3743
3744 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
3745
3746         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
3747         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
3748         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
3749         Post-process object files and add dtrace-generated object, if necessary.
3750
3751         Contributed under MIT/X11 license.
3752
3753 2008-06-04  Mark Probst  <mark.probst@gmail.com>
3754
3755         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
3756         element class.
3757
3758         * mini.c: Generic sharing for unbox.any and castclass.
3759
3760 2008-06-04  Mark Probst  <mark.probst@gmail.com>
3761
3762         * mini.c: Ignore tailcall prefix in shared generic code and when
3763         doing calls which require a vtable/rgctx argument.
3764
3765 2008-06-04  Mark Probst  <mark.probst@gmail.com>
3766
3767         * mini.c: Don't free the JIT info.
3768
3769         * driver.c: Changes in the JIT info table testing code.
3770
3771 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
3772
3773         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
3774         interruption. Fix some warnings.
3775
3776         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
3777         interruption_checkpoint.
3778
3779 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
3780
3781         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
3782         from embedding applications.
3783
3784 2008-06-02  William Holmes  <billholmes54@gmail.com>
3785
3786         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
3787           reserving 32 bytes on the stack when making calls. 
3788
3789         Contributed under MIT/X11 license.
3790
3791 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
3792
3793         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
3794         the linear IL branch.
3795
3796         * driver.c: Print out more information for --version on arm.
3797
3798 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
3799
3800         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
3801         bb_exit instead, since out of line bblocks might not actually be emitted
3802         out-of-line.
3803         
3804         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
3805         maximum epilog size for out of line bblocks if tracing is enabled.
3806
3807         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
3808
3809 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
3810
3811         * arrays.cs: Regression tests for allocating arrays with negative sizes.
3812
3813 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
3814
3815         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
3816         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
3817         opcodes.
3818
3819 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
3820
3821         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
3822         the 'value' to store is a constant.
3823
3824         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
3825
3826         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
3827         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
3828
3829 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
3830
3831         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
3832         for accessing method->generic_container.
3833
3834 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
3835
3836         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
3837         
3838         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
3839
3840         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
3841
3842         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
3843         fails.
3844
3845 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
3846
3847         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
3848
3849         * mini.c: Handle the case when mono_class_vtable () fails.
3850
3851 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
3852         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
3853         the stat profiler.
3854
3855 2008-05-22  Mark Probst  <mark.probst@gmail.com>
3856
3857         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
3858         together with domain sharing.
3859
3860 2008-05-22  Mark Probst  <mark.probst@gmail.com>
3861
3862         * mini.c: Treat callvirts to final methods like non-virtual calls
3863         when doing generic sharing, i.e. look them up in the runtime
3864         generic context.
3865
3866 2008-05-22  Mark Probst  <mark.probst@gmail.com>
3867
3868         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
3869         with computed types (for generic sharing).
3870
3871         * mini.c: Generic sharing for mkrefany and refanyval.
3872
3873 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
3874
3875         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
3876         possible.
3877
3878         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
3879         the generic sharing code.
3880         
3881         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
3882         when needed.
3883
3884 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
3885
3886         * mini.h: Remove the declaration of mono_aot_init_vtable ().
3887
3888 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
3889
3890         * driver.c: updated copyright date
3891
3892 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
3893
3894         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
3895         needed.
3896
3897 2008-05-19  Martin Baulig  <martin@ximian.com>
3898
3899         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
3900         pointing to the new `_mono_debug_using_mono_debugger' variable.
3901
3902         * driver.c
3903         (mono_main): Check mono_debug_using_mono_debugger() rather than
3904         the `MONO_INSIDE_MDB' environment variable to check whether we're
3905         inside the debugger.
3906
3907 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
3908
3909         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
3910         argument.
3911
3912 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
3913
3914         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
3915
3916         * mini.c: Added mini_assembly_can_skip_verification. This
3917         function checks if the assembly requested to skip verification. 
3918         Fixes part of #387274.
3919
3920 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
3921
3922         * mini.c (mini_get_method): Disable the check for open generic classes when
3923         using generic sharing.
3924
3925         * generics.cs: Add a test for #387034.
3926
3927         * mini.c (mini_get_method): Check whenever the method class is an open generic
3928         type, and return NULL in that case, causing a verification error. Fixes
3929         #384123.
3930
3931 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
3932
3933         * driver.c (mono_main): Revert r102623. The right
3934         thing to do is to enable the verifier under verifiable
3935         unless a --security flag was passed.
3936
3937         We need this non-trivial behavior for --verify-all otherwise
3938         mcs-compileall won't be able to use it. As it needs everything to
3939         be verified under validil.
3940
3941 2008-05-06  Martin Baulig  <martin@ximian.com>
3942
3943         Fix #383749.
3944
3945         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
3946         (mono_debugger_thread_cleanup): Likewise.
3947         (mono_debugger_extended_notification): Likewise.
3948
3949 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
3950
3951         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
3952         against both inflated and non-inflated methods. We need to check against the
3953         generic definition for cases where the instantiated method is not visible.
3954         We need to check against the inflated types for cases where the instantiation
3955         changes any super type. This fixes #382986.
3956
3957         Note that this doesn't need to be applied to other parts of mono_method_to_ir
3958         that check for visibiliy as generic params only appears as the type subject
3959         of tokens on call opcodes. Field manipulation and ldftn must always
3960         target an exact type.
3961
3962 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
3963
3964         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
3965         if no related --security flag is passed.
3966
3967 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
3968
3969         * mini-arch.h: Prepare support for ppc64.
3970
3971         Contributed under MIT/X11 license.
3972
3973 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
3974
3975         * aot-runtime.c: Prepare support for ppc64.
3976
3977         Contributed under MIT/X11 license.
3978
3979 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
3980
3981         * mini-ops.h: Prepare support for ppc64.
3982
3983         Contributed under MIT/X11 license.
3984
3985 2008-05-04  Andreas Färber  <andreas.faerber@web.de>
3986
3987         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
3988
3989         Contributed under MIT/X11 license.
3990
3991 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
3992
3993         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
3994         assemblies, since aot_name is not a full path, causing us to load MS.NET 
3995         assemblies on windows.
3996
3997 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
3998
3999         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
4000         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
4001         * main.c: Use UTF-8 encoded command line instead of Windows default code
4002         page on Windows to support Unicode.
4003         * driver.c (DllMain): New function for mixed-mode assembly support.
4004         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
4005         export __stdcall functions without decoration.
4006
4007         Contributed under MIT/X11 license.
4008
4009 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4010
4011         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
4012         saving it very early.
4013
4014 2008-04-28  Mark Probst  <mark.probst@gmail.com>
4015
4016         * mini.h, mini.c: Lots of code for accessing the old RGCTX
4017         deleted.  The only way to access the new RGCTX is via the
4018         trampline.
4019
4020         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
4021         vtable instead of the RGCTX to static methods.
4022
4023         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
4024         accessing the new RGCTX.
4025
4026         * generic-sharing.c: There is no separation between self, type
4027         arguments and other types in the RGCTX anymore.
4028
4029 2008-04-25  Jonathan Chambers <joncham@gmail.com>
4030
4031         * mini-amd64.c (add_general): Remove previous stack adjustment.
4032         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
4033         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
4034         for 32 bytes of stack space reserved for all calls.
4035         
4036         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
4037         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
4038         adjustment.
4039         
4040         Code contributed under MIT/X11 license.
4041
4042 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
4043
4044         * mini.c (mini_method_verify): Only verify non-inflated methods, check
4045         against the root definition, peeling out method and type instantiations.
4046         Cache verify success results, code that fails verification is still
4047         checked multiple times.
4048
4049 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
4050
4051         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
4052
4053 2008-04-23  Jonathan Chambers <joncham@gmail.com>
4054
4055         * mini-amd64.c (add_general): Always increment stack on Win64.
4056         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
4057         on Win64.
4058         
4059         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
4060         stack based argument handling on Win64.
4061         
4062         Code contributed under MIT/X11 license.
4063
4064 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
4065
4066         * Makefile.am (version.h): Add support for git-svn.
4067
4068 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
4069
4070         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
4071         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
4072         avoiding allocations and libc functions which might deadlock.
4073         
4074         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
4075         'no-gdb-backtrace' option is set.
4076
4077         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
4078
4079         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
4080
4081 2008-04-21  Martin Baulig  <martin@ximian.com>
4082
4083         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
4084         and `get_lmf_addr'; `notification_address' is no longer a pointer.
4085
4086 2008-04-21  Martin Baulig  <martin@ximian.com>
4087
4088         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
4089         `thread_vtable', `event_handler_ptr' and `event_handler'.
4090
4091 2008-04-21  Martin Baulig  <martin@ximian.com>
4092
4093         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
4094         allows delayed initialization of the `executable_code_buffer' when
4095         attaching.
4096
4097 2008-04-21  Martin Baulig  <martin@ximian.com>
4098
4099         * mini.h (mono_debugger_create_notification_function): Removed.
4100         * tramp-*.c (mono_debugger_create_notification_function): Removed.
4101
4102         * mdb-debug-info64.s
4103         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4104
4105         * mdb-debug-info32.s
4106         (MONO_DEBUGGER__notification_function): Added this in the .text section.
4107
4108         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
4109         currently only works on x86 and x86_64, so don't create it on ppc.
4110
4111 2008-04-21  Martin Baulig  <martin@ximian.com>
4112
4113         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
4114
4115         * mini.c
4116         (mini_method_compile): In the fp elimination check, check
4117         `debug_options.mdb_optimizations' in addition to
4118         mono_debug_using_mono_debugger().       
4119
4120         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
4121         disable some JIT optimizations which are only disabled when
4122         running inside the debugger.
4123         Added `--help-debug' option to describe the debugging options.
4124         (parse_debug_options): New static function to parse the `--debug'
4125         options, so we can easily add more stuff in future.
4126
4127 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
4128
4129         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
4130         the method has no body.
4131
4132 2008-04-19  Jonathan Chambers <joncham@gmail.com>
4133
4134         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
4135         assembly is not allowed in MSVC 64-bit compiler. 
4136         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
4137         as we get floating point exceptions everywhere.
4138         
4139         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
4140         correctly align arguments for call to throw_exception.
4141         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
4142         
4143         Code contributed under MIT/X11 license.
4144
4145 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
4146
4147         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
4148
4149 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
4150
4151         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
4152
4153         * mini-amd64.c (NEW_INS): Set cil_code.
4154
4155         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
4156         from mini-amd64.c so all debugger related logic is in one place.
4157
4158         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
4159         later won't have a random ip assigned to them.
4160
4161 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
4162
4163         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
4164         the arch specific function initializes code_size.
4165         (mono_create_delegate_trampoline): Ditto.
4166
4167         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
4168         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
4169         platforms.
4170
4171         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
4172         running under the debugger.
4173
4174         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
4175         debugger.
4176
4177         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
4178         debugger. Also move the disabling of optimizations here from driver.c.
4179         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
4180         debugger.
4181
4182         * mini.h (MonoCompile): Add a few new flags.
4183
4184 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
4185
4186         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
4187         so the cil_code field of created MonoInst's is properly set.
4188         (mini_select_instructions): Ditto.
4189
4190         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
4191         (MONO_INST_NEW_CALL): Ditto.
4192
4193         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
4194         in many places so the ins->cil_code field is properly initialized.
4195
4196         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
4197         place.
4198
4199 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
4200
4201         * mini.c (mini_method_compile): Print a different message when compiling a 
4202         shared method.
4203         
4204         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
4205         > 1.
4206
4207 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4208
4209         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
4210         SSE2 instructions.
4211
4212         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
4213         
4214 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * mini.c (handle_stack_args): Make this return void since its return value was
4217         never used. Also set cfg->unverifiable for invalid IL instead of calling
4218         G_BREAKPOINT ().
4219
4220 2008-04-10  Mark Probst  <mark.probst@gmail.com>
4221
4222         * mini.c: Make sure "this" is live in catch clauses with type
4223         variables in shared generic code.
4224
4225 2008-04-08  Mark Probst  <mark.probst@gmail.com>
4226
4227         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
4228         generic_class_is_reference_type() to ensure the proper behaviour
4229         when sharing generic code and the type in question is a type
4230         argument.
4231
4232 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4233
4234         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
4235         race conditions when printing thread dumps. Fixes #377738.
4236
4237 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
4238         
4239         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
4240         shows up when both MonoInst arguments can cause aliasig.
4241         There is likely no way in the current JIT to trigger this problem, but
4242         it showed up in the development of generics sharing, when in a new
4243         opcode both args of an OP_GROUP can be aliases (addresses of a local).
4244         When the generics sharing code will be committed, its tests will be
4245         valid also for this bug.
4246
4247 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
4248
4249         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
4250         PATCH_INFO_METHOD.
4251
4252         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
4253         NULL.
4254
4255 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
4256
4257         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
4258         use a more detailed exception message for InvalidCastException.
4259
4260         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
4261
4262         * driver.c (mono_main): Add --debug=casts option to turn on better 
4263         InvalidCastException message details.
4264
4265         * mini.c (mini_get_debug_options): New helper function to return the address of
4266         the debug_options variable.
4267
4268         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
4269         the jit_tls TLS variable.
4270
4271         * mini.c (mono_jit_tls): New TLS variable.
4272
4273         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
4274         option is used.
4275
4276 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
4277
4278         * mini.h: Removed verifer related stuff. This code was moved to verify.c
4279
4280         * mini.c: Removed verifer related stuff, code moved to verify.c.
4281
4282         * driver.c: Using code from verify.c instead of mini.c.
4283
4284 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
4285
4286         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
4287         longer valid.
4288
4289 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
4290
4291         * mini.c (check_for_method_verify): Enabling verification of
4292         corlib if mono_verify_all is set. Bugs in the verifier preventing that
4293         have been fixed.
4294
4295 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
4296
4297         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
4298         caller saved registers as well.
4299         
4300         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
4301         saved registers as well.
4302
4303 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
4304
4305         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
4306
4307         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
4308         code.
4309
4310 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
4311
4312         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
4313         to get_call_info.
4314         (get_call_info): Take a gsctx argument instead of 'cfg'.
4315
4316 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
4317
4318         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
4319         mono_verify_all is set.
4320
4321         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
4322
4323         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
4324
4325 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
4326
4327         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
4328         an exception.
4329
4330         * driver.c mini.c mini.h: Add a --verify-all development option to test the
4331         verifier and the code generated by the compiler.
4332
4333 2008-03-25  Mark Probst  <mark.probst@gmail.com>
4334
4335         * mini.c: Generic sharing of the non-nullable case of the box
4336         instruction.
4337
4338 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
4339
4340         * inssel.brg: Fix the build.
4341
4342         * iltests.il.in: Add a test for lconv.ovf.u8.un.
4343
4344 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
4345
4346         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
4347         Array:Address. Fixes #372410.
4348
4349         * iltests.il.in: New tests for readonly prefix.
4350
4351 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
4352
4353         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
4354         mini-trampolines.c.
4355
4356         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
4357         mini-exceptions.c.
4358
4359         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
4360         
4361         * mini.c (mono_decompose_op_imm): New helper function.
4362
4363         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
4364         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
4365         return value.
4366
4367         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
4368         mono_arch_output_basic_block. Fix warnings.
4369
4370         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
4371         for now.
4372
4373 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
4374
4375         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
4376         since the extra frame is now detected automatically inside the loop.
4377
4378         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
4379         opts which are now in mono_peephole_ins ().
4380         
4381         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
4382
4383         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
4384         frames and skip duplicate managed-to-native frames. Fixes #367665.
4385
4386         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
4387         opts which are now in mono_peephole_ins ().
4388         (mono_arch_peephole_pass_2): Ditto.
4389
4390         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
4391
4392         * mini-codegen.c (mono_peephole_ins): New helper function containing the
4393         arch independent peephole optimizations.
4394
4395         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
4396         opts which are now in mono_peephole_ins ().
4397
4398         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
4399         
4400         * mini-s390.c (mono_arch_output_basic_block): Fix build.
4401
4402         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
4403         pattern.
4404
4405         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
4406         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
4407         opcode. 
4408
4409 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
4410
4411         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
4412         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
4413         return value.
4414
4415         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
4416         mono_arch_output_basic_block. Fix warnings.
4417
4418 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
4419
4420         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
4421         conv.ovf.u.un.
4422
4423 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
4424
4425         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
4426         conv.ovf.u.un.
4427
4428         * iltests.il: Add new tests.
4429
4430 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
4431
4432         * mini.c: Removed Windows version macros.
4433
4434 2008-03-20  Mark Probst  <mark.probst@gmail.com>
4435
4436         * generic-sharing.c: Put reflection types in the extensible part
4437         of the runtime generic context.
4438
4439         * mini.c: Generic sharing of the GetTypeHandle special case of the
4440         ldtoken instruction.
4441
4442 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
4445
4446         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
4447         
4448         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
4449         consistency with the other version on the linear IR branch.
4450
4451         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
4452
4453         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
4454
4455         * iltests.il.in: Add new tests.
4456
4457 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
4458
4459         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
4460
4461         * iltests.il.in: Add new tests.
4462
4463 2008-03-19  Mark Probst  <mark.probst@gmail.com>
4464
4465         * mini.c: Two variables with the same name were declared in
4466         nesting contexts and one wasn't initialized.  Fixed.
4467
4468 2008-03-19  Mark Probst  <mark.probst@gmail.com>
4469
4470         * mini.c: Generic sharing of the initobj instruction.
4471
4472 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
4473
4474         * mini.c: make the test to optimize ldtoken from typeof() more
4475         precise.
4476
4477 2008-03-18  Mark Probst  <mark.probst@gmail.com>
4478
4479         * mini.c: Generic sharing of the initobj instruction for reference
4480         types.
4481
4482 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
4483
4484         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
4485         the mono_breakpoint_clean_code() code to perform bound checks.
4486
4487 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
4488
4489         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
4490         mono_arch_patch_callsite() to include the start of the managed method
4491         to be able to perform bound checks.
4492
4493 2008-03-17  Mark Probst  <mark.probst@gmail.com>
4494
4495         * mini.c: Generic sharing for the isinst instruction.
4496
4497 2008-03-17  Mark Probst  <mark.probst@gmail.com>
4498
4499         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
4500         inssel-long32-mips.brg: Added opcodes for doing indirect calls
4501         with the runtime generic context argument.
4502
4503         * mini.c: Share calls to several types of unsharable methods by
4504         putting the address of the method code in the runtime generic
4505         context and doing an indirect call.
4506
4507         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
4508         to switches.
4509
4510 2008-03-16  Mark Probst  <mark.probst@gmail.com>
4511
4512         * generic-sharing.c: Change due to a change in the runtime genric
4513         context API.
4514
4515 2008-03-15  Martin Baulig  <martin@ximian.com>
4516
4517         * tramp-x86.c
4518         (mono_arch_nullify_class_init_trampoline): Add call to
4519         mono_breakpoint_clean_code() to make things work when running
4520         inside the debugger.
4521
4522         * tramp-amd64.c
4523         (mono_arch_nullify_class_init_trampoline): Add call to
4524         mono_breakpoint_clean_code() to make things work when running
4525         inside the debugger.
4526
4527 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
4528
4529         * inssel-long.brg (reg): Fix 64 bit build.
4530
4531 2008-03-14  Mark Probst  <mark.probst@gmail.com>
4532
4533         * mini.c, mini.h: Share static generic code by passing it an
4534         implicit argument pointing to the runtime generic context.
4535
4536         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
4537         inssel-long32-mips.brg: New opcodes for calling shared static,
4538         which need to be passed the runtime generic context.
4539
4540         * mini-amd64.c, mini-x86.c: Save the runtime generic context
4541         argument on the stack in the prologue if needed.  New function for
4542         finding the runtime generic context argument from the registers
4543         saved by the trampoline.
4544
4545         * mini-amd64.h, mini-x86.h: Specify which register to use for the
4546         runtime generic context argument.
4547
4548         * tramp-amd64.c: Also restore the register used for the runtime
4549         generic context argument.
4550
4551         * mini-trampoline.c: Resolve shared static calls by consulting the
4552         runtime generic context via the new argument.
4553
4554         * generic-sharing.c: Add an argument to sharability-checking
4555         functions that specifies whether type variables should be treated
4556         as sharable type arguments.
4557
4558         * inssel-x86.brg: Removed a superfluous, buggy rule.
4559
4560         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
4561         to switches.
4562
4563 2008-03-14  Martin Baulig  <martin@ximian.com>
4564
4565         * debug-debugger.c (main_thread_handler): Call
4566         mono_runtime_run_main() without sending any notifications.
4567
4568         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
4569
4570 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
4571
4572         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
4573
4574 2008-03-14  Mark Probst  <mark.probst@gmail.com>
4575
4576         * tramp-x86.c: Fixed register restore offsets in the trampoline
4577         code for ECX and EDX.
4578
4579 2008-03-12  Geoff Norton  <gnorton@novell.com>
4580
4581         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
4582         different ucontext_t implementations.
4583         * exceptions-arm.c: Use the above defines to get exceptions working on 
4584         iPhone (based on a patch by Luke Howard lukeh@padl.com)
4585         * mini-arm.c: Implement iPhone icache support (based on a patch by
4586         Luke Howard lukeh@padl.com)
4587
4588 2008-03-12  Mark Probst  <mark.probst@gmail.com>
4589
4590         * mini.c: Enable generic sharing of calls to non-static
4591         non-interface non-generic non-value-type methods.
4592
4593         * mini-trampolines.c: Resolve calls from shared generic code.
4594
4595 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
4596
4597         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
4598
4599         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
4600
4601 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
4602
4603         * mini.c: some fixes for the AOT compiler.
4604
4605 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
4606
4607         * cpu-amd64.md: Add clob:1 to some float opcodes.
4608
4609 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
4610
4611         * mini.h: Added MiniVerifierMode enumeration.
4612
4613         * mini.c: Added mini_verifier_set_mode to control
4614         the usage of the new verifier.
4615
4616         * mini.c (mono_method): Integrated the new verifier.
4617
4618         * driver.c: Extended --security option with validil and
4619         verifiable options to activate the new verifier.
4620
4621 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
4622
4623         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
4624         optimization to ctors taking 0 or 2 arguments too.
4625
4626         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
4627         a bit.
4628
4629         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
4630
4631         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
4632
4633 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
4634
4635         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
4636         non-aot case as well.
4637
4638         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
4639
4640         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
4641         changes.
4642
4643         * aot-compiler.c (encode_patch): Ditto.
4644
4645         * mini.h (G_MININT32): Fix the definition of this.
4646
4647 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
4648
4649         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
4650
4651         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
4652
4653 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
4654
4655         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
4656         methods returning vtypes in registers.
4657         (mono_arch_allocate_vars): Ditto.
4658
4659         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
4660
4661         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
4662
4663         * generics.cs: Add a test from the linear IR branch.
4664
4665         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
4666
4667         * mini.c (inline_method): Cache failed inline attempts.
4668
4669 2008-03-04  Mark Probst  <mark.probst@gmail.com>
4670
4671         * mini.c: For shared methods of generic classes put the location
4672         of "this" into the MonoGenericJitInfo.
4673
4674         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
4675         register out of a MonoContext by register number.  Add the generic
4676         sharing context as an argument to mono_arch_find_this_argument().
4677
4678         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
4679         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
4680         for new arch function.
4681
4682         * mini-exception.c: Handle open exception clauses in shared
4683         generic code.
4684
4685         * mini-trampolines.c: Supply additional argument to
4686         mono_arch_find_this_argument().
4687
4688 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
4689
4690         * Makefile.am (regtests): Run the bench.exe tests last.
4691
4692 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
4693
4694         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
4695         a bit.
4696
4697 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
4698
4699         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
4700         with MS.
4701
4702         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
4703         
4704         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
4705
4706         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
4707         whose class has no cctor.
4708
4709         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
4710
4711 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
4712
4713         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
4714         unverified.
4715
4716 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
4717
4718         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
4719         to be in sync with the code on the linear IR branch.
4720
4721         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
4722
4723         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
4724
4725 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
4726
4727         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
4728
4729         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
4730
4731         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
4732
4733         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
4734
4735         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
4736         
4737         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
4738         body.
4739
4740 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
4741
4742         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
4743         OP_LOADR4_MEMBASE emission.
4744
4745         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
4746         (mono_spillvar_offset_float): Ditto.
4747
4748         * mini-mips.c (mono_arch_emit_prolog): Ditto.
4749
4750         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
4751         emission.
4752
4753         * basic-long.cs: Add regression tests for them.
4754
4755         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
4756         use.
4757         (mono_arch_allocate_vars): Fix representation of single-precision float
4758         argument.
4759         (mono_arch_output_basic_block): Ditto.
4760
4761         * inssel-mips.brg: Ditto, remove duplicate items.
4762
4763         * mini-mips.c (emit_load_volatile_arguments): New function to handle
4764         arguments of tail calls as on other platforms.
4765         (mono_arch_output_basic_block): Handle tail calls.
4766
4767         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
4768         register.
4769
4770         * objects.cs (test_5_pass_static_struct): Add test for it.
4771
4772         Contributed under MIT/X11 license.
4773
4774 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
4775
4776         * Makefile.am: Use gmcs for compiling the regression tests.
4777
4778         * *.2.cs *.2.il: Rename to *.cs and *.il.
4779
4780 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
4781
4782         * regalloc.h: Make the vassign array smaller.
4783
4784         * mini.c (mini_method_compile): Remove an unused field in cfg.
4785
4786         * mini-codegen.c: Add a bunch of micro optimizations.
4787
4788 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
4789
4790         * regalloc.h: Remove some unused fields.
4791
4792 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
4793
4794         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
4795
4796         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
4797
4798 2008-02-22  Mark Probst  <mark.probst@gmail.com>
4799
4800         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
4801
4802         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
4803         trampoline: Fetch an entry from the runtime generic context.  If
4804         it's NULL, jump to the actual trampoline to fill the runtime
4805         generic context.  Otherwise, return it.
4806
4807         * mini.c: Call the lazy fetch trampoline to get entries out of the
4808         runtime generic context.
4809
4810         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
4811         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
4812         tramp-sparc.c: Stubs for the lazy fetch trampoline.
4813
4814 2008-02-21  Mark Probst  <mark.probst@gmail.com>
4815
4816         * mini.c: Fetch data out of the extensible part of the runtime
4817         generic context instead of calling a helper function.
4818
4819         * generic-sharing.c: Some functions moved into
4820         metadata/generic-sharing.c.  Helper function for fetching other
4821         types now checks and asserts against extensible rgctx (just for
4822         debugging purposes - the helper function isn't called anymore
4823         unless for debugging).
4824
4825 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
4826
4827         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
4828         for tail calls up to the point that the tests in iltests.exe run. Also add a
4829         dummy CKFINITE implementation.
4830         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
4831         needed for trampoline LMF frames.
4832
4833         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
4834         trampoline LMF frames.
4835
4836 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
4837
4838         * mini.c (inline_method): clean any pending loader error when inlining fail.
4839         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
4840
4841 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
4842
4843         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
4844
4845         * aot-runtime.c (decode_patch_info): Ditto.
4846
4847         * mini.c (mono_resolve_patch_target): Ditto.
4848         
4849         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
4850         icall wrappers.
4851
4852         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
4853         
4854         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
4855         if it references an icall address.
4856
4857 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
4858
4859         * cpu-s390x.md: Remove some more unused opcodes.
4860         
4861         * cpu-s390x.md: Remove some unused opcodes.
4862
4863         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
4864         mono_op_imm_to_op ().
4865
4866         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
4867         instead of a switch statement.
4868         
4869         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
4870         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
4871
4872         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
4873         
4874         * mini-codegen.c: Remove unused mono_regstate2_... functions.
4875
4876         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
4877         -1.
4878
4879 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
4880
4881         * driver.c (mono_main): Improve error reporting when an assembly cannot be
4882         opened. Fixes #362607.
4883
4884         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
4885
4886         * iltests.il.in: Add a test for static methods in interfaces.
4887
4888 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
4889
4890         * genmdesc.c (build_table): Fix a crash on older glib versions.
4891
4892         * cpu-sparc.md: Remove some unused opcodes.
4893         
4894         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
4895         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
4896
4897         * cpu-amd64.md: Remove some unused opcodes.
4898
4899         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
4900         like the other opcodes.
4901
4902 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
4903
4904         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
4905
4906         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
4907
4908         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
4909         variables 'cfg' instead of 'm' for consistency.
4910
4911         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
4912
4913         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
4914         argument holding the vtype return address, to avoid the ambigious use of
4915         cfg->ret for this purpose.
4916
4917         * mini.c (NEW_RETLOADA): Use vret_addr if set.
4918
4919         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
4920         
4921         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
4922         new mono_print_ins () function which only takes one argument.
4923
4924 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
4925
4926         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
4927         macro arguments.
4928
4929 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
4930
4931         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
4932
4933         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
4934
4935         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
4936         opcodes and other small changes.
4937
4938         * mini-ops.h: Add some new opcodes from the linear IR branch.
4939
4940         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
4941
4942         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
4943         opcodes, use the REG_MEMBASE opcodes instead.
4944         
4945         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
4946         opcodes, use the REG_MEMBASE opcodes instead.
4947         
4948         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
4949         linear IR branch.
4950
4951         * mini.c (mono_op_imm_to_op): New helper function.
4952
4953         * mini-ops.h: Add some opcodes from linear IR branch.
4954
4955 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
4956
4957         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
4958         <tsv@solvo.ru>.
4959
4960 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
4961
4962         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
4963         OP_ICONV_TO_R4/R8.
4964
4965         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
4966
4967 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
4968
4969         * aot-compiler.c (emit_method_code): Add an assert.
4970
4971         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
4972         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
4973         methods.
4974
4975 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
4976
4977         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
4978         some load/store opcodes so they are consistent. 
4979         (mono_arch_emit_prolog): Simplify some code.
4980
4981         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
4982
4983         * objects.cs: Add tests for large argument offsets on ARM.
4984
4985         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
4986         stack offsets. Fixes #359651.
4987
4988         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
4989
4990         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
4991
4992         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
4993
4994         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
4995
4996         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
4997
4998         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
4999         rid of CEE_CONV_R_UN.
5000
5001         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
5002
5003 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
5004
5005         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
5006
5007         * mini.c (mono_normalize_opcodes): Add some more opcodes.
5008
5009         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
5010
5011         * cpu-amd64.md: Remove some unused opcodes.
5012
5013         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
5014
5015         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
5016
5017         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
5018         arch specific functions for its parts. Call the peephole pass after local
5019         regalloc so the prolog can compute a more accurate max_offset.
5020         
5021         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
5022         the corresponding OP_I/OP_L opcodes.
5023
5024         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
5025
5026         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
5027
5028 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5029
5030         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
5031         as they are handled in mini.c.
5032
5033         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
5034         
5035         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
5036         case since it is handled in mini.c.
5037
5038         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
5039
5040         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
5041
5042         * *.c: Use the new opcodes in the IR and back end code.
5043
5044         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
5045
5046         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
5047
5048 2008-02-06  Mark Probst  <mark.probst@gmail.com>
5049
5050         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
5051         an assert because it has a race condition.
5052
5053 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
5054
5055         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
5056
5057         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
5058
5059         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
5060
5061         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
5062         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
5063
5064 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
5065
5066         * cpu-amd64.md (move): Correct the maximum size of move.
5067
5068 2008-02-05  Mark Probst  <mark.probst@gmail.com>
5069
5070         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
5071         the generic class init trampoline to return quickly if the class
5072         is already inited.
5073
5074 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
5075
5076         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
5077         issues where an 32 bit callsite cannot be patched by a 64 bit address.
5078
5079 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
5080
5081         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
5082         branch.
5083
5084 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
5085
5086         * objects.cs: Add some soft-float tests.
5087
5088         * mini.c: Fix a couple more soft-float issues.
5089
5090         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
5091
5092         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
5093         avoid a REX prefix.
5094
5095 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
5096
5097         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
5098         exception happens while compiling a virtual method.
5099
5100 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
5101
5102         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
5103         
5104         * mini-sparc.c: Fix build.
5105
5106         * mini-sparc.c (get_call_info): Add support for generic sharing.
5107
5108         * mini-exceptions.c: Add a FIXME.
5109
5110 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
5111
5112         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
5113         altstack handling code.
5114
5115         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
5116         
5117         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
5118
5119         * mini-s390.c: Add support for generic sharing.
5120
5121         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5122         Fix CAS on s390.
5123         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5124
5125         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
5126
5127         * mini-s390x.c: Add support for generic sharing.
5128         
5129         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
5130         Fix CAS on ia64.
5131         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
5132
5133         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
5134         can be used since it takes a 16 bit signed immediate.
5135
5136         * inssel-s390x.brg: Fix OP_SETRET.
5137
5138         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
5139
5140         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
5141
5142         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
5143
5144         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
5145
5146         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
5147         in one place.
5148
5149         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
5150         stuff.
5151
5152         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
5153         of the unused mono_arch_patch_delegate_trampoline stuff.
5154
5155 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
5156
5157         * basic-long.cs: Move the fp related tests to basic-float.cs.
5158
5159         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
5160
5161         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
5162
5163         * basic-calls.cs: Add a test for proper float argument passing.
5164
5165         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
5166         if the context corresponds to an exception received through a signal.
5167
5168         * exceptions.cs: Add a test for nullref handling at the start of a try
5169         clause.
5170
5171         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
5172
5173         * jit-icalls.c (mono_break): New JIT icall.
5174
5175         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
5176
5177         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
5178
5179 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
5180
5181         * cpu-*.md: Get rid of unused opcodes.
5182
5183         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
5184
5185         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
5186         by all platforms.
5187
5188         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
5189         define.
5190
5191         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
5192         the arch independent trampoline code in mini-trampolines.c.
5193
5194         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
5195
5196         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
5197
5198         * mini-s390.h: Remove an unused define.
5199         
5200         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
5201         the arch independent trampoline code in mini-trampolines.c.
5202
5203         * mini-arm.c (mono_arch_emit_prolog): Fix build.
5204
5205 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
5206
5207         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
5208
5209         * mini-s390.c (mono_arch_emit_prolog): Fix build.
5210
5211         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
5212
5213         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
5214
5215         * cpu-amd64.md: Use smaller sizes for int opcodes.
5216
5217         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
5218
5219         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
5220         objects.cs.
5221
5222         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
5223         debugging.
5224
5225         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
5226         instead of though a pointer to save an indirection when accessing elements of
5227         the array.
5228
5229         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
5230         some typos.
5231         (NOT_IMPLEMENTED): New helper macro.
5232         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
5233         of a bb.
5234
5235         * *.c: Use the new helper macro.
5236
5237 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
5238
5239         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
5240
5241 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
5242
5243         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
5244         stack slots.
5245
5246 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
5247
5248         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
5249         profiling is enabled.
5250         
5251         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
5252         the end.
5253         (mono_arch_emit_prolog): Add more first bblock optimizations.
5254
5255         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
5256         in order if possible.
5257         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
5258         bblock, since the arguments are still in their original registers.
5259
5260         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
5261
5262 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
5263
5264         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
5265         as well.
5266
5267         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
5268         offset 0.
5269
5270         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
5271
5272         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
5273         process async exceptions received while in unmanaged code.
5274
5275         * mini.c (mini_init): Install a callback with the runtime which will be called
5276         when a thread receives an async exception while in unmanaged code.
5277
5278         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
5279
5280         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
5281
5282 2008-01-16  Wade Berrier  <wberrier@novell.com>
5283
5284         * cpu-g4.md:
5285         * cpu-arm.md:
5286         * cpu-s390x.md:
5287         fix build
5288
5289 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
5290
5291         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
5292         compilation with sun cc.
5293
5294         * cpu-*.md: Fix the build.
5295
5296         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
5297
5298         * mini-amd64.h: Add some comments to the MonoLMF structure.
5299
5300         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
5301         
5302         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
5303         in the LMF structure if possible. This saves two instructions in the
5304         managed->native wrappers.
5305
5306         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
5307
5308 2008-01-16  Mark Probst  <mark.probst@gmail.com>
5309
5310         * generic-sharing.c: New type argument lookup code which uses the
5311         runtime generic context template.
5312
5313 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
5314
5315         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
5316
5317         * mini-arm.c (add_general): Fix arm eabi parameter passing.
5318         (mono_arch_output_basic_block): Fix localloc implementation.
5319
5320         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
5321
5322         * mini-ia64.c (peephole_pass): Fix ia64 build.
5323
5324         * mini-amd64.c (peephole_pass): Fix a warning.
5325         
5326         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
5327         at a constant offset from sp/fp.
5328
5329         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
5330         instead of obtaining it from *lmf in the managed method case.
5331
5332 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
5333
5334         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
5335
5336 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
5337
5338         * mini.h (MonoInstList): New type.
5339         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
5340         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
5341         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
5342         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
5343         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
5344         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
5345         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
5346         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
5347         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
5348         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
5349         MONO_INST_LIST_FOR_EACH_ENTRY,
5350         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
5351         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
5352         mono_inst_list_first, mono_inst_list_last,
5353         mono_inst_list_next, mono_inst_list_prev): New instruction
5354         list handling interfaces.
5355         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
5356         list head 'ins_list'.
5357         (MonoInst): Replace next pointer with list head 'node'.
5358         (MonoCallInst): Make 'out_args' a MonoInstList.
5359         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
5360         (MonoCompile): Delete reverse_inst_list and
5361         reverse_inst_list_len.
5362         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
5363         mono_arch_lowering_pass, mono_arch_local_regalloc,
5364         mono_arch_output_basic_block, mono_arch_emit_prolog):
5365         Convert to new instruction lists.
5366         (insert_after_ins): Delete.
5367         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
5368         instruction lists.
5369         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
5370         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
5371         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
5372         mono_emulate_opcode, mono_emit_load_got_addr,
5373         inline_method, mono_method_to_ir, mono_print_bb_code,
5374         print_dfn, decompose_pass, nullify_basic_block,
5375         replace_out_block_in_code, remove_block_if_useless,
5376         merge_basic_blocks, move_basic_block_to_end,
5377         try_unsigned_compare, optimize_branches, mono_print_code,
5378         mini_select_instructions, remove_critical_edges): Likewise.
5379         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
5380         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
5381         mono_arch_output_basic_block, mono_arch_emit_prolog):
5382         Likewise.
5383         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
5384         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
5385         mono_arch_output_basic_block): Likewise.
5386         (inst_list_prepend, insert_after_ins): Delete.
5387         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
5388         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
5389         instruction lists.
5390         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
5391         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
5392         mono_arch_emit_prolog): Likewise.
5393         * cfold.c (mono_constant_fold): Likewise.
5394         * liveness.c (visit_bb, mono_analyze_liveness,
5395         optimize_initlocals): Likewise.
5396         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
5397         * graph.c (mono_draw_code_cfg): Likewise.
5398         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
5399         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
5400         mono_ssa_cprop): Likewise.
5401         * abcremoval (get_relations_from_previous_bb, process_block):
5402         Likewise.
5403         * local-propagation (mono_cprop_invalidate_values,
5404         mono_local_cprop_bb): Likewise.
5405         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
5406         peephole_pass, mono_arch_output_basic_block,
5407         mono_arch_emit_prolog): Likewise.
5408         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
5409         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
5410         mono_arch_emit_prolog): Likewise.
5411         (insert_after_ins): Delete.
5412         * aliasing.c (print_code_with_aliasing_information,
5413         mono_build_aliasing_information, mono_aliasing_deadce):
5414         Convert to new instruction lists.
5415         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
5416         peephole_pass, NEW_INS, mono_arch_lowering_pass,
5417         mono_arch_local_regalloc, mono_arch_output_basic_block):
5418         Likewise.
5419         (insert_after_ins): Delete.
5420         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
5421         peephole_pass, mono_arch_output_basic_block): Convert to
5422         new instruction lists.
5423         * mini-codegen (InstList, inst_list_prepend,
5424         insert_after_ins): Delete.
5425         (insert_before_ins, get_register_force_spilling,
5426         get_register_spilling, free_up_ireg, free_up_reg,
5427         create_copy_ins, create_spilled_store, alloc_int_reg,
5428         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
5429         to new instruction lists.
5430         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
5431         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
5432         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
5433         (insert_after_ins): Delete.
5434         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
5435         mono_arch_local_regalloc, mono_arch_output_basic_block,
5436         mono_arch_call_opcode): Convert to new instruction lists.
5437         (insert_after_ins): Delete.
5438         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
5439         peephole_pass, mono_arch_output_basic_block,
5440         mono_arch_emit_prolog): Convert to new instruction lists.
5441
5442 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
5443
5444         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
5445
5446         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
5447         Fixes #353182.
5448
5449         * Makefile.am (version.h): Make this work with non-bash shells.
5450
5451 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
5452
5453         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
5454
5455 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
5456
5457         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
5458         the InitializeArray optimization.
5459
5460 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
5461
5462         * mini.c driver.c: Don't include os/gc_wrapper.h.
5463
5464 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
5465
5466         * mini.c (print_jit_stats): Print GC statistics if available.
5467
5468 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
5469
5470         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
5471
5472 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
5473
5474         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
5475
5476 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
5477
5478         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
5479         
5480         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
5481
5482         * driver.c (mono_main): Ditto.
5483
5484 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
5485
5486         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
5487
5488         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
5489         in the vtable can't be encoded.
5490         (compile_method): Ditto.
5491
5492 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
5493
5494         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
5495         defined.
5496
5497         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
5498         lmf->rbp.
5499
5500         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
5501         the top LMF entry belongs to the current method.
5502
5503         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
5504
5505 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
5506
5507         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
5508         
5509         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
5510
5511         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
5512
5513         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
5514
5515         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
5516
5517         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
5518         implementation.
5519
5520         * basic-float.cs: Add an ulong->double cast test.
5521
5522 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
5523
5524         * mini.c (mono_method_to_ir): Fix a warning.
5525
5526 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
5527
5528         * mini-ops.h: Add OP_SWITCH.
5529
5530         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
5531         CEE_SWITCH in back-end code, use OP_SWITCH instead.
5532
5533 2007-12-11  Geoff Norton  <gnorton@novell.com>
5534
5535         * mini-s390x.c: Minor change to the MAX() define to allow
5536         it to compile with other gcc versions.
5537
5538 2007-12-11  Geoff Norton  <gnorton@novell.com>
5539
5540         * cpu-s390x.md:
5541         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
5542
5543 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
5544
5545         exceptions-arm.c (mono_arch_get_restore_context): Restore
5546         the frame pointer.
5547
5548         exceptions-arm.c (throw_exception): Save the frame pointer.
5549         This is a partial fix for #323747. Only the client side is
5550         fixed.
5551
5552 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
5553
5554         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
5555         was using an unrelated variable to log the class which
5556         needed the cctor to be called. This was crashing on arm.
5557
5558 2007-12-09  Robert Jordan  <robertj@gmx.net>
5559
5560         * mini-x86.c (mono_arch_emit_epilog):
5561         Consider all kinds of 64-bit types. Fixes #323114.
5562
5563 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
5564
5565         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
5566
5567 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
5568
5569         * mini-amd64.c (peephole_pass): Add a missing instruction check.
5570
5571 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
5572
5573         * mini.c: run type ctor before allocating an object, not only
5574         when running it's constructor method (fixes at least part of bug #342507).
5575
5576 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
5577         
5578         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
5579         
5580         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
5581         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
5582         function.
5583
5584         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
5585         mono_generic_class_init_trampoline () the same as it is done with the other
5586         trampolines.
5587
5588         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
5589         aot-runtime.c aot-compiler.c: Implement AOT support.    
5590
5591 2007-12-07  Mark Probst  <mark.probst@gmail.com>
5592
5593         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
5594         build for archs which don't have the vtable trampoline defined
5595         yet.
5596
5597 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
5598
5599         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
5600
5601         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
5602
5603         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
5604
5605         * tramp-<ARCH>.c: Use the new helper function.
5606
5607 2007-12-07  Mark Probst  <mark.probst@gmail.com>
5608
5609         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
5610         trampoline call, which takes a vtable argument.
5611
5612         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
5613         OP_TRAMPCALL_VTABLEs like other calls.
5614
5615         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
5616         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
5617         call.  Implemented a support function which fetches the vtable
5618         from a register set.
5619
5620         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
5621         Implemented a generic class init trampoline, using the
5622         OP_TRAMPCALL_VTABLE opcode.
5623
5624         * mini.c: Implemented static field access when sharing generic
5625         code.  This implies initing the class using the new
5626         OP_TRAMPCALL_VTABLE call.
5627
5628 2007-12-07  Mark Probst  <mark.probst@gmail.com>
5629
5630         * mini.c: Don't compile methods with sharing enabled if their
5631         classes are disabled for sharing.
5632
5633 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
5634
5635         * inssel.brg: Add a missing sign extension to the GETCHR and array access
5636         opcodes. Fixes #346563.
5637
5638         * objects.cs: Add a new test.
5639
5640         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
5641
5642         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
5643         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
5644
5645 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
5646
5647         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
5648
5649 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
5650
5651         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
5652         code stream.
5653
5654 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
5657
5658         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
5659         optimization in the AOT case.
5660         
5661 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
5662
5663         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
5664         
5665         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
5666
5667         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
5668
5669         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
5670
5671         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
5672         is created by the inlined delegate ctor.
5673
5674         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
5675
5676         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
5677
5678 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
5679
5680         * cpu-x86.md: Fix the length of ckfinite.
5681
5682 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
5683
5684         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
5685         
5686         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
5687         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
5688
5689         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
5690
5691         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
5692         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
5693
5694 2007-11-28  Martin Baulig  <martin@ximian.com>
5695
5696         * mini-x86.c
5697         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
5698         after creating the trampoline.
5699
5700 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
5701
5702         * aot-runtime.c (load_aot_module): Check runtime version if needed.
5703
5704         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
5705         the same version.
5706
5707         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
5708         instead of the calling method to help AOT.
5709
5710         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
5711
5712 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
5713
5714         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
5715         is defined.
5716
5717 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
5718
5719         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
5720         
5721         * aot-compiler.c (compile_method): Correct check for generic method definitions.
5722         (encode_method_ref): No need to handle generic method definitions specially.
5723
5724         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5725
5726         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
5727         decode_klass_info.
5728
5729         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
5730         encode_klass_info.
5731         (compile_method): Enable generic sharing.
5732
5733 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
5734
5735         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
5736         (mini_method_compile): Add preliminary support for AOTing shared generic code.
5737
5738         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
5739         generic code.
5740
5741         * mini-trampolines.c: Fix a warning.
5742
5743         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
5744         NEW_PCONST.
5745         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
5746         (generic_class_is_reference_type): Remove unused function.
5747
5748         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
5749         in the generic vtable trampoline case.
5750
5751         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
5752         
5753         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
5754         return an AOT method based on a vtable slot.
5755
5756         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
5757
5758         * mini.c (mini_get_vtable_trampoline): Export this.
5759
5760 2007-11-22  Martin Baulig  <martin@ximian.com>
5761
5762         * debug-debugger.h
5763         (MonoDebuggerInfo): Move `debugger_version' up.
5764
5765 2007-11-22  Martin Baulig  <martin@ximian.com>
5766
5767         * mini-amd64.c
5768         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
5769
5770         * mini-trampolines.c
5771         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
5772         after compiling the method.
5773
5774 2007-11-20  Martin Baulig  <martin@ximian.com>
5775
5776         * debug-mini.c
5777         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
5778         (mono_debugger_remove_breakpoint): Likewise.
5779         (mono_debugger_check_breakpoints): Likewise.
5780
5781         * debug-debugger.c: Implement the new breakpoint interface here.
5782
5783 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
5784
5785         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
5786         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
5787
5788         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
5789
5790 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
5791
5792         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
5793
5794         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
5795         mini.c.
5796
5797         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
5798         mini.c.
5799
5800         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
5801         returning a vtype in a register.
5802
5803         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
5804         here from the arch specific code.
5805
5806         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
5807         mini.c.
5808
5809         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
5810         (mono_arch_emit_prolog): Increment maximum prolog size.
5811
5812         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
5813         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
5814
5815         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
5816         MonoGenericSharingContext.
5817
5818         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
5819         MonoGenericSharingContext. Allocate memory from the cfg mempool.
5820
5821 2007-11-15  Mark Probst  <mark.probst@gmail.com>
5822
5823         * mini.c, mini.h, generic-sharing.c: Functions for producing code
5824         which extract fields out of the runtime generic context.  Full
5825         sharing of the NEWARR opcode.
5826
5827 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
5828
5829         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
5830         --enable-minimal=ssa.
5831
5832 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
5833
5834         * mini-trampolines.c (mono_delegate_trampoline): Update after 
5835         mono_marshal_get_delegate_invoke () signature change.
5836
5837 2007-11-13  Mark Probst  <mark.probst@gmail.com>
5838
5839         * mini.c: Removed the shared context in favor of the generic
5840         sharing context.  Allocate the MonoJitInfo structure with room for
5841         the generic sharing context if it's needed.
5842
5843         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
5844         domain-internals.h now.
5845
5846         * mini-x86.c: Pass the generic sharing context to get_call_info ().
5847
5848         * generic-sharing.c: Several changes for working without a shared
5849         context and instead operating on open types instead.
5850
5851 2007-11-12  David S. Miller  <davem@davemloft.net>
5852
5853        * inssel-sparc.brg: Fix double instruction emit.
5854
5855 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
5856
5857         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
5858         Get/Set/Address methods.
5859         
5860         * mini.c debug-debugger.c mini-trampolines.c: Update after 
5861         mono_marshal_get_delegate_invoke signature change.
5862
5863 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5864
5865         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
5866         This can happens with dynamic methods. Fixes the other bug in #322722.
5867
5868 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5869
5870         * tramp-arm.c (mono_arch_patch_callsite): Support patching
5871         BX call sequence.
5872
5873         * mini-arm.c (arm_patch): Implement patching of BX call
5874         sequence. Fixes one of the bugs in #322722.
5875
5876 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
5877
5878        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
5879        under Linux.  We only need to flush every 32-byte cache line.    
5880
5881 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
5882
5883         * mini.c:
5884         move_basic_block_to_end: Add branches when needed, eventually creating
5885         a new BB.
5886         optimize_branches: added a parameter that tells if it's ok to create
5887         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
5888         and avoid calling move_basic_block_to_end when it's not ok.
5889         Fixes bug 318677.
5890
5891 2007-11-07  Mark Probst  <mark.probst@gmail.com>
5892
5893         * mini.c: Abort inlining call to InitializeArray if something
5894         looks wrong.  Let the icall handle it, which now has proper safety
5895         checks.
5896
5897 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5898
5899         * mini.c (mono_spill_call): add support for soft-float.
5900
5901         * mini.c (mono_method_to_ir): add support for soft-float
5902         to inlined functions that return float.
5903
5904         * mini.c (mono_method_to_ir): add support for soft-float
5905         to cee_stsfld opcode on float fields.
5906
5907 2007-11-05  Geoff Norton  <gnorton@novell.com>
5908
5909         * mini-x86.h: Fix the structure access for X86 Leopard.
5910
5911
5912 2007-11-05  Martin Baulig  <martin@ximian.com>
5913
5914         * mini-trampolines.c
5915         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
5916         after compiling the method to notify the debugger.
5917
5918 2007-11-05  Martin Baulig  <martin@ximian.com>
5919
5920         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
5921
5922 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
5923
5924         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
5925         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
5926
5927 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
5928
5929         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
5930         native-to-managed wrappers.
5931         
5932 2007-11-01  Geoff Norton  <gnorton@novell.com>
5933
5934         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
5935         members.
5936
5937 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
5938
5939         * mini.c, mini-x86.c: when getting back from unmanaged code
5940         to managed via a marshaled delegate we also need to set the
5941         right domain.
5942
5943 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
5944
5945         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
5946         for amd64.
5947
5948 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
5949
5950         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
5951         let the debugger or other external agents to tell the JIT when
5952         a sw breakpoint has been inserted in the code that the JIT needs
5953         to be able to inspect.
5954
5955 2007-10-31  Martin Baulig  <martin@ximian.com>
5956
5957         * debug-debugger.h
5958         (MonoDebuggerInfo): Remove `runtime_class_init'.
5959
5960 2007-10-30  Martin Baulig  <martin@ximian.com>
5961
5962         * debug-mini.h
5963         (mono_debugger_thread_created): Added `MonoThread *' argument.
5964         (mono_debugger_extended_notification): New public method.
5965         (mono_debugger_trampoline_compiled): New public method.
5966
5967         * debug-mini.c
5968         (MonoDebuggerThreadInfo): Added `thread' and
5969         `extended_notifications' fields.
5970
5971         * debug-debugger.c
5972         (debugger_executable_code_buffer): New static variable.
5973
5974         * debug-debugger.h
5975         (MonoDebuggerInfo): Added `executable_code_buffer',
5976         `executable_code_buffer_size', `breakpoint_info_area',
5977         `breakpoint_table' and `breakpoint_table_size'.
5978
5979 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
5980
5981         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
5982         that IP  either is an unused value or the vtable pointer. IMT 
5983         calls use vtable + offset now. Reduced by almost half the size
5984         of IMT entries.
5985
5986 2007-10-26  Jonathan Chambers <joncham@gmail.com>
5987
5988         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
5989         defines to access param registers. Replace long usage with
5990         gsize as sizeof(long) != sizeof(void*) on Win64.
5991
5992         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
5993         on Win64. Fix intrinsic, use _AddressOfReturnAddress
5994         instead of non-existant _GetAddressOfReturnAddress.
5995
5996         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
5997         param registers. Save/restore %rdi and %rsi in MonoLMF.
5998
5999         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
6000         param registers. Modify (throw_exception) signature to take 
6001         %rdi and %rsi on Win64. 
6002
6003         Code is contributed under MIT/X11 license.
6004
6005 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6006
6007         * helpers.c: unlink debugging output files.
6008
6009 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
6010
6011         * mini.c: Move mono_create_ftnptr () to object.c.
6012
6013 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6014
6015         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
6016         optional. This function can now be used to disassemble code generated
6017         outside the JIT such as trampolines and IMT thunks.
6018
6019         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
6020
6021         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
6022         vtable pointer from a ldr instruction.
6023
6024         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
6025         new IMT call sequence.
6026
6027         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
6028         call sequence for interface invocations.
6029
6030         * mini-arm.c (mono_arch_emit_imt_argument): added, required
6031         for imt support. This function is empty since IMT on ARM requires no
6032         special handling on the IR side.
6033
6034         * mini-arm.c (mono_arch_find_imt_method): added, required for
6035         imt support.
6036
6037         * mini-arm.c (mono_arch_find_this_argument): added, required
6038         for imt support.
6039
6040         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
6041         a ldr instruction to load a value stored in the code stream.
6042
6043         * mini-arm.c (mono_arch_build_imt_thunk):added, required
6044         for imt support.
6045
6046
6047 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
6048
6049         * mini.c (mini_init): Install the jump trampoline callback.
6050
6051 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6052
6053         * mini-trampolines.c: handle synchronized methods with the common
6054         vtable trampoline (bug #335601).
6055
6056 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
6057
6058         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
6059
6060         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
6061         64 bit platforms.
6062
6063         * mini-ia64.h mini-ia64.c: Add support for IMT.
6064
6065         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
6066         prolog. Fixes #331958.
6067
6068 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
6069
6070         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
6071
6072 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6073
6074         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
6075         trampoline.
6076
6077 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6078
6079         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
6080         trampoline.
6081
6082 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
6083
6084         * mini-x86.c, mini-x86.h: x86 support for the common vtable
6085         trampoline.
6086
6087 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
6088
6089         * mini-trampolines.c: changed the magic rampoline to understand
6090         the common vtable trampoline method: the method to invoke is
6091         determined by the vtable displacement of the call.
6092
6093 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6094
6095         * mini.c, mini.h: register the common vtable trampoline if the
6096         architecture supports it.
6097
6098 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6099
6100         * cpu-amd64.md: use the correct max length for tls_get.
6101
6102 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
6103
6104         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
6105         CEE_STELEM_ANY. Fixes #333696.
6106
6107 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
6108
6109         * exceptions-x86.c: provide more graceful handling of the case where
6110         we followed a bogus function pointer from managed code (bug #332866).
6111
6112 2007-10-11  Mark Probst  <mark.probst@gmail.com>
6113
6114         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
6115         replaces the generic_shared flag and will carry more information
6116         in the future.
6117
6118         * generic-sharing.c: Added mini_type_stack_size() which allows
6119         allows open types if given a generic sharing context.
6120         mini_get_basic_type_from_generic() takes a
6121         MonoGenericSharingContext* instead of a MonoCompile* now.
6122
6123         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
6124         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
6125         mini-sparc.c, mini-x86.c: Trivial changes required by the two
6126         changes above.  Just passing arguments through to the right
6127         places.
6128
6129 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6130
6131         * mini-arm.c: unify the call emission to emit_code_seq().
6132
6133 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
6134
6135         * tramp-arm.c: reduced the trampoline size.
6136
6137 2007-10-10  Mark Probst  <mark.probst@gmail.com>
6138
6139         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
6140         variable handling out of arch-specific code.
6141
6142 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
6143
6144         * mini-arm.c: implemented fast delegate dispatch.
6145
6146 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6147
6148         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
6149         that fp elimination is turned off if the space required by locals is too
6150         big. Fixes #331958.
6151
6152 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
6153
6154         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
6155         ARM to the new style trampoline.
6156
6157 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
6158
6159         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
6160
6161         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
6162
6163 2007-10-09  Martin Baulig  <martin@ximian.com>
6164
6165         * debug-debugger.h
6166         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
6167         `field_info_offset_offset'.     
6168
6169 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
6170
6171         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
6172         removed more internal usage of the r11 register and made it available
6173         to the register allocator.
6174
6175 2007-10-08  Mark Probst  <mark.probst@gmail.com>
6176
6177         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
6178         when sharing generics and treat type variables as references.
6179
6180 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6181
6182         * mini-ppc.c: started removing the internal uses of register r11
6183         to eventually allow the register allocator to manage it as an
6184         additional available register.
6185
6186 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
6187
6188         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
6189
6190 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
6191
6192         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
6193         specific trampolines as they are not performance critical as a jump
6194         target (maybe align as before only for AOT code?). This saves about
6195         200 KB of native code on x86 for monodevelop startup.
6196
6197 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
6198
6199         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
6200         monodevelop startup.
6201
6202 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
6203
6204         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
6205
6206         * mini-sparc.h mini-sparc.c: Implement IMT support.
6207
6208         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
6209         its smaller and doesn't clobber sparc_g1.
6210
6211         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
6212
6213 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
6214
6215         * mini-ppc.c: optimized the size of the IMT thunks a bit.
6216
6217 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
6218
6219         * mini-ppc.c: implemented fast delegate invocation.
6220
6221 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
6222
6223         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
6224
6225 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6226
6227         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
6228         code to the new style trampoline in preparation for IMT support.
6229
6230 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
6231
6232         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
6233         systems already. This also reduces the specific trampiline sizes and
6234         prepares for the use of r12 as the IMT identifier register.
6235
6236 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6237
6238         * mini-mips.h: endianess fix (simplified from a patch by
6239         Thomas Kunze <thommy@tabao.de>, bug #323737).
6240
6241 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
6242
6243         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
6244         to access ucontext fields and enable netbsd support
6245         (partially from Magnus Henoch <mange@freemail.hu>).
6246
6247 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6248
6249         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
6250         use the preprocessor from the CPP env var if it is set.
6251
6252 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
6253
6254         * mini-trampolines.c: fixed an assertion and moved it earlier in the
6255         code, before interface_offset gets used.
6256
6257 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
6258
6259         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
6260         mono_class_setup_vtable () before accessing klass->vtable.
6261
6262 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
6263
6264         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
6265         hackish.
6266
6267 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
6268
6269         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
6270         IMT slots (this saves hundreds of KB of memory in programs like
6271         IronPython and Monodevelop).
6272
6273 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
6274
6275         * mini.c: print the delegate counter.
6276
6277 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
6278
6279         * mini-x86.c: make it easier to enable the debugging code for IMT
6280         slots.
6281
6282 2007-09-28  Martin Baulig  <martin@ximian.com>
6283
6284         * debug-debugger.h
6285         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
6286         `mono_method_klass_offset' and `mono_method_token_offset'.
6287
6288 2007-09-20  Mark Probst  <mark.probst@gmail.com>
6289
6290         * mini.c: First generics sharing implementation.  Can only share
6291         in very simple cases.  If sharing doesn't work it falls back to
6292         dedicated compilation.
6293
6294         * mini.h: Flag in MonoCompile to specify whether generic
6295         compilation is shared.  Flags enum for marking which generic inst
6296         of a context is used.  Prototypes for helper functions.
6297
6298         * generic-sharing.c: Helper functions for generic method sharing.
6299
6300         * optflags-def.h: Optimization flag (gshared) for enabling generic
6301         method sharing added.
6302
6303         * Makefile.am: generic-sharing.c added.
6304
6305 2007-09-19 Daniel Nauck <dna@mono-project.de>
6306
6307         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
6308
6309 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
6310         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
6311         fixes bug 325507.
6312
6313 2007-09-19  Martin Baulig  <martin@ximian.com>
6314
6315         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
6316         mono_debug_cleanup() is now part of mono_cleanup().
6317
6318 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
6319
6320         * driver.c (mono_main): Fix a warning.
6321
6322 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
6323
6324         * aot-compiler.c: Optimize various parts when processing large assemblies.
6325         Fixes ##325568.
6326
6327         * mini.c (mono_patch_info_hash): Improve hash function.
6328
6329 2007-09-14  Jonathan Chambers <joncham@gmail.com>
6330
6331         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
6332         
6333         Code is contributed under MIT/X11 license.
6334
6335 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6336
6337         * mini.c (mini_init): Fix a leak.
6338
6339         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
6340
6341 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
6342
6343         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
6344
6345 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
6346
6347         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
6348
6349 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
6350
6351         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
6352         variance tests.
6353
6354         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
6355
6356         * mini.c (handle_alloc): Enable managed allocators in AOT code.
6357
6358         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
6359
6360         * aot-runtime.c (decode_patch_info): Ditto.
6361
6362 2007-09-12  Jonathan Chambers <joncham@gmail.com>
6363
6364         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
6365         static case. Cache delegates in architecture specific code, 
6366         based on number of parameters.
6367         
6368         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
6369         in architecture specific code, based on number of parameters.
6370         
6371         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
6372         caching happen in architecture specific code now.
6373         
6374         Code is contributed under MIT/X11 license.
6375
6376 2007-09-12  Jonathan Chambers <joncham@gmail.com>
6377
6378         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
6379         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
6380         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
6381
6382         Code is contributed under MIT/X11 license.
6383
6384 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
6385         * mini.c: (mono_thread_abort) Fixed bug #82416.
6386
6387 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
6388
6389         * mini.: hook the new managed GC allocation feature into the JIT.
6390
6391 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
6392
6393         * mini.c: implementation for the new runtime tls opcode.
6394
6395 2007-09-11  Martin Baulig  <martin@ximian.com>
6396
6397         * debug-debugger.h
6398         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
6399         `mono_method_inflated_offset'.
6400
6401 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
6402
6403         * driver.c mini.h mini.c: Add a new devel command line option for injecting
6404         async exceptions into a method.
6405
6406         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
6407         purpose of testing whenever the unwinder works at every instruction.
6408
6409 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
6410
6411         * mini.c: check accessibility of method used in ldftn (fixes
6412         bug #82635).
6413
6414 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
6415
6416         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
6417
6418         * inssel.brg: Fix a warning.
6419
6420 2007-09-03  Martin Baulig  <martin@ximian.com>
6421
6422         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
6423         now takes the `main_method' as argument.
6424
6425 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
6426
6427         * cpu-sparc.md (endfilter): Add missing src1:i argument.
6428
6429 2007-08-30  Jonathan Chambers <joncham@gmail.com>
6430
6431         * driver.c: include the cil-coff.h header on Windows.
6432         
6433         Code is contributed under MIT/X11 license.
6434
6435 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
6436
6437         * mini.c, driver.c: don't include the cil-coff.h header.
6438
6439 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
6440
6441         * mini.c: flag places that needs fixes fo soft-float support.
6442
6443 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
6444
6445         * mini.h, inssel-float.brg: fix soft-float constant loads on big
6446         endian systems (partially from Dean Jenkins, bug #81924).
6447
6448 2007-08-28  Mark Probst  <mark.probst@gmail.com>
6449
6450         * mini.c (check_linkdemand): Remove embedded reference object in
6451         call to LinkDemandSecurityException.
6452         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
6453         with an IntPtr instead of a reference object.
6454
6455 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
6456
6457         * mini.c (handle_initobj): Handle alignment properly.
6458
6459         * inssel.brg (mini_emit_memset): Ditto. 
6460
6461         * inssel.brg (mini_emit_memcpy): Ditto. 
6462
6463         * inssel-sparc.brg: Ditto.              
6464
6465         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
6466
6467 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
6468
6469         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
6470         exceptions raised in unmanaged code. Fixes part of #82594.
6471
6472 2007-08-24  Mark Probst  <mark.probst@gmail.com>
6473
6474         * mini.c (mono_method_to_ir), declsec.c
6475         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
6476
6477 2007-08-22  Martin Baulig  <martin@ximian.com>
6478
6479         * debug-mini.h
6480         (MonoDebuggerThreadInfo): New typedef.
6481         (mono_debugger_thread_table): New global variable.
6482         (mono_debugger_thread_created): New public function.
6483         (mono_debugger_thread_cleanup): New public function.
6484
6485         * debug-debugger.h
6486         (MonoDebuggerInfo):
6487         - removed `get_current_thread' and `lookup_assembly'.
6488         - removed `data_table'.
6489         - added `thread_table'.
6490
6491         * mini.c
6492         (mono_thread_start_cb): Call mono_debugger_thread_created().
6493         (mono_thread_attach_cb): Likewise.
6494         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
6495         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
6496         initial domain.
6497
6498         * driver.c (mono_main): Move mono_debug_init() up, before calling
6499         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
6500
6501 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
6502
6503         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
6504         together when passing several arguments of type double (gives a small
6505         speedup and saves a few bytes of generated code).
6506
6507 2007-08-20  Jb Evain  <jbevain@novell.com>
6508
6509         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
6510
6511 2007-08-20  Jb Evain  <jbevain@novell.com>
6512
6513         * mini.c (mono_method_to_ir): throw MethodAccessException
6514         and FieldAccessException instead of InvalidProgramException.
6515
6516 2007-08-20  Mark Probst  <mark.probst@gmail.com>
6517
6518         * mini.c: CoreCLR security checks.
6519
6520         * mini.h: Removed MonoSecurityMode (moved to
6521         metadata/security-manager.h) and mono_security_mode global var
6522         (replaced by set/get functions in security-manager.h).
6523
6524         * driver.c: Added "core-clr-test" security mode for testing.  Used
6525         set-function for setting security mode.
6526
6527 2007-08-17  Mark Probst  <mark.probst@gmail.com>
6528
6529         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
6530         the new jit_info_table.
6531
6532         * driver.c: Test code for the new jit_info_table (enabled by the
6533         define MONO_JIT_INFO_TABLE_TEST).
6534
6535 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
6536
6537         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
6538         detection of call <REG> instruction sequence. Fixes build on freebsd.
6539
6540 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
6541
6542         * mini-exceptions.c: Fix a warning.
6543
6544 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
6545
6546         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
6547         stack overflow handling code on amd64 too.
6548
6549         * mini-exceptions.c (mono_setup_altstack): Make this use 
6550         mono_thread_get_stack_bounds ().
6551
6552         * mini-x86.h: Disable sigaltstack on solaris x86.
6553
6554 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
6555
6556         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
6557
6558 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
6559
6560         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
6561
6562 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
6563
6564         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
6565
6566         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
6567
6568 2007-08-03  Neale Ferguson <neale@sinenomine.net>
6569
6570         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
6571         due to alignment.
6572
6573 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
6574
6575         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
6576         to be emitted (bug #82281).
6577
6578 2007-08-01  Martin Baulig  <martin@ximian.com>
6579
6580         Merged the `debugger-dublin' branch.
6581
6582         * debug-debugger.h (MonoDebuggerInfo):
6583         Removed the `old_*' compatibility entries.
6584         Added `debugger_version' and `data_table'.
6585         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
6586         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
6587
6588         * debug-mini.c
6589         (MiniDebugMethodBreakpointInfo): Add `address_list'.
6590         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
6591         instead of a `gconstpointer'.
6592         (mono_debugger_insert_method_breakpoint): Return a
6593         `MonoDebugMethodAddressList *'.
6594
6595 2007-06-28  Martin Baulig  <martin@ximian.com>
6596
6597         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
6598
6599 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
6600
6601         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
6602         __builtin_frame_address () since it is broken on older gcc versions.
6603
6604 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
6605
6606         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
6607         on the stack overflow handling and made the managed stack overflows
6608         catchable in most cases using soft guard pages.
6609         * exceptions-x86.c: added code to restore the protection in the soft
6610         guard pages at the end of exception handling.
6611
6612 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
6615
6616 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
6617
6618         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
6619         exception handling.
6620
6621 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
6622
6623         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
6624         signal handling support until it has been ported to the new mechanism.
6625         * mini.c: fixed stack overflow detection and use the new
6626         architecture code  to handle signals on the altstack.
6627
6628 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
6629
6630         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
6631         stack overflows on the alt stack.
6632
6633 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
6634
6635         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
6636         stack overflows on the alt stack.
6637
6638 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
6639
6640         * exceptions-ppc.c: cleanup preparing for altstack support.
6641
6642 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
6643
6644         * exceptions-arm.c: cleanup preparing for altstack support.
6645
6646 2007-07-27  Mark Probst  <mark.probst@gmail.com>
6647
6648         * mini.c (print_jit_stats): Output hazard pointer stats.
6649
6650 2007-07-26  Mark Probst  <mark.probst@gmail.com>
6651
6652         * driver.c, mini.c: Replaced security mode flags with a single
6653         enum variable.
6654
6655 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6656
6657         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
6658
6659 2007-07-25  Mark Probst  <mark.probst@gmail.com>
6660
6661         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
6662         (which doesn't do anything yet) for activating Core CLR
6663         (Silverlight) security.
6664
6665 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
6666
6667         * mini-codegen.c: work around a possible gcc bug on arm.
6668
6669 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
6670
6671         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
6672         message for platforms that don't support AOT compilation.
6673
6674 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
6675
6676         * mini.h, mini.c, driver.c: temporary smcs hack.
6677
6678 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
6679
6680         * mini-arm.h, mini-arm.c: arm EABI fixes.
6681
6682 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
6683
6684         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
6685         case.
6686
6687         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
6688         trampolines taking a method argument.
6689
6690         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
6691
6692         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
6693         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
6694
6695         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
6696         JIT compilation throws an exception. Fixes #82050.
6697
6698 2007-07-19  Mark Probst  <mark.probst@gmail.com>
6699
6700         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
6701         with the MONO_EXCEPTION_ defines.
6702
6703 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
6704
6705         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
6706         #82117.
6707         
6708         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
6709         the cause of an assertion.
6710
6711 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
6712
6713         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
6714         removed.
6715
6716 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
6717
6718         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
6719         assert. Should fix #82103.
6720
6721 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
6722
6723         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
6724         here too. Fixes #82095.
6725
6726         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
6727         addresses.
6728
6729         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
6730
6731         * mini-amd64.h: Enable IMT for amd64.
6732         
6733         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
6734
6735 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
6736
6737         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
6738
6739 2007-07-12  Mark Probst  <mark.probst@gmail.com>
6740
6741         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
6742         as soon as check_linkdemand sets an exception_type.
6743
6744 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
6745
6746         * mini-x86.c: fixed offsets for IMT call sequence.
6747         * mini-x86.h: enable IMT again.
6748
6749 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
6750
6751         * trace.c (mono_trace_enter_method): Decode MonoType too.
6752
6753         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
6754
6755         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
6756
6757         * mini-amd64.c: Add preliminary IMT implementation.
6758         
6759 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
6760
6761         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
6762         understand the new IMT-base interface invocation (thanks to
6763         Daniel Nauck for the report and the remote debugging session).
6764
6765 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
6766
6767         * mini-x86.c: size and speed optimizations for the IMT bsearch.
6768
6769 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
6770
6771         * Makefile.am (aotcheck): Make this actually use the AOTed code.
6772
6773 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
6774
6775         * mini-trampolines.c: implement AOT IMT support.
6776         * mini-x86.h: enable IMT support for wider testing.
6777
6778 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
6779
6780         * inssel.brg (emit_imt_argument): Add aot support here.
6781
6782         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
6783
6784 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
6785
6786         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
6787         of the IMT implementation, partially from massi, with my
6788         implementation of the bsearch sequence. Disabled by default until
6789         the AOT code is implemented.
6790
6791 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
6792
6793         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
6794
6795         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
6796
6797 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
6798
6799         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
6800         arch-independent IMT JIT code from Massimiliano
6801         Mantione (massi@ximian.com) with small cleanups from me.
6802
6803 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
6804
6805         * Makefile.am: fix svn invocation to get the svn revision to be
6806         independent of the local language (build fix).
6807
6808 2007-07-09  Mark Probst  <mark.probst@gmail.com>
6809
6810         * mini.c (inline_method): Reset cfg->exception_type if the
6811         inlining is aborted.  Fixes: 82049.
6812
6813 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
6814
6815         * mini.c: remove assert from exception handling code when exception_ptr
6816         is not set.
6817
6818 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
6819
6820         * mini.c (mono_codegen): Add an assert.
6821
6822         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
6823         enter and leave code.
6824         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
6825
6826 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
6827
6828         * mini-ppc.c: fixed memory corruption for localloc(0)
6829         (bug #81852).
6830
6831 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
6832         
6833         * mini.c: Fix warnings.
6834
6835 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
6836
6837         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
6838         to emit better double->int conversions.
6839
6840 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
6841
6842         * mini.c: the provided Min/Max optimizations are valid for unisgned
6843         ints.
6844
6845 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
6846
6847         * 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
6848
6849 2007-06-28  Miguel de Icaza  <miguel@novell.com>
6850
6851         * mini.c (mono_running_on_valgrind): Add support for reporting the
6852         method and  its boundaries to valgrind.
6853
6854 2007-06-28  Martin Baulig  <martin@ximian.com>
6855
6856         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
6857
6858 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
6859
6860         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
6861
6862         * generic.2.cs: Add new test case.
6863
6864 2007-06-25  Martin Baulig  <martin@ximian.com>
6865
6866         Merged the `debugger-dublin' branch.
6867
6868         * debug-mini.c
6869         (mono_debugger_insert_method_breakpoint): New public method.
6870         (mono_debugger_remove_method_breakpoint): Likewise.
6871         (mono_debugger_check_breakpoints): New static method.
6872         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
6873
6874         * debug-debugger.h (MonoDebuggerInfo):
6875         Renamed (to keep backward compatibility in the vtable):
6876         `insert_breakpoint' -> `old_insert_breakpoint'.
6877         `remove_breakpoint' -> `old_remove_breakpoint'.
6878         `create_string' -> `old_create_string'.
6879         `lookup_class' -> `old_lookup_class'.
6880         `lookup_type' -> removed; changed into a dummy field.
6881         `lookup_assembly' -> `old_lookup_assembly'.
6882         Added (same functionality, but different signature):
6883         `create_string', `lookup_class', `lookup_assembly'
6884         Added new:
6885         `get_method_addr_or_bpt', `remove_method_breakpoint',
6886         `runtime_class_init'.
6887
6888         * debug-debugger.c: Merged the `debugger-dublin' branch.
6889
6890 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
6891
6892         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
6893         well.
6894         (peephole_pass): Likewise.
6895
6896 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
6897
6898         * driver.c: hopefully make setaffinity work also for ancient
6899         versions of linux.
6900
6901 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
6902
6903         * driver.c : win32 build fix.
6904
6905 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
6906
6907         * driver.c: check for the MONO_NO_SMP env var and bind to a single
6908         processor if it is set.
6909
6910 2007-06-21  Martin Baulig  <martin@ximian.com>
6911
6912         * debug-mini.h: New file.
6913
6914         * debug-mini.c
6915         (mono_debugger_insert_breakpoint_full): Moved here from
6916         ../metadata/mono-debug-debugger.c.
6917         (mono_debugger_remove_breakpoint): Likewise.
6918         (mono_debugger_breakpoint_callback): Likewise.
6919
6920 2007-06-15  Raja R Harinath  <rharinath@novell.com>
6921
6922         * jit-icalls.c (mono_helper_compile_generic_method): Update to
6923         changes in MonoGenericClass.
6924
6925 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
6926
6927         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
6928
6929 2007-06-14  Raja R Harinath  <rharinath@novell.com>
6930
6931         * jit-icalls.c (mono_helper_compile_generic_method): Update to
6932         removal of MonoGenericMethod.
6933
6934 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
6935
6936         * mini-exceptions.c: hooks for the exception events profiling API.
6937
6938 2007-06-14  Randolph Chung  <tausq@debian.org>
6939
6940         * Makefile.ma: Add hppa target.
6941         * mini-arch.h: Include mini-hppa.h
6942         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
6943         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
6944         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
6945
6946 2007-06-14  Randolph Chung  <tausq@debian.org>
6947
6948         * inssel.brg: Add rules for "chained" compare-branch operations so that
6949         a single compare op can affect multiple branches.  Adjust cost for
6950         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
6951         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
6952         cost for some rules so that they can more easily be overridden by
6953         per-arch rules (with fixes from lupus).
6954         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
6955
6956 2007-06-13  Randolph Chung  <tausq@debian.org>
6957
6958         * mini-ops.h: Reorder branch ops so that they match the order of the
6959         corresponding CEE_* ops.  The code expects them this way.
6960         Add new ops for HPPA target.
6961         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
6962
6963 2007-06-13  Randolph Chung  <tausq@debian.org>
6964
6965         * mini-exceptions.c: Handle cases where the stack grows towards
6966         larger addresses.
6967         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
6968
6969 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
6970
6971         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
6972         counter.
6973         * driver.c: explain where a non-matching corlib is found.
6974
6975 2007-06-13  Mark Probst  <mark.probst@gmail.com>
6976
6977         * mini.c (print_jit_stats): Output dynamic code allocation stats.
6978
6979 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
6980
6981         * mini-exceptions.c: Generate a method profile leave event during
6982         an exception to ensure that the profiler gets notified.
6983
6984 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
6985
6986         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
6987         branch.
6988
6989         * cpu-amd64.md: Add long_and/or/xor opcodes.
6990
6991 2007-06-06  Wade Berrier  <wberrier@novell.com>
6992
6993         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
6994         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
6995         length of instruction shr_imm (expected 8, got 10)
6996
6997 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
6998
6999         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
7000
7001 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7002
7003         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7004         MonoInternalHashTable again (fixed bug in the internal hash table
7005         code).
7006
7007 2007-06-06  Mark Probst  <mark.probst@gmail.com>
7008
7009         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
7010         Have to figure out what makes it crash the SWF regression.
7011
7012 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
7013
7014         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
7015
7016 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
7017
7018         * mini.c: optimize out the type check when storing null in a
7019         reference array.
7020
7021 2007-06-04  Mark Probst  <mark.probst@gmail.com>
7022
7023         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
7024         MonoInternalHashTable.
7025
7026 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
7027
7028         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
7029         signed integer methods.
7030
7031 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7032
7033         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
7034         permanently since the current approach doesn't work.
7035
7036 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
7037
7038         * inssel.brg (stmt): Only call delegate->invoke_impl if 
7039         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
7040
7041 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7042
7043         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
7044         the sreg2==rdx case.
7045         
7046         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
7047         account if it contains a rex prefix.
7048         (peephole_pass): Handle OP_FMOVE as well.
7049
7050 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
7051
7052         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
7053         as it causes regressions.
7054
7055 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
7056
7057         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
7058         static case as well.
7059
7060         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
7061
7062         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7063         (mono_arch_get_this_arg_from_call): Ditto.
7064
7065         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
7066
7067         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
7068         invoke_impl field.
7069
7070         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
7071         (mono_arch_get_this_arg_from_call): Ditto.
7072
7073         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
7074         
7075         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
7076         try to create optimized invoke code and use that for further invocations. 
7077         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
7078
7079         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
7080
7081 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
7082
7083         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
7084         sealed classes or methods.
7085         *devirtualization.cs: tests for the new optimization
7086
7087 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
7088
7089         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
7090         by the update_volatile () function.
7091
7092 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
7093
7094         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
7095         require it.
7096
7097         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
7098
7099 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
7100
7101         * mini.c: Add configure checks for header files.
7102         * mini-x86.c: Add configure checks for header files.
7103         * trace.c: Add configure checks for header files.
7104         * aot-runtime.c: Add configure checks for header files.
7105         * aot-compiler.c: Add configure checks for header files.
7106         * driver.c: Add configure checks for header files.
7107         * mini-codegen.c: Add configure checks for header files.
7108         
7109         Code is contributed under MIT/X11 license.
7110
7111 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
7112
7113         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
7114         icompare_imm -128 + op_iclt. Fixes #81703.
7115
7116 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
7117
7118         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
7119
7120 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
7121
7122         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
7123         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
7124         so that all isinst checks now use "interface_bitmap".
7125
7126 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
7127
7128         * cpu-amd64.md (jmp): Fix a warning.
7129
7130         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
7131
7132         * basic.cs: Add new regression test.
7133
7134         * basic.cs: Remove test which is now in basic-long.cs.
7135
7136         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
7137
7138         * basic-long.cs: Add new test.
7139         
7140 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
7141
7142         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
7143
7144 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
7145
7146         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
7147
7148         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
7149         places.
7150         
7151         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
7152         throwing code a bit.
7153
7154         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
7155         the exception throwing code a bit.
7156
7157         * mini-x86.c (get_call_info): Allocate result from a mempool.
7158
7159 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
7160
7161         * aot-compiler.c (find_typespec_for_class): Fix the assert.
7162
7163         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
7164
7165         * mini.h (MonoCompile): Add 'token_info_hash' field.
7166
7167         * mini.c: Save token->method associations during compilation so the AOT 
7168         compiler can use it.
7169         
7170         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
7171         which reference generic classes and methods.
7172
7173 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
7174
7175         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
7176
7177         * aot-compiler.c (compile_method): Fix a typo in a comment.
7178
7179         * aot-runtime.c (decode_cached_class_info): Skip generic types.
7180
7181         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
7182         everything generic.
7183
7184         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
7185
7186 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
7187
7188         * mini.h (MonoCompile): Add 'args' field.
7189
7190         * mini.c (mono_compile_create_vars): Store variables representing the arguments
7191         into cfg->args.
7192
7193         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
7194
7195 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
7196
7197         * mini.c (mono_compile_get_interface_var): Remove this unused function.
7198
7199         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
7200
7201         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
7202         opcodes for some opcodes.
7203
7204         * mini.h *.brg *.c: Use the new opcodes.
7205
7206 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
7207
7208         * mini.h: Bumped aot revision.
7209
7210         * inssel.brg: modified code generation of type checks for interfaces
7211         to use the new "MonoClass.interface_bitmap" instead of the old
7212         "MonoClass.interface_offsets".
7213
7214 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
7215
7216         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
7217
7218 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
7219
7220         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
7221         64 bit platforms.
7222
7223 2007-04-27  Neale Ferguson <neale@sinenomine.net>
7224
7225         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
7226
7227 2007-04-27  Wade Berrier  <wberrier@novell.com>
7228
7229         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
7230         mini.h) to fix build.
7231
7232 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
7233
7234         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
7235         
7236         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
7237         causes the corlib unit tests to fail.
7238
7239 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
7240
7241         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
7242
7243         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
7244
7245         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
7246         opcodes to the comparison relations.
7247
7248         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
7249         opcodes to their types.
7250         
7251         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
7252
7253         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
7254         it in cfg->arch.cinfo.
7255
7256         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
7257
7258         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
7259         cfg->cil_offset_to_bb.
7260
7261 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
7262
7263         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
7264         created becase of initlocals.
7265
7266 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
7267
7268         * mini-alpha.c cpu-alpha.md: More alpha port work from 
7269         Sergey Tikhonov <tsv@solvo.ru>.
7270
7271 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
7272
7273         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
7274
7275 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
7276
7277         * cpu-s390.md (break): Correct the length of break instruction.
7278
7279 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
7280
7281         * mini.c: fix a couple of soft-float issues and comments.
7282
7283 2007-04-15  Miguel de Icaza  <miguel@novell.com>
7284
7285         * trace.c (is_filenamechar): - is also a filename char.
7286
7287 2007-04-15  Neale Ferguson <neale@sinenomine.net>
7288
7289         * mini-s390.c: Correct checking for enum type in return value processing.
7290
7291 2007-04-14  Raja R Harinath  <rharinath@novell.com>
7292
7293         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
7294         (version.h): Makefile is in the build directory.
7295
7296 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
7297
7298         * mini-amd64.h: fix for assertion failure on Solaris/amd64
7299
7300 2007-04-11  Martin Baulig  <martin@ximian.com>
7301
7302         * mini.c (can_access_member): Fix handling of generic classes;
7303         fixes #81259.
7304
7305 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
7306
7307         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
7308
7309 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
7310
7311         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
7312
7313 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
7314
7315         * mini-codegen.c: make sure the right spill amount is
7316         used for fp or integer registers (fixes the float_sub_spill() on ppc).
7317
7318 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
7319
7320         * mini-ppc.c: fixes for the fp_branch_nan test.
7321
7322 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
7323
7324         * basic.cs: Comment out new test which still fails on ia64.
7325
7326 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7327
7328         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
7329
7330 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
7331
7332         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
7333
7334 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
7335
7336         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
7337         on 64 bit machines. Fixes part of #80738.
7338
7339         * basic.cs: Add regression test.
7340
7341 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
7342
7343         * inssel.brg basic.cs: Revert previous change to fix build.
7344
7345         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
7346         platforms.
7347         
7348         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
7349
7350         * basic.cs: Add new regression test.
7351
7352 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
7353
7354         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
7355         many arguments.
7356
7357 2007-03-16  Neale Ferguson <neale@sinenomine.net>
7358
7359         * cpu-s390x.md: Correct length of break instruction.
7360
7361 2007-03-16  Neale Ferguson <neale@sinenomine.net>
7362
7363         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
7364         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
7365
7366 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
7367
7368         * *.c: Begin WIN64 port.
7369         * mini.c:  Use correct register in profiler.
7370         * mini-amd64.c: No inline assembly on Win64.
7371         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
7372         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
7373         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
7374         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
7375         mono_arch_ip_from_context for Win64.
7376         
7377         Contributed under MIT/X11 license.
7378
7379 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
7380
7381         * exceptions-amd64.c (seh_handler): Ditto.
7382
7383         * exceptions-x86.c (seh_handler): Fix a memory leak.
7384
7385 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
7386
7387         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
7388         mini-s390x.c: fixed peephole optimizations to deal
7389         correctly with 1 and 2 byte reload avoidance.
7390
7391 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
7392
7393         * cpu-s390.md, cpu-s390x.md: update localloc length.
7394
7395 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
7396
7397         * cpu-g4.md: added missing descriptions.
7398
7399 2007-03-14  Miguel de Icaza  <miguel@novell.com>
7400
7401         *  Makefile.am: Add support so the tail tests are not executed on
7402         PowerPC as that is a known limitation of the PowerPC port.
7403
7404 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
7405
7406         * runmdesc.bat:  Move to msvc directory.
7407         
7408 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
7409
7410         * runmdesc.bat:  Run executable that was produced by the current
7411         target and sent via an argument.
7412         
7413 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
7414
7415         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
7416         #81102.
7417
7418         * generics.2.cs: Add regression test.
7419
7420 2007-03-09  Wade berrier  <wberrier@novell.com>
7421
7422         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
7423
7424 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
7425
7426         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
7427         AOT code depends on this.
7428
7429 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
7430
7431         * mini.c: more precise tracking of types in the eval stack
7432         (part of fix for bug #81044).
7433
7434 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
7435
7436         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
7437
7438         * aot-compiler.c (encode_patch): Remove an obsolete comment.
7439
7440 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
7441
7442         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
7443
7444         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
7445
7446 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
7447
7448         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
7449         a pointer on 64 bit systems. Fixes #80190.
7450
7451         * iltests.il: Add new regression test.
7452
7453 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
7454
7455         * mini.c: inline a constant for Environment.IsRunningOnWindows.
7456
7457 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
7458
7459         * trace.c: Remove an erroneous alignemnt check when tracing.
7460           Fixes --trace on OSX86.
7461
7462 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
7463
7464         * mini-$(arch).h: initialize SP in context for all the archs.
7465
7466 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
7467
7468         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
7469         regressions in the thread tests.
7470
7471 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
7472
7473         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
7474         - fixed implementation of LOCALLOC opcode
7475         - implemented non-un compare for floats
7476         - code cleanup
7477         - implementation of FDIV and CKFINITE opcodes
7478         - fixes for latest mono updates
7479         - additional arch opcodes
7480
7481 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
7482
7483         * Makefile.am: simplify and merge rules for cross-compilation.
7484
7485 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
7486
7487         * local-propagation.c: Actually *apply* the fix for bug 80591...
7488
7489 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
7490
7491         * mini-exceptions.c: backuot part of the last change
7492         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
7493
7494 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
7495         * inssel.brg: Fix bug 59286.
7496
7497
7498 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
7499
7500         * mini-exceptions.c: patch from Zoltan to correctly check for
7501         stack boundaries (using the stack register, not the frame register),
7502         fixes bugs #80724, #79717.
7503
7504 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
7505
7506         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
7507         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
7508
7509         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
7510         presence of frame pointer elimination.
7511
7512 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
7513         
7514         * mini-x86.h: NetBSD UCONTEX_REG defines.
7515
7516 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
7517
7518         * inssel-amd64.brg: Fix amd64 build.
7519
7520 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
7521
7522         * mini.h: remove extern to workaround what looks likes gcc bug 26905
7523         on amd64.
7524
7525 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
7526
7527         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
7528         ends.
7529
7530         * mini-<ARCH>.c: Use mono_is_regsize_var ().
7531
7532 2007-01-30 Mark Mason <mason@broadcom.com>
7533
7534            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
7535            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
7536            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
7537            beginning support for CEE_JMP [not quite working yet]
7538            * tramp-mips.c: LMF handling now works
7539         
7540 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
7541
7542         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
7543
7544         * mini.h (NULLIFY_INS): New macro.
7545
7546 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
7547
7548         * mini.c: statistical profiler fix for windows, patch
7549         from Tor Lillqvist (tml@novell.com).
7550
7551 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
7552         * local-propagation.c: Fix bug 80591.
7553
7554 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
7555
7556         * Makefile.am: put back the --export-dynamic option as with
7557         the previous gmodule flags (thanks to Robert Jordan).
7558
7559 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
7560
7561         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
7562
7563         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
7564         simplify and speed up the local register allocator. Also rename some fields
7565         like iassign->vassign.
7566         
7567         * regalloc.c: Remove some functions which are no longer used since their
7568         inlined version is in mini-codegen.c.
7569         
7570         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
7571
7572         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
7573
7574 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
7575
7576         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
7577         narrowing. Fixes #80622.
7578
7579         * iltests.il: Add new regresssion test. 
7580
7581 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
7582
7583         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
7584         debug-debugger.c, debug-debugger.h: warning fixes.
7585         * driver.c: updated copyright year and made it fit in one line.
7586
7587 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
7588
7589         * aot-runtime.c: updated to use mono-dl instead of gmodule.
7590
7591 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
7592
7593         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
7594
7595         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
7596
7597         * iltests.il: Add new test for bug #80507.
7598
7599 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
7600
7601         * mini-arm.h: use soft-float also on vfp for now.
7602
7603 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
7604
7605         * mini.c: fix some more soft-float issues.
7606
7607 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
7608
7609         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
7610
7611 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
7612         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
7613         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
7614         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
7615
7616 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
7617
7618         * mini-arm.c: typo fix.
7619
7620 2007-01-23  Neale Ferguson <neale@sinenomine.net>
7621
7622         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
7623
7624 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
7625
7626         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
7627         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
7628
7629         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
7630
7631         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
7632
7633         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
7634         
7635         * inssel.brg: Fix a warning.
7636
7637         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
7638
7639         * abcremoval.c ssa.c ssapre.c: Update after this change.
7640         
7641         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
7642
7643         * dominators.c (df_set): Use mono_bitset_union_fast.    
7644
7645 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
7646
7647         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
7648         mini-codegen.c: reduce relocations and memory usage for the cpu
7649         description.
7650
7651 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
7652
7653         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
7654
7655         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
7656         to reduce their size.
7657
7658 2007-01-19 Mark Mason <mason@broadcom.com>
7659
7660         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
7661         * mini-mips.c: more configuration macros, support long conditional branches, additional
7662         asserts, fix epilog instrumentation.
7663         * mini-mips.h: use standard stack walk
7664         * cpu-mips.md: increase size of div, rem and conditional branches
7665         
7666 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
7667
7668         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
7669         to cpu spec data.
7670
7671 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
7672
7673         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
7674         (compile_method): Ditto.
7675
7676         * aot-runtime.c (decode_klass_info): Ditto.
7677
7678         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
7679         needed by the code generated by inssel.brg. Also fix a warning.
7680
7681 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
7682
7683         * mini.c: deal with enums that become genericinsts by
7684         being nested in a generic class (bug #79956).
7685
7686 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
7687
7688         * mini.c: match the generic definition to check for
7689         private access with generic types (bug #78431).
7690
7691 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
7692
7693         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
7694         to make life easier for people cross-compiling that insist on not
7695         using scratchbox.
7696
7697 2007-01-17 Mark Mason <mason@broadcom.com>
7698
7699         * inssel-long.brg: patch to deal with mips missing flags
7700         * inssel-long32-mips.brg: implement overflow checks
7701         * insset-mips.brg: implement overflow checks
7702         * mini-mips.h: implement conditional exception handling
7703         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
7704           Remove unused code, minor cleanups.
7705         * exceptions-mips.c: minor cleanups
7706         * mini-ops.h: add mips conditional exception ops
7707         * cpu-mips.md: add mips conditional exception ops
7708
7709         
7710 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
7711
7712         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
7713         to deal with mips missing of flags.
7714
7715 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
7716
7717         * exceptions-ppc.c: execute fault handlers.
7718
7719 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
7720
7721         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
7722
7723 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
7724
7725         * mini.c: handle also floating point values in initialize_array.
7726
7727 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
7728
7729         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
7730         array initialization and make it conditional on the intrins option.
7731
7732 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
7733
7734         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
7735         relocations and put the patch info names close to the enum definition.
7736
7737 2007-01-15 Mark Mason <mason@broadcom.com>
7738
7739         * basic.cs, exceptions.cs: break up large tests to increase debugability.
7740
7741 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
7742
7743         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
7744
7745 2007-01-12  Raja R Harinath  <rharinath@novell.com>
7746
7747         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
7748
7749 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
7750
7751         * Makefile.am: distribute the mips sources.
7752
7753 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
7754
7755         * mini-codegen.h: handle bug #80489 here, by excluding ecx
7756         directly.
7757
7758 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
7759
7760         * cpu-x86.md: back out for now as this triggers other regressions.
7761
7762 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
7763
7764         * cpu-x86.md: force src1 and dest regpair for long shift instructions
7765         to eax:edx, so ecx can't get allocated to them (bug #80489).
7766
7767 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
7768
7769         * mini.c, mini-exceptions.c: enabled running fault handlers
7770         (bug #80469).
7771
7772 2007-01-03  Miguel de Icaza  <miguel@novell.com>
7773
7774         * driver.c: If nothing fail, do not use the string "failed",
7775         because it makes it very annoying to view test result logs on the
7776         web. 
7777
7778 2006-12-30  Miguel de Icaza  <miguel@novell.com>
7779
7780         * debug-debugger.c (mono_debugger_main): Rename "main" to
7781         "main_method" to prevent a warning.
7782
7783         Remove a warning for unused field.
7784
7785 2006-12-28  Martin Baulig  <martin@ximian.com>
7786
7787         * debug-debugger.c
7788         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
7789
7790 2006-12-22  Martin Baulig  <martin@ximian.com>
7791
7792         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
7793         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
7794         seperate `.mdb_debug_info' section, so we can access it from the
7795         debugger even if the binary is stripped.
7796
7797         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
7798         from the `.mdb_debug_info' here to prevent the linker from
7799         removing that section.
7800
7801         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
7802         mdb-debug-info64.s.
7803
7804 2006-12-19  Robert Jordan  <robertj@gmx.net>
7805
7806         * mini-x86: enable the code to return small structures in
7807         registers for FreeBSD as well. Fixes bug #80278.
7808         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
7809
7810 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
7811
7812         * mini-x86.c: align the stack when calling the profiler
7813         function instrumenting the prolog (on OSX).
7814
7815 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
7816
7817         * mini.c: emit a break opcode where Debugger.Break () is called.
7818
7819 2006-12-13  Miguel de Icaza  <miguel@novell.com>
7820
7821         * mini.c (mono_method_to_ir): Provide useful information on this
7822         assert, to prevent others from debugging like I did.
7823
7824 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
7825
7826         * mini.c: enable code which was incorrectly commented
7827         (bug #80235).
7828
7829 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
7830
7831         * mini-x86.c: enable on OSX, too, the code to return small
7832         structures in registers.
7833
7834 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
7835
7836         * mini-x86.c: remove the use of the dynamic code manager here, too.
7837
7838 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
7839
7840         * mini.h, debug-debugger.c, tramp-*.c: fixed 
7841         mono_debugger_create_notification_function() to use
7842         mono_global_codeman_reserve () instead of a dynamic code manager.
7843
7844 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
7845
7846         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
7847         ves_array_element_address() jit icall and use a generated
7848         managed method instead (which is about 4 times faster for a rank 3
7849         array access).
7850
7851 2006-11-29  Mark Mason  <mason@broadcom.com>
7852
7853         * basic-calls.cs: additional tests for passing
7854         structures as function arguments.
7855
7856 2006-11-29  Mark Mason  <mason@broadcom.com>
7857
7858         * mini-mips.h: disable custom exception handling
7859         * mini-mips.c: throw/rethrow should use jalr to call
7860         exception stubs.  Fixed bug with passing structures
7861         by value. More support for tracing floating point
7862         functions.
7863
7864 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
7865
7866         * mini.c: fixed typo in the soft-float ldind.r4 handling
7867         (bug #80086).
7868
7869 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
7870
7871         * mini.c, mini.h, driver.c: added --runtime command line
7872         option to select a different runtime than the autodetected one.
7873         * jit.h: added API for embedders to initialize with a specific
7874         runtime version.
7875
7876 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
7877
7878         * mini.c: handle also boxing of r4 values (bug #80024).
7879
7880 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
7881
7882         * mini-ppc.c: force indirect calls until we reserve
7883         enough address space for all the generated code.
7884
7885 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
7886
7887         * exceptions-arm.c: workaround bugs in the libc definition
7888         of struct ucontext.
7889
7890 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
7891
7892         * inssel.brg: fixes from me and Mark Mason.
7893
7894 2006-11-23  Dick Porter  <dick@ximian.com>
7895
7896         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
7897         semaphore display now we've fixed the initial value
7898
7899 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7900
7901         * inssel.brg: partially revert the last change to fix the build.
7902
7903 2006-11-21  Mark Mason  <mason@broadcom.com>
7904
7905         * inssel.brg: Add and use compare-and-branch macros to support
7906         architectures that do not have condition code registers (ie. MIPS).
7907         * *-mips.{c,brg,md}: Fix copyright statements
7908
7909 2006-11-20  Mark Mason  <mason@broadcom.com>
7910
7911         * Makefile.am: remove mini-codegen.c from list of MIPS sources
7912         * mini.c: Allow GET_CONTEXT to be specified by the arch port
7913         * mini.h: Added declaration for mono_print_ins()
7914         * mini-codegen.c: added ins_spec initializer for MIPS
7915         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
7916         vreg to be virtual and hreg to be non-virtual.
7917         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
7918         is not yet working/implemented correctly.
7919         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
7920         non-static, fixup calls to print_ins() from other parts in the file.
7921
7922 2006-11-20  Mark Mason  <mason@broadcom.com>
7923
7924         * basic-calls.cs: added tests for passing structures as arguments
7925         to calls.
7926
7927 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
7928
7929         * inssel-long32.brg: optimize signed division by power of two.
7930
7931 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
7932
7933         * mini-arm.c: added support for interworking with thumb code
7934         (mono must be still be built using the ARM instruction encoding).
7935
7936 2006-11-19  Miguel de Icaza  <miguel@novell.com>
7937
7938         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
7939         verifier has different rules for it.   Fixes a few verifier issues
7940         in the test suite.
7941
7942         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
7943         at the end, so people know what happened.
7944
7945 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
7946
7947         * brach-opts.c: in optimize_exception_target() make sure we
7948         are in a catch clause (fixes bug #79871).
7949
7950 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
7951
7952         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
7953         more soft-float support fixes.
7954
7955 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
7956
7957         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
7958         that are passed half on the stack and half in registers.
7959
7960 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
7961
7962         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
7963         more mips integration work from Mark E Mason 
7964         <mark.e.mason@broadcom.com>.
7965
7966 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
7967
7968         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
7969         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
7970         tramp-mips.c: added sources for the mips port, not
7971         integrated in the build yet. Contributed by
7972         Mark E Mason <mark.e.mason@broadcom.com>.
7973
7974 2006-11-14  Neale Ferguson <neale@sinenomine.net>
7975
7976         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
7977
7978 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7979
7980         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
7981         put the soft-float rules in its own file since it seems to
7982         break s390 compilation.
7983
7984 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
7985
7986         * mini-arm.c: fixed wrnings.
7987
7988 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
7989
7990         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
7991         inssel-arm.brg: ARM support for soft-float.
7992
7993 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
7994
7995         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
7996         loads and stores of 32 bit fp values.
7997
7998 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
7999
8000         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
8001
8002         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
8003         works. Fixes #79852 and #79463.
8004
8005 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
8006
8007         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
8008         more soft-float support WIP and fixes.
8009
8010 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
8011
8012         * mini-arm.c: some VFP updates.
8013
8014 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
8015
8016         * mini-exceptions.c: 0 is a valid local var offset in some
8017         architectures, don't assert (bug #78508).
8018
8019 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
8020
8021         * exceptions-arm.c: fixed off by one error in stack walk code.
8022
8023 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
8024
8025         * mini.h, mini.c: more precise tracking of type load exceptions.
8026
8027 2006-11-03  Robert Jordan  <robertj@gmx.net>
8028
8029         * Makefile.am: [WIN32] Add monow.exe target.
8030         * driver.c: [WIN32] Don't detach the console when debugging.
8031         Fixes bug #79797.
8032         
8033 2006-10-30  Miguel de Icaza  <miguel@novell.com>
8034
8035         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
8036
8037 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
8038
8039         * aot-compiler.c (emit_method_info): Add a case missed earlier.
8040
8041         * driver.c (mini_regression): Fix --regression with AOT.
8042
8043         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
8044
8045 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
8046
8047         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
8048
8049         * mini-sparc.h: Don't use sigaction on sparc/linux.
8050
8051         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
8052
8053         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
8054
8055         * mini-exceptions.c: Add proper include files for getpid ().
8056
8057 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
8058
8059         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
8060         address instead of a MonoJitInfo* to avoid decoding the exception info for the
8061         method.
8062
8063         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
8064         name cache to reduce its size.
8065
8066         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
8067
8068 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
8069
8070         * mini-x86.c: Save/restore the current LMF structure more efficiently using
8071         the mono_lmf TLS variable.
8072
8073         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
8074         trampoline lmf frames.  
8075
8076         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
8077
8078 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
8079
8080         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
8081         the mono_lmf TLS variable.
8082
8083         * mini-exceptions.c: Access the LMF structure through accessors.
8084
8085         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
8086         variable instead of in jit_tls->lmf.
8087
8088         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
8089         
8090         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
8091         trampoline lmf frames.
8092
8093         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
8094
8095 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
8096
8097        * mini.c trace.c mini-x86.c: Revert these too.
8098         
8099        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
8100        signature change.
8101
8102 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
8103
8104         * genmdesc.c: removed now dead code.
8105
8106 2006-10-09  Robert Jordan <robertj@gmx.net>
8107
8108         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
8109
8110 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
8111
8112         * mini.h: do not leave gaps in the opcode values.
8113
8114 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
8115
8116         * jit-icalls.h: flag functions as internal here, too.
8117
8118 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
8119
8120         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
8121         functions with the internal attribute.
8122
8123 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
8124
8125         * aot-compiler.c: fclose the file descriptor in the profile read loop.
8126
8127 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
8128
8129         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
8130         for soft-float.
8131
8132 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
8133
8134         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
8135         tail calls as on other platforms.
8136
8137         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
8138
8139         * iltests.il: Add a few tailcall tests.
8140
8141 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8142
8143         * driver.c: fix loop for old compilers (bug #79521).
8144
8145 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
8146
8147         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
8148
8149         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
8150
8151         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
8152         metadata without any code.
8153
8154         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
8155         more precise debugging information using gdb.
8156
8157 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
8158
8159         * inssel-ia64.brg: Make the helper methods static.
8160
8161 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8162
8163         * inssel-x86.brg: make the helper methods static.
8164
8165 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
8166
8167         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
8168
8169 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
8170
8171         * mini.c: updates for monoburg changes.
8172         * inssel.brg: make a few helper functions static as they should.
8173
8174 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
8175
8176         * Makefile.am: Move mini-codegen.c to common_sources.
8177
8178 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
8179
8180         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
8181         instructions.
8182         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
8183         mini-ppc.h: port to use the common local register allocator.
8184
8185 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8186
8187         * mini.h: Remove the comment too then.
8188
8189 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
8190
8191         * mini.h: put back backend.data which is to be used shortly and
8192         doesn't increase the size of MonoInst. If any 64 bit arch aligned
8193         pointers on 4 byte boundaries it'd have much bigger issues running
8194         and you can ifdef it out anyway.
8195
8196 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8197
8198         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
8199         MonoInst size by 4 bytes on 64 bit machines.
8200
8201 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8202
8203         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
8204         replacement with more meaningful field names. Arch maintainers, please
8205         check the assigned names are good enough for your arch.
8206
8207 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8208
8209         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
8210         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
8211
8212 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
8213
8214         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
8215         relocations and memory requirements, put the optimization flags
8216         definitions in their own file.
8217
8218 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
8219
8220         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
8221
8222         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
8223
8224 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
8225
8226         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
8227
8228 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
8229
8230         * inssel.brg: use the correct function to get the size of an item
8231         in an array, given an element class.
8232         * aot-compiler.c: do not access class->class_size directly.
8233
8234 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8235
8236         * mini.h, debug-mini.c: added a debugging function to print
8237         info about local variables and arguments in a jitted method.
8238
8239 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
8240
8241         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
8242
8243         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
8244
8245 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8246
8247         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
8248         inner and outer loops when passing vtypes.
8249
8250 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
8251
8252         * mini-ppc.c: take into account the cpu errata for cache flushing
8253         which caused some random errors (bug #79381).
8254
8255 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
8256
8257         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
8258         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
8259
8260 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
8261
8262         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
8263         loaded.
8264
8265         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
8266         freebsd ports tree.
8267
8268         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
8269         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
8270
8271         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
8272         displacement.
8273
8274 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
8275
8276         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
8277
8278 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
8279
8280         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
8281         macro does not have to be changed during debugging.
8282
8283         * 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>.
8284
8285         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
8286
8287         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
8288         
8289         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
8290         MONO_ARCH_NO_EMULATE_MUL is defined.
8291
8292         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
8293
8294         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
8295
8296         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
8297
8298         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
8299         
8300 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
8301
8302         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
8303         stuff to mini-exceptions.c where it is used.
8304
8305         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
8306         setup code, the real one is in mini-exceptions.c.
8307
8308         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
8309         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
8310         some changes from the freebsd ports tree.
8311
8312         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
8313         constants.
8314         
8315         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
8316
8317 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
8318
8319         * mini.c: on Linux, check for /proc to be mounted
8320         (bug# 79351, novell bug#201204).
8321
8322 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
8323
8324         * mini.c: handle cases where pthread_attr_getstack() behaves
8325         incorrectly (bug #78096).
8326
8327 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
8328
8329         * mini-arm.c: support larger stack frames (bug #79272).
8330
8331 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
8332
8333         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
8334
8335         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
8336         tokens.
8337
8338         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
8339         mono_class_from_name () to find a class from its name.
8340
8341         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
8342
8343 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
8344
8345         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
8346
8347 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
8348
8349         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
8350
8351 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
8352
8353         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
8354         callinfo->trampoline.
8355
8356         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
8357         fixes #79271.
8358         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
8359         future.
8360
8361 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
8362
8363         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
8364
8365 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
8366
8367         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
8368         stats.method_trampolines, it is already done by the generic trampoline code.
8369
8370         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
8371         
8372 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
8373
8374         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
8375
8376         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
8377
8378         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
8379
8380         * mini.c (print_jit_stats): Print mscorlib mempool size too.
8381         
8382         * mini.c (print_jit_stats): Print new stats.
8383
8384         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
8385
8386 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
8387
8388         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
8389         Address on two dimensional arrays. Fixes #78729.
8390
8391         * mini.h (MonoCompile): Add a 'skip_visibility' field.
8392
8393         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
8394         a method.
8395
8396         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
8397
8398         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
8399         #79130.
8400         
8401         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
8402         a race condition.
8403         (mini_get_ldelema_ins): Ditto.
8404
8405 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
8406
8407         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
8408         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
8409         Fixes #79213.
8410
8411 2006-08-29 Neale Ferguson <neale@sinenomine.net>
8412
8413         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
8414         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
8415
8416         * exceptions-s390x.c: Cosmetic change.
8417
8418         * tramp-s390.c: Fix warning.
8419
8420         * cpu-s390.md: Correct length of mul_imm.
8421
8422 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
8423
8424         * aot-compiler.c: added binary writer with ELF backend
8425         implementation (only on Linux/x86 for now).
8426
8427 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
8428
8429         * Makefile.am: Don't run net 2.0 AOT tests.
8430
8431         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
8432         (mono_compile_assembly): Skip net 2.0 assemblies as well.
8433
8434         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
8435
8436 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
8437
8438         * aot-compiler.c: simplified and refactored the asm-writing code
8439         to allow different backends.
8440
8441 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
8442
8443         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8444
8445         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
8446         little. Share patches of type TYPE_FROM_HANDLE as well.
8447
8448         * mini.c (mono_patch_info_equal): New helper function.
8449         (mono_patch_info_hash): Ditto.
8450
8451         * aot-compiler.c (emit_method_code): Fix s390 build.
8452
8453         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
8454         is not handled because it is stored as a flag and not as a type ctor. Fixes
8455         #79016.
8456
8457 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
8458
8459         * aot-compiler.c: Fix computation of GOT slot statistics.
8460         
8461         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
8462         Also remove support for not PIC AOT.
8463
8464         * mini.h: Bump AOT file format version.
8465
8466         * objects.cs: Add a test for #78990.
8467
8468         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
8469         (peter.dettman@iinet.net.au). Fixes #79087.
8470
8471         * basic-long.cs: Add a test for the above.
8472
8473 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
8474
8475         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
8476         
8477         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
8478         code somewhat.
8479
8480 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
8481
8482         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
8483         exceptions.
8484
8485 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
8486
8487         * mini.c: Don't verify COM proxy invoke calls
8488         
8489
8490 2006-08-10  Dick Porter  <dick@ximian.com>
8491
8492         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
8493         which process is holding semaphores locked.
8494
8495 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
8496
8497         * mini-ia64.c mini-amd64.c: Fix #79027.
8498
8499         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
8500
8501         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
8502
8503         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
8504         implicit arguments in a vararg call. Fixes #79027.
8505
8506 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
8507
8508         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
8509         (mono_get_array_new_va_signature): Ditto.
8510
8511 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
8512
8513         * aot-runtime.c: Call init_plt lazily.
8514
8515         * inssel-long.brg: Fix unsigned long->int conversion.
8516
8517         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
8518
8519         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
8520         that most data is now in the .rss/.data section.
8521
8522 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
8523
8524         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
8525
8526         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
8527
8528         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
8529
8530         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
8531
8532         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
8533         virtual call. Fixes #79010.
8534
8535         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
8536         and use the result as the this argument in the real call.
8537
8538         * generics.2.cs: Add a new test for #79010.
8539         
8540 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
8541
8542         * mini-x86.c: Fix a warning.
8543
8544         * aot-compiler.c: Add a bunch of statistics.
8545
8546         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
8547
8548 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
8549
8550         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
8551
8552 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
8553
8554         * 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>.
8555
8556 2006-07-13  Miguel de Icaza  <miguel@novell.com>
8557
8558         * mini.c (mono_method_to_ir): Obtain the original method in the
8559         CIL stream and use this to perform validation.
8560
8561         Fixed: #78816
8562
8563 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
8564
8565         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
8566         (mono_arch_call_opcode): Ditto.
8567
8568         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
8569         #78826.
8570
8571         * mini.c (mono_patch_info_dup_mp): New helper function.
8572         
8573         * aot-compiler.c (compile_method): Fix some of the memory allocated during
8574         compilation. Fixes #78827.
8575
8576 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
8577
8578         * declsec.c: Use original security informations for
8579           MONO_WRAPPER_MANAGED_TO_MANAGED.
8580
8581 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
8582
8583         * mini.c: Allow Com Interop methods/classes and
8584         don't verify COM wrapper calls
8585         
8586
8587 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
8588
8589         * inssel-long32.brg: Fix long->i4 checked conversion.
8590
8591         * exceptions.cs: Add a test for the above.
8592
8593 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
8594
8595         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
8596
8597         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
8598         leaks.
8599
8600         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
8601         #78775.
8602
8603 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
8604
8605         * mini.c: Fix solaris/x86 exception handling.
8606
8607         * Makefile.am: Get rid of $(ICU_LIBS).
8608
8609 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
8610
8611         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
8612         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
8613         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
8614
8615         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
8616
8617         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
8618         this function causes a SIGSEGV.
8619
8620 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
8621
8622         * mini.c: Remove unused solaris/x86 includes.
8623
8624 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
8625
8626         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
8627
8628 2006-06-20  Jb Evain  <jbevain@gmail.com>
8629
8630         * cpu-g4.md: fix max length of start_handler instruction.
8631
8632 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
8633         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
8634
8635 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
8636         * ssa.c: Fixed bug 78653 for SSA based deadce.
8637         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
8638         MonoInst.flags, used in SSA based deadce.
8639         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
8640         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
8641
8642 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
8643
8644         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
8645         it can end up using non executable memory on ppc64 systems
8646         running ppc32 userspace (fix from Johannes Berg).
8647
8648 2006-06-14  Dick Porter  <dick@ximian.com>
8649
8650         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
8651         4.1.1
8652
8653 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
8654         * mini.c: Made so that inline is locally disabled if it would
8655         trigger a .cctor, because too many apps depend on this behavior
8656         (which seems to be also the one of the MS CLR).
8657
8658 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
8659
8660         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
8661         No idea why this worked before.
8662
8663         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
8664         which branch to outer exception clauses since they could skip the
8665         inner finally clauses. Fixes #78633.
8666
8667         * exceptions.cs: Add a test for the above.
8668
8669         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
8670         Fixes #78629.
8671
8672         * iltests.il: Add a test for the above.
8673
8674 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
8675
8676         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
8677         after the end of a try bblock, to prevent asserts in mini_method_compile ().
8678
8679         * iltests.il: Add a test for the above.
8680
8681 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
8682
8683         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
8684         
8685         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
8686         methods as instrinsics.
8687
8688 2006-06-09  Wade Berrier <wberrier@novell.com>
8689
8690         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
8691         (simple-cee-ops.h ssapre-mini-ops.h)
8692
8693 2006-06-09  Neale Ferguson <neale@sinenomine.net>
8694
8695         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
8696         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
8697         instruction).
8698         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
8699         * cpu-s390x.md: Fix max. length values for a couple of instructions.
8700
8701 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
8702
8703         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
8704
8705 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
8706
8707         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
8708         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
8709         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
8710         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
8711         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
8712         of opcodes, so that bug 78549 should not happen again.
8713         * ssapre.c: Updated to use the renamed files.
8714
8715 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
8716
8717         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
8718         in OP_ATOMIC_EXCHANGE_I4.
8719
8720 2006-06-07  Wade Berrier <wberrier@novell.com>
8721
8722         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
8723         in mono_debugger_create_notification_function)
8724
8725 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
8726
8727         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
8728         
8729         * mini.c (type_from_stack_type): Disable some changes which do not
8730         seem to work.
8731
8732         * driver.c: Reenable opts.
8733
8734         * mini.h (MonoStackSlot): New structure to keep track of the verification state
8735         of the evaluation stack.
8736         
8737         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
8738         evaluation stack trace at entry to the bblock.
8739
8740         * mini.c (merge_stacks): New function to perform verification of stack merges.
8741         Turned off by default.
8742
8743         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
8744         STACK_MP.
8745         
8746 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
8747
8748         * local-propagation.c: Fixed bug 78549.
8749
8750 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
8751
8752         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
8753
8754 2006-06-02  Miguel de Icaza  <miguel@novell.com>
8755
8756         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
8757         tramp-arm.c, tramp-ia64.c
8758         (mono_debugger_create_notification_function): Update signature to
8759         new signature and use new protocol for creating the notification
8760         function.  
8761
8762         Should fix the build.
8763
8764 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
8765
8766         * exceptions-ppc.c (mono_jit_walk_stack)
8767         (ves_icall_get_frame_info): Fix the build
8768
8769 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
8770
8771         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
8772
8773 2006-05-31  Raja R Harinath  <rharinath@novell.com>
8774
8775         * il2tests.2.il: New file for generics CIL tests.  Add test for
8776         #78019.
8777         * Makefile.am: Update.
8778
8779         Fix #78019
8780         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
8781         to nullable types.
8782
8783 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
8784
8785         * aliasing.c: Fixed bug 78311.
8786
8787 2006-05-29  Martin Baulig  <martin@ximian.com>
8788
8789         * mini-exceptions.c (mono_find_jit_info): When computing the
8790         native offset, check whether we're actually inside the method's
8791         code; call mono_debug_print_stack_frame() to format the frame.
8792         (ves_icall_System_Exception_get_trace): Call
8793         mono_debug_print_stack_frame() to format the stack frame.
8794         (ves_icall_get_trace): Update to the new debugging API.
8795         (mono_jit_walk_stack_from_ctx): Likewise.
8796         (ves_icall_get_frame_info): Likewise.
8797
8798         * mini.c (get_method_from_ip): Use the new debugging API.
8799         (mono_print_method_from_ip): Likewise.
8800
8801         * exceptions-ppc.c
8802         (mono_jit_walk_stack): Use the new debugging API.
8803         (ves_icall_get_frame_info): Likewise.   
8804
8805 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
8806
8807         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
8808
8809 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
8810
8811         * mini.c: Added "limitator" to inline for debugging.
8812
8813 2006-05-24  Martin Baulig  <martin@ximian.com>
8814
8815         * debug-debugger.c (mono_debugger_init): Create a private,
8816         malloc()-based code manager for the notification function and
8817         intentionally leak it on exit.  This fixes the crash-on-exit race
8818         condition.
8819
8820         * tramp-amd64.c
8821         (mono_debugger_create_notification_function): Added
8822         `MonoCodeManager *' argument.
8823
8824         * tramp-x86.c
8825         (mono_debugger_create_notification_function): Added
8826         `MonoCodeManager *' argument.
8827
8828 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
8829
8830         * aliasing.c: Fixed 64 bit issue.
8831         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
8832         default since all known bugs are fixed (one more time!).
8833
8834 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
8835
8836         * mini.c: write barrier support.
8837
8838 2006-05-23  Martin Baulig  <martin@ximian.com>
8839
8840         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
8841         check at the top of the file.
8842
8843 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
8844
8845         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
8846         reverting changes without reason and without changelog entries.
8847
8848 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
8849
8850         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
8851         to a few opcodes. Fixes #78439.
8852
8853         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
8854         consistency with other archs.
8855
8856         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
8857
8858 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
8859
8860         * debug-debugger.c: fix the build.
8861
8862 2006-05-17  Martin Baulig  <martin@ximian.com>
8863
8864         * debug-debugger.c
8865         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
8866         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
8867         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
8868         (debugger_attach): Call GC_mono_debugger_add_all_threads().
8869
8870 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
8871
8872         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
8873
8874 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
8875
8876         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
8877         MONO_TYPE_GENERICINST.
8878         
8879         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
8880         MONO_TYPE_GENERICINST.
8881
8882 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
8883
8884         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
8885         #78325.
8886
8887 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
8888
8889         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
8890         mempool.
8891         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
8892
8893 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
8894
8895         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
8896         mono_trace_cleanup ().
8897
8898         * iltests.il: Fix problem with the newly added test.
8899
8900         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
8901         due to register constraints, free up the previous hreg. Fixes #78314.
8902
8903         * iltests.il: Add new test for #78314.  
8904
8905         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
8906         Interlocked.Add. Fixes #78312.
8907
8908         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
8909         
8910 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
8911
8912         * inssel.brg (mini_emit_virtual_call): Fix a warning.
8913
8914 2006-05-05  Martin Baulig  <martin@ximian.com>
8915
8916         * debug-mini.c (mono_debug_open_block): New method.
8917
8918         * mini-amd64.c
8919         (mono_arch_output_basic_block): Call mono_debug_open_block() at
8920         the beginning of each basic block.
8921
8922         * mini-x86.c
8923         (mono_arch_output_basic_block): Call mono_debug_open_block() at
8924         the beginning of each basic block.
8925
8926 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
8927
8928         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
8929         default until I understand why they break the build on amd64.
8930
8931 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
8932
8933         * mini.c (mini_cleanup): Call mono_cleanup ().
8934
8935         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
8936         errors.
8937
8938 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
8939
8940         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
8941         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
8942         default since all known bugs are fixed, and I cannot reproduce bug
8943         77944... I'm asking Matt Hargett to test again after this commit.
8944
8945 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
8946
8947         * mini-codegen.c: Fixed typo that thrashed inline.
8948
8949 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
8950
8951         * dominators.c (compute_dominators): Avoid using a worklist since
8952         it is not correct in some cases. Instead, iterate over all bblocks as
8953         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
8954
8955 2006-04-28  Miguel de Icaza  <miguel@novell.com>
8956
8957         * mini.c (mono_jit_compile_method_inner): Use
8958         mono_prepare_exception_from_error that resets the value
8959         internally.
8960
8961 2006-04-27  Miguel de Icaza  <miguel@novell.com>
8962
8963         * mini.c: Move the mini_loader_error_to_exception to metadata. 
8964         
8965 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
8966
8967         * aliasing.c: Fixed bug 78210.
8968
8969 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
8970
8971         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
8972         default until all their problems (or the ones they trigger) are fixed.
8973
8974 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
8975
8976         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
8977         
8978         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
8979         as loaded only after resolving patches since that could invoke the same method.
8980
8981         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
8982
8983         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
8984         functions.
8985
8986         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
8987         AOT loader.
8988
8989         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
8990         stack.
8991
8992         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
8993         made from AOT code through the PLT table.
8994
8995         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
8996         holding the plt offset when a call is made to the aot plt trampoline.
8997         
8998 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
8999
9000         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
9001         amd64 AOT support.
9002
9003         * Makefile.am (common_sources): Fix build breakage.
9004
9005         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
9006         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
9007         intra-assembly calls if possible.
9008         
9009         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
9010
9011         * mini-trampolines.c: Handle PLT entries.
9012
9013         * mini.c: Avoid creating a GOT var for calls.
9014
9015         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
9016         from mscorlib code.
9017
9018         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
9019         from mscorlib code.
9020
9021         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
9022         AOT code.       
9023
9024         * mini.h: Bump AOT file format version.
9025         
9026         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
9027         covers more cases.
9028
9029 2006-04-25  Martin Baulig  <martin@ximian.com>
9030
9031         * driver.c: Disable copyprop, consprop and inline when running
9032         inside the debugger.
9033
9034 2006-04-25  Martin Baulig  <martin@ximian.com>
9035
9036         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
9037         with `get_current_thread' and added `detach'.
9038         (MonoDebuggerMetadataInfo): Added `thread_size',
9039         `thread_tid_offset', `thread_stack_ptr_offset' and
9040         `thread_end_stack_offset'.
9041
9042 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
9043
9044         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
9045         aot-runtime.c.
9046
9047         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
9048         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
9049
9050         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
9051
9052         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
9053
9054         * aot.c: Add support for ADJUSTED_IID.  
9055
9056 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
9057
9058         * aot.c (emit_method_order): Don't align method_order_end.
9059
9060         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
9061         the interface ID changes.
9062
9063 2006-04-21  Dick Porter  <dick@ximian.com>
9064
9065         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
9066         cleaning up a thread.  Fixes the new part of bug 77470.
9067
9068 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
9069
9070         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
9071         to managed wrapper.
9072                      
9073 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
9074
9075         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
9076         
9077         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
9078         SIGSEGV. Fixes #78072.
9079
9080         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
9081         unregister our SIGABRT handler.
9082
9083 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
9084
9085         * mini.c: Disabled inline where it can alter the call stack in a
9086         way visible from managed code.
9087         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
9088         default.
9089
9090 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
9091
9092         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
9093         on other platforms. Fixes #78089.
9094
9095 2006-04-13  Martin Baulig  <martin@ximian.com>
9096
9097         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
9098         determine whether we're inside the debugger.
9099
9100         * debug-debugger.h
9101         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
9102
9103 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9104
9105         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
9106         handler clauses. Fixes #78024.
9107
9108         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
9109         in the CALL_MEMBASE opcodes. Fixes #78088.
9110         (mono_arch_get_vcall_slot_addr): Ditto.
9111
9112 2006-04-10  Martin Baulig  <martin@ximian.com>
9113
9114         * debug-debugger.c: The thread handling code has now been moved
9115         into ../metadata/threads.c.
9116
9117 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9118
9119         * driver.c (mono_main): Fix --with-gc=none build.
9120
9121         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
9122         (mono_spillvar_offset_float): Ditto.
9123         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
9124         hreg, not when its !global, since on ia64, there is a third category: stacked
9125         registers.      
9126
9127 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
9128
9129         * mini.c: set MonoInst->klass for load field address and a few other
9130         places.
9131
9132 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9133
9134         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
9135
9136 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
9137
9138         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
9139         the branch opt changes.
9140
9141 2006-04-06  Dick Porter  <dick@ximian.com>
9142
9143         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
9144         
9145         * wapihandles.c (mini_wapi_seminfo): 
9146         * driver.c (mono_main): Add semaphore info option
9147
9148 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
9149
9150         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
9151         branch optimization changes. Fixes #78009.
9152
9153 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
9154
9155         * mini.c: ignore accessibility of methods in managed->native wrappers.
9156
9157 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
9158
9159         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
9160         
9161         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
9162
9163 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
9164
9165         * mini.c: Modify the branch optimizations to preserve the invariant that
9166         the entries inside the in_bb and out_bb arrays are unique.
9167         (mono_unlink_bblock): Avoid creation of new arrays.
9168
9169 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
9170
9171         * mini.c (mono_unlink_bblock): Fix regression caused by previous
9172         change (#77992).
9173
9174 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
9175
9176         * mini.c (optimize_branches): Remove the "optimizations" in
9177         the cbranch1/cbranch2 -> branch cases which were causing several
9178         problems in the past. Fixes #77986.
9179
9180 2006-03-31  Chris Toshok  <toshok@ximian.com>
9181
9182         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
9183         default optimizations :(
9184
9185 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
9186
9187         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
9188         branch.
9189
9190 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
9191
9192         * local-propagation.c: Added comments to structs and removed
9193         "Mono" prefixes from local tree mover types.
9194
9195 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
9196
9197         * Makefile.am (arch_sources): Define this for each architecture so 
9198         libmono_la_SOURCES is defined in one place.
9199
9200 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
9201
9202         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
9203         from handles/.
9204
9205 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
9206
9207         * driver.c: print the GC name supplied by configure.
9208
9209 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
9210
9211         * local-propagation.c: Added tree mover, and moved here all the
9212         local propagation code from mini.c
9213         * mini.c: Added support for treeprop, and moved all the local
9214         propagation code to local-propagation.c
9215         * mini.h: Added support for treeprop
9216         * driver.c: Added support for treeprop, enabled consprop, copyprop,
9217         treeprop, inline and deadce by default
9218         * Makefile.am: Added local-propagation.c
9219
9220 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
9221
9222         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
9223
9224 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
9225
9226         * debug-debugger.c: make it compile without the Boehm GC.
9227
9228 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9229
9230         * mini.c: fixed issue with mismatch when an icall is registered
9231         with multiple names but same address.
9232
9233 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9234
9235         * declsec.c, mini-exceptions.c: use write barrier to set reference
9236         fields of managed objects.
9237
9238 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9239
9240         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
9241         (can_access_internals): Fix a warning.
9242
9243         * mini.c (print_method_from_ip): Rename this to 
9244         mono_print_method_from_ip so it gets exported.
9245
9246         * trace.c: Deal with strings inside StringBuilder's containing garbage
9247         and fix memory leaks. Fixes #77848.
9248
9249 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
9250
9251         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
9252         fixes #77787.
9253
9254 2006-03-16 Neale Ferguson <neale@sinenomine.net>
9255         
9256         * mini-s390.c: Remove OP_X86_TEST_NULL.
9257
9258 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
9259
9260         * mini.c: use the correct GetHashCode() for the moving collector.
9261
9262 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
9263
9264         * liveness.c: Regalloc spill cost tuning.
9265
9266 2006-03-15 Neale Ferguson <neale@sinenomine.net>
9267         
9268         * mini-s390x.h: Correct S390_LONG macro.
9269
9270         * mini-s390x.c: Cleanup unused code.
9271
9272 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
9273
9274         * jit-icalls.h: New file.
9275
9276         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
9277         icalls and include that instead of including jit-icalls.c.
9278
9279         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
9280         OP_X86 opcodes.
9281
9282 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
9283
9284         * mini.c: when checking for member accessibility, also check for
9285         friend assemblies and for explicit interface implementations.
9286
9287 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
9288
9289         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
9290
9291         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
9292
9293         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
9294         common cases are done first.    
9295
9296         * mini-ops.h: Only define platform specific opcodes on the given platform.
9297
9298         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
9299         branch.
9300         
9301 2006-03-14  Martin Baulig  <martin@ximian.com>
9302
9303         Revert Paolo's change from r57348:
9304
9305         * mini.h: don't use gboolean for bitfields.
9306         * mini.c: verifier changes for fields and methods accessibility.
9307
9308 2006-03-13  Neale Ferguson <neale@sinenomine.net>
9309
9310         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
9311
9312         * mini-s390x.c: Fix conv_r_un.
9313
9314         * cpu-s390, cpu-s390x.md: Fix lengths.
9315
9316 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
9317
9318         * mini.c: nested types have access to all the nesting
9319         levels, not just the enclosing types.
9320
9321 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
9322
9323         * mini.c: added a few more verification checks.
9324
9325 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
9326
9327         * liveness.c: Merge optimizations from the linear-il branch.
9328
9329 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9330
9331         * mini-ia64.c (emit_call): Add a comment.
9332
9333         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
9334
9335         * tramp-ia64.c: Fix some warnings.
9336
9337 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
9338
9339         * mini.h: don't use gboolean for bitfields.
9340         * mini.c: verifier changes for fields and methods accessibility.
9341
9342 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9343
9344         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
9345         lazy icall wrapper changes.
9346
9347         * dominators.c: Replace all the dominator algorithms with faster
9348         ones from the linear-il branch.
9349
9350         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
9351         the mempool.
9352
9353         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
9354         common cases are done first.
9355
9356         * mini-amd64.c: Fix some warnings.
9357
9358         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
9359         from the mempool.
9360
9361         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
9362         added code.
9363
9364         * mini.h: Add a missing prototype.
9365
9366 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
9367
9368         * mini.c: Compile icall wrappers lazily.
9369
9370         * mini-codegen.c: Use printf instead of g_print since its much faster.
9371
9372         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
9373         function.
9374
9375         * mini.c (optimize_branches): Cache the negative result from 
9376         remove_block_if_useless ().
9377
9378         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
9379         Also fix some bblock linking issues.
9380
9381         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
9382         assembly files.
9383
9384         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
9385
9386         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
9387         accessed fields first, for better cache behavior.
9388         
9389 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
9390
9391         * mini.c: speedup IList<T> array accesses.
9392
9393 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
9394
9395         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
9396         inline_costs counter. Fixes #77190.
9397
9398 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
9399
9400         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
9401         trace messages. Fixes #77706.
9402
9403 2006-03-04  Martin Baulig  <martin@ximian.com>
9404
9405         * tramp-amd64.c, tramp-x86.c
9406         (mono_debugger_create_notification_function): Use
9407         mono_global_codeman_reserve() to allocate a buffer at runtime and
9408         return it.
9409
9410         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
9411
9412         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
9413         notification function at runtime and then call `initialize' in the
9414         `MONO_DEBUGGER__debugger_info' vtable.
9415
9416 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
9417
9418         * iltests.il: Fix a visibility problem.
9419
9420 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
9421
9422         * driver.c, mini.c: add hooks for the counters API.
9423
9424 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
9425
9426         * driver.c: show disabled options.
9427
9428 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
9429
9430         * linear-scan.c: always use cost-driven selection.
9431
9432 2006-02-28  Raja R Harinath  <rharinath@novell.com>
9433
9434         * jit-icalls.c (helper_compile_generic_method): Revert change from
9435         2006-02-24.
9436
9437 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
9438
9439         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
9440
9441 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
9442
9443         * inssel.brg: style fixes, mostly to force the updated monoburg
9444         to run for people using svn.
9445
9446 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
9447
9448         * mini.c: match monoburg changes.
9449
9450 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
9451
9452         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
9453         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
9454         declaration in the header file.
9455
9456 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
9457
9458         * helpers.c: reduce relocations and mem usage.
9459
9460 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
9461
9462         * mini.h, mini-codegen.c: disable logging features if
9463         requested by configure.
9464
9465 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
9466
9467         * mini.c: tiny verifier changes.
9468
9469 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
9470
9471         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
9472         cpu-pentium.md: stack alignment changes for osx/x86,
9473         partially from Geoff Norton <gnorton@customerdna.com>.
9474
9475 2006-02-24  Raja R Harinath  <harinath@gmail.com>
9476
9477         * jit-icalls.c (helper_compile_generic_method): Update to changes
9478         in metadata/class.c.
9479
9480 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
9481         
9482         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
9483         
9484         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
9485         interface calls with large offsets.
9486
9487 2006-02-23  Raja R Harinath  <rharinath@novell.com>
9488
9489         * jit-icalls.c (helper_compile_generic_method): Document the
9490         special-case we depend on so that we can inflate the method twice
9491         with the same context with no bad side-effects.
9492
9493 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
9494
9495         * mini-x86.c, mini-amd64.c: fix for case when xen support
9496         is disabled.
9497
9498 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
9499
9500         * mini-x86.c, mini-amd64.c: generate code to access tls items
9501         in a faster way for Xen systems.
9502
9503 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
9504
9505         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
9506         updates and compilation fixes for the OSX/x86 port, mostly from
9507         Geoff Norton <gnorton@customerdna.com>.
9508
9509 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
9510
9511         * inssel.brg: faster interface call implementation
9512         to sync with the interface_offsets MonoVTable changes.
9513
9514 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
9515
9516         * mini.c: more verification checks.
9517
9518 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
9519
9520         * mini.c: added a few more verification checks.
9521
9522 2006-02-17      Neale Ferguson <neale@sinenomine.net>
9523
9524         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
9525         facility on the processor and use it if available.
9526
9527 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
9528
9529         * driver.c, aot.c, mini.c: throw exception if the IL code is
9530         invalid or unverifiable.
9531
9532 2006-02-17  Raja R Harinath  <rharinath@novell.com>
9533
9534         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
9535         m.StructField.
9536
9537 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
9538
9539         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
9540
9541 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
9542
9543         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
9544         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
9545         handling of instantiated generic valuetypes.
9546
9547 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
9548
9549         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
9550         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
9551         instead.
9552
9553         * generics.2.cs: Revert the nullable reftypes tests.
9554
9555 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
9556
9557         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
9558         using __builtin_frame_address (1) as it doesn't work in the presence
9559         of optimizations. Hopefully fixes #77273.
9560
9561         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
9562         -> generics.cs change as it doesn't work with some automake versions.
9563
9564 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9565
9566         * mini.c: handle systems that sue a different way to
9567         retrieve the stack address of the current thread.
9568
9569 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
9570
9571         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
9572         it specially in the makefile.
9573
9574         * generics.2.cs: Add tests for nullable reference types.
9575
9576 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
9577
9578         * mini.c: always handle the case when mono_jit_init()
9579         is called in a thread different from the main thread,
9580         confusing libgc (bug #77309).
9581
9582 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
9583
9584         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
9585
9586 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
9587
9588         * mini.c: change optimize_branches () to use a single loop
9589         and introduce a new optimization to simplify some range checks.
9590
9591 2006-02-03  Martin Baulig  <martin@ximian.com>
9592
9593         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
9594         and merged with debugger_thread_manager_add_thread().
9595         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
9596         inform the debugger about the main thread.
9597
9598 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
9599
9600         * basic.cs: Add test for div.un/rem.un constant folding.
9601
9602 2006-02-03  Neale Ferguson <neale@sinenomine.net>
9603
9604         * cpu-s390x.md: correct int_xor_imm length
9605
9606 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
9607
9608         * generics.2.cs: New test for #77442.
9609
9610         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
9611         #77442.
9612
9613 2006-02-02  Martin Baulig  <martin@ximian.com>
9614
9615         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
9616         <mono/metadata/mono-debug-debugger.h>   
9617
9618         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
9619
9620 2006-02-02  Martin Baulig  <martin@ximian.com>
9621
9622         * debug-debugger.h: New header file for debug-debugger.c.
9623
9624         * debug-debugger.c: Big API cleanup; don't run the managed Main()
9625         function is a separate thread anymore; add support for attaching.
9626
9627 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
9628
9629         * tramp-x86.c: Fix a warning.
9630
9631 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
9632
9633         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
9634         on very large methods.
9635
9636         * aot.c (load_patch_info): Fix a warning.
9637
9638 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
9639
9640         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
9641         mini-ops.h: alu membase optimizations.
9642
9643 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
9644
9645         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
9646         to speedup StringBuilder.
9647
9648 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
9649
9650         * dominators.c (mono_compute_natural_loops): Fix detection of
9651         loop body start blocks.
9652
9653         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
9654
9655 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
9656
9657         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
9658         #75145.
9659
9660 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
9661
9662         * aliasing.c: Fixed aliasing issue on 64 bit archs.
9663
9664 2006-01-25  Martin Baulig  <martin@ximian.com>
9665
9666         * debug-debugger.c: Moved the `MonoDebuggerManager' and
9667         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
9668         started to cleanup this file a little bit.
9669
9670 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
9671
9672         * mini.c: optimize a codepath frequently happening in generics code.
9673
9674 2006-01-23  Martin Baulig  <martin@ximian.com>
9675
9676         * Makefile.am: Only compile debug-debugger.c on supported platforms.
9677
9678         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
9679         functions directly.
9680
9681         * driver.c: debug-debugger.c is only available if
9682         `MONO_DEBUGGER_SUPPORTED' is defined.   
9683
9684 2006-01-23  Martin Baulig  <martin@ximian.com>
9685
9686         * debug-debugger.c: Only enable this on platforms where the Mono
9687         Debugger is working (x86 and x86_64).
9688
9689 2006-01-21  Martin Baulig  <martin@ximian.com>
9690
9691         The Mono Debugger is now using the normal `mono' instead of the
9692         `mono-debugger-mini-wrapper' when executing managed code.
9693
9694         * debug-debugger.c: New file; previously known as
9695         debugger/wrapper/wrapper.c.
9696
9697         * debug-mini.c (mono_init_debugger): Removed.
9698
9699         * driver.c (mono_main): Added new `--inside-mdb' command line
9700         argument which is used when running inside the debugger.
9701
9702 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
9703
9704         * liveness.c (mono_analyze_liveness): Remove some unused data
9705         structures.
9706
9707 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
9708
9709         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
9710
9711 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
9712
9713         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
9714         depends on implementation details of monobitset.
9715
9716         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
9717         Fixes #77271.
9718
9719 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
9720
9721         * liveness.c: Update after monobitset changes.
9722
9723 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
9724
9725         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
9726
9727 2006-01-11 Neale Ferguson <neale@sinenomine.net>
9728
9729         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
9730
9731         * mini-s390x.c: Remove warning messages.
9732
9733 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
9734
9735         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
9736
9737 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
9738
9739         * generics.2.cs: Add ldelem/stelem_any test.
9740
9741 2006-01-10 Neale Ferguson <neale@sinenomine.net>
9742
9743         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
9744
9745 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
9746
9747         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
9748         
9749 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
9750
9751         * generics.2.cs: Reenable vtype tests.
9752
9753         * inssel-x86.brg: Remove an icorrect valuetype rule.
9754
9755 2006-01-06 Neale Ferguson <neale@sinenomine.net>
9756
9757         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
9758         initial support for OP_ABS.
9759
9760 2006-01-05 Neale Ferguson <neale@sinenomine.net>
9761
9762         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
9763
9764 2006-01-05 Neale Ferguson <neale@sinenomine.net>
9765
9766         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
9767         conversion and implement LADD/LSUB.
9768
9769         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
9770         architectures.
9771
9772 2006-01-05 Neale Ferguson <neale@sinenomine.net>
9773
9774         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
9775
9776         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
9777         architectures.
9778
9779 2006-01-05 Neale Ferguson <neale@sinenomine.net>
9780
9781         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
9782         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
9783         (stack walk problem).
9784
9785 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
9786
9787         * aot.c (mono_aot_load_method): Fix a warning.
9788
9789 2006-01-03  Neale Ferguson <neale@sinenomine.net>
9790
9791         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
9792
9793 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
9794
9795         * iltests.il: Add test for #77148.
9796
9797         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
9798         #77148.
9799
9800 2006-01-03  Neale Ferguson <neale@sinenomine.net>
9801
9802         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
9803
9804 2006-01-03  Neale Ferguson <neale@sinenomine.net>
9805
9806         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
9807         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
9808
9809         * basic-long.cs: Add lconv-to-r4/r8 tests.
9810
9811 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
9812
9813         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
9814
9815         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
9816         here as on other archs.
9817
9818 2005-12-29 Neale Ferguson <neale@sinenomine.net>
9819
9820         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
9821
9822 2005-12-29 Neale Ferguson <neale@sinenomine.net>
9823
9824         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
9825         
9826         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
9827
9828         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
9829         instrument_prolog; Add memory_barrier instruction.
9830
9831 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
9832
9833         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
9834
9835 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
9836
9837         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
9838
9839         * aliasing.c inssel.brg: Fix warnings.
9840
9841         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
9842         could skip initialization of some parts of memory.
9843
9844         * mini.c mini-ia64.c: Fix warnings.
9845
9846         * inssel-sparc.brg: Add an implementation of lneg which actually works.
9847
9848 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
9849
9850         * aliasing.c (mono_build_aliasing_information): Add a workaround for
9851         a crash seen on sparc.
9852
9853         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
9854         
9855         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
9856
9857 2005-12-21 Neale Ferguson <neale@sinenomine.net>
9858
9859         * mini-ops.h: Add s390_backchain instruction
9860
9861         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
9862
9863         * cpu-s390.md: Add s390_backchain instruction
9864
9865         * mini-s390.c: Significant ABI changes
9866
9867         * mini-s390.h: Cater for zero length structures
9868
9869 2005-12-20 Neale Ferguson <neale@sinenomine.net>
9870
9871         * mini-s390.c: ABI fixes
9872
9873         * inssel-s390.brg: Remove debug statements
9874
9875         * cpu-s390.md: Fix length of ATOMIC_xx operations
9876
9877 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
9878
9879         * basic-float.cs: Add float<->long conversion tests.
9880
9881 2005-12-16 Neale Ferguson <neale@sinenomine.net>
9882
9883         * mini-s390.c: Fix LOCALLOC processing.
9884
9885         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
9886
9887 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
9888
9889         * iltests.il: Add tests for some opcodes not covered by the other
9890         tests.
9891
9892 2005-12-15 Neale Ferguson <neale@sinenomine.net>
9893
9894         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
9895         register loading for Tail processing; Correct trace output.
9896
9897         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
9898
9899         * cpu-s390.md: Correct size of jmp instruction. 
9900
9901 2005-12-13 Neale Ferguson <neale@sinenomine.net>
9902
9903         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
9904
9905 2005-12-13 Neale Ferguson <neale@sinenomine.net>
9906
9907         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
9908           Bring s390 up to current level.
9909
9910 2005-12-12  Zltan Varga  <vargaz@gmail.com>
9911
9912         * generics.2.cs: Disable the newly added tests as they do not work yet.
9913         
9914         * generics.2.cs: Add valuetype tests.
9915
9916 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
9917
9918         * basic-long.cs: Add i4->u8 test.
9919
9920         * objects.cs: Add tests for JIT intrinsic.
9921
9922         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
9923         optimizations lost by a mistake.
9924
9925 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
9926
9927         * basic-long.cs: Remove a test moved to objects.cs.
9928
9929         * arrays.cs: Add more array tests.
9930
9931 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
9932
9933         * arrays.cs: Add new tests for multi-dimensional arrays.
9934
9935 2005-12-06  Raja R Harinath  <rharinath@novell.com>
9936
9937         * Makefile.am (test_sources2): Add generics.2.cs.
9938         (EXTRA_DIST): Add test_sources2.
9939
9940 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
9941
9942         Support for boxing and unboxing nullable types as well as the
9943         isinst operation on nullables, per the CLI ammendment.
9944
9945         * inssel.brg (CEE_ISINST): Special case for nullable
9946
9947         * mini.c (handle_unbox_nullable): new method
9948         (handle_box): Special case for nullable types
9949         (mono_method_to_ir): Call handle_unbox_nullable in correct
9950         places.
9951
9952         * generics.2.cs: New test suite
9953
9954         * Makefile.am: Support for regression tests with generics.
9955
9956 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
9957
9958         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
9959         allocated to registers. Fixes #76800.
9960
9961 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
9962
9963         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
9964
9965 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
9966
9967         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
9968         of platforms.
9969
9970 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
9971
9972         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
9973         objects.cs.
9974
9975         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
9976         
9977         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
9978 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
9979
9980         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
9981         single precision before storing to a single precision location.
9982
9983 2005-11-28  Raja R Harinath  <rharinath@novell.com>
9984
9985         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
9986
9987 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
9988
9989         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
9990         correct files.
9991
9992         * basic.cs: Remove test_0_byte_compares test which was moved to
9993         objects.cs a long time ago.
9994
9995 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
9996
9997         * aliasing.c: Fixed aliasing issue on 64 bit archs.
9998
9999 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
10000
10001         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
10002         handlers are called.
10003
10004         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
10005         throwing code.
10006
10007          * mini-ia64.c: Add support for the throw->branch exception 
10008         optimization.   
10009
10010         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
10011
10012 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10013
10014         * mini.c: Enabled "fastpath" deadce :-)
10015         
10016 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
10017
10018         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
10019         alias analysis pass to support it.
10020         * mini.h: Likewise.
10021         * ssa.c: Likewise.
10022         * liveness.c: Likewise (liveness computation can use aliasing
10023         information to be more accurate).
10024         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
10025         moreover made so that "--compile-all" uses the given optimization
10026         flags and not the default ones.
10027         * aliasing.c: Alias analysis (new file).
10028         * aliasing.h: Likewise.
10029         * Makefile.am: added "aliasing.c" and "aliasing.h".
10030         
10031 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10032
10033         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
10034         OP_L opcodes.
10035
10036 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
10037
10038         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
10039         fp >= end_of_stack exit condition, as it is not needed, and it might
10040         become true for fp eliminated frames.
10041
10042 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
10043
10044         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
10045         coded offsets.
10046
10047 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
10048
10049         * mini-arm.c: fixed alignment of doubles/longs to match
10050         the C ABI (bug #76635).
10051
10052 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
10053
10054         * aot.c: fix compilation with --enable-minimal=aot.
10055
10056 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
10057
10058         * mini-arm.c: fixed compatibility with the new
10059         floating point emulator package for compares.
10060
10061 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
10062
10063         * mini.c : reverted sig->pinvoke changes (r51396-51397).
10064
10065 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
10066
10067         * mini-exceptions.c (print_stack_frame): Output to stderr.
10068         (mono_handle_native_sigsegv): Ditto.
10069
10070 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10071
10072         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
10073         OP_LCONV_TO_OVF_I implementation.
10074
10075         * mini-amd64.c: Add support for the throw->branch exception 
10076         optimization.
10077
10078         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
10079         when the catch clause catches a more general exception, i.e. Object.
10080
10081 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
10082
10083         * cpu-ia64.md: Remove unused opcodes.
10084
10085         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
10086         specific defines for architectures defining USE_SIGACTION.
10087
10088         * mini-ia64.c: Fix some warnings.
10089
10090         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
10091         version seemed to skip a frame.
10092
10093 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
10094
10095         * mini.c: Clean up the usage of sig->pinvoke flag. Now
10096         only calls which are made to native code use this flag.
10097
10098 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
10099
10100         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
10101         varargs methods as well.
10102         
10103         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
10104         which have save_lmf set. Reorganize methods prologs a bit.
10105
10106         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
10107         debugger to the proper place.
10108
10109 2005-10-29  Martin Baulig  <martin@ximian.com>
10110
10111         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
10112         when running inside the debugger until the debugger has support
10113         for it.
10114
10115 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
10116
10117         * mini.h: Fix a warning.
10118
10119 2005-10-24  Miguel de Icaza  <miguel@novell.com>
10120
10121         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
10122         we expose publicly, this returns the string.
10123
10124 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
10125
10126         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
10127         with fp elimination.
10128
10129 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
10130
10131         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
10132         native stacktrace using the glibc 'backtrace' function if available.
10133
10134 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
10135
10136         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
10137
10138         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
10139         handle SIGSEGVs received while in native code.
10140
10141         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
10142         code, call mono_handle_native_sigsegv which will abort the runtime
10143         after printing some diagnostics, instead of converting it into a
10144         confusing NullReferenceException.
10145
10146 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
10147
10148         * cpu-pentium.md: Remove unused opcodes.
10149
10150 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
10151
10152         * mini-amd64.h (MonoLMF): Add rsp field.
10153
10154         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
10155         the lmf too.
10156
10157 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
10158
10159         * mini-codegen.c (get_register_spilling): Fix some warnings.
10160
10161 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
10162
10163         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
10164         elimination during exception handling. Enable fp elimination by
10165         default.
10166
10167         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
10168         elimination.
10169
10170 2005-10-16  Martin Baulig  <martin@ximian.com>
10171
10172         * mini-exceptions.c
10173         (mono_debugger_run_finally): New public method for the debugger.
10174
10175 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
10176
10177         * debug-mini.c (mono_debug_init_method): Fix warning.
10178
10179         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
10180         the 'exname' parameter const to fix some warnings.
10181
10182 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
10183
10184         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
10185         introduced by the previous patch.
10186
10187 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
10188
10189         * basic-float.cs: Add test for precision of float arithmetic.
10190
10191         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
10192         when loading/storing single values from/to memory.
10193
10194         * mini.c (mono_jit_compile_method_with_opt): Create the function
10195         pointers in the correct domain.
10196
10197 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
10198
10199         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
10200         introduced by previous patch.
10201         
10202         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
10203         when out_filter_idx is NULL.
10204
10205         * mini-exceptions.c: Don't run filter clauses twice during exception
10206         handling. Fixes #75755.
10207
10208 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
10209
10210         * aot.c: Add support for ldflda wrappers.
10211
10212         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
10213         #75902.
10214
10215 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
10216
10217         * mini.c, mini.h: do not consider exception handlers blocks when
10218         setting up interface variables.
10219
10220 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
10221
10222         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
10223
10224 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
10225
10226         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
10227         causes a regression.
10228
10229         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
10230
10231 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
10232
10233         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
10234         of the OP_P definitions.
10235
10236         * TODO: Add a proposal for dealing with the CEE/OP mess.
10237
10238         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
10239         optimizations from the x86 port.
10240
10241         * cpu-amd64.md: Ditto.
10242
10243         * basic.cs basic-long.cs: Add tests.
10244
10245 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
10246
10247         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
10248         Patrik Torstensson's implementation of my exception-handling
10249         optimization idea, when the exception object is not used
10250         (bug #62150).
10251
10252 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
10253
10254         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
10255         of the mul_imm optimizations from the old jit.
10256
10257 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
10258
10259         * mini.c, liveness.c: patch by Patrik Torstensson and
10260         Zoltan Varga to improve performance in methods with
10261         exception clauses.
10262
10263 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
10264
10265         * driver.c: Remove 'Globalization' entry from --version.
10266
10267 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
10268
10269         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
10270         there is a profiler interested in JIT events.
10271
10272         * aot.c: Load profile files produced by the AOT profiling module, and
10273         reorder methods based on the profiling info. Add a 'method_order' table
10274         to the AOT file to make mono_aot_find_jit_info work with the reordered
10275         methods.
10276
10277         * mini.h: Bump AOT file version info.
10278
10279 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
10280
10281         * mini-arm.h: work around what looks like a gcc bug when optimizations
10282         are enabled.
10283
10284 2005-09-28  Raja R Harinath  <rharinath@novell.com>
10285
10286         * Makefile.am (AM_CFLAGS): Don't use += to append inside
10287         conditionals.  Use ...
10288         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
10289
10290 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
10291
10292         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
10293         to determine the amount of memory to copy when passing valuetypes.
10294
10295         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
10296         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
10297
10298 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
10299
10300         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
10301         information about aot.
10302
10303 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
10304
10305         * *.c: Replace the use of {Enter,Leave}CriticalSection with
10306         macros. This will allow a deadlock debugger to easily be plugged
10307         in.
10308
10309 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
10310
10311         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
10312
10313 2005-09-27  Raja R Harinath  <rharinath@novell.com>
10314
10315         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
10316         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
10317         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
10318         ($(arch_built)) [CROSS_COMPILING]: Error out.
10319
10320 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
10321
10322         * aot.c: Add support for the no_special_static flag for classes.
10323
10324 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10325
10326         * Reapply reverted patches.
10327
10328         * *: Revert r50174 as well.
10329
10330         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
10331
10332 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
10333
10334         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
10335
10336 2005-09-23  Miguel de Icaza  <miguel@novell.com>
10337
10338         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
10339         part of the SIG_HANDLER_SIGNATURE.  
10340
10341 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
10342
10343         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
10344         statistics.
10345
10346         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
10347         introduced by previous patch.
10348
10349 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
10350
10351         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
10352         saved registers too.
10353
10354         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
10355         upon the information returned by get_call_info ().
10356         
10357         * mini-x86.c (add_float): Fix stack size calculation.
10358         (mono_arch_call_opcode): Rewrite this so it works based up the
10359         information returned by get_call_info ().
10360         (mono_arch_get_this_vret_args): Ditto.
10361
10362 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
10363
10364         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
10365         in cinfo to determine the registers which need to be used.
10366
10367 2005-09-20  Miguel de Icaza  <miguel@novell.com>
10368
10369         * driver.c (mono_main): Add --server and --desktop flags. 
10370
10371 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
10372
10373         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
10374         registers as global registers.
10375
10376         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
10377         longer needed with the new register allocator.
10378
10379         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
10380
10381         * cpu-ia64.md: Remove unused opcodes.
10382         
10383         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
10384         
10385 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
10386
10387         * cpu-amd64.md: Remove unused opcodes.
10388
10389         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
10390         needed with the new register allocator.
10391
10392         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
10393         reg-reg moves.
10394
10395 2005-09-16  Raja R Harinath  <rharinath@novell.com>
10396
10397         * Makefile.am (check-local): Don't invoke semdel-wrapper.
10398
10399 2005-09-16  Martin Baulig  <martin@ximian.com>
10400
10401         * exceptions-amd64.c
10402         (throw_exception): Don't call mono_debugger_throw_exception() if
10403         we're a rethrow - see the FIXME in the code.
10404
10405 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
10406
10407         * mini.c (mono_init_exceptions): This only works on some architectures.
10408         
10409 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
10410
10411         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
10412         on ia64.
10413
10414         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
10415
10416         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
10417         now in mini-exceptions.c.
10418
10419 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
10420
10421         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
10422         now in mini-exceptions.c.
10423
10424 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
10425
10426         * exceptions-x86.c: Applied patch from Patrik Torstensson 
10427         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
10428
10429         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
10430         code into mini-exceptions.c. Add some assertions to it.
10431
10432 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
10433
10434         * aot.c (emit_section_change): Applied patch from "The Software Team" 
10435         (<software@solmersa.com>). Fix as errors on windows.
10436
10437 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
10438
10439         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
10440         method info into the LMF.
10441
10442 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
10443         
10444         * mini-ia64.c: Add proper unwind info for method epilogs.
10445
10446         * exceptions-ia64.c: Add some code to help debugging.
10447         
10448         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
10449
10450         * mini-exceptions.c: Fix warning.
10451
10452 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
10453
10454         * mini.c: Really fix build.
10455
10456         * mini-x86.c mini-amd64.c: Fix build.
10457
10458 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
10459
10460         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
10461
10462         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
10463         some Interlocked methods as intrinsics.
10464
10465         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
10466         for Thread methods as well.
10467
10468         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
10469
10470         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
10471
10472         * mini-ia64.c mini-x86.c mini-amd64.c 
10473         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
10474         OP_MEMORY_BARRIER.
10475         
10476         * mini.c (mono_init_exceptions): Fix build breakage.
10477
10478 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
10479
10480         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
10481         of instructions. Use the new ia64_unw_op macros for emitting unwind
10482         info.
10483
10484         * mini.c (mono_init_exceptions): Initialize exception handling
10485         related trampolines at startup.
10486
10487 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
10488
10489         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
10490
10491 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
10492
10493         * mini.c: Handle type loading errors gracefully during compilation and
10494         throw the appropriate exception.
10495
10496 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
10497
10498         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
10499         for the mono binary.
10500
10501 2005-09-09  Martin Baulig  <martin@ximian.com>
10502
10503         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
10504         the release.
10505
10506 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
10507
10508         * mini-arm.h: use emulation for conv.r.un for the release.
10509
10510 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
10511
10512         * mini-arm.c, objects.cs: more fixes and tests for them.
10513
10514 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
10515
10516         * mini-arm.c: align structures to at least 4 bytes to be able
10517         to keep our current optimized memcpy.
10518
10519 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
10520
10521         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
10522
10523 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10524
10525         * mini.c: ignore SIGPIPE.
10526
10527 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
10528
10529         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
10530
10531         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
10532
10533 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
10534
10535         * mini.h: Add prototype for mono_allocate_stack_slots_full.
10536
10537 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
10538
10539         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
10540         exception handling support.
10541         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
10542         patch by Brian Koropoff <briank@marakicorp.com>).
10543
10544 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
10545
10546         * mini.c: revert another 'optimization' which breaks when
10547         items on the eval stack need to be saved at a basic block end
10548         (bug #75940).
10549
10550 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
10551
10552         * jit-icalls.c: for arrays, ensure we always provide
10553         lower bounds.
10554
10555 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
10556
10557         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
10558         
10559         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
10560
10561 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
10562
10563         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
10564         arguments in their original register.
10565
10566 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
10567
10568         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
10569         memset/memcpy.
10570
10571         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
10572         when ssapre is enabled.
10573
10574         * inssel-long.brg: Fix bug in previous patch.
10575
10576         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
10577         multiplication by a constant.
10578
10579 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
10580
10581         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
10582         icc.
10583
10584         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
10585         saving registers.
10586
10587 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
10588
10589         * inssel-arm.brg: apply changes tested by Brian Koropoff
10590         <briank@marakicorp.com>.
10591
10592 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
10593
10594         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
10595         
10596 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
10597
10598         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
10599         to the same register if dreg is just a base register.
10600         (print_ins): Improve printing of membase opcodes.
10601
10602         * inssel-x86.brg: Add optimized ldind(reg) rules.
10603
10604         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
10605
10606 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
10607
10608         * mini.c: when running under valgrind, set the stack bottom for
10609         the GC at the actual approximate stack for the app (fixes running
10610         mono with valgrind).
10611
10612 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
10613
10614         * mini.c: do no break at the first valuetype to init found
10615         (fixes bug #75791).
10616
10617 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
10618
10619         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
10620
10621 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
10622
10623         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
10624
10625 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
10626
10627         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
10628
10629 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
10630
10631         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
10632
10633         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
10634         code.
10635
10636         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
10637         code.
10638
10639         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
10640         methods.
10641
10642 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
10643
10644         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
10645
10646 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
10647
10648         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
10649         in the tail recursion optimization.
10650
10651         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
10652         debug info into the assembly file.
10653
10654         * iltests.il: Add test for filter regions.
10655
10656         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
10657         initial stack of filter regions. Fixes #75755.
10658
10659 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
10660
10661         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
10662         stack requirements.
10663
10664 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
10665
10666         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
10667         the check for an already compiled method on non-ia64 platforms.
10668         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
10669         proper domain.
10670
10671         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
10672
10673         * inssel-x86.brg: Add some optimized call rules.
10674
10675 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
10676
10677         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
10678         method here.
10679
10680         * mini.h mini-trampolines.c: Pass the trampoline argument to 
10681         mono_arch_patch_delegate_trampoline.
10682
10683         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
10684
10685         * mini-trampolines.c: Fix build.
10686
10687         * mini-amd64.h: Add delegate trampolines.
10688
10689         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
10690
10691         * inssel-amd64.brg: Add optimized call rules.
10692         
10693         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
10694
10695         * inssel-ia64.brg: Add optimized ldind(reg) rules.
10696
10697 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
10698
10699         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
10700         change.
10701
10702         * mini-ia64.c: Remove LMF fixmes.
10703
10704         * mini-ia64.h: Remove most fields from LMF.
10705
10706         * inssel-ia64.brg (stmt): Fix unaligned access errors.
10707
10708         * mini-trampolines.c: Add support for IA64 function descriptors.
10709
10710         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
10711         for IA64 function descriptors.
10712
10713 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
10714
10715         * tramp-arm.c: patch the vtable for virtual calls. Added
10716         support code to register/unregister the LMF.
10717         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
10718         more LMF work.
10719
10720 2005-08-19  Dick Porter  <dick@ximian.com>
10721
10722         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
10723         bit value if needed.
10724
10725 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
10726
10727         * mini.c (mini_get_method): Move handling of wrapper data here.
10728
10729         * mini.c (mono_method_to_ir): Add support for dynamic methods.
10730
10731         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
10732         virtual.
10733
10734         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
10735         bblock->code does not remain empty.
10736
10737 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
10738
10739         * arrays.cs: Add regression test for #75832.
10740
10741         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
10742         rules. Fixes #75832.
10743
10744         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
10745         instruction scheduling.
10746
10747 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
10748
10749         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
10750
10751 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
10752
10753         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
10754
10755         * mini-codegen.c: Fix VC build.
10756
10757         * cpu-pentium.md: Increase length of atomic_exhange_i4.
10758
10759 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10760
10761         * mini.h: fix signature for mono_register_opcode_emulation.
10762
10763 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
10764
10765         * mini.c: Get rid of most of the helper_sig_... constants using
10766         mono_create_icall_signature ().
10767
10768 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
10769
10770         * jit-icalls.c (helper_ldstr): New helper function.
10771
10772         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
10773
10774         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
10775         throw, load the string using a helper call instead of creating a string object.
10776
10777         * aot.c: Update after LDSTR changes.
10778
10779         * mini.h: Bump AOT file version.
10780         
10781         * aot.c: Save class size info into the AOT file. Print more statistics during
10782         compilation.
10783
10784         * mini.h: Bump AOT file version.
10785
10786         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
10787         ordering of disasm cases. Fixes #74957.
10788
10789 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
10790
10791         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
10792         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
10793         the generic code needed for the ARM port.
10794
10795 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
10796
10797         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
10798         inssel-arm.brg: more ARM features and fixes.
10799
10800 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
10801
10802         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
10803         ARM port work in progress.
10804
10805 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
10806
10807         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
10808
10809         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
10810
10811         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
10812
10813         * inssel.brg (mini_emit_memset): Add support for unaligned access.
10814
10815         * *-ia64.*: Ongoing IA64 work.
10816         
10817         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
10818
10819 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
10820
10821         * TODO: Remove out-of-data todo stuff.
10822
10823         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
10824         dead code.
10825
10826         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
10827
10828         * mini.h: Bump corlib version.
10829
10830 2005-07-27  Martin Baulig  <martin@ximian.com>
10831
10832         * mini-codegen.c
10833         (create_copy_ins): Added `const unsigned char *ip' argument; set
10834         `copy->cil_code' from it.
10835
10836 2005-07-27  Martin Baulig  <martin@ximian.com>
10837
10838         * mini-exceptions.c (mono_handle_exception): Don't call
10839         mono_debugger_handle_exception() for filters.
10840
10841 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
10842
10843         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
10844         as well.
10845
10846 2005-07-26  Martin Baulig  <martin@ximian.com>
10847
10848         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
10849
10850         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
10851         helper_compile_generic_method() if the method is actually virtual
10852         and non-final.
10853
10854 2005-07-26  Martin Baulig  <martin@ximian.com>
10855
10856         * mini.c
10857         (trampoline_code): Renamed to `mono_trampoline_code' and made it
10858         public; this is now accessed directly by the debugger.
10859         (mono_generic_trampoline_code): Removed.
10860
10861         * debug-mini.c
10862         (mono_debug_init_method): Also add interncalls and wrappers.
10863
10864 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
10865
10866         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
10867
10868 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
10869
10870         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
10871
10872 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
10873
10874         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
10875
10876 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
10877
10878         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
10879         getting TLS offsets on AMD64 too.
10880
10881 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
10882
10883         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
10884
10885 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
10886
10887         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
10888         inssel-arm.brg, mini-arm.h: ARM port work in progress.
10889
10890 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
10891
10892         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
10893
10894         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
10895         to mini.c.
10896
10897         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
10898         mono_sparc_is_virtual_call ().
10899         
10900         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
10901
10902         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
10903         trampoline parameters.
10904
10905         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
10906         
10907         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
10908         to mono_arch_get_vcall_slot_addr.
10909
10910         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
10911         trampoline code.
10912
10913         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
10914
10915 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
10916
10917         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
10918
10919 2005-07-19  Martin Baulig  <martin@ximian.com>
10920
10921         * exceptions-amd64.c (throw_exception): Call
10922         mono_debugger_throw_exception() here like we're doing it on i386.
10923
10924 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
10925
10926         * mini-ia64.c: Add optimized TLS access support.
10927
10928 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
10929
10930         * mini-exceptions.c: Ongoing IA64 work.
10931
10932         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
10933
10934         * mini.c: Use the default optimization set when embedding. Fixes
10935         #75194.
10936
10937 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
10938
10939         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
10940         of trampolines to a separate file.
10941
10942         * mini-trampolines.c: New file.
10943
10944         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
10945         separate file.
10946         
10947         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
10948         amd64/ia64 code.
10949
10950         * mini-codegen.c: Fix cygwin build.
10951
10952 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
10953
10954         * mini.c: Add some minor changes needed by the IA64 port.
10955
10956         * *-ia64.*: Ongoing IA64 work.
10957
10958 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
10959
10960         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
10961         trampolines into arch-independent and arch-dependent parts.
10962
10963         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
10964
10965 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
10966
10967         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
10968
10969         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
10970         the xp-regalloc-branch for amd64.
10971
10972         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
10973         xp-regalloc-branch for x86.
10974
10975 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
10976
10977         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
10978
10979 2005-07-06  Martin Baulig  <martin@ximian.com>
10980
10981         * mini.c
10982         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
10983         (mono_jit_runtime_invoke): Likewise.
10984
10985 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
10986
10987         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
10988         on x86 too.
10989         
10990         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
10991         without loading their metadata. Reorganize the file format so exception handling+
10992         debug info is kept separate from normal method info. Create MonoJitInfo 
10993         structures for methods lazily.
10994
10995         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
10996         loading metadata.
10997         (x86_class_init_trampoline): Patch AOT class init trampolines too.
10998
10999         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
11000
11001         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
11002         in AOT code.
11003
11004         * mini.h: Bump AOT file version.
11005
11006 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
11007
11008         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11009
11010 2005-07-01  Raja R Harinath  <rharinath@novell.com>
11011
11012         * Makefile.am (check-local): Call semdel-wrapper.
11013
11014 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
11015
11016         * mini-x86.c: Revert the last change as it seems to break the build..
11017
11018 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
11019
11020         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
11021         
11022         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
11023
11024 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
11025
11026         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
11027         outside of the macro, so strange stuff doesn't happen with gcc4
11028         (NEW_AOTCONST_TOKEN): Likewise.
11029
11030 2005-06-28  Martin Baulig  <martin@ximian.com>
11031
11032         * mini.c (mini_class_is_system_array): New static method; use this
11033         instead of `klass->parent == mono_defaults.array_class' everywhere
11034         since this also works for the new generic array class.
11035
11036 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
11037
11038         * inssel.brg: Remove warnings.
11039
11040 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
11041
11042         * mini-ia64.c: Ongoing IA64 work.
11043
11044         * basic-float.cs: Add float->i1 conversion test.
11045
11046         * iltests.il: Add conv.u4 test.
11047
11048 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
11049
11050         * inssel-long.brg: Fix bug caused by last change.
11051
11052 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
11053
11054         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
11055         BSDs.  Allows the x86 JIT to work on OSX86
11056
11057 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
11058
11059         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
11060         u4->i8 conversion.
11061
11062         * mini-ia64.c: Ongoing IA64 work.
11063
11064 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
11065
11066         * mini-ia64.c: Ongoing IA64 work.
11067
11068         * driver.c: Clean up jit_code_hash as well when using --regression.
11069
11070         * inssel-long.brg: Fix long->i4/u4 conversion rules.
11071
11072         * basic-long.cs: Add tests for long->u4 conversion.
11073
11074 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
11075
11076         * mini.c: Take mono_get_domainvar out of macros. This makes sure
11077         that we do not depend on undefined C behavior: the order stuff
11078         gets evaluated within an expression. Fixes mono when compiled on
11079         GCC 4.
11080
11081 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
11082
11083         * *-ia64.*: Ongoing IA64 work.
11084
11085         * aot.c: Lower memory usage while loading AOT methods.
11086
11087         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
11088
11089         * mini.h: Bump AOT file format version.
11090
11091 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
11092
11093         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
11094
11095 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
11096
11097         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
11098         not on callee assembly). Fixed some comments.
11099
11100 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
11101
11102         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
11103         it gets proper disassembly.
11104         (emit_method_info): Remove some dead code.
11105
11106         * mini.c (mini_method_compile): Allways allocate the GOT var in
11107         mono_method_to_ir for emulating opcodes.
11108
11109 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
11110
11111         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
11112         before freeing the code memory. Fixes #74990.
11113
11114         * objects.cs: Add regression test for #74992.
11115
11116         * liveness.c: Extend live ranges of arguments to the beginning of the
11117         method. Fixes #74992.
11118
11119         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
11120         so it points into the faulting instruction.
11121
11122 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
11123
11124         * jit-icalls.c (mono_imul_ovf): Add exception handling.
11125
11126         * *-ia64.*: Ongoing IA64 work.
11127
11128         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
11129
11130 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
11131
11132         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
11133
11134         * *-ia64.*: Ongoing IA64 work.
11135
11136 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
11137
11138         * basic-long.cs: Add tests for add/sub.ovf.
11139
11140         * basic.cs: Add tests for sub.ovf.
11141
11142         * *-ia64.*: Ongoing IA64 work.
11143
11144 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
11145
11146         * *-ia64.*: Ongoing IA64 work.
11147
11148         * basic.cs: Add conv.ovf.i4.un test.
11149
11150 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
11151
11152         * mini.c: (remove_block_if_useless) Fixed bug 75061.
11153         
11154 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11155
11156         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
11157
11158 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
11159
11160         * *-ia64.*: Ongoing IA64 work.
11161
11162 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11163
11164         * trace.[ch]:
11165         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
11166
11167 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
11168
11169         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
11170
11171 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
11172
11173         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
11174
11175         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
11176         of a call is callable by a near call.
11177
11178 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
11179
11180         * mini-ia64.c: Ongoing IA64 work.
11181
11182 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
11183
11184         * genmdesc.c: Make the generated array non-static.
11185
11186         * inssel-long.brg: Fix LSHR_IMM rule.
11187
11188         * *-ia64.*: Ongoing IA64 work.
11189
11190         * *-ia64.*: Ongoing IA64 work.
11191
11192 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11193
11194         * *-ia64.*: Ongoing IA64 work.
11195
11196         * *-ia64.*: Ongoing IA64 work.
11197         
11198         * mini-ia64.c: Ongoing IA64 work.
11199
11200         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
11201
11202 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
11203
11204         * objects.cs basic-calls.cs: Move some tests to objects.cs.
11205         
11206         * objects.cs basic-long.cs: Move some tests to objects.cs.
11207
11208 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
11209
11210         * *-ia64.*: Ongoing IA64 work.
11211
11212         * iltests.il: Add a new test.
11213
11214         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
11215         newobj. Fixes #75042.
11216
11217 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
11218
11219         * *-ia64.*: Ongoing IA64 work.
11220         
11221         * *-ia64.*: Ongoing IA64 work.
11222         
11223         * *-ia64.*: Ongoing IA64 work.
11224
11225         * basic.cs objects.cs: Move tests accessing static variables as well.
11226
11227         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
11228
11229 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
11230
11231         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
11232
11233         * driver.c: Always print failed tests.
11234
11235         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
11236         frame pointer.
11237
11238         * *ia64*: Ongoing IA64 work.
11239
11240 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
11241
11242         * basic.cs: Add tests for add.ovf. Fix warnings.
11243
11244 2005-05-18  Miguel de Icaza  <miguel@novell.com>
11245
11246         * driver.c (mono_main): Avoid crash if no argument is passed to
11247         --break;  Do not use g_error, but f_printf.   And fix all other
11248         ocurrences of the same crash.
11249
11250 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
11251
11252         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
11253         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
11254         Fixes #74742.
11255
11256 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
11257
11258         * *-ia64.*: Add beginnings of IA64 backend.
11259
11260         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
11261
11262 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
11263
11264         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
11265         Fixes #74925.
11266
11267         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
11268
11269         * mini-amd64.c: Fix a warning.
11270
11271 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
11272
11273         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
11274         in float_neg. Fixes #74897.
11275
11276         * mini-amd64.c (emit_call): Fix another near call bug.
11277
11278 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
11279
11280         * declsec.c: Keep the appdomain information in the structure. Added a 
11281         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
11282         value gets overwritten).
11283         * declsec.h: Set the default MonoArray for the the stack to 6. Added
11284         an MonoAppDomain member to MonoSecurityFrame.
11285         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
11286         used in the stack walk. Now use a MonoArray which grow (double) when
11287         it gets full.
11288
11289 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
11290
11291         * mini.c: Re-enabled runtime cleanup, since running threads should
11292         now properly stop when exiting.
11293
11294 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
11295
11296         * mini-codegen.c: New file contaning the arch-independent local
11297         register allocator. Not used by any architectures yet.
11298
11299         * mini.h linear-scan.c: Merge some changes from the 
11300         mini-xp-local-regalloc branch.
11301
11302 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
11303
11304         * mini-amd64.c (emit_call): Fix calls to native functions when the
11305         runtime is compiled as a shared library. Fixes #74756.
11306
11307         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
11308         on a literal field. Fixes #74751.
11309
11310 2005-04-25  Raja R Harinath  <rharinath@novell.com>
11311
11312         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
11313
11314 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
11315
11316         * objects.cs: Add missing null casting test.
11317
11318 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
11319
11320         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
11321         in wrapper methods. Also rename 'address' variable to 'offset'.
11322
11323 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
11324
11325         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
11326         warnings.
11327         
11328         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
11329
11330         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
11331         work on windows.
11332
11333 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
11334
11335         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
11336
11337 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
11338
11339         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
11340         just the last bytes.
11341
11342 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
11343
11344         * aot.c (mono_compile_assembly): Fix warning.
11345
11346         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
11347         by the _MSC_VER stuff.
11348
11349 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
11350
11351         * inssel-long.brg: Fix #74588.
11352
11353         * cpu-amd64.md: Fix #74591.
11354
11355         * iltests.il: Add new regression tests.
11356
11357 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
11358
11359         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
11360         valuetype.
11361
11362 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
11363
11364         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
11365
11366         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
11367         from Bill Middleton <flashdict@gmail.com>.
11368
11369 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
11370
11371         * arrays.cs: Add new regression test. Fix warnings.
11372
11373 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
11374
11375         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
11376         and leakage in CKFINITE.
11377
11378         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
11379         this to a null op since it is called on amd64 too.
11380
11381         * exceptions-amd64.c (get_throw_trampoline): Align stack.
11382
11383         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
11384         body since this is not used on amd64.
11385         
11386         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
11387
11388         * mini-amd64.c: Remove obsolete fixmes.
11389
11390         * mini.c (print_method_from_ip): Fix debugging support.
11391
11392 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
11393
11394         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
11395         so that expressions that don't give much gain are not reduced.
11396         * ssapre.h: Likewise.
11397
11398 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
11399
11400         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
11401
11402         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
11403
11404         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
11405
11406 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
11407
11408         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
11409
11410         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
11411
11412 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
11413
11414         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
11415         stack touching.
11416
11417         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
11418
11419         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
11420
11421         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
11422
11423         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
11424         MONO_ARCH_USE_SIGACTION. Fixes #74252.
11425
11426         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
11427
11428         * mini-x86.c: Fix up stack overflow handling.   
11429
11430         * exceptions.cs: Add new regression test.
11431
11432 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
11433
11434         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
11435         mono_jit_thread_attach.
11436
11437         * mini.c (mono_method_to_ir): Verify called method is not abstract.
11438
11439 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
11440
11441         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
11442         avoid calling constructors using callvirt.
11443
11444         * inssel.brg: Fix #74073.
11445
11446 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
11447
11448         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
11449         compilation with non-GCC compilers.
11450         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
11451         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
11452
11453 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
11454
11455         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
11456         klass->interface_offsets (will likely fix bug#74073).
11457
11458 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
11459
11460         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
11461
11462 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
11463
11464         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
11465         to amd64_div_reg_size ().
11466         
11467         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
11468
11469 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
11470
11471         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
11472
11473 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
11474
11475         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
11476
11477 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
11478
11479         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
11480         
11481         * mini.c (mono_precompile_assembly): Load and precompile referenced
11482         assemblies as well. Fixes #74015.
11483
11484 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
11485
11486         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
11487
11488 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
11489
11490         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
11491         a lot of checks and (anyway) permissions cannot work until corlib is 
11492         loaded.
11493
11494 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
11495
11496         * mini-ppc.c: fixed ABI issue on sysv/ppc.
11497
11498 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
11499
11500         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
11501         calls (fixes bug#72824).
11502
11503 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
11504
11505         * mini.c: fix tail recursion elimination (see test in bug#73936).
11506
11507 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
11508
11509         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
11510         some fp functions in sse2 mode.
11511
11512 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
11513
11514         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
11515
11516 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
11517
11518         * mini.h mini.c: Add mono_get_jit_tls_key ().
11519
11520         * mini-x86.c: Enable fast TLS support on windows.
11521
11522 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
11523
11524         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
11525         * mini.c: Check for p/invoke method when generating code. If a
11526         p/invoke method, or it's class, isn't decorated with [Suppress
11527         UnmanagedCodeSecurity] then generate code to call System.Security.
11528         UnmanagedDemand (only if the security manager is active).
11529
11530 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
11531
11532         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
11533         last change as it seems to cause strange crashes.
11534         
11535 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
11536
11537         * *.c: handle unsafe function pointers where needed.
11538
11539 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
11540
11541         * mini.c (mono_jit_free_method): Remove the fixme too.
11542
11543 2005-03-15  Miguel de Icaza  <miguel@novell.com>
11544
11545         * mini.c: As discussed, make the code actually free the delegate
11546         thunk now, to enable the debugging of delegate problems, use
11547         MONO_DEBUG=1 when running Mono. 
11548
11549         This takes also care of parts of the leaks as seen by Joe.
11550
11551 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
11552
11553         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
11554         thread_tls_offset calculation.
11555
11556 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
11557
11558         * declsec.c: Reworked linkdemand checks for icall. The previous code
11559         was using the declaration code (untrusted) and didn't work as expected
11560         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
11561         specific case.
11562
11563 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
11564
11565         * iltests.il: Add new localloc test.
11566
11567         * mini-amd64.c: Handle large stack allocations the same way as on
11568         windows if stack overflow handling is working.
11569         
11570         * mini-amd64.c: Allocate the signal stack using mmap.
11571
11572         * mini.c (sigsegv_signal_handler): Fix reading of context.
11573
11574         * mini-exceptions.c: Fix up stack overflow handling.
11575
11576         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
11577
11578         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
11579
11580         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
11581
11582         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
11583
11584         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
11585         tramp_init functions as they are no longer needed.
11586
11587 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
11588
11589         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
11590         
11591         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
11592
11593         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
11594         
11595         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
11596         support that now.
11597
11598         * mini-ops.h: Add OP_LMUL_IMM.
11599
11600         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
11601         long mul/div opcodes as intrinsic.
11602
11603         * mini-amd64.c (emit_call): Handle the case when the callee might be
11604         an AOT method.
11605
11606 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
11607
11608         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
11609         extra safe.
11610         
11611         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
11612
11613         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
11614
11615 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
11616
11617         * mini.c (mono_codegen): Don't leak here, to help people running
11618         monogrind.
11619
11620 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
11621
11622         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
11623         conversions in sse2 mode.
11624
11625         * basic-float.cs: Add regression test.
11626         
11627         * mini-amd64.c: Reenable sse2.
11628
11629 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
11630
11631         * mini-amd64.c: Disable sse2 until some regressions are fixed.
11632
11633 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
11634
11635         * driver.c: Copyright text should include 2005.
11636         
11637 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
11638
11639         * cpu-amd64.md (load_membase): Fix more max lengths.
11640
11641 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
11642
11643         * cpu-amd64.md (load_membase): Fix max length.
11644
11645         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
11646
11647         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
11648
11649         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
11650         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
11651
11652         * basic-float.cs: Add rounding regression test.
11653
11654         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
11655
11656 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
11657
11658         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
11659         structures in registers for pinvoke wrappers.
11660
11661 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
11662
11663         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
11664
11665 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
11666
11667         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
11668         wrapper to mono_jit_thread_attach.
11669
11670         * mini.c (mini_jit_thread_attach): New jit icall.
11671
11672         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
11673         native->managed wrappers.
11674
11675         * exceptions.cs: Add new regression test.
11676
11677         * mini.c (optimize_branches): Check regions in the cbranch to throw
11678         block case as well. Fixes #73242.
11679
11680 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
11681
11682         * mini.c: thread safety fixes.
11683
11684 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
11685
11686         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
11687         patching stuff, since delegates use jump trampolines so there is
11688         no caller.
11689
11690         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
11691         jump trampolines.
11692         
11693         * tramp-amd64.c: Fix build.
11694
11695         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
11696         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
11697
11698         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
11699         Rename this to mono_arch....
11700         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
11701
11702         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
11703
11704         * mini-amd64.c (emit_call): If both the caller and the callee is
11705         guaranteed to have 32 bit addresses, emit a normal call.
11706
11707         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
11708
11709         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
11710         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
11711         method_ptr inside delegates.
11712
11713 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
11714
11715         * mini.c (mono_jit_free_method): Free the method info even if the native code is
11716         invalidated. Fixes #73001.
11717
11718         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
11719
11720         * mini-x86.c: Only use stdcall for pinvokes on windows.
11721
11722 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
11723
11724         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
11725         * mini-x86.c: remove unreliable __thread var offset detection,
11726         use the correct accessors and enable by default.
11727
11728 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
11729
11730         * mini.c (mono_jit_free_method): Fix memory leak.
11731
11732 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
11733
11734         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
11735
11736 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
11737
11738         * cpu-amd64.md: Fix lengths of atomic opcodes.
11739
11740 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
11741
11742         * driver.c: try to not imply using ICU is any good.
11743
11744 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
11745
11746         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
11747         functions as inline ops.
11748
11749         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
11750         some Interlocked functions as inline ops.
11751
11752         * mini.c (move_basic_block_to_end): Fix bug in last patch.
11753
11754         * mini.h (MonoBasicBlock): Reorganize fields a bit.
11755
11756         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
11757
11758         * mini.c: Add support for OP_NOT_TAKEN.
11759
11760         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
11761         structures in registers for pinvoke wrappers.
11762
11763         * mini-amd64.c: Fix warnings.
11764
11765 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
11766
11767         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
11768
11769         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
11770
11771         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
11772         address instead of loading the address from it.
11773
11774         * mini-x86.c: Add support for returning small structs in registers
11775         on Win32. Fixes part of #70864.
11776         
11777 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
11778
11779         * trace.c (get_token): Improve error checking.
11780
11781 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
11782
11783         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
11784
11785 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
11786  
11787         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
11788         it can be reused for MonoClass.
11789         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
11790         _LINKDEMAND.
11791
11792 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
11793
11794         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
11795         instead of a MonoReflectionMethod. The method information wasn't used
11796         when displaying SecurityException details (but will be now).
11797
11798 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
11799
11800         * Makefile.am : windows build fix.
11801
11802 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
11803
11804         * iltests.il: Add new regression test.
11805
11806         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
11807         #72522.
11808
11809 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
11810  
11811         * mini.c: Moved linkdemand check into helper function check_linkdemand
11812         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
11813         LDFTN, LDVIRTFTN).
11814
11815 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
11816
11817         * declsec.c: Added statistics counter for different kinds of 
11818         LinkDemands.
11819         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
11820         (and commented) declaration.
11821         * mini.c: Added statistics counter for security Demand code 
11822         generation. Added display of security statistics.
11823
11824 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
11825
11826         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
11827         Fix compilation errors under gcc-2.95.
11828
11829 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
11830
11831         * mini.c, driver.c: Use the new jit trampoline hashtable
11832
11833 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
11834
11835         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
11836
11837 2005-02-11  Martin Baulig  <martin@ximian.com>
11838
11839         * debug-mini.c (mono_debug_close_method): Free the line number array.
11840
11841 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
11842
11843         * aot.c: Break up large methods into smaller ones. Share GOT slots for
11844         icalls.
11845
11846         * mini.h: Bump AOT file format version. 
11847
11848 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
11849
11850         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
11851         APTC and P/Invoke.
11852         * declsec.h: Added macros to get/set lazyly initialized security 
11853         informations about assemblies. Added new enum for different type of
11854         possible LinkDemand violation. Added function to check LinkDemands.
11855         * mini.h: Added a field to MonoCompile to hold any security violation
11856         detected when JITting a method (so it can be thrown later).
11857         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
11858         and CEE_CALLVIRT. Added code to throw exception at the end of
11859         mini_method_compile (note: the exception is unhandled right now).
11860
11861 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
11862
11863         * mini.c, jit-icalls.c: use the managed implementation of
11864         memset for initobj and memset, to avoid managed <-> unmanaged
11865         transitions.
11866
11867 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
11868
11869         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
11870         optimization if it would need a GOT var.
11871
11872         * basic.cs: Add tests for constant propagation and switch statements.
11873
11874         * ssa.c: Fix out-of-range constant propagation and switch statements.
11875
11876 2005-02-09    <vargaz@freemail.hu>
11877
11878         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
11879
11880 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
11881
11882         * cpu-amd64.md (load_membase): Fix max length of load_membase.
11883
11884 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
11885
11886         * mini.c: update to new signature of mono_class_get_allocation_ftn().
11887
11888 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
11889
11890         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
11891         arithmetic operations.
11892
11893 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
11894
11895         * mini-ppc.c: add a workaround for broken user code that
11896         DllImports vararg functions with non-vararg signatures.
11897
11898 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
11899
11900         * mini.c (mono_jit_compile_method_inner): Add detection and a 
11901         meaningfull error message for assemblies written in Managed C++.
11902
11903         * tramp-amd64.c mini-amd64.h: Add support for 
11904         create_trampoline_from_token ().
11905
11906         * aot.c mini-x86.c abcremoval.c: Applied patch from
11907         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
11908
11909 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
11910
11911         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
11912         which takes a MonoImage/token as parameter instead of a MonoMethod.
11913
11914         * aot.c: Use the new trampoline for initializing vtables.
11915
11916         * aot.c: Add support for ldfld/stfld_remote wrappers.
11917
11918         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
11919         rules for compare <MEM>, IMM.
11920
11921         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
11922
11923         * aot.c: Handle inherited finalizers correctly.
11924
11925 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
11926
11927         * inssel.brg (stmt): Add a missing _setup_... ().
11928
11929         * aot.c: Save some parts of the class state to the AOT file and use it
11930         to recompute that state when a class is initialized.
11931
11932         * mini.c: Install AOT hooks into the runtime.
11933
11934         * mini.h: Bump AOT file format version.
11935         
11936         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
11937         Fixes #72148.
11938
11939         * iltests.il: Add new test.
11940
11941 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
11942
11943         * mini.c: fix typo.
11944
11945 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
11946
11947         * mini.c: setup the statistical profiler in the thread attach
11948         callback to cope with the new single thread code.
11949
11950 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
11951
11952         * mini-ppc.c: ensure we have enough room for the profiler
11953         calls (fixed bug#72084).
11954
11955 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
11956
11957         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
11958         it.
11959
11960 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
11961
11962         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
11963
11964 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
11965
11966         * ssapre.c: Fixed an issue with down safety (this allows IronPython
11967         to succesfully execute parrotbench).
11968         * ssapre.h: Likewise.
11969
11970 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
11971
11972         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
11973         variable for stores to method arguments (fixes a SSAPRE issue).
11974
11975 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
11976
11977         * mini.c: handle value types in dup, fixes gen-112.cs.
11978
11979 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
11980
11981         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
11982         sequence for calls in dynamic methods to avoid thunks.
11983
11984 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
11985
11986         * mini.c: correctly remove dynamic methods from the hashtable.
11987
11988 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
11989
11990         * driver.c: Disabled SSAPRE until fix the bug that appears
11991         in IronPython's parrotbench.
11992
11993 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
11994
11995         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
11996
11997         * mini.c (mono_method_to_ir): Revert the previous change.
11998         
11999         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
12000         when AOT compiling.
12001
12002         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
12003         mono_jit_info_table_find () etc. when running under valgrind.
12004
12005         * inssel.brg: Fix warnings.
12006
12007         * mini-exceptions.c: Fix warnings.
12008
12009 2005-01-31  Martin Baulig  <martin@ximian.com>
12010
12011         * driver.c (compile_all_methods_thread_main): Don't try to compile
12012         generic methods or anything which has type parameters.
12013
12014 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
12015
12016         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
12017
12018         * TestDriver.cs: Add --verbose flags.
12019
12020         * graph.c ssa.c: Fix 64 bit warnings.
12021         
12022         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
12023         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
12024         Fix 64 bit warnings.
12025
12026         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
12027         variable not spotted by gcc.
12028         
12029         * mini-amd64.c inssel-amd64.brg: Applied patch from  
12030         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
12031         X86_COMPARE_MEMBASE opcodes.
12032
12033         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
12034
12035 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
12036
12037         * *: MonoMethod->signature might be NULL now. You *MUST* use
12038         mono_method_signature.
12039
12040 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12041
12042         * driver.c (compile_all_methods_thread_main): Compile the methods
12043         without invoking cctors.
12044
12045 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
12046
12047         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
12048         * basic-calls.cs: test for the above.
12049
12050 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
12051
12052         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
12053         MonoJitInfo changes.
12054
12055 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
12056
12057         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
12058         eagerly if it contains dynamic methods.
12059         
12060         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
12061
12062         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
12063         trace, it is now computed by an icall from trace_ips.
12064         
12065         * mini-exceptions.c: Fix a warning.
12066
12067 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
12068
12069         * mini-exceptions.c: don't bother getting stack trace info if
12070         it's not going to be used.
12071
12072 2005-01-27  Raja R Harinath  <rharinath@novell.com>
12073
12074         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
12075         ssapre-mini-ops.h.
12076
12077 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
12078
12079         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
12080
12081         * aot.c: Avoid calling mono_method_get_header () if not needed.
12082
12083         * mini.h: Bump AOT file format version.
12084         
12085         * mini.c (mono_emit_native_call): Allocate a GOT var here.
12086
12087         * mini.c (mono_print_tree): Print more info for calls.
12088
12089 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
12090
12091         * declsec.h: Remove warning by adding missing include for marshal.h
12092
12093 2005-01-26  Martin Baulig  <martin@ximian.com>
12094
12095         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
12096         `ip' twice.
12097
12098 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
12099
12100         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
12101         flags.
12102
12103         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
12104
12105         * aot.c (mono_compile_assembly): Fix a warning.
12106
12107 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
12108
12109         * declsec.c: Look for security attributes on the original MonoMethod 
12110         (and not the wrapped one). This fix permissions on icalls.
12111
12112 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12113
12114         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12115
12116         * mini.c (mono_allocate_stack_slots): Add a fixme.
12117
12118         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
12119
12120 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
12121
12122         * inssel.brg: optimize casts of sealed types (more
12123         optimizations waiting for fixes in remoting).
12124
12125 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
12126
12127         * inssel.brg (stmt): Add another dummy rule.
12128
12129         * driver.c: Fix warnings.
12130
12131         * driver.c (mono_main): If running under valgrind, instruct glib to use
12132         the system allocation functions so valgrind can track the memory
12133         allocated by the g_... functions.
12134
12135         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
12136
12137         * mini-ops.h: Add OP_DUMMY_STORE opcode.
12138
12139         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
12140
12141         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
12142         variables in try regions.
12143
12144         * mini.c (mini_method_compile): Don't disable optimizations on large
12145         methods when AOT compiling.
12146
12147         * mini.c (mono_allocate_stack_slots): New arch independent method to 
12148         allocate stack slots. Not yet used.
12149
12150 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
12151
12152         * debug-mini.c (mono_debug_close_method): Plug some leaks.
12153
12154 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
12155
12156         * mini-ppc.c: make the branch info relative as the code
12157         buffer can be reallocated.
12158
12159 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
12160
12161         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
12162         * driver.c: Removed the AOT/security restriction. Now initialize the
12163         security manager (in metadata) if --security is used.
12164         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
12165         rather than the pointer to declarative security, when AOT is used.
12166
12167 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
12168
12169         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
12170         basic blocks, reduced intrinsic exception throwing code size.
12171
12172 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
12173
12174         * driver.c (mini_usage): Reorder the usage screen.
12175
12176 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
12177
12178         * mini.c (mono_resolve_patch_target): Fix warning.
12179
12180 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
12181
12182         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
12183         previous patch.
12184
12185         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12186
12187         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
12188         breaks the amd64 build.
12189
12190         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
12191         register allocation. Fixes #71454.
12192
12193         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
12194
12195         * arrays.cs: Add new regression test.   
12196
12197 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12198
12199         * ssapre.c: Turned usage of snprintf to GString.
12200         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
12201         (I left it on by mistake in my previous commit).
12202
12203 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
12204
12205         * mini.c, cfold.c, basic-calls.cs: preserve side effects
12206         on cond branch optimization (fixes bug# 71515).
12207
12208 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12209
12210         * abcremoval.c: Fixed bug 71062.
12211         * abcremoval.h: Likewise.
12212
12213 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
12214
12215         * mini.c: Added a new functionality to optimize_branches, the removal
12216         of useless basic blocks, and fixed some problem in the removal of
12217         critical edges; some utility functions added for both purposes.
12218         * ssapre.c: Added complex expression support, and fixed bug 70637.
12219         * ssapre.h: Likewise.
12220         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
12221         enabled in SSAPRE.
12222         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
12223         * driver.c: Re-enabled SSAPRE.
12224
12225 2005-01-19  Martin Baulig  <martin@ximian.com>
12226
12227         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
12228         the result of mono_get_method_constrained().
12229
12230 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
12231
12232         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
12233         manager.
12234
12235 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
12236
12237         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
12238         be detected.  Fixes #59296.
12239
12240 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12241
12242         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
12243         which can happen. Fixes #71361.
12244
12245 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
12246
12247         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
12248         manager.
12249
12250 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12251
12252         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
12253         appdomain-unload.exe to fail.
12254         
12255         * mini.c: Fix some memory leaks.
12256
12257 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
12258
12259         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
12260         Fixed bug and sped up some codepaths.
12261
12262 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
12263
12264         * mini.c: Fix some memory leaks.
12265
12266         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
12267         conversion.
12268
12269         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
12270
12271         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
12272         #71320.
12273
12274         * iltests.il: Add regression test for #71320.
12275
12276 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
12277
12278         * mini.c (mono_codegen): Fix installation of profiler hooks.
12279
12280         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
12281
12282 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
12283
12284         * mini.h, mini.c, cfold.c: optimize access to enum
12285         readonly fields, too. Eval conditional branches if possible
12286         to perform unreachable code removal in more cases.
12287
12288 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
12289
12290         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
12291
12292         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
12293         code manager.
12294
12295         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
12296         WinXP DEP. Fixes #71244.
12297
12298 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
12299
12300         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
12301
12302 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
12303
12304         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
12305
12306 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
12307
12308         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
12309         changes.
12310
12311         * mini.h: Bump AOT version.
12312
12313         * mini.h (MonoCompile): Change exvar to a hash table.
12314
12315         * mini.c: Allocate a separate exvar for each handler block.
12316
12317         * mini.c: Get rid of the computation of filter_lengths, its not needed.
12318
12319         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
12320         ex var with the pending exception and only throw if the two are equal.
12321         Fixes #68552.
12322         
12323         * exceptions.cs: Add tests for rethrow and nested catch clauses.
12324
12325         * mini-x86.c: Fix warnings.
12326
12327         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
12328         used by all the ports now.
12329
12330         * aot.c: Add write-symbols and save-temps options.
12331
12332 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
12333
12334         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
12335
12336 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
12337
12338         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
12339         operations.
12340
12341         * tramp-s390.c: Check vtable slot belongs to the domain.
12342
12343         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
12344         as per other platforms.
12345
12346         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
12347
12348 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
12349
12350         * driver.c: we don't run the Main() code in a subthread anymore.
12351
12352 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
12353
12354         * mini.c: added experimental rtc support in the statistical
12355         profiler: if the user has the permission, more accurate statistics
12356         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
12357         The MONO_RTC value must be restricted to what the linux rtc allows:
12358         power of two from 64 to 8192 Hz.
12359
12360 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
12361
12362         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
12363
12364 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
12365
12366         * mini-ppc.c: better icache flush for smp.
12367
12368 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
12369
12370         * mini-amd64.c (emit_move_return_value): Fix memory leak.
12371
12372         * mini-x86.c (get_call_info): Add the get_call_info () code from the
12373         amd64 port, not yet used.
12374
12375 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
12376
12377         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
12378         a struct type.
12379
12380 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
12381
12382         * driver.c: Added --security option to activate the security manager.
12383         Right now this will allow code generation for declarative demands and
12384         is disabled when AOT is specified.
12385         * mini.c: Add code generation for declarative security demands.
12386         * mini.h: Add mono_use_security_manager as an extern gboolean.
12387
12388 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
12389
12390         * aot.c (mono_compile_assembly): Speed up compilation a bit by
12391         emitting more dense assembly code.
12392
12393         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
12394         exception throwing stuff.
12395
12396 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
12397
12398         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
12399         dead code.
12400
12401         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
12402         left in by mistake.
12403
12404         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
12405         fixed.
12406
12407         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
12408
12409         * tramp-*.c: Only patch vtable slots if the object is in the current
12410         domain. Fixes appdomain-unload.exe.
12411
12412         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
12413         
12414         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
12415         x86 branch.
12416
12417 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
12418
12419         * mini.c (reverse_branch_op): New helper function.
12420
12421         * mini.c (optimize_branches): Run the new optimization only on 
12422         platforms which support it. Also reverse all kinds of branches.
12423
12424         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
12425
12426         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
12427         a throw statement.
12428
12429         * mini.c (optimize_branches): Reverse not-equals branches if the false
12430         bblock is a throw. This happens a lot of time with argument checking in
12431         corlib.
12432
12433         * mini.c (mono_codegen): Add support for placing basic blocks after
12434         the function epilogue.
12435
12436         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
12437         function epilogue.
12438         
12439 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
12440
12441         * mini.c (setup_stat_profiler): Only set this up if the platform
12442         supports ITIMER_PROF.
12443
12444 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
12445
12446         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
12447         previous patch.
12448
12449         * inssel.brg: Fix a warning.
12450
12451 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
12452
12453         * mini.c: added support for statistical profiler 
12454         (run with: --profile=default:stat).
12455
12456 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
12457
12458         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
12459
12460         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
12461
12462         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
12463         related to global registers from the amd64 port.
12464
12465 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
12466
12467         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
12468
12469         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
12470         with global registers.
12471         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
12472
12473         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
12474
12475 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
12476
12477         * debug-mini.c (encode_value): Fix off-by-one.
12478
12479         * aot.c (encode_value): Likewise.
12480
12481         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
12482
12483 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
12484
12485         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
12486         AOT.
12487
12488         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
12489         
12490         * aot.c (emit_method_info): Increase size of temp buffer.
12491
12492         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
12493         the AOT case.
12494
12495 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
12496
12497         * aot.c (emit_method_info): Fix build.
12498         
12499         * aot.c: Further rework of the AOT file format to reduce the size of
12500         the method info data.
12501
12502         * mini.h: Bump AOT file format version.
12503
12504 2004-12-27  Martin Baulig  <martin@ximian.com>
12505
12506         * mini.c (mini_get_method): New static method; call
12507         mono_get_method_full() and mono_get_inflated_method().
12508         (mono_method_to_ir): Use mini_get_method() instead of
12509         mono_get_method_full(). 
12510
12511 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
12512
12513         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
12514
12515 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
12516
12517         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
12518
12519         * inssel-amd64.brg: Add some optimization rules.
12520
12521 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
12522
12523         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
12524         standard not GC'd stuff is fine.
12525
12526 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
12527
12528         * aot.c: Rework the AOT file format to get rid of most of the global
12529         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
12530
12531         * mini.h: Bump AOT file format version.
12532         
12533 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
12534
12535         * mini.h: Bump AOT file format version.
12536
12537         * aot.c (mono_aot_is_got_entry): New function to determine if an 
12538         address is inside a GOT.
12539
12540         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
12541
12542         * cpu-pentium.md: Increase the maximum size of some instructions which
12543         might involve a got access.
12544         
12545         * mini.c (get_method_from_ip): Another debug helper function.
12546
12547         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
12548         when got var accesses are created during the decompose phase.
12549
12550         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
12551
12552         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
12553         argument mini_compile_method and to MonoCompile, and use this to
12554         determine whenever a given method is compiled for AOT. This allows the
12555         other methods compiled during AOT compilation to be free of AOT stuff,
12556         so the backends does not need to add special support for them by
12557         creating a fake GOT etc.
12558
12559         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
12560         longer needed.
12561
12562 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
12563
12564         * mini.c (mono_method_to_ir): It turns out that some of the
12565         x-appdomain wrappers are lax with types, so just ignore this for
12566         all wrappers.
12567
12568         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
12569         at the vtable->klass. If it is non-shared code we can just use the
12570         vtable.
12571
12572 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
12573
12574         * mini-ppc.c: access MonoDomain from tls, too.
12575
12576 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
12577
12578         * declsec.c: Removed unused variable (and related warning ;-)
12579
12580 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
12581
12582         * iltests.il: New test for LDELEMA on an array of ref types.
12583
12584         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
12585         all ldelema's on reftypes.
12586         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
12587         it was the wrong place to put it.
12588
12589         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
12590         register to pop to make this cleaner, at the request of Paolo.
12591
12592 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
12593
12594         * mini-ops.h (OP_GETHASHCODE): New op.
12595
12596         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
12597
12598         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
12599         operation.
12600
12601         For a microbenchmark, this reduces the cost of Hashtable.get_Item
12602         by 25%.
12603         
12604         * mini-x86.c (mono_arch_output_basic_block): Rather than
12605
12606         add ebp, 4
12607
12608         Emit
12609
12610         pop edx
12611
12612         The first is 3 bytes while the second is 1. This saves 36 kb on
12613         mscorlib, quite a big saving. When bootstraping mcs, I was able to
12614         see a small boost because of icache locality.
12615
12616         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
12617
12618 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
12619
12620         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
12621         started code sharing with the generic code.
12622
12623 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
12624
12625         * mini-ppc.c, cpu-g4.md: added code for direct access to
12626         tls data slots.
12627
12628 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
12629
12630         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
12631          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
12632         to OP_TLS_GET.
12633
12634 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
12635
12636         * declsec.c|h: Added functions to cache the declarative stack modifiers
12637         in MonoJitInfo and to create a security frame from a MonoJitInfo 
12638         structure.
12639         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
12640         created. Register internal calls for System.Security.SecurityFrame::
12641         _GetSecurityFrame and _GetSecurityStack.
12642         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
12643         the definitions for the new stack walk/callback mechanism.
12644         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
12645         first security frame for LinkDemands and InheritanceDemands) and
12646         GetSecurityStack for Demands. Both use the new mono_walk_stack code
12647         from lupus.
12648         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
12649         walk initialization (lupus).
12650
12651 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
12652
12653         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
12654         idiom.
12655         (handle_loaded_temps): Do not create a temporary variable for
12656         things that we know are temps. They will never be modified.
12657         (mono_spill_call): Set MONO_INST_IS_TEMP
12658         (mono_emulate_opcode): ditto
12659         (emit_tree): ditto
12660         (mono_method_to_ir.CEE_DUP): ditto
12661
12662 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
12663
12664         * mini.c (type_to_eval_stack_type): Make this handle the void type
12665         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
12666         (emit_tree): use ip_in_bb to special case some common idioms
12667         Update all callers to pass in the IP.
12668         (mono_method_to_ir): Make CEE_CALL* do the above as well.
12669
12670         This gives us a nice 2% speedup in mcs bootstrap.
12671
12672         * mini-x86.c (peephole_pass): Peephole pass to make
12673         mov  [foo], eax
12674         push [foo]
12675
12676         into
12677
12678         mov [foo], eax
12679         push eax
12680
12681         * mini.c (ip_in_bb): new method.
12682         (mono_method_to_ir): use this method rather than doing the hash
12683         lookup ourselves.
12684
12685         * linear-scan.c (mono_linear_scan): When expiring actives, you
12686         don't need to keep around variables that expire on this
12687         instruction. This makes it so that:
12688              a = b + 1
12689         will turn into:
12690              store (ebx add (ebx, 1))
12691         which will become
12692              add ebx, 1
12693
12694 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
12695
12696         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
12697         combination to avoid doing two copies. Fix up problems with previous
12698         patch.
12699
12700         * mini.c: Fix 64 bit warnings.
12701
12702         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
12703
12704 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
12705
12706         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
12707         changes from the x86 code.
12708
12709         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
12710
12711 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
12712
12713         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
12714         throwing code to reduce its size, unify the AOT and non-aot code and 
12715         get rid of relocations in the AOT case.
12716
12717         * mini-x86.h mini.c exceptions-x86.c 
12718         (mono_arch_get_throw_corlib_exception): New arch specific function to 
12719         raise corlib exceptions which doesn't require relocations in the 
12720         caller.
12721
12722         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
12723
12724 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
12725
12726         * mini.c (mono_emit_method_call): Only allocate the got var when it is
12727         needed.
12728
12729         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
12730         in the AOT case.
12731
12732 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
12733
12734         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
12735         with add function when used from Inc/dec atomic 
12736         functions. Re-enabled optimization on x86.
12737         * mini-ops.h: renamed atomic_add functions to
12738         allow _add to match the Interlocked::Add and
12739         _add_next to match Interlocked::Inc/Dec.
12740
12741 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
12742
12743         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
12744         linking of BBs to the end BB, and enabled SSAPRE also with
12745         consprop and copyprop (which was prevented by that bug).
12746
12747 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
12748
12749         * mini-x86.c: disabling the Interlocked optimizing code. 
12750
12751 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
12752
12753         * aot.c (load_aot_module): Move reading of got_addr after the AOT
12754         file version check.
12755         
12756 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
12757
12758         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
12759         interlocked optimization due lack of support on x86, rewrote 
12760         exchange to take into account that base may be in eax.
12761         
12762         xsp works again; activated Interlocked optimizing code.
12763         
12764 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
12765
12766         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
12767
12768 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
12769
12770         * mini-ops.h: Add new opcodes.
12771
12772         * mini.h: Add new patch types. Add got_var to MonoCompile.
12773
12774         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
12775         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
12776         make it work with all kinds of patchable code.
12777
12778         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
12779         address of the GOT, and referencing entries in the GOT.
12780
12781         * mini.c: Add code to load the GOT address if needed by an opcode.
12782
12783         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
12784         independent AOT code on the x86 using an elf-style Global Offset Table.
12785
12786 2004-12-14  Raja R Harinath  <rharinath@novell.com>
12787
12788         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
12789
12790 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12791
12792         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
12793         when running xsp.
12794
12795 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
12796
12797         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
12798         of Interlocked:Increment/Decrement/Add as inline ops.
12799         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
12800
12801 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
12802
12803         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
12804         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
12805
12806 2004-12-12  Duncan Mak  <duncan@ximian.com>
12807
12808         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
12809         again. `patch_info->table_size' is no longer valid after Zoltan's
12810         commit #37636.
12811
12812 2004-12-12  Martin Baulig  <martin@ximian.com>
12813
12814         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
12815         if we are the "real" method, ie. not an inlined method inside it.
12816
12817 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
12818
12819         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
12820         before we look in the special fields table. This fixes
12821         ../tests/thread-static-init.cs.
12822
12823 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12824
12825         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
12826         for Array get_Rank and get_Length. Fixes bug #70465.
12827
12828 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
12829
12830         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
12831         separate structure to reduce the size of MonoJumpInfo.
12832
12833 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
12834
12835         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
12836
12837 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
12838
12839         * mini.c (mini_get_inst_for_method): Changed to allow ports
12840         to return a MonoInst instead of opcode 
12841         (renamed mini_get_opcode_for_method to better reflect the new functionality)
12842         
12843         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
12844         Allow ports to return a created MonoInst instead of op-code, will enable
12845         new optimizations.
12846         (renamed mini_get_opcode_for_method to better reflected the functionality)
12847
12848 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
12849
12850         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
12851
12852 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
12853
12854         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
12855         Fixes #69985.
12856
12857 2004-12-08  Martin Baulig  <martin@ximian.com>
12858
12859         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
12860         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
12861
12862 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
12863
12864         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
12865         correctly.
12866
12867         * exceptions.cs: Disable some tests which depend on properties of x86 fp
12868         arithmetic.
12869
12870 2004-12-08  Raja R Harinath  <rharinath@novell.com>
12871
12872         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
12873
12874 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
12875
12876         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
12877         bug introduced by the previous patch.
12878
12879 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
12880
12881         * mini-ppc.c, objectc.cs: handle large structs passed by value
12882         (fixes bug #69972).
12883
12884 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
12885
12886         * mini-ppc.c: OP_ARGLIST implementation from
12887         Geoff Norton  <gnorton@customerdna.com>.
12888
12889 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
12890
12891         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
12892         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
12893
12894 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
12895
12896         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
12897
12898 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
12899
12900         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
12901         support.
12902
12903 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
12904
12905         * mini-sparc.c: Zero out localled-ed memory.
12906
12907         * iltests.il: Add tests for zeroing out localloc-ed memory.
12908
12909 2004-12-04  Martin Baulig  <martin@ximian.com>
12910
12911         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
12912         mono_method_get_signature_full().       
12913
12914 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
12915
12916         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
12917         and some utility functions (always for SSAPRE), integrated SSAPRE.
12918         * mini.h: Likewise.
12919         * driver.c: Added ssapre option.
12920         * ssa.c: Small fix on OP_ARG handling.
12921         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
12922         * Makefile.am: Likewise.
12923
12924 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
12925
12926         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
12927         now in the xp code.
12928
12929         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
12930         icall.
12931
12932 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
12933
12934         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
12935         
12936         * cpu-s390.md : Increase instruction length of oparglist.
12937
12938         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
12939
12940 2004-11-30  Martin Baulig  <martin@ximian.com>
12941
12942         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
12943         virtual generic methods.  We call a special helper_compile_generic_method()
12944         icall to retrieve the method from the vtable, inflate and compile
12945         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
12946
12947         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
12948
12949 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
12950
12951         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
12952
12953 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
12954
12955         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
12956         Fixes #69929.
12957
12958 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
12959
12960         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
12961         platforms with PIC aot.
12962
12963 2004-11-28  Martin Baulig  <martin@ximian.com>
12964
12965         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
12966         Fixes gen-112.cs.
12967
12968 2004-11-28  Martin Baulig  <martin@ximian.com>
12969
12970         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
12971         the result of mono_type_get_underlying_type() to check whether
12972         we're byref.
12973
12974 2004-11-26  Martin Baulig  <martin@ximian.com>
12975
12976         * mini.c
12977         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
12978         in the g_assert().
12979
12980 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
12981
12982         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
12983         the same way as the other arguments so they won't get clobbered.
12984
12985         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
12986         calls through R11 since it is clobbered by the trampoline code.
12987
12988 2004-11-26  Raja R Harinath  <rharinath@novell.com>
12989
12990         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
12991         pick up in-tree mscorlib.dll.
12992
12993 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
12994
12995         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
12996
12997         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
12998         runtime data/code are now stored in a table similar to the GOT in ELF. 
12999         This allows the code itself to be position independent.
13000
13001         * aot.c: Fix loading of referenced assemblies after the lazy assembly
13002         loading changes.
13003
13004         * aot.c: Attach ELF type (object/function) directives to all global
13005         symbols.
13006
13007         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
13008
13009         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
13010
13011         * mini-amd64.h: Turn on PIC AOT code.
13012
13013         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
13014         returning the offset within an OP_AOTCONST instruction where the GOT
13015         offset needs to be added.
13016
13017         * mini.h: Bump AOT file format version.
13018
13019 2004-11-25  Martin Baulig  <martin@ximian.com>
13020
13021         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
13022         uninflated generic methods.
13023
13024 2004-11-25  Martin Baulig  <martin@ximian.com>
13025
13026         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
13027
13028 2004-11-24  Martin Baulig  <martin@ximian.com>
13029
13030         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
13031         original klass (this only applies for generic instances).
13032
13033 2004-11-24  Martin Baulig  <martin@ximian.com>
13034
13035         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
13036         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
13037         that array).
13038
13039 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
13040
13041         * mini.c (mono_method_to_ir): Disable inlining for methods containing
13042         localloc. Fixes #69678.
13043
13044         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
13045         
13046 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
13047
13048         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
13049         used SSE registers on pinvoke calls. Fixes #69774.
13050
13051 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
13052
13053         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
13054         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
13055
13056 2004-11-23  Raja R Harinath  <rharinath@novell.com>
13057
13058         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
13059         Refer directly to the mcs/ tree.
13060
13061 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13062
13063         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
13064         Check if a trampoline for a synchronized method is required. 
13065
13066 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
13067
13068         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
13069         with localloc if needed. Throe arithmetric exception in
13070         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
13071         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
13072
13073 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
13074
13075         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
13076         types before switching on type.  Fixes #69622.
13077
13078 2004-11-19  Raja R Harinath  <rharinath@novell.com>
13079
13080         * Makefile.am (check-local): New.  Integrate into 'make check'.
13081         (MCS,RUNTIME): Define using in-tree mono and mcs.
13082         (ILASM): New.
13083         (%.exe): Use $(ILASM).
13084
13085 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
13086
13087         * mini-ppc.c: adjust initial prolog size (bug #69691).
13088
13089 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
13090
13091         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
13092         #69664.
13093
13094 2004-11-17  Raja R Harinath  <rharinath@novell.com>
13095
13096         * Makefile.am (clean-local): Rename from 'clean'.
13097
13098 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13099
13100         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
13101         to mono_arch_is_int_overflow. 
13102         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
13103         SIGFPE events.
13104
13105 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
13106
13107         * declsec.c|h: New files to support declarative security attributes.
13108         Added function to check if a method has (applicable) security.
13109         * mini.c|h: Add check for declarative security attributes in
13110         mono_method_check_inlining.
13111         * Makefile.am: Added declsec.c and declsec.h to the build.
13112
13113 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
13114
13115         * mini.c, mini.h: update to keep dynamic code info per-domain.
13116
13117 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
13118
13119         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
13120         (mini_init): Get rid of it from here too.
13121
13122 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
13123
13124         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
13125         implemented OP_RETHROW (patch by Geoff Norton
13126         <gnorton@customerdna.com>).
13127
13128 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
13129
13130         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
13131         between appdomains.  Fixes appdomain-unload on PPC.
13132
13133 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
13134
13135         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13136         mini-exceptions.c: handle the new wrapper types.
13137         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
13138         token value as a MonoClass* when compiling a wrapper.
13139         mono_jit_create_remoting_trampoline now takes an additional
13140         MonoRemotingTarget parameter.
13141         
13142 2004-11-10  Martin Baulig  <martin@localhost>
13143
13144         * mini.c (mono_method_to_ir): Use `generic_container->context'
13145         rather than creating a new one.
13146
13147 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13148
13149         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
13150
13151         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
13152
13153 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
13154
13155         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
13156         the experimental aot cache stuff.
13157
13158 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
13159
13160         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13161         mini-exceptions.c: update to exception clause structure changes.
13162
13163 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13164
13165         * exceptions-x86.c (throw_exception): Fix warnings.
13166
13167         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
13168         for OP_RETHROW.
13169
13170 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
13171
13172         * exceptions-sparc.c (get_throw_exception): Really fix this.
13173
13174 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
13175
13176         * tramp-*.c: we no longer support icalls without wrappers, so
13177         a bit of code can be removed here
13178
13179 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
13180
13181         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
13182         patch.
13183
13184         * cpu-sparc.md: Add op_rethrow.
13185
13186         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
13187
13188         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
13189
13190         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
13191         * mini-ops.h: Add OP_RETHROW.
13192
13193         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
13194
13195         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
13196
13197 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
13198         
13199         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
13200         Makes the output much easier to read
13201
13202 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
13203
13204         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
13205         prevents another huge leak when compiling with ssa. Secondly, the
13206         performance of doing this rather than freeing the lists is much
13207         better. GList does a lock every time you allocate a list link,
13208         so that it can use a memory pool. So, it is better to just use
13209         a memory pool of our own.
13210         
13211         * ssa.c, linear-scan.c: replace g_list_remove_link with
13212         g_list_delete.  The remove one does not free the GList, so we were
13213         leaking memory. On -O=all --compile-all with corlib, this cut down
13214         3 MB of allocations.
13215
13216 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
13217
13218         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
13219
13220         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
13221
13222         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
13223         into a new function mono_create_jit_trampoline ().
13224
13225 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
13226
13227         * trace.c (get_spec): Allow tracing of classes without a namespace.
13228
13229 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
13230
13231         * mini.c: Fix pointer overwrite in mini_method_compile.
13232
13233 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
13234
13235         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
13236         The darwin ABI needs some special handling for 1 and 2 byte structs
13237         Lets use lbz/lhz instead of lwz everywhere.
13238         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
13239         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
13240         Use stb/sth for the former, and put the latter always on stack instead of in
13241         argument registers.
13242
13243 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
13244
13245         * trace.c (is_filenamechar): Add '_'.
13246
13247 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
13248
13249         * mini-s390.c: Fix prolog length to allow for large trace requirements.
13250
13251         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
13252
13253 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
13254
13255         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
13256         depends on libmonogc. Fixes #68805.
13257
13258 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
13259
13260         * mini.c (mono_jit_free_method): Provide extra information for
13261         this error.  Currently this leaks, but will be turned into a
13262         developer option in the future.
13263
13264 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
13265
13266         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
13267
13268 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
13269
13270         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
13271         boundary. Fixes reading of PATCH_INFO_R4 and R8.
13272         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
13273
13274 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
13275
13276         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
13277         trampolines for AOT code.
13278
13279 2004-10-22    <vargaz@freemail.hu>
13280
13281         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
13282         constructed types. Fixes #68136.
13283
13284 2004-10-21  Martin Baulig  <martin@ximian.com>
13285
13286         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
13287         if it returns true, unwind the stack to the call instruction.
13288
13289 2004-10-21    <vargaz@freemail.hu>
13290
13291         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
13292
13293         * mini.h: Bump AOT version number.
13294
13295         * objects.cs: Add another test for unbox trampolines.
13296
13297         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
13298         valuetype methods.
13299
13300 2004-10-20    <vargaz@freemail.hu>
13301
13302         * driver.c: Add SHARED to the set of optimizations tested.
13303
13304         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
13305
13306         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
13307         used by CEE_NEWARR.
13308
13309         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
13310
13311 2004-10-20  Martin Baulig  <martin@ximian.com>
13312
13313         * mini-exceptions.c (mono_handle_exception): Call
13314         mono_debugger_handle_exception() to tell the debugger about
13315         catch/finally clauses.
13316
13317 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
13318
13319         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
13320
13321         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
13322         #68447.
13323
13324 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
13325
13326         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
13327         methods as their native size, fixed bug #57543, #57545.
13328         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
13329         This saves a temporary register and mullw call down into 1 (minor perf
13330         increase for cases like sum = sum * 5;  This use to translate into:
13331             li r11,5
13332             mullw r28,r28,r11
13333         It now translates to
13334             mulli r28,r28,5
13335
13336 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
13337
13338         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
13339         #68388.
13340
13341 2004-10-11  Martin Baulig  <martin@ximian.com>
13342
13343         * mini.c (mono_method_to_ir): If we're a generic method, get the
13344         MonoGenericContainer from our MonoMethodNormal and create a
13345         MonoGenericContext from it.
13346
13347 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
13348
13349         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
13350
13351         * basic-long.cs: Add test for checked i8->i2 cast.
13352
13353 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
13354
13355         * inssel-ppc.brg: added a couple of speedup rules.
13356
13357 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
13358
13359         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
13360         to speed up rebuilds.
13361
13362 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13363
13364         * mini-s390.c: Minor fix to OP_OR_IMM.
13365
13366 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
13367
13368         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
13369         better. Fixes appdomain-unload.exe on sparc.
13370
13371 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
13372
13373         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
13374         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
13375         see bug 67324.
13376
13377 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
13378
13379         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
13380
13381 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
13382
13383         * mini.c: Always generate a field read/write wrapper for members
13384         of the class MarshalByRefObject since the actual instance could
13385         be a CBO.
13386
13387 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
13388
13389         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
13390
13391 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
13392
13393         * driver.c mini.h trace.c: Move the setting of the main assembly into
13394         a separate function called mono_trace_set_assembly () and call it after
13395         actually loading the main assembly. Fixes #66872.
13396
13397 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
13398
13399         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
13400         using the code manager.
13401
13402 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
13403
13404         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
13405
13406 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
13407
13408         * cpu-amd64.md: Fix bug in previous patch.
13409         
13410         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
13411         #66650.
13412
13413 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
13414
13415         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13416         mini-exceptions.c: updates for changed stack walk interface.
13417
13418 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13419
13420         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
13421
13422 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
13423
13424         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
13425
13426 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
13427
13428         * driver.c (mini_regression_list): Do not call mono_assembly_close 
13429         since assemblies can't be unloaded.
13430         
13431 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
13432
13433         * cpu-amd64.md: Fix more instruction lengths.
13434
13435         * cpu-amd64.md: Fix lengths of some instructions.
13436
13437 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
13438
13439         * inssel.brg: Make the array ldelema check aot friendly.
13440
13441 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
13442
13443         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
13444
13445         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
13446
13447 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
13448
13449         * mini-x86.c: Fix build.
13450
13451         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
13452         mono_type_get_underlying_type () helper function to simplify code.
13453         
13454 2004-09-09  Martin Baulig  <martin@ximian.com>
13455
13456         * mini-amd64.c: Don't access `type->data.klass' directly, call
13457         mono_class_from_mono_type() instead since the type may be a
13458         generic instance.
13459
13460 2004-09-09  Martin Baulig  <martin@ximian.com>
13461
13462         * mini-amd64.c (get_call_info): Fix support for generic instances.
13463         (add_valuetype): Use mono_class_from_mono_type() to get the class
13464         since we can be a generic instance.
13465
13466 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
13467
13468         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
13469
13470 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
13471
13472         * liveness.c: reset spill costs on each scan: bug 62107
13473
13474 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
13475
13476         * exceptions-sparc.c (mono_arch_find_jit_info): remove
13477         unnecessary line that doesn't compile
13478
13479 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
13480
13481         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
13482         trampolines, make them call an error function so people can fix their
13483         code.
13484
13485 2004-09-06  Martin Baulig  <martin@ximian.com>
13486
13487         * mini.c (mono_method_to_ir): When initializing locals, handle a
13488         generic instances like a valuetype if it's a valuetype and like a
13489         class if it's a class.
13490
13491 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
13492
13493         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
13494         stack. Fixes #64674.
13495
13496         * exceptions.cs: Add test for unwinding of call arguments.
13497
13498 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
13499
13500         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
13501         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
13502         set the carry/borrow flag). The sparc and s390 implementations
13503         can now use optimized versions (and simplify the code). ppc bugfixes.
13504
13505 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
13506
13507         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
13508
13509 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
13510
13511         * inssel-amd64.brg: Remove leftover 32 bit rule.
13512
13513         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
13514
13515 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
13516
13517         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
13518         mono_arch_find_jit_info functions into a new function. Fix a memory
13519         leak.
13520
13521         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
13522         refactored code.
13523         
13524 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
13525
13526         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
13527         as well.
13528         
13529         * exceptions.cs: Add array size tests.
13530
13531         * mini.c: Allocate a separate icall wrapper for each arity of 
13532         mono_array_new_va. Fixes #59509.
13533
13534         * exceptions.cs: Add testcase for 64578.
13535
13536         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
13537
13538         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
13539         
13540 2004-09-02  Martin Baulig  <martin@ximian.com>
13541
13542         * mini.c (mono_method_to_ir): When initializing the locals, call
13543         handle_initobj() on the generic instance itself, not its
13544         underlying type.
13545
13546 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
13547
13548         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
13549         MonoJitInfo for dynamic methods.
13550
13551         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
13552
13553         * mini.c: Add support for freeing JIT data for dynamic methods.
13554         
13555 2004-09-01  Martin Baulig  <martin@ximian.com>
13556
13557         * mini-x86.c (is_regsize_var): Added support for generic
13558         instances.
13559         (mono_arch_emit_prolog): Make this compile again, use
13560         `x86_push_imm_template (code)'.
13561
13562 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
13563
13564         * mini-x86.c: make all push_imm instructions that get
13565         patched always emit the long form
13566
13567 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
13568
13569         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
13570         in a per-domain hash.
13571
13572         * mini-amd64.c (merge_argument_class_from_type): Handle generic
13573         types.
13574
13575 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
13576
13577         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
13578         work.
13579         
13580         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
13581         work.
13582
13583         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
13584         Beginnings of SSE2 support.
13585
13586         * exceptions.cs: Add more tests for checked int<->uint casts.
13587
13588 2004-08-28  Martin Baulig  <martin@ximian.com>
13589
13590         * mini-x86.c (mono_arch_instrument_epilog): Added support for
13591         generic instances.
13592
13593         * mini.c
13594         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
13595         Handle generic instances recursively.
13596
13597 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
13598
13599         * iltests.il: test for conv.u8 on a constant
13600
13601 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
13602
13603         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
13604         LCONV_x4 (shrun_32 (membase)).
13605
13606 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
13607
13608         * inssel-x86.brg: c&p rules for push/setret of long
13609
13610 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
13611
13612         * inssel-x86.brg: c&p rules for compare (base, regvar) and
13613         compare (regvar, base)
13614
13615         * inssel-x86.brg: more burg love
13616
13617         * inssel.brg: more cleanup
13618
13619         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
13620
13621 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
13622
13623         * basic-long.cs, basic-calls.cs: new tests for optimization.
13624
13625 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
13626
13627         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
13628         patch.
13629
13630 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
13631
13632         * mini-amd64.c (read_tls_offset_from_method): Add another case.
13633         
13634 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
13635
13636         * inssel.brg (mini_emit_memcpy): use 
13637         NO_UNALIGNED_ACCESS to disable memcpy optimization
13638
13639 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
13640
13641         * mini-amd64.c: Handle generic types in various places.
13642
13643         * mini.c (mono_method_to_ir): Handle generic types in init locals.
13644
13645 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
13646
13647         * mini.c (handle_box): Fix warning.
13648
13649         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
13650
13651         * mini-amd64.h: Enable the emit_state optimization.
13652
13653         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
13654
13655         * mini-amd64.c: Add some new 64 bit peephole opts.
13656
13657         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
13658
13659         * cpu-amd64.md: sreg1 of div instructions must be %rax.
13660
13661         * mini-amd64.c: Register allocator fixes.
13662
13663         * mini.c: Add an optimization to emit_state to avoid allocation of new
13664         registers on some platforms.
13665
13666 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
13667
13668         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
13669
13670         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
13671         allocation. Fixes #63085.
13672
13673         * basic-long.cs: Add new regression test.
13674
13675         * mini-amd64.c: Register allocator improvements.
13676
13677 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
13678
13679         * mini-amd64.c (read_tls_offset_from_method): Add another code
13680         sequence.
13681
13682         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
13683         instruction sequence for nullifying class init trampolines.
13684
13685         * objects.cs: Add new regalloc test.
13686
13687         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
13688
13689 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
13690
13691         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
13692         
13693         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
13694         arguments.
13695
13696         * driver.c: Fix profiling after TLS changes.
13697         
13698         * driver.c (mono_main): Set mono_stats.enabled if needed.
13699
13700         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
13701         CEE_BOX.
13702
13703 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
13704
13705         * mini-x86.c: use a 1 op rather than a 2 op tls access
13706         instruction -> faster.
13707
13708 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
13709
13710         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
13711         x86 backend.
13712
13713 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
13714
13715         * exceptions-sparc.c (throw_exception): fix typo
13716
13717 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
13718
13719         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
13720         set tree->dreg correctly with tls. Allow any
13721         register to be used.
13722
13723         * mini-x86.c (read_tls_offset_from_method): add new code
13724         generation pattern seen with GCC.
13725
13726
13727 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
13728
13729         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
13730         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
13731         exceptions-sparc.c: fix some performance issues in exception
13732         handling and setting of the stack trace for exceptions that were
13733         already thrown.
13734
13735 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
13736
13737         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
13738         x86 backend.
13739         
13740         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
13741         registers.
13742
13743 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
13744
13745         This patch inlines tls access, when possible.
13746         
13747         * mini.h: new arch functions for TLS intrinsics.
13748         All platforms updated with a stub.
13749
13750         * mini.c: use the new intrinsics
13751
13752         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
13753         arch specific intrinsic for tls variables
13754
13755 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
13756
13757         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
13758         under windows.
13759
13760 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
13761
13762         * mini.c: thread local allocation
13763
13764 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
13765
13766         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
13767
13768         * Makefile.am: Link against the static version of libmonogc.
13769         
13770         * Makefile.am: Link the static versions of the convenience libraries
13771         into the mono executable.
13772
13773         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
13774
13775 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
13776
13777         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
13778         on integer overflow.
13779
13780         * mini-amd64.c: Reorganize function call code.
13781
13782         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
13783
13784 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
13785
13786         * inssel-x86.brg: use xor eax,eax.
13787         
13788         * basic.cs: new tests
13789
13790 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
13791
13792         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
13793         in exception throwing code.
13794         
13795 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
13796
13797         * inssel-x86.brg: use xor esi,esi.
13798
13799 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
13800
13801         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
13802         can trace methods compiled during mini_init () too.
13803
13804         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
13805         CEE_CONV_U4.
13806
13807 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
13808
13809         * Makefile.am: static link on x86 (r=zoltan)
13810
13811 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
13812
13813         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
13814         code since it causes some programs to fail.
13815
13816 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
13817
13818         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
13819
13820 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
13821
13822         * mini.c: ovfops_op_map - add STACK_OBJ case for
13823         CONV_I 
13824         * basic.cs: add test_0_pin_string as test
13825         case for above.
13826
13827 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
13828
13829         * Makefile.am: build C# if srcdir != builddir
13830
13831 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
13832
13833         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
13834         fall-through blocks.
13835
13836 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
13837
13838         * driver.c: enable loop by default again and include abcrem in -O=all.
13839
13840 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
13841
13842         * iltests.il: Add some localloc tests.
13843
13844         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
13845
13846         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
13847         Fixes #62574.
13848
13849         * inssel-amd64.brg: Add some optimizations.
13850
13851         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
13852         for gcc-3.4.
13853
13854         * Makefile.am: Statically link mono against libmono on AMD64.
13855         
13856         * mini-amd64.c inssel-amd64.brg: Optimizations.
13857
13858 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
13859
13860         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
13861
13862         * tramp-amd64.c: Patch calling code in trampolines.
13863
13864 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
13865
13866         * mini-amd64.c: pinvoke struct passing fixes.
13867
13868 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
13869
13870         * mini-sparc.c: redo change, make mono_arch_cpu_init call
13871         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
13872
13873 2004-08-05  Duncan Mak  <duncan@ximian.com>
13874
13875         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
13876         CEE_LDELEM_ANY.
13877
13878 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
13879
13880         * mini-amd64.c (emit_move_return_value): Move return value for normal
13881         calls too.
13882
13883 2004-08-05  Martin Baulig  <martin@ximian.com>
13884
13885         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
13886         `type->type'; just modify `type' itself when dealing with enums
13887         and generic instances.
13888         (check_call_signature): Make `simple_type' a `MonoType *'.
13889
13890 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
13891
13892         * mini.c: Use OP_PADD to add offsets to addresses.
13893
13894         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
13895
13896 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
13897
13898         * mini-sparc.c (mono_arch_emit_epilog): fix check
13899         for folding last op into restore instruction
13900
13901 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
13902
13903         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
13904         helper methods using the code manager.
13905         
13906         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
13907
13908         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
13909
13910 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13911         
13912         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
13913           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
13914
13915         * mini-s390.c: fix tail processing
13916
13917 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
13918
13919         * mini-ppc.c: mul.ovf.un exception name fix.
13920
13921 2004-08-03  Martin Baulig  <martin@ximian.com>
13922
13923         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
13924         instances; before jumping to `handle_enum', also modify `ptype'.
13925
13926 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
13927
13928         * cpu-sparc.md: fcall maximal length too small.
13929
13930 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
13931
13932         * mini-amd64.c mini.h: Add initial support for passing/returning 
13933         structures to/from pinvoked methods.
13934
13935 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
13936
13937         * mini-ppc.c: reg allocator fix.
13938
13939 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
13940
13941         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
13942
13943         * inssel.brg: Optimize memset on 64 bit machines.
13944
13945         * mini-amd64.c: Fix some vararg cases.
13946
13947 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
13948
13949         * mini-s390.c: Corrected macro in emit_float_to_int
13950
13951         * s390-abi.cs: Tests to exercise the s390 ABI
13952
13953 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
13954
13955         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
13956         caller saved regs.
13957
13958         * basic.cs: Add a test for add.ovf.un.
13959
13960 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
13961
13962         * mini-sparc.c: add case for OP_IDIV_UN
13963
13964 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
13965
13966         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
13967         
13968         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
13969
13970 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
13971
13972         * basic.cs: regression tests.
13973
13974         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
13975         regressions.
13976
13977 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
13978
13979         * basic.cs: Add a new test.
13980
13981         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
13982         and AOT. Various fixes and optimizations.
13983
13984         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
13985
13986 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
13987
13988         * mini-ppc.c: make sure temp regs are not used for global reg
13989         allocation.
13990
13991 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
13992
13993         * cpu-sparc.md: conv_i8 fix for 64bits
13994
13995         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
13996
13997 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
13998         
13999         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
14000         add opcode for cmp BYTE PTR [eax], imm.
14001
14002         * inssel.brg: Make memcpy and memset takes bases.
14003
14004 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14005
14006         * *-amd64.*: More AMD64 work.
14007         
14008 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14009
14010         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
14011         add a compare-not-equal opcode.
14012         
14013 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
14014
14015         * mini.c: Use mono_init_from_assembly instead of mono_init.
14016         
14017 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
14018
14019         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
14020
14021         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
14022
14023         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
14024
14025         * inssel.brg: 64 bit fixes.
14026
14027         * mini.h (MonoCallInst): Add some AMD64 specific data.
14028
14029         * mini.h: Add some OP_P opcodes.
14030
14031 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
14032
14033         * basic.cs: tests for 61797 and 61740
14034
14035 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
14036
14037         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
14038         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
14039
14040 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
14041
14042         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
14043
14044         * *-amd64*.*: Ongoing AMD64 work.
14045
14046 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
14047
14048         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
14049
14050         * *-amd64*: Ongoing AMD64 work.
14051
14052         * mini-arch.h: Add AMD64 support.
14053
14054         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
14055
14056         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
14057
14058         * mini-ops.h: Add new opcodes.
14059
14060         * Makefile.am: Add AMD64 support.
14061
14062         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
14063         rules into the inssel-long*.brg files.
14064
14065         * *-amd64.*: Add beginnings of AMD64 backend.
14066
14067 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
14068
14069         * mini.c (print_dfn): commenting out the code that prints
14070         the cil. With -O=deadce, this makes -v -v crash.
14071         
14072         * cpu-pentium.md: make checkthis have a length of 2
14073
14074 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
14075
14076         * mini-sparc.h: fix implementations of __builtin
14077         functions for Sun compiler for V9.
14078
14079 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
14080
14081         * mini.c: use the new stelem.ref wrapper
14082         * exceptions.cs, arrays.cs: new stelem.ref tests
14083
14084 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14085
14086         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
14087         new XSP should work with these changes).
14088
14089 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
14090         
14091         * inssel-{long32,x86,}.brg: trivial optimizations.
14092         
14093 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
14094
14095         * mini.c: load value when emitting box operation in
14096         constrained calls.
14097
14098 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
14099
14100         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
14101         is one byte shorter than cmp DWORD PTR [eax], 0.
14102
14103 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
14104
14105         * inssel-ppc.brg: arguments on the stack are always
14106         relative to the stack pointer (spotted by Neale Ferguson).
14107
14108 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14109
14110         * exceptions-x86.c: delay appending the method name to the trace until
14111         after mono_jit_info_table_find is called, as this gets the real
14112         MonoMethod.
14113
14114 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
14115
14116         * aot.c: register roots
14117
14118 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14119
14120         * aot.c : I could just use PLATFORM_WIN32 flag.
14121
14122 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14123
14124         * aot.c : Reverting the previous fix. This time it broke linux build.
14125
14126 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
14127
14128         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
14129
14130 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
14131
14132         * mini.c (handle_stack_args): Remove some more debugging code.
14133         
14134         * mini.c (handle_stack_args): Remove debug output left in by mistake.
14135
14136         * driver.c mini.h aot.c: Allow additional options to be specified with
14137         --aot and pass them to mono_compile_assembly.
14138
14139         * aot.c: Add experimental code to AOT compile all loaded assemblies
14140         on demand and save the code into a cache in the filesystem.
14141
14142         * aot.c: Add support for more wrapper methods.
14143         
14144         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
14145         58863.
14146
14147         * cpu-*.md: Remove removed opcodes.
14148
14149         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
14150         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
14151         related icalls to marshal.c.
14152
14153 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
14154
14155         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
14156
14157         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
14158
14159         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
14160
14161 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
14162         * liveness.c: If liveness is recomputated we need to reset the information
14163         for each variable. This way, if the liveness range has been narrowed
14164         by optimizations that happened after the last computation, we can return
14165         a smaller range.
14166         
14167         For example, if you have
14168         
14169         {
14170                 int i = 0;
14171                 
14172                 // Tons of code that does not affect i
14173                 
14174                 i = foo ();
14175                 ...
14176         }
14177         
14178         i = 0 is dead code and will be removed by SSA. However, when
14179         linear scan gets to the code, i will still appear to be live
14180         throughout the entire block. This prevents good register allocation.
14181
14182 2004-07-06  Martin Baulig  <martin@ximian.com>
14183
14184         * debug-mini.c (mono_debug_init_method): Allow
14185         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
14186         (mono_debug_add_icall_wrapper): New method.
14187
14188         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
14189
14190 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
14191
14192         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
14193         optimization.
14194
14195 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
14196
14197         * aot.c (mono_aot_load_method): Fix loading of debug info.
14198
14199 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14200
14201         * aot.c: Add logging support.
14202
14203 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14204
14205         * mini.h: Add prototype for mono_print_method_from_ip.
14206
14207         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
14208
14209         * inssel.brg: 64 bit fixes.
14210
14211         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
14212         inssel-long32.brg.
14213
14214         * Makefile.am: Add SPARC64 support.
14215
14216 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
14217
14218         * aot.c: Fix alignment problems on 32 bit platforms.
14219
14220 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
14221
14222         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
14223         SPARC64.
14224
14225         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
14226         problems.
14227
14228         * mini.h: Bump AOT file version. Some 64 bit fixes.
14229
14230 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14231
14232         * inssel-sparc.brg: Add new rule to avoid register moves.
14233
14234         * inssel.brg: Add ldind_to_load_membase helper function.
14235
14236 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
14237
14238         * mini.c: OffsetToStringData intrinsic.
14239         
14240 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
14241
14242         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
14243
14244         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
14245         regression tests.
14246
14247         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
14248 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
14249
14250         * mini.c: reinstated mono_compile_get_interface_var()
14251         on x86, too, since the change breaks the Gtk# build there as well.
14252
14253 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14254
14255         * driver.c: remove loop from the default optimizations: it seems to
14256         interact badly with some of the other options (see bug #60613).
14257
14258 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
14259
14260         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
14261         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
14262
14263 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
14264
14265         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
14266         vararg-using methods.
14267
14268 2004-06-21  Martin Baulig  <martin@ximian.com>
14269
14270         * mini/mini-exceptions.c
14271         (mono_handle_exception): Added `gpointer original_ip' argument.
14272         After calling mono_unhandled_exception(), call
14273         mono_debugger_unhandled_exception() and if that returns true,
14274         restore the context and return.
14275
14276 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
14277
14278         * mini-ppc.c: prefer the use of relative branches so
14279         they won't need to be patched in aot code (patch from Patrick Beard).
14280
14281 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
14282
14283         * aot.c: patch from Patrick Beard to make the output assembly
14284         more correct for the MacOSX assembler. Small tweak to
14285         generate sane images on Linux/PPC, too.
14286
14287 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14288
14289         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
14290         case until bug #59509 is fixed (shows up in #60332).
14291
14292 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14293
14294         * mini.c: make sure the needed wrappers are compiled, too, with
14295         precomp.
14296
14297 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
14298
14299         * driver.c: remove NPTL reference in --version output.
14300
14301 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14302
14303         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
14304         generate valid assembly for the Mach-O assembler.
14305
14306 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
14307
14308         * driver.c: don't include abcrem in the all optimization specifier
14309         since it slows down jit compilation too much for now.
14310
14311 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
14312
14313         * mini.c: use BIGMUL only if both operands have the same signage.
14314         * iltests.il: Test for bug 60056. (errors related to signage in
14315         BIGMUL).
14316
14317         r=lupus.
14318
14319 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
14320
14321         * mini.c, aot.c: memory leak fixes.
14322
14323 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
14324
14325         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
14326
14327 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
14328
14329         * Makefile.am: remove the -static hack completely, it links in
14330         statically glib as well.
14331
14332 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
14333
14334         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
14335         * exceptions.cs: make it compile with new mcs/csc.
14336
14337 2004-06-03 Massimiliano Mantione <massi@ximian.com>
14338         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
14339         and added relevant test case.
14340
14341 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
14342
14343         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
14344         regressions in gtk-sharp.
14345
14346 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
14347
14348         * exceptions.cs: New regression tests.
14349
14350         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
14351
14352 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
14353
14354         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
14355
14356 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
14357
14358         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
14359
14360         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
14361
14362 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
14363
14364         * mini.c (mono_jit_runtime_invoke): Init class in this
14365         method instead of trusting mono_jit_compile_method to
14366         do the work (because wrappers can be in object class)
14367
14368 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
14369
14370         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
14371
14372         * basic-long.cs: New regression test.
14373
14374 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
14375
14376         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
14377         and div/rem checks.
14378
14379 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
14380
14381         * Makefile.am: fix miguel's change to build mono statically against
14382         libmono (track build dependencies).
14383
14384 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
14385
14386         * cfold.c: Some glib versions do not have G_MININT32.
14387
14388 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
14389
14390         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
14391         with precision of tan, atan, sin and cos, and implemented related
14392         regressions tests (fixes bug 54467, but one new problem appeared and
14393         is not fixed yet).
14394
14395 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
14396
14397         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
14398
14399         * exceptions.cs: Add test for constant folding && division by zero.
14400
14401         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
14402         since driver.c is in libmono too, so the optimization was useless.
14403
14404         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
14405         variable to driver.c so the compiler can emit more efficient code to
14406         access them.
14407
14408 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14409
14410         * Makefile.am: don't distribute generated inssel.[ch] files.
14411
14412 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
14413
14414         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
14415         into the default appdomain. Fixes #58707.
14416
14417         * jit-icalls.c: Remove the broken approximation for truncl, doing
14418         no conversion is better.
14419
14420         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
14421         Fixes #58863.
14422
14423 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
14424
14425         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
14426         of the mcrxr instruction which is not available on some processors
14427         even if it's documented to be. Implement add and sub overflow correctly
14428         (still not complete for long unsigned). Speed up icalls a bit.
14429
14430 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
14431
14432         * mini.c (mono_jit_compile_method_with_opt): Make sure that
14433         we run .cctor in the current domain instead of target_domain.
14434         
14435         Fixes bug #58558, .cctor not being called in -O=shared.
14436
14437 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
14438
14439         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
14440
14441 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
14442
14443         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
14444         which can be done with an imm8, do it that way.
14445         (mono_arch_output_basic_block): ditto for a jmp
14446         (mono_arch_emit_prolog): Computate maximum offset of a label.
14447
14448 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
14449
14450         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
14451         now tries to allocate prefered physical reg's for virtual
14452         regs. This reduces the number of emited spills/loads with
14453         20-30% on our core assemblies.
14454
14455 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14456
14457         * jit-icalls.c: truncl() is not needed and trunc() is
14458         the correct thing to do anyway (bug #58287).
14459
14460 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
14461
14462         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
14463         if available.
14464
14465 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
14466
14467         * driver.c: enable loop optimizations by default.
14468
14469 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
14470
14471         * mini-x86.c: fix calc of max loop size when aligning loops start.
14472
14473 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
14474
14475         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
14476         the stack.
14477
14478 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
14479
14480         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
14481         should set carry.
14482
14483         * basic-long.cs: Add tests for add/subtract of immediates with carry.
14484
14485         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
14486         
14487         * mini.c (inline_method): Allways inline some wrappers even if the cost
14488         is too large. Fixes #58785.
14489
14490         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
14491         
14492 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
14493
14494         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
14495         (crichton@gimp.org). Beginning of support for sparc/linux.
14496
14497         * mini-sparc.c: Optimize retrieval of LMF address.
14498
14499 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
14500
14501         * exceptions-ppc.c:  handle alloca in methods with clauses.
14502
14503 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
14504
14505         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
14506
14507 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
14508
14509         * mini.c: Delegate most of the abort signal work to 
14510           mono_thread_request_interruption, which also handles Stop and Suspend
14511           states.
14512
14513 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
14514
14515         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
14516         supports the save/restore lmf opcodes.
14517
14518 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
14519
14520         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
14521         by gcc-3.4 as well.
14522
14523         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
14524
14525 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
14526
14527         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
14528         methods which contain array accesses.
14529
14530         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
14531         boundaries. Fixes #58537.
14532
14533         * iltests.il: Add regression test for #58537.
14534
14535 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
14536
14537         * mini-x86.c (mono_arch_local_regalloc): Last part of
14538         fix for bug #58633 (releasing register to early).
14539
14540 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
14541
14542         * basic-long.cs: Add new regression test.
14543
14544 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
14545
14546         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
14547         register too early on the chain.
14548
14549 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
14550
14551         * mini.c (create_helper_signature): Use a helper function to reduce
14552         the code which needs to be written. Also set the calling convention of
14553         icalls on windows. Fixes #57840.
14554
14555 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
14556
14557         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
14558         exceptions-ppc.c: added helper function to get the instruction address
14559         from a signal handler context.
14560
14561 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14562
14563         * helpers.c: use g_get_tmp_dir. Invokes happyness 
14564         from gonzalo.
14565
14566 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14567
14568         * helpers.c: Add new env variable to pass args to objdump.
14569         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
14570
14571 2004-05-17  Radek Doulik  <rodo@ximian.com>
14572
14573         * Makefile.am (common_sources): added abcremoval.h so it get
14574         disted and daily mono packages on go-mono.com will build again
14575
14576 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
14577
14578         * abcremoval.c: Fixed coding style, added copyright header.
14579
14580         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
14581
14582         * mini.h: Added prototype for abc removal main function.
14583
14584         * build_relations_propagation_table.pl: Added copyright header.
14585
14586 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
14587
14588         * basic-long.cs: reg test for complex ceq_long bug.
14589
14590 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
14591
14592         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
14593         reg in long and clob case (bug #58343). Fixed/added comments.
14594
14595 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
14596
14597         * mini.c (mono_jit_runtime_invoke): Follow new convention
14598         of calling the invoke method with an function pointer.
14599
14600 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
14601
14602         * ChangeLog: Fix author of memory leak patch.
14603
14604 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
14605
14606         * Makefile.am: fix make dist as well...
14607
14608
14609 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
14610
14611         * cfold.c: Made so that conversions from pointer to int4 are no-ops
14612         on archs where pointers are 4 bytes long.
14613
14614         * Makefile.am: Added abcremoval.c source file.
14615
14616         * abcremoval.c: Added abcremoval.c.
14617
14618         * abcremoval.h: Added abcremoval.h.
14619
14620         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
14621
14622         * inssel.brg: Enabled bounds check removal.
14623
14624         * mini.c: Added support for abcrem optimization.
14625
14626         * mini.h: Added abcrem optimization label.
14627
14628         * driver.c: Added support for abcrem optimization.
14629
14630         * propagated_relations_table.def: Added propagated_relations_table.def.
14631
14632 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
14633
14634         * mini.c, cfold.c: fix style.
14635
14636 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
14637
14638         * mini.c: handle issue with the low-level implementation of
14639         some long opcodes (bug #54209).
14640
14641 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
14642
14643         * basic.cs: test for my new cmov stuff.
14644
14645 2004-05-13      Patrik Torstensson
14646
14647         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
14648         opt and added peephole documentation.
14649
14650 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
14651
14652         * tramp-ppc.c: rewrote the generic trampoline code.
14653
14654 2004-05-11      Patrik Torstensson
14655
14656         * mini-x86.c: optimize long shl/shr asm code (one less branch)
14657
14658 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
14659
14660         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
14661
14662         * mini.h mini.c dominators.c: Applied patch from Derek Woo
14663         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
14664
14665         * mini.c: Add new icalls for AsAny marshalling.
14666
14667 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
14668
14669         * tramp-ppc.c, mini-ppc.c: more cleanups.
14670
14671 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14672
14673         * mini.c: no warnings.
14674
14675 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14676
14677         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
14678
14679 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
14680
14681         * mini.c: In the thread abort signal handler, if the thread is in the
14682         process of being stoped, don't throw the Abort exception, just stop the
14683         thread.
14684
14685 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
14686
14687         * tramp-ppc.c: removed old code.
14688
14689 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14690
14691         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
14692         do some simple speed optimizations on ppc.
14693
14694 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
14695
14696         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
14697         and large offsets in load/store.
14698
14699 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
14700
14701         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
14702         it causes regressions.
14703
14704 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
14705
14706         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
14707         support.
14708
14709 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
14710
14711         * jit-icalls.c: remove warnings.
14712         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
14713         speedups for unsafe code.
14714
14715 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
14716
14717         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
14718
14719 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
14720
14721         * basic-calls.cs: Add new regression test.
14722
14723         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
14724         more portable.
14725
14726         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
14727
14728         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
14729         is no longer used.
14730
14731 2004-05-06      Patrik Torstensson
14732
14733         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
14734         long reg allocation in any reg (not only eax:edx) and implemented 
14735         long shl/shr ops in asm instead of helpers.
14736
14737 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
14738
14739         * mini-sparc.h: Fix warnings.
14740
14741         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
14742         stack.
14743
14744         * mini-exceptions.c (mono_handle_exception): Call the filter in a
14745         separate statement for clarity.
14746
14747         * mini-sparc.c: Update status.
14748
14749 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
14750
14751         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
14752         here.
14753
14754 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14755
14756         * inssel-ppc.brg: another small pre-release workaround:
14757         we don't do overflow detection for long_sub_un.
14758
14759 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
14760
14761         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
14762         (also works around a weird ppc bug: 57957).
14763
14764 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
14765
14766         * tramp-ppc.c: trampoline fixes.
14767
14768 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
14769
14770         * mini-ppc.c: fixed typos.
14771
14772 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
14773
14774         * mini-ppc.c, exceptions-ppc.c: more code saves registers
14775         at the top of the stack. Fixed typos. Use a frame registers
14776         for all the methods with exception clauses.
14777
14778 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
14779
14780         * exceptions-ppc.c: restore fp registers.
14781
14782 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
14783
14784         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
14785         order from the stack top (moved the stack room to save the
14786         return value for trace after the param area). Fixed corruption
14787         in restoring registers on unwind.
14788
14789 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
14790
14791         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
14792
14793 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14794
14795         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
14796         and prolog/epilog for methods that use it. Allow
14797         enough param area room for varargs methods. Fix miguel's
14798         breakage in exception handling.
14799
14800 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
14801
14802         * Makefile.am: run genmdesc only on current arch.
14803
14804 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14805
14806         * exceptions-x86.c:
14807         * mini-x86.h: fix the build on windows.
14808
14809 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
14810
14811         * 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.
14812
14813         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
14814
14815         * mini-exceptions.c: New file.
14816         
14817         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
14818         Move some parts of the x86 exception handling code to an 
14819         arch-independent file so it can be shared with other ports.
14820
14821 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
14822
14823         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
14824
14825 2004-04-26  David Waite  <mass@akuma.org>
14826
14827         * driver.c: remove comma from end of enumeration declaration
14828
14829 2004-04-26  Jackson Harper  <jackson@ximian.com>
14830
14831         * driver.c: parse config file before loading first assembly. This
14832         allows the user gac to be enabled/disabled. 
14833         
14834 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
14835
14836         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
14837         simpler mechanism: we do not care what is encoded initially
14838         (branch absolute or relative), we care about the code and its
14839         target.  I kept the old code for reference for now.
14840
14841         The new code tries first to determine if the jump is anywhere in
14842         the -/+32 absolute meg range, if it succeeds, it encodes using the
14843         absolute branch;  If not, it tried to find something in the
14844         relative range, if not, it uses the handle_thunk code. 
14845
14846 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
14847
14848         * exceptions-ppc.c: use the correct ip register on macosx.
14849
14850 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
14851
14852         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
14853
14854 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
14855
14856         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
14857         Raise exception on integer divide by zero by hand since the hw
14858         doesn't support it. Handle NaNs in FP compares.
14859
14860 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
14861
14862         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
14863         code reducing duplication between the platforms and enabled
14864         signal exception handling (on linux for now).
14865
14866 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
14867
14868         * exceptions-ppc.c: more macosx support.
14869
14870 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
14871
14872         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
14873
14874 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
14875
14876         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
14877
14878 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
14879
14880         * iltests.il: more tests.
14881
14882 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
14883
14884         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
14885         vars as well.
14886
14887 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
14888
14889         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
14890
14891 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
14892
14893         * liveness.c: Mark variables as volatile in all basic blocks reachable
14894         from exception clauses.
14895
14896 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
14897
14898         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
14899         inlining.
14900
14901 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
14902
14903         * iltests.il, basic.cs: more tests for regalloc.
14904
14905 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
14906
14907         * iltests.il: Some tests for register allocation modifications
14908         I have locally.
14909
14910 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
14911
14912         * exceptions.cs: Add regression test for bug #56782.
14913
14914         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
14915         original stack trace if an exception is rethrown. Fixes #56782. Oh,
14916         the beauty of fixing the same thing in 5 different files...
14917
14918 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
14919
14920         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
14921         methods.
14922
14923 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
14924
14925         * mini.c: Add support for STRWLPARRAY marshalling convention.
14926
14927 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
14928
14929         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
14930         to init the context to setup the regs pointer).
14931
14932 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
14933
14934         * exceptions-ppc.c: more exceptions work.
14935
14936 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
14937
14938         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
14939         not allowed.
14940
14941 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
14942
14943         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
14944         can use the memory directly.
14945
14946         * cpu-pentium.md: Update documentation from a post from Zoltan. 
14947
14948         add x86_add_membase, x86_sub_membase, x86_mul_membase
14949
14950 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
14951
14952         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
14953         GENERAL_REGS they were also hardcoded for all PPC ports.
14954
14955         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
14956
14957         Remove hard-coded limit for floating point registers, use
14958         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
14959
14960         Notice that in MacOS X calling conventions you can fit a lot more
14961         floating point values in registers, so I should update the PInvoke
14962         test to excercise the passing of floating point values on the
14963         stack (currently broken).
14964         
14965 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
14966
14967         * tramp-ppc.c (create_trampoline_code): Added
14968         JUMP_TRAMPOLINE_SIZE. 
14969         (ppc_magic_trampoline): Follow the pattern from
14970         x86_magic_trampoline: if code is set to zero, return. 
14971         (create_trampoline_code): Always pass MonoMethod to the jump
14972         trampoline, before it was passing a null.
14973         (mono_arch_create_jump_trampoline): Implement the jump stub, could
14974         share the code with mono_arch_create_jit_trampoline. 
14975
14976         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
14977         implemented.
14978         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
14979         implemented.  
14980
14981         * cpu-g4.md: Added length for jmp instruction, the worst case
14982         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
14983         for save_lmf).
14984
14985 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
14986
14987         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
14988
14989 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
14990
14991         * mini.c: Only set bblock->real_offset when adding a new bblock, and
14992         before each IL instruction.
14993
14994         * mini.c (CEE_BOX): Fix warnings.
14995
14996 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
14997
14998         * mini.c: removed a few unused vars and extra whitespace.
14999
15000 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
15001
15002         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
15003         checks.
15004         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
15005         index.
15006         (OP_GETCHR): use the above
15007         (CEE_LDELEMA): use the above.
15008
15009         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
15010         version of the generic impl.
15011         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
15012         (CEE_LDELEMA): use the above.
15013
15014 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15015
15016         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
15017         Fixes #56317.
15018
15019         * iltests.il: Added new regression test for #56317.
15020
15021 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
15022
15023         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
15024         under NetBSD. Fixes #56450.
15025
15026         * liveness.c (update_gen_kill_set): Fix previous patch.
15027
15028 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15029
15030         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
15031
15032 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
15033
15034         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
15035         ldsfld and ldsflda.
15036
15037         * inssel-sparc.brg: Add more optimizations.
15038
15039         * mini-sparc.c: Replace multiply/divide with shifts if possible.
15040
15041 2004-04-01  Martin Baulig  <martin@ximian.com>
15042
15043         * mini.c (handle_box): New static function; moved the
15044         implementation of CEE_BOX here.
15045         (mono_method_to_ir): Added `constrained_call' variable.
15046         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
15047         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
15048         mono_method_get_constrained() to get the method.
15049
15050 2004-04-01  Martin Baulig  <martin@ximian.com>
15051
15052         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
15053         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
15054         (mono_method_to_ir): We don't need these macros anymore since
15055         mono_class_get_full() already takes care of it. 
15056
15057 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15058
15059         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
15060         use @function (as doesn't accept #function here) and check the return
15061         value of system and stop if fails.
15062
15063 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15064
15065         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
15066
15067 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
15068
15069         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
15070
15071         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
15072
15073         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
15074         #56223.
15075
15076         * basic-long.cs: Add test for negation of Int64.MinValue.
15077
15078 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
15079
15080         * mini-sparc.c: Update status.
15081
15082         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
15083
15084         * exceptions-sparc.c: Fix return value in filters.
15085
15086         * inssel-sparc.brg: Fix register allocation in some rules.
15087
15088 2004-03-28  Martin Baulig  <martin@ximian.com>
15089
15090         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
15091         if neccessary.  
15092
15093 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
15094
15095         * mini-x86.c (mono_arch_patch_code): Fix warnings.
15096         
15097         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
15098         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
15099         remove unused conv_u4 opcode.
15100
15101         * mini-x86.c: Remove valgrind workaround since it slows down things
15102         even when mono is not run under valgrind.
15103
15104 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
15105
15106         * mini-sparc.c: Update status.
15107
15108         * inssel-sparc.brg: Add some optimizations.
15109
15110         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
15111         future delay slot filling. Add support for varargs, tail calls and JMP.
15112
15113         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
15114         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
15115
15116         * inssel.brg: Fix register allocation in OP_ARGLIST.
15117
15118         * inssel.brg: Fix warnings.
15119
15120 2004-03-25  Martin Baulig  <martin@ximian.com>
15121
15122         * mini.c (inflate_generic_field): Removed.
15123         (mini_get_method): Removed, use mono_get_method_full(),
15124         (mini_get_class): Removed, use mono_class_get_full().
15125         (mono_method_to_ir): Pass our generic context to
15126         mono_field_from_token().        
15127
15128 2004-03-25  Martin Baulig  <martin@ximian.com>
15129
15130         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
15131         of a `MonoMethod *'.
15132         (mini_get_method): Take a `MonoGenericContext *' instead
15133         of a `MonoMethod *'.
15134         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
15135         a new local variable called `generic_context' which holds the
15136         current `MonoGenericContext *'; use it to lookup things.
15137
15138 2004-03-24  Martin Baulig  <martin@ximian.com>
15139
15140         * mini.c (mini_get_class): New static method; if we're inside a
15141         generic instance, inflate the class if neccessary.
15142         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
15143
15144 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
15145
15146         * iltests.il: New regression test for #55976.
15147
15148         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
15149         #55976.
15150
15151 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15152
15153         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
15154         output.
15155
15156 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
15157
15158         * liveness.c: Consider SSA stores as well as loads when making vars
15159         volatile.
15160
15161         * exceptions.cs: New regression tests for register allocation.
15162         
15163 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
15164
15165         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
15166         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
15167           domain lock only to protect puntual access to data structures.
15168           Added access lock for sighash, jit_icall_hash_name, 
15169           jit_icall_hash_addr and domain->code_mp.
15170
15171 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
15172
15173         * driver.c: Print SIGSEGV handling method.
15174
15175         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
15176
15177         * mini.c (setup_jit_tls_data): Handle case when this is called
15178         multiple times for a thread.
15179
15180         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
15181         is different from fbxx_un. Fixes #54303. Also use constants instead of
15182         magic numbers in a lot of places.
15183
15184 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
15185
15186         * exceptions.cs: Fix cctor test when --regression is used.
15187
15188 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
15189
15190         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
15191         for Linux/ppc.
15192
15193 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
15194
15195         * inssel-ppc.brg: fixed register assignments for some rules.
15196
15197 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15198
15199         * exceptions.cs: Add test for exceptions in static constructors.
15200
15201         * mini.c (mono_jit_compile_method_with_out): Move the calling of
15202         static constructors outside the domain lock. Fixes #55720.
15203
15204 2004-03-17  Martin Baulig  <martin@ximian.com>
15205
15206         * mini.c (get_generic_field_inst): Removed, this'll never happen.
15207         (inflate_generic_field): Take the `MonoMethod *' instead of the
15208         `MonoClass *' and added support for generic method.
15209         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
15210         have a `field->parent->gen_params', only inflate the field if it's
15211         an open constructed type.
15212
15213 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
15214
15215         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
15216         exception object instead of the preconstructed ones.
15217
15218 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15219
15220         * mini.c: reverted changed to sigsegv_signal_handler commited
15221         accidentally in the previous patch.
15222
15223 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15224
15225         * mini.c:
15226         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
15227         running --aot with an old assembly.
15228
15229 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
15230
15231         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
15232         point values.
15233
15234         * mini-sparc.c: Add support for v9 branches with prediction.
15235
15236 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
15237
15238         * mini.c (mini_init): #warning is GNUC only
15239
15240         * mini-sparc.h: implement __builtin_frame_address
15241         and __builtin_return_address for Sun C compiler
15242
15243 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
15244
15245         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
15246
15247 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
15248
15249         * basic-calls.cs: Add test for unaligned byref long argument passing.
15250
15251         * mini-ops.h: Add sparcv9 compare and branch instructions.
15252
15253         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
15254         v9 instructions if we have a v9 cpu.
15255
15256         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
15257         registers for global allocation.
15258
15259         * exceptions-sparc.c: Fixes.
15260         
15261 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
15262
15263         * liveness.c (mono_analyze_liveness): Optimized version.
15264
15265         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
15266
15267         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
15268         sparc work.
15269
15270         * basic-float.cs basic-calls.cs: New regression tests.
15271
15272 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
15273
15274         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
15275         sigaltstack implementation.
15276
15277         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
15278         
15279         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
15280         stuff if SIGSEGV_ON_ALTSTACK is not defined.
15281
15282 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
15283
15284         * mini.c: Fix warnings.
15285         
15286         * mini.c (mono_resolve_patch_target): New function which contains the
15287         arch independent part of the patching process.
15288
15289         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
15290         patching code to a separate function.
15291
15292 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
15293
15294         * mini.c (add_signal_handler): ifdef out on Windows
15295
15296 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
15297
15298         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
15299         cpu-sparc.md: Add exception handling support + other fixes.
15300
15301         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
15302         typed GC detection in --version.
15303
15304         * basic.cs exceptions.cs: New regression tests.
15305
15306         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
15307         the arch specific code can store data during a compilation.
15308
15309         * mini-ops.h: Add OP_SETFRET.
15310
15311         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
15312         function, register a separate icall for each arity, so the icalls can
15313         get a wrapper.
15314         
15315         * mini.c (mono_print_tree): Print negative offsets in a more readable
15316         form.
15317         
15318         * mini.c: Make signal handling work on sparc.
15319         
15320         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
15321
15322         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
15323
15324         * jit-icalls.c: Emulate truncl by aintl on solaris.
15325
15326         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
15327
15328 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
15329
15330         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
15331
15332 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
15333
15334         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
15335         a MarshalByRef type, inline a method that performs the check, taking into
15336         account that the object can be a proxy. Also implemented tow new opcodes:
15337         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
15338         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
15339         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
15340
15341 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
15342
15343         * mini-ppc.c: if a relative branch displacement is too big
15344         but it points to and area reachable with an absolute branch, 
15345         avoid the thunks.
15346
15347 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
15348
15349         * mini.c: optimize small copies in cpblk.
15350
15351 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
15352
15353         * basic-calls.cs basic-float.cs: New regression tests.
15354
15355         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
15356         negative offsets from %fp. Implement localloc. Fix local register 
15357         allocation. Fix the case when the this argument needs to be saved to
15358         the stack. Implement some missing opcodes.
15359
15360 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
15361
15362         * mini.c (mini_method_compile): Reenable global regalloc in methods
15363         with exception handlers.
15364
15365         * linear-scan.c (mono_varlist_sort): Fix warning.
15366
15367         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
15368
15369         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
15370         regalloc costs.
15371
15372         * liveness.c: Make all variables uses in exception clauses volatile, to
15373         prevent them from being allocated to registers. Fixes #42136.
15374
15375 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
15376
15377         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
15378         causes regressions.
15379
15380         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
15381         argument to mono_arch_regalloc_cost.
15382
15383         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
15384         precisely.
15385
15386 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
15387
15388         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
15389         Make the cost of allocating a variable to a register arch dependent.
15390
15391         * basic-calls.cs: Fix compilation of tests.
15392         
15393         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
15394         helper function to cut back on the number of #ifdefs needed.
15395
15396         * mini-ppc.c: Fix compilation.
15397
15398         * basic-calls.cs: New regression tests.
15399
15400         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
15401
15402         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
15403         of l0 since that is callee saved.
15404
15405         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
15406         to virtual calls.
15407
15408         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
15409         of delay instruction.
15410
15411         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
15412
15413         * mini.h (MonoCallInst): Add 'virtual' flag.
15414
15415         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
15416
15417 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
15418
15419         * *.cs: New regression tests.
15420
15421         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
15422         work.
15423
15424         * mini.c (mono_runtime_install_handlers): Fix build.
15425
15426         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
15427         'signal_stack_size' members.
15428
15429         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
15430         alternate signal stack.
15431
15432         * exceptions-x86.c: Add stack overflow handling.
15433
15434         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
15435         functions to arch independent code.
15436
15437         * mini.c (mono_print_tree): Print more detailed info for load_membase
15438         opcodes.
15439         
15440 2004-02-23  Martin Baulig  <martin@ximian.com>
15441
15442         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
15443
15444 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
15445
15446         * mini-x86.c: fixed reg allocation for div/rem.
15447
15448 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
15449
15450         * driver.c (mono_main): Report some configuratio options on --version.
15451
15452 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
15453
15454         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
15455         low in the address space. Correctly flush memory in thunks where we
15456         output native code.
15457
15458 2004-02-20  Martin Baulig  <martin@ximian.com>
15459
15460         * mini.c (mini_get_method): New static method; inflate all generic
15461         methods and methods in open generic instances.
15462         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
15463         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
15464
15465 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
15466
15467         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
15468
15469         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
15470
15471 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
15472
15473         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
15474
15475         * mini-sparc.c (flushi mono_arch_output_basic_block): make
15476         it compile using Sun's compiler.
15477
15478 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
15479
15480         * 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.
15481
15482         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
15483
15484 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
15485
15486         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
15487         code.
15488         * mini-ppc.c: handle calls outside of the allowed range with thunks
15489         allocated using the code manager.
15490         * tramp-ppc.c: use the code manager to hold generated native code.
15491         Fixed the magic trampoline to just patch vtable entries.
15492
15493 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
15494
15495         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
15496         independent file.
15497
15498 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
15499
15500         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
15501         PPC.
15502
15503         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
15504         if we have a working __thread implementation.
15505
15506         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
15507         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
15508
15509 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
15510
15511         * mini-x86.c: Fix compilation under gcc 2.
15512         
15513 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
15514
15515         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
15516         contains a call to the wrapped function.
15517
15518         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
15519         OP_<CALL>_IMM opcodes, and use them under X86.
15520         
15521         * mini.c (mono_jit_find_compiled_method): Fix warning.
15522
15523         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
15524
15525         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
15526
15527         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
15528         functionality to mini.c.
15529
15530         * mini.c (mono_create_jump_trampoline): New function to create a jump
15531         trampoline. Return a compiled method instead of a trampoline if it
15532         exists. Add a cache for jump trampolines.
15533
15534         * mini.c (mono_jit_find_compiled_method): New function to return a
15535         compiled method if it exists.
15536
15537         * mini-x86.c: Call mono_create_jump_trampoline instead of 
15538         mono_arch_create_jit_trampoline.
15539
15540         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
15541         a jump trampoline. Fixes #52092.
15542         
15543 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
15544
15545         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
15546         which is not up-to-date. Add check_corlib_version () instead.
15547
15548         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
15549         have to call it.
15550         
15551         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
15552         since newer valgrind versions do not need it.
15553
15554         * mini.c (mono_jit_compile_method_with_opt): New helper function to
15555         compile a method with a given set of optimizations.
15556
15557         * mini.c: Compile icall wrappers on-demand instead of at startup.
15558
15559         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
15560         wrapper for an icall.
15561
15562 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
15563
15564         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
15565         #54063.
15566
15567         * iltests.il: Add test for non-empty stack before switch instruction.
15568
15569 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
15570
15571         * mini.c: Add support for new stringbuilder marshalling conventions.
15572
15573         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
15574
15575 2004-02-01  Martin Baulig  <martin@ximian.com>
15576
15577         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
15578         in `ginst->mtype_argv'.
15579
15580 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
15581
15582         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
15583         facilitate grepping.
15584
15585 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
15586
15587         * mini.c: fixed buglet in initobj generic implementation for references.
15588
15589 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
15590
15591         * Makefile.am: make the version script conditional.
15592         * jit-icalls.c: handle missing truncl().
15593
15594 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
15595
15596         * exceptions.cs: Add more tests for double->int conversion.
15597
15598         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
15599         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
15600
15601 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
15602
15603         * driver.c: make --verbose --version emit an error
15604         if the loaded corlib doesn't match the runtime version.
15605
15606 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
15607
15608         * mini-ppc.h: export ppc_patch().
15609         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
15610         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
15611         on par or better than on MacOSX.
15612
15613 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
15614
15615         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
15616         mono_lookup_pinvoke_call.
15617
15618         * mini-x86.c: Under windows, the default pinvoke calling convention is
15619         stdcall. Fixes #52834.
15620
15621         * mini.c (optimize_branches): Add an upper bound to the number of
15622         iterations to prevent infinite loops on strange loops. Fixes #53003.
15623
15624 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
15625
15626         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
15627         and ISINST. Fixes #52093.
15628
15629         * objects.cs (test_0_vector_array_cast): New tests.
15630         
15631 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
15632
15633         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
15634         checking in Array.Set ().
15635
15636         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
15637         #52590.
15638
15639         * object.cs (test_0_multi_array_cast): New regression test.
15640
15641 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
15642
15643         * exceptions-ppc.c: fix build on Linux/PPC.
15644
15645 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
15646
15647         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
15648         running under valgrind.
15649         (x86_magic_trampoline): Fix build bustage.
15650
15651         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
15652         negative values as well. This is needed for the encoding of the line number
15653         info, since sometimes the line numbers are not in increasing order.
15654
15655 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
15656
15657         * cpu-pentium.md (localloc): Increase the size of the localloc 
15658         instruction since it is a loop under Win32.
15659
15660         * debug-mini.c (record_line_number): Get rid of unneccesary memory
15661         allocation.
15662
15663 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
15664
15665         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
15666         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
15667         Max Horn (max@quendi.de). Fix file names in comments.
15668
15669 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
15670
15671         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
15672         avoid stack overflow.
15673         (replace_usage): Avoid uninitialized variable warnings.
15674
15675         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
15676         and taking the address of valuetype variables.
15677
15678 2004-01-03  Patrik Torstensson
15679
15680         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
15681         for other purposes than FP later on.
15682
15683 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
15684
15685         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
15686         of tail calls.
15687
15688 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
15689
15690         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
15691
15692 2003-12-30  Patrik Torstensson <p@rxc.se>
15693
15694         * mini-x86.h: Decreased number of availiable fp regs.
15695         Solves corner cases with FP spilling.
15696
15697 2003-12-23  Patrik Torstensson <p@rxc.se>
15698
15699         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
15700         for floating point stack tracking / spilling on x86. 
15701         Fixes bug #49012.
15702         
15703         * basic-float.cs: added float mul overflow test.
15704
15705 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
15706
15707         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
15708
15709 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
15710
15711         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
15712         supports for cond branches that overflow the immediate
15713         overflow offset. mcs can compile simple programs.
15714
15715 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
15716
15717         * exceptions-ppc.c: exception handling support wip:
15718         finally handlers get run on exception.
15719
15720 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
15721
15722         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
15723         profiling.
15724
15725 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
15726
15727         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
15728         initial support for stack walking and unwinding.
15729
15730 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
15731
15732         * driver.c (mono_main): Make corlib-out-of-sync message more 
15733         descriptive. Also remove verify_corlib call.
15734
15735 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
15736
15737         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
15738         not overlap with other call's arguments, too.
15739
15740 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
15741
15742         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
15743         move to arch-specific code the choice of arch-specific
15744         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
15745         * mini.c: ensure emulation calls will not interleave
15746         with other calls.
15747
15748 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
15749
15750         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
15751         the magic trampoline stack frame is dropped before executing
15752         the new method.
15753
15754 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
15755
15756         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
15757         and integer to fp conversions. Added support for overflowing
15758         arguments on the stack. Reserve a couple more registers as temps.
15759         Added support for aot compilation (as output still needs to be
15760         tweaked, though).
15761
15762 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
15763
15764         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
15765         Don't overwrite return register in some corner cases.
15766
15767 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
15768
15769         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
15770         static constructors when AOT compiling.
15771
15772         * driver.c (mono_main): Call mono_check_corlib_version.
15773
15774 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
15775
15776         * cpu-g4.md, basic.cs: fixed div target register.
15777
15778 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
15779
15780         * mini-ppc.c, basic.cs: shl_imm fix with test.
15781
15782 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
15783
15784         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
15785         structures by value. Misc fixes.
15786         * objects.cs: more tests.
15787
15788 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
15789
15790         * mini-ppc.c: lconv.ovf.i implemented.
15791
15792 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15793
15794         * mini.c:
15795         (mini_init): don't error out if someone already called g_thread_init.
15796
15797 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
15798
15799         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
15800         to be any type per the spec. Fix abnormal memory usage when
15801         the same object is repeatedly thrown.
15802
15803 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
15804
15805         * mini.c: check for overruns in IL code.
15806
15807 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
15808
15809         * TODO: Add/remove some todo entries.
15810
15811 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
15812
15813         * driver.c (mono_main): Call mono_verify_corlib.
15814
15815 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
15816
15817         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
15818         This has been moved to mini.c
15819         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
15820         type being casted is marshalbyref it could be a proxy, so instead of
15821         emitting the type check code, emit a call to a runtime method that will
15822         perform the check by calling CanCastTo if needed.
15823
15824 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
15825
15826         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
15827         methods with large stack frames under Win32.
15828
15829 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
15830
15831         * Makefile.am: Distribute regression tests.
15832
15833         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
15834         at the end instead of inserting each variable into the sorted list.
15835
15836         * linear-scan.c (mono_varlist_sort): New helper function.
15837         
15838 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
15839
15840         * mini.c: ensure arguments and locals are within bounds.
15841
15842 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
15843
15844         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
15845         related fixes.
15846
15847 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
15848
15849         * mini.c (mono_cprop_copy_values): Fix crash.
15850
15851         * aot.c: Set verbosity back to 0.
15852         
15853 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
15854
15855         * regalloc.c: complete memory leak fix by Laurent Morichetti
15856         (l_m@pacbell.net).
15857
15858 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
15859
15860         * driver.c (main_thread_handler): Revert the previous patch.
15861
15862         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
15863         under valgrind.
15864
15865         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
15866         memory from the memory pool.
15867
15868         * driver.c (main_thread_handler): Turn on all optimizations when
15869         --aot is used.
15870
15871         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
15872         an array for better performance.
15873
15874         * regalloc.c (mono_regstate_assign): Fix memory leak.
15875
15876         * debug-mini.c (mono_debug_serialize_debug_info): New function to
15877         serialize the debug info.
15878
15879         * debug-mini.c (mono_debug_add_aot_method): New function to load the
15880         debug info from the serialized representation.
15881
15882         * aot.c: Save debug info into the generated file and load it when 
15883         loading a method.
15884
15885         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
15886
15887 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
15888
15889         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
15890         More FP-related fixes.
15891
15892 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
15893
15894         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
15895         and register allocation buglet. Hello world now runs.
15896
15897 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
15898
15899         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
15900         * tramp-ppc.c: fixed class init trampoline.
15901         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
15902
15903 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
15904
15905         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
15906         mini.c: more ppc changes/fixes.
15907
15908 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
15909
15910         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
15911         Also optimize the case when the arguments are the same in the caller 
15912         and in the callee.
15913
15914         * iltests.il: Add tests for tail calls with valuetype arguments.
15915
15916 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
15917
15918         * mini-ppc.c: fixes for struct return type.
15919
15920 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
15921
15922         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
15923         mono_spillvar_offset() to arch-specific code.
15924
15925 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
15926
15927         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
15928
15929 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
15930
15931         * exceptions-x86.c: Fix stack space leaks.
15932         
15933         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
15934         registers from the lmf if the method has save_lmf set.
15935
15936 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
15937
15938         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
15939         of icall wrappers into InvokeInDomain, since these are now per-domain.
15940
15941 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
15942
15943         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
15944         make some opcode emulation and intrinsic ops enabled/disabled 
15945         according to the architecture. More fixes.
15946
15947 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
15948
15949         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
15950
15951 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
15952
15953         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
15954         arch-specific handling for 'this' and struct return type to
15955         arch-specific code.
15956
15957 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15958
15959         * aot.c: prevent divide by zero error when reporting (it happened with
15960         Accessibility.dll).
15961
15962 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
15963
15964         * mini.h (inst_switch): Remove unused macro.
15965
15966 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
15967
15968         * aot.c:
15969         (load_aot_module): free 'info->methods' and 'info' properly. No more
15970         "free(): invalid pointer blah" messages when you have an old aot
15971         compiled assembly.
15972
15973 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
15974
15975         * jit-icalls.c, mini.c: Added support for context static fields.
15976
15977 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
15978
15979         * mini.c (mono_method_blittable): Methods which set LastError are not 
15980         blittable either. Fixes #51108.
15981         
15982 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
15983
15984         * mini.c: flush icache.
15985         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
15986
15987 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
15988
15989         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
15990
15991 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
15992
15993         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
15994         safe on IA32.
15995
15996         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
15997         vararg calls.
15998
15999         * inssel.brg (CEE_MKREFANY): Fix AOT case.
16000
16001 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
16002
16003         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
16004         instruction when the result is discarded.
16005
16006         * iltests.il (test_0_div_regalloc): New regression test.
16007
16008         * arrays.cs: Fix compilation error.
16009
16010 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
16011
16012         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
16013         float rules to inssel-x86.brg: sane architectures with FP registers
16014         don't need to implement these rules.
16015
16016 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
16017
16018         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
16019
16020 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
16021
16022         * mini.h, inssel-long32.brg: fixed endianess issues in int64
16023         implementation of 32 bit systems.
16024
16025 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
16026
16027         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
16028         (Jeroen Zwartepoorte).
16029
16030 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
16031
16032         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
16033         the caller and the callee matches.
16034         
16035         * mini.c (mono_method_to_ir): Add comment.
16036
16037         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
16038         signbit is missing on some platforms.
16039
16040 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
16041
16042         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
16043
16044         * mini.c (setup_jit_tls_data): Call the new function.
16045         
16046         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
16047
16048         * mini-x86.c: Add experimental support for fast access to the lmf
16049         structure under NPTL/Linux 2.6.x.
16050
16051 2003-11-06  Martin Baulig  <martin@ximian.com>
16052
16053         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
16054         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
16055         the debugger.
16056
16057 2003-11-02  Martin Baulig  <martin@ximian.com>
16058
16059         * mini.c (inflate_generic_field): New static method.
16060         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
16061         generic instance and the field is declared in a generic type, call
16062         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
16063
16064 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
16065
16066         * mini.h mini.c (mono_method_same_domain): New function to return
16067         whenever the caller and the callee are in the same domain.
16068
16069         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
16070
16071 2003-10-30  Martin Baulig  <martin@ximian.com>
16072
16073         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
16074         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
16075         method parameters.
16076         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
16077         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
16078
16079 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
16080
16081         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
16082         propagation.
16083
16084         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
16085         object here, so it is in the correct appdomain etc.
16086
16087 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
16088
16089         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
16090         already done.
16091         (mono_method_to_ir): Avoid freeing the type created returned from
16092         mono_type_create_from_typespec, since it is put into an internal cache
16093         by the function. Fixes pointer.exe.
16094
16095         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
16096         trampolines for icalls and pinvokes as well. Fixes #33569.
16097
16098 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
16099
16100         * mini.c: Update after appdomain changes.
16101
16102         * mini.c (mono_jit_compile_method_inner): Allways compile native
16103         method wrappers in the root domain, since there can only be one
16104         instance of them, whose address is stored in method->info.
16105
16106 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
16107
16108         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
16109         environment variable. Instead detect automatically whenever running
16110         under valgrind using the magic macro RUNNING_ON_VALGRIND from
16111         valgrind.h.
16112
16113 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
16114
16115         * trace.c, trace.h: New files that implement the new trace option
16116         parsing. 
16117
16118         * driver.c: Document new --trace options.
16119
16120         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
16121         mini-x86.c: Apply:
16122
16123         -       if (mono_jit_trace_calls)
16124         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
16125
16126         * mini.h: prototypes.
16127         
16128 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
16129
16130         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
16131
16132         * mini.c inssel.brg: Implement typedefbyref opcodes.
16133
16134         * mini.c (mono_jit_compile_method): Remove unused local variable.
16135
16136         * mini.c (mono_jit_compile_method_inner): Ditto.
16137         
16138 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
16139
16140         * tramp-x86.c (x86_class_init_trampoline): Fix build.
16141         
16142         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
16143
16144 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
16145
16146         * mini.c (mono_no_aot): Remove unused global variable.
16147
16148         * mini.c: Thread safety fixes.
16149
16150 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
16151
16152         * mini.c (mono_create_class_init_trampoline): Add a lock around
16153         class_init_hash_addr.
16154
16155         * arrays.cs (test_0_newarr_emulation): Add new regression test for
16156         #30073.
16157
16158         * mini.c: Decompose the NEWARR instruction before decomposing its
16159         arguments. Fixes #30073.
16160
16161 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
16162
16163         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
16164         convention.
16165
16166 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
16167
16168         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
16169
16170         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
16171
16172         * driver.c: Add support for compiling icall wrappers to --compile.
16173
16174 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
16175
16176         * inssel.brg: The empty value in class->interface_offsets is -1, not
16177         0. Fixes #49287.
16178
16179 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
16180
16181         * objects.cs: New test for 'is' operator on an array of interfaces.
16182
16183 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
16184
16185         * tramp-ppc.c: update trampoline code to support jumps
16186         and class initialization.
16187
16188 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
16189
16190         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
16191
16192         * inssel.brg (OP_UNBOXCAST): Fix #46027.
16193
16194         * inssel.brg (OP_UNBOX): Remove unused rule.
16195
16196         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
16197         region instead of one for each method. Fixes #47813.
16198
16199 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
16200
16201         * exceptions.cs (test_0_nested_finally): New regression test for
16202         nested exception handlers.
16203
16204         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
16205
16206         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
16207
16208         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
16209         inlining.
16210
16211         * mini.c (mono_method_check_inlining): Make the inlining limit 
16212         configurable by an environment variable.
16213         
16214         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
16215
16216         * mini.h: Bump AOT file version.
16217
16218         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
16219         token, store the image along with the token, since the token might not 
16220         refer to the same image as the method containing the relocation, 
16221         because of inlining.
16222
16223 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
16224
16225         * mini.c (mono_precompile_assemblies): New function to compile
16226         all methods in all loaded assemblies.
16227
16228         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
16229
16230         * regalloc.h regalloc.c (MonoRegState): Change the type of 
16231         iassign and fassign to int*, since they can contain large negative
16232         values if the register is spilled. Also added some comments. Fixes
16233         #45817.
16234
16235         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
16236         under Win32. Fixes #42964.
16237
16238 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
16239
16240         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
16241
16242         * aot.c: Added support for AOT compiling methods which contain calls
16243         to wrappers. Currently, only remoting-invoke-with-check wrappers are
16244         handled.
16245         
16246         * driver.c (compile_all_methods): Run the compilation in a thread
16247         managed by mono. Fixes #44023.
16248
16249         * mini.c (mono_codegen): Print full method name in verbose output.
16250
16251         * mini-x86.c (mono_arch_patch_code): Fix warning.
16252         
16253         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
16254         jumps, since the method we are jumping to might be domain-specific.
16255
16256         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
16257
16258 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
16259
16260         * inssel.brg: string chars are unsigned.
16261
16262 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
16263
16264         * TODO: New todo item.
16265
16266         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
16267         which calls mono_runtime_class_init and patches the call site to
16268         avoid further calls.
16269         (mono_arch_create_class_init_trampoline): New arch specific function 
16270         to create a class init trampoline.
16271         (create_trampoline_code): Generalized so it can create
16272         class init trampolines as well.
16273
16274         * mini.c (helper_sig_class_init_trampoline): New helper variable.
16275         (mono_create_class_init_trampoline): New function to create and cache
16276         class init trampolines.
16277         (mono_find_class_init_trampoline_by_addr): New function to lookup the
16278         vtable given the address of a class init trampoline. Used by the
16279         patching process.
16280         (mono_codegen): Generate a call to a trampoline instead of
16281         mono_runtime_class_init in LDSFLD[A].
16282         (mono_codegen): Add relocations for the new trampoline.
16283         
16284         * mini.h mini-x86.c aot.c: Added a new relocation type: 
16285         MONO_PATCH_INFO_CLASS_INIT.
16286
16287         * mini.h: Bump AOT version number.
16288
16289         * aot.c: Create a copy of the loaded code instead of using the original
16290         so methods which call each other will be close in memory, improving
16291         cache behaviour.
16292         
16293         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
16294         patch since it breaks the regression tests.
16295         
16296         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
16297         for the register saving instruction sequence since the 
16298         frame_state_for function in glibc 2.3.2 don't seem to detect it.
16299
16300 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
16301
16302         * TODO: Fix todo item && remove another.
16303
16304 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
16305
16306         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
16307         previous checkin.
16308
16309         * aot.c: Moved the check for MONO_LASTAOT into the initialization
16310         function of the module.
16311
16312         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
16313         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
16314         --no-aot command line option.
16315
16316 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
16317
16318         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
16319         by Bernie Solomon (bernard@ugsolutions.com).
16320
16321         * inssel.brg: Refactor the interface offset table related code into
16322         its separate functions and add support for the AOT case.
16323
16324 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
16325
16326         * aot.c (mono_aot_get_method_inner): Fix memory leak.
16327         
16328         * aot.c: Added mono_aot_verbose variable and made all debugging
16329         output depend on the value of this variable.
16330
16331         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
16332         method_label and info_label.
16333
16334         * mini.h mini-x86.c aot.c: Added a new relocation type 
16335         MONO_PATCH_INFO_IID for klass->interface_id.
16336
16337         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
16338         the MonoJitInfo structure.
16339
16340         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
16341         a non-root appdomain in shared mode.
16342
16343 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
16344
16345         * aot.c: make aot loader less verbose. Remove free of unused variable.
16346
16347 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
16348
16349         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
16350
16351         * .cvsignore: Added *.dll.
16352
16353         * mini.c (mono_print_tree_nl): New function callable while debugging.
16354
16355         * mini.c (mono_print_code): Export this.
16356
16357         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
16358         patched code.
16359
16360 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
16361
16362         * mini.h (MonoCompile): Added 'jit_info' field.
16363
16364         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
16365         the cfg structure, since it is needed by the AOT compiler.
16366
16367         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
16368
16369         * aot.c: A major rewrite. Changes include:
16370         - save exception tables for methods which have them.
16371         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
16372         to g_module_symbol.
16373         - reworked the file format so it is now much smaller and needs
16374         fewer relocation entries.
16375         
16376 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
16377
16378         * aot.c (load_aot_module): Fix build bustage on platforms without
16379         Boehm GC.
16380
16381 2003-09-04  Martin Baulig  <martin@ximian.com>
16382
16383         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
16384
16385 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
16386
16387         * TODO: Some new optimization ideas.
16388
16389         * aot.c: Move AOT module loading logic here from mono_assembly_open.
16390
16391         * aot.c: Save the optimization flags used to compile the code into
16392         the AOT module.
16393
16394         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
16395         support emitting domain specific code.
16396         
16397         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
16398         no longer domain neutral. It can be made domain neutral by compiling 
16399         with --optimize=shared.
16400
16401         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
16402         between appdomains.
16403
16404         * driver.c mini.h mini.c: New --no-aot debugging option which disables
16405         loading of AOT code.
16406
16407         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
16408         
16409         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
16410         if there is no domain neutrality information.
16411
16412 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
16413
16414         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
16415         format version into the generated library.
16416
16417         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
16418         callee method into the caller since one of them could be shared.
16419
16420         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
16421         system exceptions from AOT code now works.
16422
16423         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
16424         method if it is domain neutral and the callee is not.
16425
16426         * graph.c (cfg_emit_one_loop_level): Fix warning.
16427
16428 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
16429
16430         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
16431         last checkin.
16432
16433 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
16434
16435         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
16436         is needed  by code which is executed before mono_runtime_init ().
16437         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
16438         
16439         * mini.c (mono_thread_abort): Fix warning.
16440         (mono_jit_compile_method): Call static constructor in the AOT case too.
16441
16442         * aot.c (mono_compile_assembly): Fix warning.
16443
16444 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16445
16446         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
16447
16448 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
16449
16450         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
16451
16452         * cpu-pentium.md: Fix the length of call opcodes so they include the
16453         ESP restoring instruction. Fixes #47968.
16454
16455 2003-08-28  Martin Baulig  <martin@ximian.com>
16456
16457         * mini-x86.c (mono_arch_call_opcode): Added support for
16458         MONO_TYPE_GENERICINST.
16459
16460         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
16461
16462 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
16463
16464         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
16465         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
16466
16467         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
16468         metadata_section.
16469
16470 2003-08-26  Martin Baulig  <martin@ximian.com>
16471
16472         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
16473         when reporting an error, set this to the actual error location.
16474         (mono_method_to_ir): Report the correct error location if
16475         get_basic_blocks() returned an error.
16476
16477 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
16478
16479         * mini.c (mono_type_blittable): OBJECT is not blittable.
16480         (mono_method_blittable): Methods which have marshalling descriptors
16481         are not blittable either. Fixes #47842.
16482
16483 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
16484
16485         * driver.c mini.c: Use an environment variable instead of a global 
16486         variable. Also fix the build.
16487
16488         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
16489         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
16490         reporting this. 
16491
16492         * driver.c mini.c: Added --with-valgrind option to turn off some
16493         code which prevents mono from running under valgrind.
16494
16495         * mini.c (mono_emit_call_args): Fixed warning.
16496
16497         * mini.c (mono_emulate_opcode): Fixed warning.
16498
16499 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
16500
16501         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
16502         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
16503         regalloc.c, regalloc.h: specify available registers in arch-specific
16504         code and support floats in the regallocator (patch by Laurent Morichetti 
16505         <l_m@pacbell.net>)
16506
16507 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
16508
16509         * mini.c: mono_thread_current() can be called only after
16510         mono_runtime_init(): rearrange code to not call it early on.
16511
16512 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
16513
16514         * mini.c: allocate jump tables in the code mempools.
16515
16516 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
16517
16518         * mini.c, mini.h: make sure per-thread data allocated by the jit is
16519         freed.
16520
16521 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
16522
16523         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
16524         12 to 16.  This fixes bug #47453.
16525
16526
16527 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
16528
16529         * mini-ppc.c: fixed indexed load and unsigned compares.
16530
16531 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
16532
16533         * mini.c: reenabled installation of handler for
16534           thread abort signal.
16535
16536 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
16537
16538         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
16539         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
16540         until it's fixed and actually useful.
16541
16542 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
16543
16544         * inssel-long32.brg: couple more opcodes implemented.
16545
16546 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
16547         
16548         * mini-sparc.c: Even more opcodes implemeted.
16549
16550 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
16551
16552         * mini-sparc.c: More opcodes implemented.
16553
16554 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
16555
16556         * mini-sparc.c: More opcodes implemented.
16557
16558 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
16559
16560         * inssel-sparc.brg: Add some needed rules.  Direct
16561         copy from PPC.
16562         * Makefile.am: Use inssel-sparc.brg
16563         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
16564         an assert happy for now.
16565
16566 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
16567
16568         * mini-sparc.c: Fixed compile errors.
16569         * exceptions-sparc.c: Same.  We now produce a mono binary 
16570         on sparc-linux.  Yea.
16571
16572 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
16573
16574         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
16575         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
16576         They compile, but do not work.
16577
16578 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
16579
16580         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
16581         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
16582         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
16583         (ct@gentoo.org).
16584
16585 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
16586
16587         * mini.c: more opcodes implemented and better support for generics.
16588
16589 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
16590
16591         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
16592         * mini.c, mini.h: first cut at generics support: some new instructions 
16593         added and changed the behaviour of some of the existing ones.
16594
16595 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
16596
16597         * mini.c: Removed definition of metadata_shared mutex here.
16598
16599 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
16600
16601         * mini-x86.c: make vararg calls work for instance methods.
16602
16603 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
16604
16605         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
16606         returns the arguments in a separte list, now.
16607
16608 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
16609
16610         * aot.c, mini.c: updates for array type representation changes.
16611
16612 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
16613
16614         * mini.c: register function to perform jit shutdown.
16615
16616 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
16617
16618         * mini.c: use a faster allocator if possible.
16619
16620 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
16621
16622         * aot.c: some cleanups and portability changes.
16623
16624 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
16625
16626         * mini.c: use faster allocation for CEE_BOX if possible.
16627
16628 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
16629
16630         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
16631         Moved inlined mempcy code to its own function so that is can be
16632         reused. Added an inline memset function as well (optimized initobj).
16633         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
16634
16635 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
16636
16637         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
16638
16639 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
16640
16641         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
16642         arch code can setup the cpu for CLR execution, if needed.
16643         We use it on x86 to set the precision of FP operations.
16644
16645 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
16646
16647         * mini.c: disable some optimizations if we can guess they'll cost too
16648         much for a given method.
16649
16650 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
16651
16652         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
16653         
16654 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
16655         * mini.h mini.c mini-x86.c: Added instruction level coverage 
16656         info collection support.
16657
16658 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
16659
16660         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
16661         is now implemented in the profiling API. Get rid of a couple of
16662         unnecessary global variables.
16663
16664 2003-06-15  Nick Drochak <ndrochak@gol.com>
16665
16666         * basic-long.cs: tests for negative values for bigmul, and unsigned.
16667         * cpu-g4.md: add op_bigmul and op_bigmul_un
16668         * cpu_pentium.md: add op_bigmul_un
16669         * inssel-long32.brg: add rule for unsigned bigmul
16670         * mini-ops.h: define OP_BIGMUL_UN
16671         * mini-x86.c: THE BUG: handle (un)signed properly
16672         * mini.c: choose unsigned opcode if needed.
16673         This set of patches fixes bug #44291
16674
16675 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
16676
16677         * mini.c (optimize_branches): improved to handle all kinds of
16678         conditional branches.
16679
16680 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
16681
16682         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
16683         don't raise exceptions.
16684
16685 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
16686
16687         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
16688         to arch-specific files.
16689
16690 2003-06-09  Martin Baulig  <martin@ximian.com>
16691
16692         * Makefile.am (libs): Added $(LIBGC_LIBS).
16693
16694 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
16695
16696         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
16697         and OP_ATAN (fixes bug#44293).
16698
16699 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
16700
16701         * Makefile.am, mini-x86.c: rename cpu description array to
16702         pentium_desc, since some compilers define the 'pentium' preprocessor
16703         symbol.
16704
16705 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
16706
16707         * mini.c (mini_select_instructions): add explicit branch if the
16708         following block is not the false target of a conditional branch -
16709         we need this with any optimization that reorder or remove bblocks
16710
16711         * mini.c (optimize_branches): bug fixes
16712
16713 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
16714
16715         * mini.c (mono_method_to_ir): inline static readonly fields
16716
16717         * ssa.c (fold_tree): start cfold support for long (very simple
16718         cases only)
16719
16720         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
16721
16722 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
16723
16724         * inssel.brg: fixed memcpy (bug #44219).
16725
16726 2003-06-05  Dick Porter  <dick@ximian.com>
16727
16728         * driver.c: Set the glib log levels to not abort if g_message
16729         recurses.
16730
16731         g_set_prgname() has to happen before mini_init() so that the
16732         process handle gets the info.
16733         
16734 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
16735
16736         * driver.c: add intrins to the default optimizations to get wider
16737         exposure.
16738
16739 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
16740
16741         * mini.h: some large basic blocks will overflow a 16-bit
16742         integers for symbolic registers.
16743
16744 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
16745
16746         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
16747         (mono_arch_output_basic_block): fix bug 43499 
16748
16749 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
16750
16751         * mini.c: kill duplicated definition of mono_debug_format.
16752
16753 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
16754
16755         * mini-x86.c, arrays.cs: fixed register allocation bug.
16756
16757 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
16758
16759         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
16760
16761         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
16762
16763 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16764
16765         * mini.c:
16766         (print_method_from_ip): also print source location information if
16767         available.
16768
16769 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
16770
16771         * mini.c (mono_find_block_region): bug fix in region code
16772         (mini_method_compile): enable removing unreachable code again, but
16773         only in methods without exception clauses.
16774
16775 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
16776
16777         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
16778         Implemented arglist opcode and handling of TypedReference type.
16779         Fixed x86 call convention when a structure is returned.
16780         Minimal support for calling static vararg methods.
16781
16782 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
16783
16784         * mini.c (mini_method_compile):  always remove unreachable code,
16785         because the code in them may be inconsistent  (access to dead
16786         variables for example).
16787
16788 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
16789
16790         * driver.c, debug-mini.c: warning fixes.
16791
16792 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
16793
16794         * Makefile.am, jit.h, mini.h: install header for embedding mono.
16795
16796 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
16797
16798         * mini.c: thread-static fields are registered in mono_class_vtable(),
16799         so ensure the function is called before checking for them.
16800
16801 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
16802
16803         * mini.c (optimize_branches): fix for bug 43586
16804
16805         * jit-icalls.c (mono_llmult_ovf): added an additional check for
16806         overflow (fixes Bug #43639)
16807
16808 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
16809
16810         * mini.c, objects.cs: allow the use of stobj for primitive types.
16811
16812 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
16813
16814         * mini.c: be less strict about argument checking until we support
16815         running the verifier.
16816
16817 2003-05-27  Nick Drochak <ndrochak@gol.com>
16818
16819         * basic-long.cs: tests for (ulong)int * (ulong)int also
16820         * mini.c: use the same trick for (ulong)int * (ulong)int
16821
16822 2003-05-27  Nick Drochak <ndrochak@gol.com>
16823
16824         * basic-long.cs: add regression test for (long)int * (long)int
16825         * cpu-pentium.md: add op_bigmul specification
16826         * inssel-long32.brg: add OP_BIGMUL rule
16827         * mini-ops.h: add OP_BIGMUL
16828         * mini-x86.c: register allocator: handle case where src1 needs to be
16829         in EAX.
16830         * mini.c: substitute special BIGMUL opcode in the tree for 
16831         (long)int * (long)int
16832
16833 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
16834
16835         * jit-icalls.c: call the type ctor on field access if needed.
16836
16837 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
16838
16839         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
16840         to a method (including results of ldelema, bug#43207).
16841
16842 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
16843
16844         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
16845         colors to show exception handler blocks.
16846
16847         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
16848         (fix for pinvoke7.cs).
16849
16850 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
16851
16852         * mini.h, mini.c: ensure correct initialization order for types that
16853         require it. Prepare for lazy compilation of jit icall wrappers.
16854         Provide a name for opcode emulation to reduce unneeded mallocing.
16855
16856 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
16857
16858         * mini-x86.c: better register restoring code and profiling
16859         support for tail calls.
16860
16861 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
16862
16863         * mini.h, driver.c: prepare for leaf methods optimization.
16864
16865 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
16866
16867         * mini.c: get targets of branches before converting a method.
16868
16869 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
16870
16871         * mini.c (optimize_branches): added some experimental code (disbaled) 
16872
16873 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
16874
16875         * mini.c (optimize_branches): fix branch to branch optimization 
16876
16877         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
16878
16879         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
16880
16881         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
16882
16883         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
16884         if needed.
16885
16886 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
16887
16888         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
16889         enable use of interface variables again.
16890
16891         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
16892         I1 to registers because there is no simply way to sign extend 8bit
16893         quantities in caller saved registers on x86.
16894
16895         * inssel-float.brg: set costs of some rules to 2 so
16896         that monobure always select the arch. specific ones if supplied,
16897         regardless of the order we pass the files to monoburg.
16898
16899 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
16900
16901         * mini.c, mini-x86.c: since the magic trampoline for jumps
16902         can't patch the code directly, we do it as soon as the
16903         method gets compiled.
16904
16905 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
16906
16907         * mini-x86.c, mini.h: introduce a new patching method
16908         to support CEE_JMP and tail calls.
16909         * mini.c: obey tail.call. Don't precompile methods target
16910         of CEE_JMP.
16911         * tramp-x86.c: new trampoline code to handle methods
16912         reached through a jump.
16913
16914 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
16915
16916         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
16917         bit values to registers
16918
16919 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
16920
16921         * mini.c (mono_compile_get_interface_var): share interface
16922         variables if possible.
16923
16924 2003-05-16  Martin Baulig  <martin@ximian.com>
16925
16926         * debug-mini.c (mono_init_debugger): New function to initialize
16927         the debugger.  This is not in the debugger since it needs to
16928         access some of mini's internals.
16929
16930 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
16931
16932         * mini.c (mono_method_to_ir): inlining fixes/cleanups
16933
16934 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
16935
16936         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
16937         for value type handling.
16938
16939 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
16940
16941         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
16942         (mono_method_check_inlining): enable inlining of all kinds of wrappers
16943
16944 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
16945
16946         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
16947           the constructor through a proxy.
16948
16949 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
16950
16951         * jit-icalls.c, inssel.brg: fixes to array element address
16952         calculations.
16953
16954 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
16955
16956         * mini-x86.c (is_regsize_var): allocate pointer to registers
16957
16958 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
16959
16960         * driver.c: fixed typo, added intrins to the set of optimizations
16961         tested with regressions.
16962
16963 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
16964
16965         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
16966         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
16967         test case.
16968
16969 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
16970
16971         * inssel.brg: remove some common pop instructions without side effects
16972
16973 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
16974
16975         * inssel-x86.brg: fixed thinko in int to double conversions.
16976
16977 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
16978
16979         * mini.c, jit-icalls.c: added runtime thread-static variable support.
16980
16981 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
16982
16983         * inssel-long32.brg: two more missing instructions.
16984
16985 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
16986
16987         * mini.c (mono_emit_call_args): set the cil_code for all arguments
16988         if not already set.
16989
16990 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
16991
16992         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
16993         correctly.
16994
16995         * basic-float.cs: Added tests for negative zero.
16996
16997 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
16998
16999         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
17000         a couple of missing operations for long casts, with test cases.
17001
17002 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17003
17004         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
17005
17006 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
17007
17008         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
17009         code size estimation.
17010
17011 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
17012
17013         * mini.c (mono_jit_create_remoting_trampoline): make it work with
17014         abstract methods (fix bug 42542)
17015
17016         * aot.c: add ability to handle array types
17017         
17018 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
17019
17020         * mini.c: Call the _specific versions of the object allocation
17021         functions if possible.
17022
17023 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
17024
17025         * driver.c: call setlocale ().
17026
17027 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
17028
17029         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
17030         windows build.
17031
17032 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
17033
17034         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
17035
17036         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
17037         wrappers (fix bug 42122)
17038
17039 2003-05-04  Martin Baulig  <martin@ximian.com>
17040
17041         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
17042
17043         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
17044         s/mini_set_defaults/mono_set_defaults/g.
17045
17046 2003-05-04  Martin Baulig  <martin@ximian.com>
17047
17048         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
17049
17050 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
17051
17052         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
17053         (reported by Don Roberts).
17054
17055 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
17056
17057         * mini.c: temporarily work around two bugs for this release.
17058
17059 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
17060
17061         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
17062         that contains -export-dynamic and it makes using the ld script
17063         useless.
17064         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
17065
17066 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
17067
17068         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
17069         specific cpu.
17070
17071 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
17072
17073         * mini.c: make sure leave calls all the needed finally blocks,
17074         even when the target jumps out of multiple exception clauses.
17075
17076 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17077
17078         * ldscript, Makefile.am: add linker script to reduce the number of
17079         exported symbols (should also fix the issues with libwine defining
17080         some of the same symbols in io-layer).
17081
17082 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
17083
17084         * driver.c (mini_main): Avoid assertion when no file name is given on 
17085         the command line.
17086
17087 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
17088
17089         * driver.c: added --version/-V command line option.
17090         Added the inline optimization in the regression tests.
17091
17092 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
17093
17094         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
17095         to the type in the method signature (fixes bug#42134).
17096
17097 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
17098
17099         * mini.c: when inlining, check this is not null only when needed (bug #42135).
17100
17101 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
17102
17103         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
17104
17105 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17106
17107         * driver.c: fixed bug #42100.
17108
17109 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
17110
17111         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
17112
17113 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
17114
17115         * mini.c: moved most of the code required to do inlining to its own
17116         function so it can be reused. Inline also ctors if appropriate.
17117
17118 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
17119
17120         * Makefile.am: Link with -export-dynamic so shared libs loaded by
17121         the runtime can call mono API functions.
17122
17123 2003-04-27  Martin Baulig  <martin@ximian.com>
17124
17125         * debug-mini.c (mono_debug_init_method): Added
17126         `guint32 breakpoint_id' argument; if the method has a breakpoint,
17127         send a notification to the debugger.
17128
17129         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
17130         running in the Mono Debugger, just pass the breakpoint number to
17131         mono_debug_init_method().
17132
17133         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
17134
17135 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
17136
17137         * mini.c: allow some more unsafe compares.
17138
17139 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17140
17141         * mini-x86.c, Makefile.am: make distcheck works (partially from
17142         a patch by Richard Lee <r.h.lee@attbi.com>).
17143         * regset.c, regset.h: removed, they are unused.
17144
17145 2003-04-25  Dick Porter  <dick@ximian.com>
17146
17147         * driver.c: Usage reports the name as 'mono' not 'mini'
17148         * exceptions-x86.c: Build and run on freebsd
17149
17150 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
17151
17152         * Makefile.am: install the program with the 'mono' name and
17153         the library as libmono instead of mini and libmini.
17154
17155 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
17156
17157         * driver.c: provide the APIs for the embedding interface of the old jit.
17158
17159 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
17160
17161         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
17162
17163 2003-04-23  Martin Baulig  <martin@ximian.com>
17164
17165         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
17166
17167         * driver.c: Added `--debug' command line argument to enable
17168         debugging support.
17169
17170 2003-04-23  Martin Baulig  <martin@ximian.com>
17171
17172         * debug.[ch]: Removed.  The code is now in
17173         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
17174
17175         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
17176         last six months.
17177
17178 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
17179
17180         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
17181
17182 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17183
17184         * mini.c:
17185         (mini_cleanup): moved mono_runtime_cleanup call after the call to
17186         mono_domain_finalize.
17187         (mini_method_compile): use mono_method_profile* if the the option is
17188         enabled.
17189
17190 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
17191
17192         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17193         methods with their wrapper.
17194
17195         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
17196         methods with their wrapper.
17197
17198         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
17199         their wrapper.
17200
17201         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
17202         wrapper.
17203
17204         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
17205         methods.
17206
17207 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
17208
17209         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
17210
17211 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
17212
17213         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
17214         of the mempool. This is slightly faster and uses less memory
17215
17216 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
17217
17218         * mini.c: avoid O(n) allocation for variables.
17219
17220 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
17221
17222         * mini.c: handle items on the stack after inlining methods.
17223
17224 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
17225
17226         * mini.c: make the method->opcode optimization dependent
17227         on MONO_OPT_INSTRINS and do it lazily.
17228
17229 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
17230
17231         * driver.c: print overall results at the end of regression run.
17232
17233 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
17234
17235         * inssel.brg: don't overwrite symbolic registers.
17236
17237 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17238
17239         * inssel-x86.brg: fix conversion from long to float.
17240
17241 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
17242
17243         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
17244
17245 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
17246
17247         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
17248
17249         * driver.c: Added --print-vtable option as in the old JIT.
17250
17251 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
17252
17253         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
17254
17255 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
17256
17257         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
17258
17259 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
17260
17261         * mini.c regalloc.c regalloc.h: Fix memory leak.
17262
17263 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
17264
17265         * aot.c (mono_aot_get_method): register all used strings
17266
17267 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
17268
17269         * mini.c: always intern strings references with ldstr at compile time.
17270
17271 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
17272
17273         * Makefile.am: add BUILT_SOURCES.
17274
17275 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
17276
17277         * driver.c: give a better error message when the assembly to execute
17278         doesn't have an entry point.
17279
17280 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
17281
17282         * Makefile.am: added hack for automake
17283
17284         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
17285         correct sematics.
17286
17287         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
17288
17289 22003-04-07  Martin Baulig  <martin@ximian.com>
17290
17291         * Makefile.am: Added Makefile.am.
17292
17293         * debugger-main.c: Removed, this is now in the debugger where it
17294         belongs.
17295
17296         * mini.pc.in: Call this package `mini' for the moment.
17297
17298
17299
17300
17301
17302
17303
17304
17305
17306
17307
17308
17309
17310