2005-10-29 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mono / mini / ChangeLog
1 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
2
3         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
4         debugger to the proper place.
5
6 2005-10-29  Martin Baulig  <martin@ximian.com>
7
8         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
9         when running inside the debugger until the debugger has support
10         for it.
11
12 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
13
14         * mini.h: Fix a warning.
15
16 2005-10-24  Miguel de Icaza  <miguel@novell.com>
17
18         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
19         we expose publicly, this returns the string.
20
21 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
22
23         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
24         with fp elimination.
25
26 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
27
28         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
29         native stacktrace using the glibc 'backtrace' function if available.
30
31 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
32
33         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
34
35         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
36         handle SIGSEGVs received while in native code.
37
38         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
39         code, call mono_handle_native_sigsegv which will abort the runtime
40         after printing some diagnostics, instead of converting it into a
41         confusing NullReferenceException.
42
43 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
44
45         * cpu-pentium.md: Remove unused opcodes.
46
47 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
48
49         * mini-amd64.h (MonoLMF): Add rsp field.
50
51         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
52         the lmf too.
53
54 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
55
56         * mini-codegen.c (get_register_spilling): Fix some warnings.
57
58 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
59
60         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
61         elimination during exception handling. Enable fp elimination by
62         default.
63
64         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
65         elimination.
66
67 2005-10-16  Martin Baulig  <martin@ximian.com>
68
69         * mini-exceptions.c
70         (mono_debugger_run_finally): New public method for the debugger.
71
72 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
73
74         * debug-mini.c (mono_debug_init_method): Fix warning.
75
76         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
77         the 'exname' parameter const to fix some warnings.
78
79 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
80
81         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
82         introduced by the previous patch.
83
84 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
85
86         * basic-float.cs: Add test for precision of float arithmetic.
87
88         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
89         when loading/storing single values from/to memory.
90
91         * mini.c (mono_jit_compile_method_with_opt): Create the function
92         pointers in the correct domain.
93
94 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
95
96         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
97         introduced by previous patch.
98         
99         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
100         when out_filter_idx is NULL.
101
102         * mini-exceptions.c: Don't run filter clauses twice during exception
103         handling. Fixes #75755.
104
105 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
106
107         * aot.c: Add support for ldflda wrappers.
108
109         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
110         #75902.
111
112 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
113
114         * mini.c, mini.h: do not consider exception handlers blocks when
115         setting up interface variables.
116
117 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
118
119         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
120
121 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
122
123         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
124         causes a regression.
125
126         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
127
128 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
129
130         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
131         of the OP_P definitions.
132
133         * TODO: Add a proposal for dealing with the CEE/OP mess.
134
135         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
136         optimizations from the x86 port.
137
138         * cpu-amd64.md: Ditto.
139
140         * basic.cs basic-long.cs: Add tests.
141
142 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
143
144         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
145         Patrik Torstensson's implementation of my exception-handling
146         optimization idea, when the exception object is not used
147         (bug #62150).
148
149 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
150
151         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
152         of the mul_imm optimizations from the old jit.
153
154 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
155
156         * mini.c, liveness.c: patch by Patrik Torstensson and
157         Zoltan Varga to improve performance in methods with
158         exception clauses.
159
160 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
161
162         * driver.c: Remove 'Globalization' entry from --version.
163
164 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
165
166         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
167         there is a profiler interested in JIT events.
168
169         * aot.c: Load profile files produced by the AOT profiling module, and
170         reorder methods based on the profiling info. Add a 'method_order' table
171         to the AOT file to make mono_aot_find_jit_info work with the reordered
172         methods.
173
174         * mini.h: Bump AOT file version info.
175
176 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
177
178         * mini-arm.h: work around what looks like a gcc bug when optimizations
179         are enabled.
180
181 2005-09-28  Raja R Harinath  <rharinath@novell.com>
182
183         * Makefile.am (AM_CFLAGS): Don't use += to append inside
184         conditionals.  Use ...
185         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
186
187 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
188
189         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
190         to determine the amount of memory to copy when passing valuetypes.
191
192         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
193         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
194
195 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
196
197         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
198         information about aot.
199
200 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
201
202         * *.c: Replace the use of {Enter,Leave}CriticalSection with
203         macros. This will allow a deadlock debugger to easily be plugged
204         in.
205
206 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
207
208         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
209
210 2005-09-27  Raja R Harinath  <rharinath@novell.com>
211
212         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
213         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
214         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
215         ($(arch_built)) [CROSS_COMPILING]: Error out.
216
217 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
218
219         * aot.c: Add support for the no_special_static flag for classes.
220
221 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
222
223         * Reapply reverted patches.
224
225         * *: Revert r50174 as well.
226
227         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
228
229 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
230
231         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
232
233 2005-09-23  Miguel de Icaza  <miguel@novell.com>
234
235         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
236         part of the SIG_HANDLER_SIGNATURE.  
237
238 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
239
240         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
241         statistics.
242
243         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
244         introduced by previous patch.
245
246 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
247
248         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
249         saved registers too.
250
251         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
252         upon the information returned by get_call_info ().
253         
254         * mini-x86.c (add_float): Fix stack size calculation.
255         (mono_arch_call_opcode): Rewrite this so it works based up the
256         information returned by get_call_info ().
257         (mono_arch_get_this_vret_args): Ditto.
258
259 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
260
261         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
262         in cinfo to determine the registers which need to be used.
263
264 2005-09-20  Miguel de Icaza  <miguel@novell.com>
265
266         * driver.c (mono_main): Add --server and --desktop flags. 
267
268 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
269
270         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
271         registers as global registers.
272
273         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
274         longer needed with the new register allocator.
275
276         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
277
278         * cpu-ia64.md: Remove unused opcodes.
279         
280         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
281         
282 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
283
284         * cpu-amd64.md: Remove unused opcodes.
285
286         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
287         needed with the new register allocator.
288
289         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
290         reg-reg moves.
291
292 2005-09-16  Raja R Harinath  <rharinath@novell.com>
293
294         * Makefile.am (check-local): Don't invoke semdel-wrapper.
295
296 2005-09-16  Martin Baulig  <martin@ximian.com>
297
298         * exceptions-amd64.c
299         (throw_exception): Don't call mono_debugger_throw_exception() if
300         we're a rethrow - see the FIXME in the code.
301
302 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
303
304         * mini.c (mono_init_exceptions): This only works on some architectures.
305         
306 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
307
308         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
309         on ia64.
310
311         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
312
313         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
314         now in mini-exceptions.c.
315
316 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
317
318         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
319         now in mini-exceptions.c.
320
321 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
322
323         * exceptions-x86.c: Applied patch from Patrik Torstensson 
324         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
325
326         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
327         code into mini-exceptions.c. Add some assertions to it.
328
329 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
330
331         * aot.c (emit_section_change): Applied patch from "The Software Team" 
332         (<software@solmersa.com>). Fix as errors on windows.
333
334 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
335
336         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
337         method info into the LMF.
338
339 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
340         
341         * mini-ia64.c: Add proper unwind info for method epilogs.
342
343         * exceptions-ia64.c: Add some code to help debugging.
344         
345         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
346
347         * mini-exceptions.c: Fix warning.
348
349 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
350
351         * mini.c: Really fix build.
352
353         * mini-x86.c mini-amd64.c: Fix build.
354
355 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
356
357         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
358
359         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
360         some Interlocked methods as intrinsics.
361
362         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
363         for Thread methods as well.
364
365         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
366
367         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
368
369         * mini-ia64.c mini-x86.c mini-amd64.c 
370         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
371         OP_MEMORY_BARRIER.
372         
373         * mini.c (mono_init_exceptions): Fix build breakage.
374
375 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
376
377         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
378         of instructions. Use the new ia64_unw_op macros for emitting unwind
379         info.
380
381         * mini.c (mono_init_exceptions): Initialize exception handling
382         related trampolines at startup.
383
384 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
385
386         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
387
388 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
389
390         * mini.c: Handle type loading errors gracefully during compilation and
391         throw the appropriate exception.
392
393 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
394
395         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
396         for the mono binary.
397
398 2005-09-09  Martin Baulig  <martin@ximian.com>
399
400         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
401         the release.
402
403 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
404
405         * mini-arm.h: use emulation for conv.r.un for the release.
406
407 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
408
409         * mini-arm.c, objects.cs: more fixes and tests for them.
410
411 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
412
413         * mini-arm.c: align structures to at least 4 bytes to be able
414         to keep our current optimized memcpy.
415
416 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
417
418         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
419
420 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
421
422         * mini.c: ignore SIGPIPE.
423
424 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
425
426         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
427
428         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
429
430 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
431
432         * mini.h: Add prototype for mono_allocate_stack_slots_full.
433
434 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
435
436         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
437         exception handling support.
438         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
439         patch by Brian Koropoff <briank@marakicorp.com>).
440
441 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
442
443         * mini.c: revert another 'optimization' which breaks when
444         items on the eval stack need to be saved at a basic block end
445         (bug #75940).
446
447 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
448
449         * jit-icalls.c: for arrays, ensure we always provide
450         lower bounds.
451
452 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
453
454         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
455         
456         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
457
458 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
459
460         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
461         arguments in their original register.
462
463 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
464
465         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
466         memset/memcpy.
467
468         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
469         when ssapre is enabled.
470
471         * inssel-long.brg: Fix bug in previous patch.
472
473         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
474         multiplication by a constant.
475
476 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
477
478         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
479         icc.
480
481         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
482         saving registers.
483
484 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
485
486         * inssel-arm.brg: apply changes tested by Brian Koropoff
487         <briank@marakicorp.com>.
488
489 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
490
491         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
492         
493 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
494
495         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
496         to the same register if dreg is just a base register.
497         (print_ins): Improve printing of membase opcodes.
498
499         * inssel-x86.brg: Add optimized ldind(reg) rules.
500
501         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
502
503 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
504
505         * mini.c: when running under valgrind, set the stack bottom for
506         the GC at the actual approximate stack for the app (fixes running
507         mono with valgrind).
508
509 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
510
511         * mini.c: do no break at the first valuetype to init found
512         (fixes bug #75791).
513
514 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
515
516         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
517
518 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
519
520         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
521
522 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
523
524         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
525
526 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
527
528         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
529
530         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
531         code.
532
533         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
534         code.
535
536         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
537         methods.
538
539 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
540
541         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
542
543 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
544
545         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
546         in the tail recursion optimization.
547
548         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
549         debug info into the assembly file.
550
551         * iltests.il: Add test for filter regions.
552
553         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
554         initial stack of filter regions. Fixes #75755.
555
556 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
557
558         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
559         stack requirements.
560
561 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
562
563         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
564         the check for an already compiled method on non-ia64 platforms.
565         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
566         proper domain.
567
568         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
569
570         * inssel-x86.brg: Add some optimized call rules.
571
572 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
573
574         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
575         method here.
576
577         * mini.h mini-trampolines.c: Pass the trampoline argument to 
578         mono_arch_patch_delegate_trampoline.
579
580         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
581
582         * mini-trampolines.c: Fix build.
583
584         * mini-amd64.h: Add delegate trampolines.
585
586         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
587
588         * inssel-amd64.brg: Add optimized call rules.
589         
590         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
591
592         * inssel-ia64.brg: Add optimized ldind(reg) rules.
593
594 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
595
596         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
597         change.
598
599         * mini-ia64.c: Remove LMF fixmes.
600
601         * mini-ia64.h: Remove most fields from LMF.
602
603         * inssel-ia64.brg (stmt): Fix unaligned access errors.
604
605         * mini-trampolines.c: Add support for IA64 function descriptors.
606
607         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
608         for IA64 function descriptors.
609
610 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
611
612         * tramp-arm.c: patch the vtable for virtual calls. Added
613         support code to register/unregister the LMF.
614         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
615         more LMF work.
616
617 2005-08-19  Dick Porter  <dick@ximian.com>
618
619         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
620         bit value if needed.
621
622 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
623
624         * mini.c (mini_get_method): Move handling of wrapper data here.
625
626         * mini.c (mono_method_to_ir): Add support for dynamic methods.
627
628         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
629         virtual.
630
631         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
632         bblock->code does not remain empty.
633
634 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
635
636         * arrays.cs: Add regression test for #75832.
637
638         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
639         rules. Fixes #75832.
640
641         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
642         instruction scheduling.
643
644 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
645
646         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
647
648 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
649
650         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
651
652         * mini-codegen.c: Fix VC build.
653
654         * cpu-pentium.md: Increase length of atomic_exhange_i4.
655
656 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
657
658         * mini.h: fix signature for mono_register_opcode_emulation.
659
660 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
661
662         * mini.c: Get rid of most of the helper_sig_... constants using
663         mono_create_icall_signature ().
664
665 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
666
667         * jit-icalls.c (helper_ldstr): New helper function.
668
669         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
670
671         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
672         throw, load the string using a helper call instead of creating a string object.
673
674         * aot.c: Update after LDSTR changes.
675
676         * mini.h: Bump AOT file version.
677         
678         * aot.c: Save class size info into the AOT file. Print more statistics during
679         compilation.
680
681         * mini.h: Bump AOT file version.
682
683         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
684         ordering of disasm cases. Fixes #74957.
685
686 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
687
688         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
689         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
690         the generic code needed for the ARM port.
691
692 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
693
694         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
695         inssel-arm.brg: more ARM features and fixes.
696
697 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
698
699         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
700         ARM port work in progress.
701
702 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
703
704         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
705
706         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
707
708         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
709
710         * inssel.brg (mini_emit_memset): Add support for unaligned access.
711
712         * *-ia64.*: Ongoing IA64 work.
713         
714         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
715
716 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
717
718         * TODO: Remove out-of-data todo stuff.
719
720         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
721         dead code.
722
723         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
724
725         * mini.h: Bump corlib version.
726
727 2005-07-27  Martin Baulig  <martin@ximian.com>
728
729         * mini-codegen.c
730         (create_copy_ins): Added `const unsigned char *ip' argument; set
731         `copy->cil_code' from it.
732
733 2005-07-27  Martin Baulig  <martin@ximian.com>
734
735         * mini-exceptions.c (mono_handle_exception): Don't call
736         mono_debugger_handle_exception() for filters.
737
738 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
739
740         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
741         as well.
742
743 2005-07-26  Martin Baulig  <martin@ximian.com>
744
745         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
746
747         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
748         helper_compile_generic_method() if the method is actually virtual
749         and non-final.
750
751 2005-07-26  Martin Baulig  <martin@ximian.com>
752
753         * mini.c
754         (trampoline_code): Renamed to `mono_trampoline_code' and made it
755         public; this is now accessed directly by the debugger.
756         (mono_generic_trampoline_code): Removed.
757
758         * debug-mini.c
759         (mono_debug_init_method): Also add interncalls and wrappers.
760
761 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
762
763         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
764
765 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
766
767         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
768
769 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
770
771         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
772
773 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
774
775         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
776         getting TLS offsets on AMD64 too.
777
778 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
779
780         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
781
782 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
783
784         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
785         inssel-arm.brg, mini-arm.h: ARM port work in progress.
786
787 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
788
789         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
790
791         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
792         to mini.c.
793
794         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
795         mono_sparc_is_virtual_call ().
796         
797         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
798
799         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
800         trampoline parameters.
801
802         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
803         
804         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
805         to mono_arch_get_vcall_slot_addr.
806
807         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
808         trampoline code.
809
810         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
811
812 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
813
814         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
815
816 2005-07-19  Martin Baulig  <martin@ximian.com>
817
818         * exceptions-amd64.c (throw_exception): Call
819         mono_debugger_throw_exception() here like we're doing it on i386.
820
821 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
822
823         * mini-ia64.c: Add optimized TLS access support.
824
825 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
826
827         * mini-exceptions.c: Ongoing IA64 work.
828
829         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
830
831         * mini.c: Use the default optimization set when embedding. Fixes
832         #75194.
833
834 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
835
836         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
837         of trampolines to a separate file.
838
839         * mini-trampolines.c: New file.
840
841         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
842         separate file.
843         
844         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
845         amd64/ia64 code.
846
847         * mini-codegen.c: Fix cygwin build.
848
849 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
850
851         * mini.c: Add some minor changes needed by the IA64 port.
852
853         * *-ia64.*: Ongoing IA64 work.
854
855 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
856
857         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
858         trampolines into arch-independent and arch-dependent parts.
859
860         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
861
862 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
863
864         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
865
866         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
867         the xp-regalloc-branch for amd64.
868
869         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
870         xp-regalloc-branch for x86.
871
872 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
873
874         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
875
876 2005-07-06  Martin Baulig  <martin@ximian.com>
877
878         * mini.c
879         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
880         (mono_jit_runtime_invoke): Likewise.
881
882 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
883
884         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
885         on x86 too.
886         
887         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
888         without loading their metadata. Reorganize the file format so exception handling+
889         debug info is kept separate from normal method info. Create MonoJitInfo 
890         structures for methods lazily.
891
892         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
893         loading metadata.
894         (x86_class_init_trampoline): Patch AOT class init trampolines too.
895
896         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
897
898         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
899         in AOT code.
900
901         * mini.h: Bump AOT file version.
902
903 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
904
905         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
906
907 2005-07-01  Raja R Harinath  <rharinath@novell.com>
908
909         * Makefile.am (check-local): Call semdel-wrapper.
910
911 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
912
913         * mini-x86.c: Revert the last change as it seems to break the build..
914
915 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
916
917         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
918         
919         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
920
921 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
922
923         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
924         outside of the macro, so strange stuff doesn't happen with gcc4
925         (NEW_AOTCONST_TOKEN): Likewise.
926
927 2005-06-28  Martin Baulig  <martin@ximian.com>
928
929         * mini.c (mini_class_is_system_array): New static method; use this
930         instead of `klass->parent == mono_defaults.array_class' everywhere
931         since this also works for the new generic array class.
932
933 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
934
935         * inssel.brg: Remove warnings.
936
937 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
938
939         * mini-ia64.c: Ongoing IA64 work.
940
941         * basic-float.cs: Add float->i1 conversion test.
942
943         * iltests.il: Add conv.u4 test.
944
945 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
946
947         * inssel-long.brg: Fix bug caused by last change.
948
949 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
950
951         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
952         BSDs.  Allows the x86 JIT to work on OSX86
953
954 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
955
956         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
957         u4->i8 conversion.
958
959         * mini-ia64.c: Ongoing IA64 work.
960
961 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
962
963         * mini-ia64.c: Ongoing IA64 work.
964
965         * driver.c: Clean up jit_code_hash as well when using --regression.
966
967         * inssel-long.brg: Fix long->i4/u4 conversion rules.
968
969         * basic-long.cs: Add tests for long->u4 conversion.
970
971 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
972
973         * mini.c: Take mono_get_domainvar out of macros. This makes sure
974         that we do not depend on undefined C behavior: the order stuff
975         gets evaluated within an expression. Fixes mono when compiled on
976         GCC 4.
977
978 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
979
980         * *-ia64.*: Ongoing IA64 work.
981
982         * aot.c: Lower memory usage while loading AOT methods.
983
984         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
985
986         * mini.h: Bump AOT file format version.
987
988 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
989
990         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
991
992 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
993
994         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
995         not on callee assembly). Fixed some comments.
996
997 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
998
999         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
1000         it gets proper disassembly.
1001         (emit_method_info): Remove some dead code.
1002
1003         * mini.c (mini_method_compile): Allways allocate the GOT var in
1004         mono_method_to_ir for emulating opcodes.
1005
1006 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
1007
1008         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
1009         before freeing the code memory. Fixes #74990.
1010
1011         * objects.cs: Add regression test for #74992.
1012
1013         * liveness.c: Extend live ranges of arguments to the beginning of the
1014         method. Fixes #74992.
1015
1016         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
1017         so it points into the faulting instruction.
1018
1019 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
1020
1021         * jit-icalls.c (mono_imul_ovf): Add exception handling.
1022
1023         * *-ia64.*: Ongoing IA64 work.
1024
1025         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
1026
1027 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
1028
1029         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
1030
1031         * *-ia64.*: Ongoing IA64 work.
1032
1033 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
1034
1035         * basic-long.cs: Add tests for add/sub.ovf.
1036
1037         * basic.cs: Add tests for sub.ovf.
1038
1039         * *-ia64.*: Ongoing IA64 work.
1040
1041 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
1042
1043         * *-ia64.*: Ongoing IA64 work.
1044
1045         * basic.cs: Add conv.ovf.i4.un test.
1046
1047 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
1048
1049         * mini.c: (remove_block_if_useless) Fixed bug 75061.
1050         
1051 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1052
1053         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
1054
1055 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
1056
1057         * *-ia64.*: Ongoing IA64 work.
1058
1059 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
1060
1061         * trace.[ch]:
1062         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
1063
1064 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
1065
1066         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
1067
1068 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
1069
1070         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
1071
1072         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
1073         of a call is callable by a near call.
1074
1075 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
1076
1077         * mini-ia64.c: Ongoing IA64 work.
1078
1079 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
1080
1081         * genmdesc.c: Make the generated array non-static.
1082
1083         * inssel-long.brg: Fix LSHR_IMM rule.
1084
1085         * *-ia64.*: Ongoing IA64 work.
1086
1087         * *-ia64.*: Ongoing IA64 work.
1088
1089 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
1090
1091         * *-ia64.*: Ongoing IA64 work.
1092
1093         * *-ia64.*: Ongoing IA64 work.
1094         
1095         * mini-ia64.c: Ongoing IA64 work.
1096
1097         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
1098
1099 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
1100
1101         * objects.cs basic-calls.cs: Move some tests to objects.cs.
1102         
1103         * objects.cs basic-long.cs: Move some tests to objects.cs.
1104
1105 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
1106
1107         * *-ia64.*: Ongoing IA64 work.
1108
1109         * iltests.il: Add a new test.
1110
1111         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
1112         newobj. Fixes #75042.
1113
1114 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
1115
1116         * *-ia64.*: Ongoing IA64 work.
1117         
1118         * *-ia64.*: Ongoing IA64 work.
1119         
1120         * *-ia64.*: Ongoing IA64 work.
1121
1122         * basic.cs objects.cs: Move tests accessing static variables as well.
1123
1124         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
1125
1126 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
1127
1128         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
1129
1130         * driver.c: Always print failed tests.
1131
1132         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
1133         frame pointer.
1134
1135         * *ia64*: Ongoing IA64 work.
1136
1137 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
1138
1139         * basic.cs: Add tests for add.ovf. Fix warnings.
1140
1141 2005-05-18  Miguel de Icaza  <miguel@novell.com>
1142
1143         * driver.c (mono_main): Avoid crash if no argument is passed to
1144         --break;  Do not use g_error, but f_printf.   And fix all other
1145         ocurrences of the same crash.
1146
1147 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
1148
1149         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
1150         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
1151         Fixes #74742.
1152
1153 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
1154
1155         * *-ia64.*: Add beginnings of IA64 backend.
1156
1157         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
1158
1159 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
1160
1161         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
1162         Fixes #74925.
1163
1164         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
1165
1166         * mini-amd64.c: Fix a warning.
1167
1168 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
1169
1170         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
1171         in float_neg. Fixes #74897.
1172
1173         * mini-amd64.c (emit_call): Fix another near call bug.
1174
1175 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
1176
1177         * declsec.c: Keep the appdomain information in the structure. Added a 
1178         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
1179         value gets overwritten).
1180         * declsec.h: Set the default MonoArray for the the stack to 6. Added
1181         an MonoAppDomain member to MonoSecurityFrame.
1182         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
1183         used in the stack walk. Now use a MonoArray which grow (double) when
1184         it gets full.
1185
1186 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
1187
1188         * mini.c: Re-enabled runtime cleanup, since running threads should
1189         now properly stop when exiting.
1190
1191 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
1192
1193         * mini-codegen.c: New file contaning the arch-independent local
1194         register allocator. Not used by any architectures yet.
1195
1196         * mini.h linear-scan.c: Merge some changes from the 
1197         mini-xp-local-regalloc branch.
1198
1199 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
1200
1201         * mini-amd64.c (emit_call): Fix calls to native functions when the
1202         runtime is compiled as a shared library. Fixes #74756.
1203
1204         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
1205         on a literal field. Fixes #74751.
1206
1207 2005-04-25  Raja R Harinath  <rharinath@novell.com>
1208
1209         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
1210
1211 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
1212
1213         * objects.cs: Add missing null casting test.
1214
1215 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
1216
1217         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
1218         in wrapper methods. Also rename 'address' variable to 'offset'.
1219
1220 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
1221
1222         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
1223         warnings.
1224         
1225         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
1226
1227         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
1228         work on windows.
1229
1230 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
1231
1232         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
1233
1234 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
1235
1236         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
1237         just the last bytes.
1238
1239 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
1240
1241         * aot.c (mono_compile_assembly): Fix warning.
1242
1243         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
1244         by the _MSC_VER stuff.
1245
1246 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
1247
1248         * inssel-long.brg: Fix #74588.
1249
1250         * cpu-amd64.md: Fix #74591.
1251
1252         * iltests.il: Add new regression tests.
1253
1254 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
1255
1256         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
1257         valuetype.
1258
1259 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
1260
1261         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
1262
1263         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
1264         from Bill Middleton <flashdict@gmail.com>.
1265
1266 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
1267
1268         * arrays.cs: Add new regression test. Fix warnings.
1269
1270 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
1271
1272         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
1273         and leakage in CKFINITE.
1274
1275         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
1276         this to a null op since it is called on amd64 too.
1277
1278         * exceptions-amd64.c (get_throw_trampoline): Align stack.
1279
1280         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
1281         body since this is not used on amd64.
1282         
1283         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
1284
1285         * mini-amd64.c: Remove obsolete fixmes.
1286
1287         * mini.c (print_method_from_ip): Fix debugging support.
1288
1289 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
1290
1291         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
1292         so that expressions that don't give much gain are not reduced.
1293         * ssapre.h: Likewise.
1294
1295 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
1296
1297         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
1298
1299         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
1300
1301         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
1302
1303 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
1304
1305         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
1306
1307         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
1308
1309 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
1310
1311         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
1312         stack touching.
1313
1314         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
1315
1316         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
1317
1318         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
1319
1320         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
1321         MONO_ARCH_USE_SIGACTION. Fixes #74252.
1322
1323         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
1324
1325         * mini-x86.c: Fix up stack overflow handling.   
1326
1327         * exceptions.cs: Add new regression test.
1328
1329 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
1330
1331         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
1332         mono_jit_thread_attach.
1333
1334         * mini.c (mono_method_to_ir): Verify called method is not abstract.
1335
1336 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
1337
1338         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
1339         avoid calling constructors using callvirt.
1340
1341         * inssel.brg: Fix #74073.
1342
1343 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
1344
1345         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
1346         compilation with non-GCC compilers.
1347         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
1348         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
1349
1350 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
1351
1352         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
1353         klass->interface_offsets (will likely fix bug#74073).
1354
1355 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
1356
1357         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
1358
1359 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
1360
1361         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
1362         to amd64_div_reg_size ().
1363         
1364         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
1365
1366 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
1367
1368         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
1369
1370 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
1371
1372         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
1373
1374 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
1375
1376         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
1377         
1378         * mini.c (mono_precompile_assembly): Load and precompile referenced
1379         assemblies as well. Fixes #74015.
1380
1381 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
1382
1383         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
1384
1385 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
1386
1387         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
1388         a lot of checks and (anyway) permissions cannot work until corlib is 
1389         loaded.
1390
1391 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
1392
1393         * mini-ppc.c: fixed ABI issue on sysv/ppc.
1394
1395 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
1396
1397         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
1398         calls (fixes bug#72824).
1399
1400 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
1401
1402         * mini.c: fix tail recursion elimination (see test in bug#73936).
1403
1404 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
1405
1406         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
1407         some fp functions in sse2 mode.
1408
1409 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
1410
1411         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
1412
1413 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
1414
1415         * mini.h mini.c: Add mono_get_jit_tls_key ().
1416
1417         * mini-x86.c: Enable fast TLS support on windows.
1418
1419 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
1420
1421         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
1422         * mini.c: Check for p/invoke method when generating code. If a
1423         p/invoke method, or it's class, isn't decorated with [Suppress
1424         UnmanagedCodeSecurity] then generate code to call System.Security.
1425         UnmanagedDemand (only if the security manager is active).
1426
1427 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
1428
1429         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
1430         last change as it seems to cause strange crashes.
1431         
1432 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
1433
1434         * *.c: handle unsafe function pointers where needed.
1435
1436 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
1437
1438         * mini.c (mono_jit_free_method): Remove the fixme too.
1439
1440 2005-03-15  Miguel de Icaza  <miguel@novell.com>
1441
1442         * mini.c: As discussed, make the code actually free the delegate
1443         thunk now, to enable the debugging of delegate problems, use
1444         MONO_DEBUG=1 when running Mono. 
1445
1446         This takes also care of parts of the leaks as seen by Joe.
1447
1448 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
1449
1450         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
1451         thread_tls_offset calculation.
1452
1453 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
1454
1455         * declsec.c: Reworked linkdemand checks for icall. The previous code
1456         was using the declaration code (untrusted) and didn't work as expected
1457         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
1458         specific case.
1459
1460 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
1461
1462         * iltests.il: Add new localloc test.
1463
1464         * mini-amd64.c: Handle large stack allocations the same way as on
1465         windows if stack overflow handling is working.
1466         
1467         * mini-amd64.c: Allocate the signal stack using mmap.
1468
1469         * mini.c (sigsegv_signal_handler): Fix reading of context.
1470
1471         * mini-exceptions.c: Fix up stack overflow handling.
1472
1473         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
1474
1475         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
1476
1477         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
1478
1479         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
1480
1481         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
1482         tramp_init functions as they are no longer needed.
1483
1484 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
1485
1486         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
1487         
1488         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
1489
1490         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
1491         
1492         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
1493         support that now.
1494
1495         * mini-ops.h: Add OP_LMUL_IMM.
1496
1497         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
1498         long mul/div opcodes as intrinsic.
1499
1500         * mini-amd64.c (emit_call): Handle the case when the callee might be
1501         an AOT method.
1502
1503 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
1504
1505         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
1506         extra safe.
1507         
1508         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
1509
1510         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
1511
1512 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
1513
1514         * mini.c (mono_codegen): Don't leak here, to help people running
1515         monogrind.
1516
1517 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
1518
1519         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
1520         conversions in sse2 mode.
1521
1522         * basic-float.cs: Add regression test.
1523         
1524         * mini-amd64.c: Reenable sse2.
1525
1526 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
1527
1528         * mini-amd64.c: Disable sse2 until some regressions are fixed.
1529
1530 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
1531
1532         * driver.c: Copyright text should include 2005.
1533         
1534 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
1535
1536         * cpu-amd64.md (load_membase): Fix more max lengths.
1537
1538 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
1539
1540         * cpu-amd64.md (load_membase): Fix max length.
1541
1542         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
1543
1544         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
1545
1546         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
1547         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
1548
1549         * basic-float.cs: Add rounding regression test.
1550
1551         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
1552
1553 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
1554
1555         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
1556         structures in registers for pinvoke wrappers.
1557
1558 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
1559
1560         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
1561
1562 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
1563
1564         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
1565         wrapper to mono_jit_thread_attach.
1566
1567         * mini.c (mini_jit_thread_attach): New jit icall.
1568
1569         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
1570         native->managed wrappers.
1571
1572         * exceptions.cs: Add new regression test.
1573
1574         * mini.c (optimize_branches): Check regions in the cbranch to throw
1575         block case as well. Fixes #73242.
1576
1577 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
1578
1579         * mini.c: thread safety fixes.
1580
1581 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
1582
1583         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
1584         patching stuff, since delegates use jump trampolines so there is
1585         no caller.
1586
1587         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
1588         jump trampolines.
1589         
1590         * tramp-amd64.c: Fix build.
1591
1592         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
1593         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
1594
1595         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
1596         Rename this to mono_arch....
1597         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
1598
1599         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
1600
1601         * mini-amd64.c (emit_call): If both the caller and the callee is
1602         guaranteed to have 32 bit addresses, emit a normal call.
1603
1604         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
1605
1606         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
1607         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
1608         method_ptr inside delegates.
1609
1610 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
1611
1612         * mini.c (mono_jit_free_method): Free the method info even if the native code is
1613         invalidated. Fixes #73001.
1614
1615         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
1616
1617         * mini-x86.c: Only use stdcall for pinvokes on windows.
1618
1619 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
1620
1621         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
1622         * mini-x86.c: remove unreliable __thread var offset detection,
1623         use the correct accessors and enable by default.
1624
1625 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
1626
1627         * mini.c (mono_jit_free_method): Fix memory leak.
1628
1629 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
1630
1631         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
1632
1633 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
1634
1635         * cpu-amd64.md: Fix lengths of atomic opcodes.
1636
1637 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
1638
1639         * driver.c: try to not imply using ICU is any good.
1640
1641 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
1642
1643         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
1644         functions as inline ops.
1645
1646         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
1647         some Interlocked functions as inline ops.
1648
1649         * mini.c (move_basic_block_to_end): Fix bug in last patch.
1650
1651         * mini.h (MonoBasicBlock): Reorganize fields a bit.
1652
1653         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
1654
1655         * mini.c: Add support for OP_NOT_TAKEN.
1656
1657         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
1658         structures in registers for pinvoke wrappers.
1659
1660         * mini-amd64.c: Fix warnings.
1661
1662 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
1663
1664         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
1665
1666         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
1667
1668         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
1669         address instead of loading the address from it.
1670
1671         * mini-x86.c: Add support for returning small structs in registers
1672         on Win32. Fixes part of #70864.
1673         
1674 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
1675
1676         * trace.c (get_token): Improve error checking.
1677
1678 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
1679
1680         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
1681
1682 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
1683  
1684         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
1685         it can be reused for MonoClass.
1686         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
1687         _LINKDEMAND.
1688
1689 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
1690
1691         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
1692         instead of a MonoReflectionMethod. The method information wasn't used
1693         when displaying SecurityException details (but will be now).
1694
1695 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
1696
1697         * Makefile.am : windows build fix.
1698
1699 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
1700
1701         * iltests.il: Add new regression test.
1702
1703         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
1704         #72522.
1705
1706 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
1707  
1708         * mini.c: Moved linkdemand check into helper function check_linkdemand
1709         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
1710         LDFTN, LDVIRTFTN).
1711
1712 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
1713
1714         * declsec.c: Added statistics counter for different kinds of 
1715         LinkDemands.
1716         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
1717         (and commented) declaration.
1718         * mini.c: Added statistics counter for security Demand code 
1719         generation. Added display of security statistics.
1720
1721 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
1722
1723         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
1724         Fix compilation errors under gcc-2.95.
1725
1726 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
1727
1728         * mini.c, driver.c: Use the new jit trampoline hashtable
1729
1730 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
1731
1732         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
1733
1734 2005-02-11  Martin Baulig  <martin@ximian.com>
1735
1736         * debug-mini.c (mono_debug_close_method): Free the line number array.
1737
1738 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
1739
1740         * aot.c: Break up large methods into smaller ones. Share GOT slots for
1741         icalls.
1742
1743         * mini.h: Bump AOT file format version. 
1744
1745 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
1746
1747         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
1748         APTC and P/Invoke.
1749         * declsec.h: Added macros to get/set lazyly initialized security 
1750         informations about assemblies. Added new enum for different type of
1751         possible LinkDemand violation. Added function to check LinkDemands.
1752         * mini.h: Added a field to MonoCompile to hold any security violation
1753         detected when JITting a method (so it can be thrown later).
1754         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
1755         and CEE_CALLVIRT. Added code to throw exception at the end of
1756         mini_method_compile (note: the exception is unhandled right now).
1757
1758 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
1759
1760         * mini.c, jit-icalls.c: use the managed implementation of
1761         memset for initobj and memset, to avoid managed <-> unmanaged
1762         transitions.
1763
1764 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
1765
1766         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
1767         optimization if it would need a GOT var.
1768
1769         * basic.cs: Add tests for constant propagation and switch statements.
1770
1771         * ssa.c: Fix out-of-range constant propagation and switch statements.
1772
1773 2005-02-09    <vargaz@freemail.hu>
1774
1775         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
1776
1777 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
1778
1779         * cpu-amd64.md (load_membase): Fix max length of load_membase.
1780
1781 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
1782
1783         * mini.c: update to new signature of mono_class_get_allocation_ftn().
1784
1785 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
1786
1787         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
1788         arithmetic operations.
1789
1790 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
1791
1792         * mini-ppc.c: add a workaround for broken user code that
1793         DllImports vararg functions with non-vararg signatures.
1794
1795 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
1796
1797         * mini.c (mono_jit_compile_method_inner): Add detection and a 
1798         meaningfull error message for assemblies written in Managed C++.
1799
1800         * tramp-amd64.c mini-amd64.h: Add support for 
1801         create_trampoline_from_token ().
1802
1803         * aot.c mini-x86.c abcremoval.c: Applied patch from
1804         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
1805
1806 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
1807
1808         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
1809         which takes a MonoImage/token as parameter instead of a MonoMethod.
1810
1811         * aot.c: Use the new trampoline for initializing vtables.
1812
1813         * aot.c: Add support for ldfld/stfld_remote wrappers.
1814
1815         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
1816         rules for compare <MEM>, IMM.
1817
1818         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
1819
1820         * aot.c: Handle inherited finalizers correctly.
1821
1822 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
1823
1824         * inssel.brg (stmt): Add a missing _setup_... ().
1825
1826         * aot.c: Save some parts of the class state to the AOT file and use it
1827         to recompute that state when a class is initialized.
1828
1829         * mini.c: Install AOT hooks into the runtime.
1830
1831         * mini.h: Bump AOT file format version.
1832         
1833         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
1834         Fixes #72148.
1835
1836         * iltests.il: Add new test.
1837
1838 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
1839
1840         * mini.c: fix typo.
1841
1842 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
1843
1844         * mini.c: setup the statistical profiler in the thread attach
1845         callback to cope with the new single thread code.
1846
1847 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
1848
1849         * mini-ppc.c: ensure we have enough room for the profiler
1850         calls (fixed bug#72084).
1851
1852 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
1853
1854         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
1855         it.
1856
1857 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
1858
1859         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
1860
1861 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
1862
1863         * ssapre.c: Fixed an issue with down safety (this allows IronPython
1864         to succesfully execute parrotbench).
1865         * ssapre.h: Likewise.
1866
1867 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
1868
1869         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
1870         variable for stores to method arguments (fixes a SSAPRE issue).
1871
1872 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
1873
1874         * mini.c: handle value types in dup, fixes gen-112.cs.
1875
1876 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
1877
1878         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
1879         sequence for calls in dynamic methods to avoid thunks.
1880
1881 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
1882
1883         * mini.c: correctly remove dynamic methods from the hashtable.
1884
1885 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
1886
1887         * driver.c: Disabled SSAPRE until fix the bug that appears
1888         in IronPython's parrotbench.
1889
1890 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
1891
1892         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
1893
1894         * mini.c (mono_method_to_ir): Revert the previous change.
1895         
1896         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
1897         when AOT compiling.
1898
1899         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
1900         mono_jit_info_table_find () etc. when running under valgrind.
1901
1902         * inssel.brg: Fix warnings.
1903
1904         * mini-exceptions.c: Fix warnings.
1905
1906 2005-01-31  Martin Baulig  <martin@ximian.com>
1907
1908         * driver.c (compile_all_methods_thread_main): Don't try to compile
1909         generic methods or anything which has type parameters.
1910
1911 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
1912
1913         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
1914
1915         * TestDriver.cs: Add --verbose flags.
1916
1917         * graph.c ssa.c: Fix 64 bit warnings.
1918         
1919         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
1920         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
1921         Fix 64 bit warnings.
1922
1923         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
1924         variable not spotted by gcc.
1925         
1926         * mini-amd64.c inssel-amd64.brg: Applied patch from  
1927         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
1928         X86_COMPARE_MEMBASE opcodes.
1929
1930         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
1931
1932 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
1933
1934         * *: MonoMethod->signature might be NULL now. You *MUST* use
1935         mono_method_signature.
1936
1937 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
1938
1939         * driver.c (compile_all_methods_thread_main): Compile the methods
1940         without invoking cctors.
1941
1942 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
1943
1944         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
1945         * basic-calls.cs: test for the above.
1946
1947 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
1948
1949         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
1950         MonoJitInfo changes.
1951
1952 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
1953
1954         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
1955         eagerly if it contains dynamic methods.
1956         
1957         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
1958
1959         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
1960         trace, it is now computed by an icall from trace_ips.
1961         
1962         * mini-exceptions.c: Fix a warning.
1963
1964 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
1965
1966         * mini-exceptions.c: don't bother getting stack trace info if
1967         it's not going to be used.
1968
1969 2005-01-27  Raja R Harinath  <rharinath@novell.com>
1970
1971         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
1972         ssapre-mini-ops.h.
1973
1974 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
1975
1976         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
1977
1978         * aot.c: Avoid calling mono_method_get_header () if not needed.
1979
1980         * mini.h: Bump AOT file format version.
1981         
1982         * mini.c (mono_emit_native_call): Allocate a GOT var here.
1983
1984         * mini.c (mono_print_tree): Print more info for calls.
1985
1986 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
1987
1988         * declsec.h: Remove warning by adding missing include for marshal.h
1989
1990 2005-01-26  Martin Baulig  <martin@ximian.com>
1991
1992         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
1993         `ip' twice.
1994
1995 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
1996
1997         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
1998         flags.
1999
2000         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
2001
2002         * aot.c (mono_compile_assembly): Fix a warning.
2003
2004 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
2005
2006         * declsec.c: Look for security attributes on the original MonoMethod 
2007         (and not the wrapped one). This fix permissions on icalls.
2008
2009 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
2010
2011         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
2012
2013         * mini.c (mono_allocate_stack_slots): Add a fixme.
2014
2015         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
2016
2017 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
2018
2019         * inssel.brg: optimize casts of sealed types (more
2020         optimizations waiting for fixes in remoting).
2021
2022 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
2023
2024         * inssel.brg (stmt): Add another dummy rule.
2025
2026         * driver.c: Fix warnings.
2027
2028         * driver.c (mono_main): If running under valgrind, instruct glib to use
2029         the system allocation functions so valgrind can track the memory
2030         allocated by the g_... functions.
2031
2032         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
2033
2034         * mini-ops.h: Add OP_DUMMY_STORE opcode.
2035
2036         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
2037
2038         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
2039         variables in try regions.
2040
2041         * mini.c (mini_method_compile): Don't disable optimizations on large
2042         methods when AOT compiling.
2043
2044         * mini.c (mono_allocate_stack_slots): New arch independent method to 
2045         allocate stack slots. Not yet used.
2046
2047 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
2048
2049         * debug-mini.c (mono_debug_close_method): Plug some leaks.
2050
2051 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
2052
2053         * mini-ppc.c: make the branch info relative as the code
2054         buffer can be reallocated.
2055
2056 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
2057
2058         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
2059         * driver.c: Removed the AOT/security restriction. Now initialize the
2060         security manager (in metadata) if --security is used.
2061         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
2062         rather than the pointer to declarative security, when AOT is used.
2063
2064 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
2065
2066         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
2067         basic blocks, reduced intrinsic exception throwing code size.
2068
2069 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
2070
2071         * driver.c (mini_usage): Reorder the usage screen.
2072
2073 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
2074
2075         * mini.c (mono_resolve_patch_target): Fix warning.
2076
2077 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
2078
2079         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
2080         previous patch.
2081
2082         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
2083
2084         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
2085         breaks the amd64 build.
2086
2087         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
2088         register allocation. Fixes #71454.
2089
2090         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
2091
2092         * arrays.cs: Add new regression test.   
2093
2094 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
2095
2096         * ssapre.c: Turned usage of snprintf to GString.
2097         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
2098         (I left it on by mistake in my previous commit).
2099
2100 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
2101
2102         * mini.c, cfold.c, basic-calls.cs: preserve side effects
2103         on cond branch optimization (fixes bug# 71515).
2104
2105 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
2106
2107         * abcremoval.c: Fixed bug 71062.
2108         * abcremoval.h: Likewise.
2109
2110 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
2111
2112         * mini.c: Added a new functionality to optimize_branches, the removal
2113         of useless basic blocks, and fixed some problem in the removal of
2114         critical edges; some utility functions added for both purposes.
2115         * ssapre.c: Added complex expression support, and fixed bug 70637.
2116         * ssapre.h: Likewise.
2117         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
2118         enabled in SSAPRE.
2119         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
2120         * driver.c: Re-enabled SSAPRE.
2121
2122 2005-01-19  Martin Baulig  <martin@ximian.com>
2123
2124         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
2125         the result of mono_get_method_constrained().
2126
2127 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
2128
2129         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
2130         manager.
2131
2132 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
2133
2134         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
2135         be detected.  Fixes #59296.
2136
2137 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
2138
2139         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
2140         which can happen. Fixes #71361.
2141
2142 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
2143
2144         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
2145         manager.
2146
2147 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
2148
2149         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
2150         appdomain-unload.exe to fail.
2151         
2152         * mini.c: Fix some memory leaks.
2153
2154 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
2155
2156         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
2157         Fixed bug and sped up some codepaths.
2158
2159 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
2160
2161         * mini.c: Fix some memory leaks.
2162
2163         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
2164         conversion.
2165
2166         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
2167
2168         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
2169         #71320.
2170
2171         * iltests.il: Add regression test for #71320.
2172
2173 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
2174
2175         * mini.c (mono_codegen): Fix installation of profiler hooks.
2176
2177         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
2178
2179 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
2180
2181         * mini.h, mini.c, cfold.c: optimize access to enum
2182         readonly fields, too. Eval conditional branches if possible
2183         to perform unreachable code removal in more cases.
2184
2185 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
2186
2187         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
2188
2189         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
2190         code manager.
2191
2192         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
2193         WinXP DEP. Fixes #71244.
2194
2195 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
2196
2197         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
2198
2199 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
2200
2201         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
2202
2203 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
2204
2205         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
2206         changes.
2207
2208         * mini.h: Bump AOT version.
2209
2210         * mini.h (MonoCompile): Change exvar to a hash table.
2211
2212         * mini.c: Allocate a separate exvar for each handler block.
2213
2214         * mini.c: Get rid of the computation of filter_lengths, its not needed.
2215
2216         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
2217         ex var with the pending exception and only throw if the two are equal.
2218         Fixes #68552.
2219         
2220         * exceptions.cs: Add tests for rethrow and nested catch clauses.
2221
2222         * mini-x86.c: Fix warnings.
2223
2224         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
2225         used by all the ports now.
2226
2227         * aot.c: Add write-symbols and save-temps options.
2228
2229 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
2230
2231         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
2232
2233 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
2234
2235         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
2236         operations.
2237
2238         * tramp-s390.c: Check vtable slot belongs to the domain.
2239
2240         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
2241         as per other platforms.
2242
2243         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
2244
2245 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
2246
2247         * driver.c: we don't run the Main() code in a subthread anymore.
2248
2249 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
2250
2251         * mini.c: added experimental rtc support in the statistical
2252         profiler: if the user has the permission, more accurate statistics
2253         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
2254         The MONO_RTC value must be restricted to what the linux rtc allows:
2255         power of two from 64 to 8192 Hz.
2256
2257 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
2258
2259         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
2260
2261 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
2262
2263         * mini-ppc.c: better icache flush for smp.
2264
2265 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
2266
2267         * mini-amd64.c (emit_move_return_value): Fix memory leak.
2268
2269         * mini-x86.c (get_call_info): Add the get_call_info () code from the
2270         amd64 port, not yet used.
2271
2272 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
2273
2274         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
2275         a struct type.
2276
2277 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
2278
2279         * driver.c: Added --security option to activate the security manager.
2280         Right now this will allow code generation for declarative demands and
2281         is disabled when AOT is specified.
2282         * mini.c: Add code generation for declarative security demands.
2283         * mini.h: Add mono_use_security_manager as an extern gboolean.
2284
2285 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
2286
2287         * aot.c (mono_compile_assembly): Speed up compilation a bit by
2288         emitting more dense assembly code.
2289
2290         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
2291         exception throwing stuff.
2292
2293 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
2294
2295         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
2296         dead code.
2297
2298         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
2299         left in by mistake.
2300
2301         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
2302         fixed.
2303
2304         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
2305
2306         * tramp-*.c: Only patch vtable slots if the object is in the current
2307         domain. Fixes appdomain-unload.exe.
2308
2309         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
2310         
2311         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
2312         x86 branch.
2313
2314 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
2315
2316         * mini.c (reverse_branch_op): New helper function.
2317
2318         * mini.c (optimize_branches): Run the new optimization only on 
2319         platforms which support it. Also reverse all kinds of branches.
2320
2321         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
2322
2323         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
2324         a throw statement.
2325
2326         * mini.c (optimize_branches): Reverse not-equals branches if the false
2327         bblock is a throw. This happens a lot of time with argument checking in
2328         corlib.
2329
2330         * mini.c (mono_codegen): Add support for placing basic blocks after
2331         the function epilogue.
2332
2333         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
2334         function epilogue.
2335         
2336 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
2337
2338         * mini.c (setup_stat_profiler): Only set this up if the platform
2339         supports ITIMER_PROF.
2340
2341 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
2342
2343         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
2344         previous patch.
2345
2346         * inssel.brg: Fix a warning.
2347
2348 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
2349
2350         * mini.c: added support for statistical profiler 
2351         (run with: --profile=default:stat).
2352
2353 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
2354
2355         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
2356
2357         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
2358
2359         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
2360         related to global registers from the amd64 port.
2361
2362 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
2363
2364         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
2365
2366         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
2367         with global registers.
2368         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
2369
2370         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
2371
2372 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
2373
2374         * debug-mini.c (encode_value): Fix off-by-one.
2375
2376         * aot.c (encode_value): Likewise.
2377
2378         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
2379
2380 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
2381
2382         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
2383         AOT.
2384
2385         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
2386         
2387         * aot.c (emit_method_info): Increase size of temp buffer.
2388
2389         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
2390         the AOT case.
2391
2392 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
2393
2394         * aot.c (emit_method_info): Fix build.
2395         
2396         * aot.c: Further rework of the AOT file format to reduce the size of
2397         the method info data.
2398
2399         * mini.h: Bump AOT file format version.
2400
2401 2004-12-27  Martin Baulig  <martin@ximian.com>
2402
2403         * mini.c (mini_get_method): New static method; call
2404         mono_get_method_full() and mono_get_inflated_method().
2405         (mono_method_to_ir): Use mini_get_method() instead of
2406         mono_get_method_full(). 
2407
2408 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
2409
2410         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
2411
2412 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
2413
2414         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
2415
2416         * inssel-amd64.brg: Add some optimization rules.
2417
2418 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
2419
2420         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
2421         standard not GC'd stuff is fine.
2422
2423 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
2424
2425         * aot.c: Rework the AOT file format to get rid of most of the global
2426         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
2427
2428         * mini.h: Bump AOT file format version.
2429         
2430 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
2431
2432         * mini.h: Bump AOT file format version.
2433
2434         * aot.c (mono_aot_is_got_entry): New function to determine if an 
2435         address is inside a GOT.
2436
2437         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
2438
2439         * cpu-pentium.md: Increase the maximum size of some instructions which
2440         might involve a got access.
2441         
2442         * mini.c (get_method_from_ip): Another debug helper function.
2443
2444         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
2445         when got var accesses are created during the decompose phase.
2446
2447         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
2448
2449         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
2450         argument mini_compile_method and to MonoCompile, and use this to
2451         determine whenever a given method is compiled for AOT. This allows the
2452         other methods compiled during AOT compilation to be free of AOT stuff,
2453         so the backends does not need to add special support for them by
2454         creating a fake GOT etc.
2455
2456         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
2457         longer needed.
2458
2459 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
2460
2461         * mini.c (mono_method_to_ir): It turns out that some of the
2462         x-appdomain wrappers are lax with types, so just ignore this for
2463         all wrappers.
2464
2465         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
2466         at the vtable->klass. If it is non-shared code we can just use the
2467         vtable.
2468
2469 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
2470
2471         * mini-ppc.c: access MonoDomain from tls, too.
2472
2473 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
2474
2475         * declsec.c: Removed unused variable (and related warning ;-)
2476
2477 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
2478
2479         * iltests.il: New test for LDELEMA on an array of ref types.
2480
2481         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
2482         all ldelema's on reftypes.
2483         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
2484         it was the wrong place to put it.
2485
2486         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
2487         register to pop to make this cleaner, at the request of Paolo.
2488
2489 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
2490
2491         * mini-ops.h (OP_GETHASHCODE): New op.
2492
2493         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
2494
2495         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
2496         operation.
2497
2498         For a microbenchmark, this reduces the cost of Hashtable.get_Item
2499         by 25%.
2500         
2501         * mini-x86.c (mono_arch_output_basic_block): Rather than
2502
2503         add ebp, 4
2504
2505         Emit
2506
2507         pop edx
2508
2509         The first is 3 bytes while the second is 1. This saves 36 kb on
2510         mscorlib, quite a big saving. When bootstraping mcs, I was able to
2511         see a small boost because of icache locality.
2512
2513         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
2514
2515 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
2516
2517         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
2518         started code sharing with the generic code.
2519
2520 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
2521
2522         * mini-ppc.c, cpu-g4.md: added code for direct access to
2523         tls data slots.
2524
2525 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
2526
2527         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
2528          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
2529         to OP_TLS_GET.
2530
2531 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
2532
2533         * declsec.c|h: Added functions to cache the declarative stack modifiers
2534         in MonoJitInfo and to create a security frame from a MonoJitInfo 
2535         structure.
2536         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
2537         created. Register internal calls for System.Security.SecurityFrame::
2538         _GetSecurityFrame and _GetSecurityStack.
2539         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
2540         the definitions for the new stack walk/callback mechanism.
2541         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
2542         first security frame for LinkDemands and InheritanceDemands) and
2543         GetSecurityStack for Demands. Both use the new mono_walk_stack code
2544         from lupus.
2545         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
2546         walk initialization (lupus).
2547
2548 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
2549
2550         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
2551         idiom.
2552         (handle_loaded_temps): Do not create a temporary variable for
2553         things that we know are temps. They will never be modified.
2554         (mono_spill_call): Set MONO_INST_IS_TEMP
2555         (mono_emulate_opcode): ditto
2556         (emit_tree): ditto
2557         (mono_method_to_ir.CEE_DUP): ditto
2558
2559 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
2560
2561         * mini.c (type_to_eval_stack_type): Make this handle the void type
2562         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
2563         (emit_tree): use ip_in_bb to special case some common idioms
2564         Update all callers to pass in the IP.
2565         (mono_method_to_ir): Make CEE_CALL* do the above as well.
2566
2567         This gives us a nice 2% speedup in mcs bootstrap.
2568
2569         * mini-x86.c (peephole_pass): Peephole pass to make
2570         mov  [foo], eax
2571         push [foo]
2572
2573         into
2574
2575         mov [foo], eax
2576         push eax
2577
2578         * mini.c (ip_in_bb): new method.
2579         (mono_method_to_ir): use this method rather than doing the hash
2580         lookup ourselves.
2581
2582         * linear-scan.c (mono_linear_scan): When expiring actives, you
2583         don't need to keep around variables that expire on this
2584         instruction. This makes it so that:
2585              a = b + 1
2586         will turn into:
2587              store (ebx add (ebx, 1))
2588         which will become
2589              add ebx, 1
2590
2591 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
2592
2593         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
2594         combination to avoid doing two copies. Fix up problems with previous
2595         patch.
2596
2597         * mini.c: Fix 64 bit warnings.
2598
2599         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
2600
2601 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
2602
2603         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
2604         changes from the x86 code.
2605
2606         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
2607
2608 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
2609
2610         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
2611         throwing code to reduce its size, unify the AOT and non-aot code and 
2612         get rid of relocations in the AOT case.
2613
2614         * mini-x86.h mini.c exceptions-x86.c 
2615         (mono_arch_get_throw_corlib_exception): New arch specific function to 
2616         raise corlib exceptions which doesn't require relocations in the 
2617         caller.
2618
2619         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
2620
2621 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
2622
2623         * mini.c (mono_emit_method_call): Only allocate the got var when it is
2624         needed.
2625
2626         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
2627         in the AOT case.
2628
2629 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
2630
2631         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
2632         with add function when used from Inc/dec atomic 
2633         functions. Re-enabled optimization on x86.
2634         * mini-ops.h: renamed atomic_add functions to
2635         allow _add to match the Interlocked::Add and
2636         _add_next to match Interlocked::Inc/Dec.
2637
2638 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
2639
2640         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
2641         linking of BBs to the end BB, and enabled SSAPRE also with
2642         consprop and copyprop (which was prevented by that bug).
2643
2644 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
2645
2646         * mini-x86.c: disabling the Interlocked optimizing code. 
2647
2648 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
2649
2650         * aot.c (load_aot_module): Move reading of got_addr after the AOT
2651         file version check.
2652         
2653 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
2654
2655         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
2656         interlocked optimization due lack of support on x86, rewrote 
2657         exchange to take into account that base may be in eax.
2658         
2659         xsp works again; activated Interlocked optimizing code.
2660         
2661 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
2662
2663         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
2664
2665 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
2666
2667         * mini-ops.h: Add new opcodes.
2668
2669         * mini.h: Add new patch types. Add got_var to MonoCompile.
2670
2671         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
2672         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
2673         make it work with all kinds of patchable code.
2674
2675         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
2676         address of the GOT, and referencing entries in the GOT.
2677
2678         * mini.c: Add code to load the GOT address if needed by an opcode.
2679
2680         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
2681         independent AOT code on the x86 using an elf-style Global Offset Table.
2682
2683 2004-12-14  Raja R Harinath  <rharinath@novell.com>
2684
2685         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
2686
2687 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
2688
2689         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
2690         when running xsp.
2691
2692 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
2693
2694         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
2695         of Interlocked:Increment/Decrement/Add as inline ops.
2696         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
2697
2698 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
2699
2700         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
2701         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
2702
2703 2004-12-12  Duncan Mak  <duncan@ximian.com>
2704
2705         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
2706         again. `patch_info->table_size' is no longer valid after Zoltan's
2707         commit #37636.
2708
2709 2004-12-12  Martin Baulig  <martin@ximian.com>
2710
2711         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
2712         if we are the "real" method, ie. not an inlined method inside it.
2713
2714 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
2715
2716         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
2717         before we look in the special fields table. This fixes
2718         ../tests/thread-static-init.cs.
2719
2720 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
2721
2722         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
2723         for Array get_Rank and get_Length. Fixes bug #70465.
2724
2725 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
2726
2727         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
2728         separate structure to reduce the size of MonoJumpInfo.
2729
2730 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
2731
2732         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
2733
2734 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
2735
2736         * mini.c (mini_get_inst_for_method): Changed to allow ports
2737         to return a MonoInst instead of opcode 
2738         (renamed mini_get_opcode_for_method to better reflect the new functionality)
2739         
2740         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
2741         Allow ports to return a created MonoInst instead of op-code, will enable
2742         new optimizations.
2743         (renamed mini_get_opcode_for_method to better reflected the functionality)
2744
2745 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
2746
2747         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
2748
2749 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
2750
2751         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
2752         Fixes #69985.
2753
2754 2004-12-08  Martin Baulig  <martin@ximian.com>
2755
2756         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
2757         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
2758
2759 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
2760
2761         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
2762         correctly.
2763
2764         * exceptions.cs: Disable some tests which depend on properties of x86 fp
2765         arithmetic.
2766
2767 2004-12-08  Raja R Harinath  <rharinath@novell.com>
2768
2769         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
2770
2771 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
2772
2773         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
2774         bug introduced by the previous patch.
2775
2776 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
2777
2778         * mini-ppc.c, objectc.cs: handle large structs passed by value
2779         (fixes bug #69972).
2780
2781 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
2782
2783         * mini-ppc.c: OP_ARGLIST implementation from
2784         Geoff Norton  <gnorton@customerdna.com>.
2785
2786 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
2787
2788         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
2789         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
2790
2791 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
2792
2793         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
2794
2795 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
2796
2797         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
2798         support.
2799
2800 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
2801
2802         * mini-sparc.c: Zero out localled-ed memory.
2803
2804         * iltests.il: Add tests for zeroing out localloc-ed memory.
2805
2806 2004-12-04  Martin Baulig  <martin@ximian.com>
2807
2808         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
2809         mono_method_get_signature_full().       
2810
2811 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
2812
2813         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
2814         and some utility functions (always for SSAPRE), integrated SSAPRE.
2815         * mini.h: Likewise.
2816         * driver.c: Added ssapre option.
2817         * ssa.c: Small fix on OP_ARG handling.
2818         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
2819         * Makefile.am: Likewise.
2820
2821 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
2822
2823         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
2824         now in the xp code.
2825
2826         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
2827         icall.
2828
2829 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
2830
2831         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
2832         
2833         * cpu-s390.md : Increase instruction length of oparglist.
2834
2835         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
2836
2837 2004-11-30  Martin Baulig  <martin@ximian.com>
2838
2839         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
2840         virtual generic methods.  We call a special helper_compile_generic_method()
2841         icall to retrieve the method from the vtable, inflate and compile
2842         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
2843
2844         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
2845
2846 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
2847
2848         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
2849
2850 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
2851
2852         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
2853         Fixes #69929.
2854
2855 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
2856
2857         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
2858         platforms with PIC aot.
2859
2860 2004-11-28  Martin Baulig  <martin@ximian.com>
2861
2862         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
2863         Fixes gen-112.cs.
2864
2865 2004-11-28  Martin Baulig  <martin@ximian.com>
2866
2867         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
2868         the result of mono_type_get_underlying_type() to check whether
2869         we're byref.
2870
2871 2004-11-26  Martin Baulig  <martin@ximian.com>
2872
2873         * mini.c
2874         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
2875         in the g_assert().
2876
2877 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
2878
2879         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
2880         the same way as the other arguments so they won't get clobbered.
2881
2882         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
2883         calls through R11 since it is clobbered by the trampoline code.
2884
2885 2004-11-26  Raja R Harinath  <rharinath@novell.com>
2886
2887         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
2888         pick up in-tree mscorlib.dll.
2889
2890 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
2891
2892         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
2893
2894         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
2895         runtime data/code are now stored in a table similar to the GOT in ELF. 
2896         This allows the code itself to be position independent.
2897
2898         * aot.c: Fix loading of referenced assemblies after the lazy assembly
2899         loading changes.
2900
2901         * aot.c: Attach ELF type (object/function) directives to all global
2902         symbols.
2903
2904         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
2905
2906         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
2907
2908         * mini-amd64.h: Turn on PIC AOT code.
2909
2910         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
2911         returning the offset within an OP_AOTCONST instruction where the GOT
2912         offset needs to be added.
2913
2914         * mini.h: Bump AOT file format version.
2915
2916 2004-11-25  Martin Baulig  <martin@ximian.com>
2917
2918         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
2919         uninflated generic methods.
2920
2921 2004-11-25  Martin Baulig  <martin@ximian.com>
2922
2923         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
2924
2925 2004-11-24  Martin Baulig  <martin@ximian.com>
2926
2927         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
2928         original klass (this only applies for generic instances).
2929
2930 2004-11-24  Martin Baulig  <martin@ximian.com>
2931
2932         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
2933         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
2934         that array).
2935
2936 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
2937
2938         * mini.c (mono_method_to_ir): Disable inlining for methods containing
2939         localloc. Fixes #69678.
2940
2941         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
2942         
2943 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
2944
2945         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
2946         used SSE registers on pinvoke calls. Fixes #69774.
2947
2948 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
2949
2950         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
2951         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
2952
2953 2004-11-23  Raja R Harinath  <rharinath@novell.com>
2954
2955         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
2956         Refer directly to the mcs/ tree.
2957
2958 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
2959
2960         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
2961         Check if a trampoline for a synchronized method is required. 
2962
2963 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
2964
2965         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
2966         with localloc if needed. Throe arithmetric exception in
2967         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
2968         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
2969
2970 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
2971
2972         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
2973         types before switching on type.  Fixes #69622.
2974
2975 2004-11-19  Raja R Harinath  <rharinath@novell.com>
2976
2977         * Makefile.am (check-local): New.  Integrate into 'make check'.
2978         (MCS,RUNTIME): Define using in-tree mono and mcs.
2979         (ILASM): New.
2980         (%.exe): Use $(ILASM).
2981
2982 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
2983
2984         * mini-ppc.c: adjust initial prolog size (bug #69691).
2985
2986 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
2987
2988         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
2989         #69664.
2990
2991 2004-11-17  Raja R Harinath  <rharinath@novell.com>
2992
2993         * Makefile.am (clean-local): Rename from 'clean'.
2994
2995 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
2996
2997         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
2998         to mono_arch_is_int_overflow. 
2999         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
3000         SIGFPE events.
3001
3002 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
3003
3004         * declsec.c|h: New files to support declarative security attributes.
3005         Added function to check if a method has (applicable) security.
3006         * mini.c|h: Add check for declarative security attributes in
3007         mono_method_check_inlining.
3008         * Makefile.am: Added declsec.c and declsec.h to the build.
3009
3010 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
3011
3012         * mini.c, mini.h: update to keep dynamic code info per-domain.
3013
3014 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
3015
3016         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
3017         (mini_init): Get rid of it from here too.
3018
3019 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
3020
3021         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
3022         implemented OP_RETHROW (patch by Geoff Norton
3023         <gnorton@customerdna.com>).
3024
3025 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
3026
3027         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
3028         between appdomains.  Fixes appdomain-unload on PPC.
3029
3030 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
3031
3032         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
3033         mini-exceptions.c: handle the new wrapper types.
3034         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
3035         token value as a MonoClass* when compiling a wrapper.
3036         mono_jit_create_remoting_trampoline now takes an additional
3037         MonoRemotingTarget parameter.
3038         
3039 2004-11-10  Martin Baulig  <martin@localhost>
3040
3041         * mini.c (mono_method_to_ir): Use `generic_container->context'
3042         rather than creating a new one.
3043
3044 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
3045
3046         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
3047
3048         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
3049
3050 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
3051
3052         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
3053         the experimental aot cache stuff.
3054
3055 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
3056
3057         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
3058         mini-exceptions.c: update to exception clause structure changes.
3059
3060 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
3061
3062         * exceptions-x86.c (throw_exception): Fix warnings.
3063
3064         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
3065         for OP_RETHROW.
3066
3067 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
3068
3069         * exceptions-sparc.c (get_throw_exception): Really fix this.
3070
3071 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
3072
3073         * tramp-*.c: we no longer support icalls without wrappers, so
3074         a bit of code can be removed here
3075
3076 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
3077
3078         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
3079         patch.
3080
3081         * cpu-sparc.md: Add op_rethrow.
3082
3083         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
3084
3085         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
3086
3087         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
3088         * mini-ops.h: Add OP_RETHROW.
3089
3090         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
3091
3092         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
3093
3094 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
3095         
3096         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
3097         Makes the output much easier to read
3098
3099 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
3100
3101         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
3102         prevents another huge leak when compiling with ssa. Secondly, the
3103         performance of doing this rather than freeing the lists is much
3104         better. GList does a lock every time you allocate a list link,
3105         so that it can use a memory pool. So, it is better to just use
3106         a memory pool of our own.
3107         
3108         * ssa.c, linear-scan.c: replace g_list_remove_link with
3109         g_list_delete.  The remove one does not free the GList, so we were
3110         leaking memory. On -O=all --compile-all with corlib, this cut down
3111         3 MB of allocations.
3112
3113 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
3114
3115         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
3116
3117         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
3118
3119         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
3120         into a new function mono_create_jit_trampoline ().
3121
3122 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
3123
3124         * trace.c (get_spec): Allow tracing of classes without a namespace.
3125
3126 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
3127
3128         * mini.c: Fix pointer overwrite in mini_method_compile.
3129
3130 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
3131
3132         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
3133         The darwin ABI needs some special handling for 1 and 2 byte structs
3134         Lets use lbz/lhz instead of lwz everywhere.
3135         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
3136         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
3137         Use stb/sth for the former, and put the latter always on stack instead of in
3138         argument registers.
3139
3140 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
3141
3142         * trace.c (is_filenamechar): Add '_'.
3143
3144 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
3145
3146         * mini-s390.c: Fix prolog length to allow for large trace requirements.
3147
3148         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
3149
3150 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
3151
3152         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
3153         depends on libmonogc. Fixes #68805.
3154
3155 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
3156
3157         * mini.c (mono_jit_free_method): Provide extra information for
3158         this error.  Currently this leaks, but will be turned into a
3159         developer option in the future.
3160
3161 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
3162
3163         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
3164
3165 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
3166
3167         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
3168         boundary. Fixes reading of PATCH_INFO_R4 and R8.
3169         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
3170
3171 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
3172
3173         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
3174         trampolines for AOT code.
3175
3176 2004-10-22    <vargaz@freemail.hu>
3177
3178         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
3179         constructed types. Fixes #68136.
3180
3181 2004-10-21  Martin Baulig  <martin@ximian.com>
3182
3183         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
3184         if it returns true, unwind the stack to the call instruction.
3185
3186 2004-10-21    <vargaz@freemail.hu>
3187
3188         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
3189
3190         * mini.h: Bump AOT version number.
3191
3192         * objects.cs: Add another test for unbox trampolines.
3193
3194         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
3195         valuetype methods.
3196
3197 2004-10-20    <vargaz@freemail.hu>
3198
3199         * driver.c: Add SHARED to the set of optimizations tested.
3200
3201         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
3202
3203         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
3204         used by CEE_NEWARR.
3205
3206         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
3207
3208 2004-10-20  Martin Baulig  <martin@ximian.com>
3209
3210         * mini-exceptions.c (mono_handle_exception): Call
3211         mono_debugger_handle_exception() to tell the debugger about
3212         catch/finally clauses.
3213
3214 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
3215
3216         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
3217
3218         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
3219         #68447.
3220
3221 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
3222
3223         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
3224         methods as their native size, fixed bug #57543, #57545.
3225         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
3226         This saves a temporary register and mullw call down into 1 (minor perf
3227         increase for cases like sum = sum * 5;  This use to translate into:
3228             li r11,5
3229             mullw r28,r28,r11
3230         It now translates to
3231             mulli r28,r28,5
3232
3233 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
3234
3235         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
3236         #68388.
3237
3238 2004-10-11  Martin Baulig  <martin@ximian.com>
3239
3240         * mini.c (mono_method_to_ir): If we're a generic method, get the
3241         MonoGenericContainer from our MonoMethodNormal and create a
3242         MonoGenericContext from it.
3243
3244 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
3245
3246         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
3247
3248         * basic-long.cs: Add test for checked i8->i2 cast.
3249
3250 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
3251
3252         * inssel-ppc.brg: added a couple of speedup rules.
3253
3254 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
3255
3256         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
3257         to speed up rebuilds.
3258
3259 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
3260
3261         * mini-s390.c: Minor fix to OP_OR_IMM.
3262
3263 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
3264
3265         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
3266         better. Fixes appdomain-unload.exe on sparc.
3267
3268 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
3269
3270         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
3271         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
3272         see bug 67324.
3273
3274 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
3275
3276         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
3277
3278 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
3279
3280         * mini.c: Always generate a field read/write wrapper for members
3281         of the class MarshalByRefObject since the actual instance could
3282         be a CBO.
3283
3284 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
3285
3286         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
3287
3288 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
3289
3290         * driver.c mini.h trace.c: Move the setting of the main assembly into
3291         a separate function called mono_trace_set_assembly () and call it after
3292         actually loading the main assembly. Fixes #66872.
3293
3294 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
3295
3296         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
3297         using the code manager.
3298
3299 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
3300
3301         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
3302
3303 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
3304
3305         * cpu-amd64.md: Fix bug in previous patch.
3306         
3307         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
3308         #66650.
3309
3310 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
3311
3312         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
3313         mini-exceptions.c: updates for changed stack walk interface.
3314
3315 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
3316
3317         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
3318
3319 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
3320
3321         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
3322
3323 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
3324
3325         * driver.c (mini_regression_list): Do not call mono_assembly_close 
3326         since assemblies can't be unloaded.
3327         
3328 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
3329
3330         * cpu-amd64.md: Fix more instruction lengths.
3331
3332         * cpu-amd64.md: Fix lengths of some instructions.
3333
3334 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
3335
3336         * inssel.brg: Make the array ldelema check aot friendly.
3337
3338 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
3339
3340         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
3341
3342         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
3343
3344 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
3345
3346         * mini-x86.c: Fix build.
3347
3348         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
3349         mono_type_get_underlying_type () helper function to simplify code.
3350         
3351 2004-09-09  Martin Baulig  <martin@ximian.com>
3352
3353         * mini-amd64.c: Don't access `type->data.klass' directly, call
3354         mono_class_from_mono_type() instead since the type may be a
3355         generic instance.
3356
3357 2004-09-09  Martin Baulig  <martin@ximian.com>
3358
3359         * mini-amd64.c (get_call_info): Fix support for generic instances.
3360         (add_valuetype): Use mono_class_from_mono_type() to get the class
3361         since we can be a generic instance.
3362
3363 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
3364
3365         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
3366
3367 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
3368
3369         * liveness.c: reset spill costs on each scan: bug 62107
3370
3371 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
3372
3373         * exceptions-sparc.c (mono_arch_find_jit_info): remove
3374         unnecessary line that doesn't compile
3375
3376 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
3377
3378         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
3379         trampolines, make them call an error function so people can fix their
3380         code.
3381
3382 2004-09-06  Martin Baulig  <martin@ximian.com>
3383
3384         * mini.c (mono_method_to_ir): When initializing locals, handle a
3385         generic instances like a valuetype if it's a valuetype and like a
3386         class if it's a class.
3387
3388 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
3389
3390         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
3391         stack. Fixes #64674.
3392
3393         * exceptions.cs: Add test for unwinding of call arguments.
3394
3395 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
3396
3397         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
3398         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
3399         set the carry/borrow flag). The sparc and s390 implementations
3400         can now use optimized versions (and simplify the code). ppc bugfixes.
3401
3402 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
3403
3404         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
3405
3406 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
3407
3408         * inssel-amd64.brg: Remove leftover 32 bit rule.
3409
3410         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
3411
3412 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
3413
3414         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
3415         mono_arch_find_jit_info functions into a new function. Fix a memory
3416         leak.
3417
3418         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
3419         refactored code.
3420         
3421 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
3422
3423         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
3424         as well.
3425         
3426         * exceptions.cs: Add array size tests.
3427
3428         * mini.c: Allocate a separate icall wrapper for each arity of 
3429         mono_array_new_va. Fixes #59509.
3430
3431         * exceptions.cs: Add testcase for 64578.
3432
3433         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
3434
3435         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
3436         
3437 2004-09-02  Martin Baulig  <martin@ximian.com>
3438
3439         * mini.c (mono_method_to_ir): When initializing the locals, call
3440         handle_initobj() on the generic instance itself, not its
3441         underlying type.
3442
3443 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
3444
3445         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
3446         MonoJitInfo for dynamic methods.
3447
3448         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
3449
3450         * mini.c: Add support for freeing JIT data for dynamic methods.
3451         
3452 2004-09-01  Martin Baulig  <martin@ximian.com>
3453
3454         * mini-x86.c (is_regsize_var): Added support for generic
3455         instances.
3456         (mono_arch_emit_prolog): Make this compile again, use
3457         `x86_push_imm_template (code)'.
3458
3459 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
3460
3461         * mini-x86.c: make all push_imm instructions that get
3462         patched always emit the long form
3463
3464 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
3465
3466         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
3467         in a per-domain hash.
3468
3469         * mini-amd64.c (merge_argument_class_from_type): Handle generic
3470         types.
3471
3472 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
3473
3474         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
3475         work.
3476         
3477         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
3478         work.
3479
3480         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
3481         Beginnings of SSE2 support.
3482
3483         * exceptions.cs: Add more tests for checked int<->uint casts.
3484
3485 2004-08-28  Martin Baulig  <martin@ximian.com>
3486
3487         * mini-x86.c (mono_arch_instrument_epilog): Added support for
3488         generic instances.
3489
3490         * mini.c
3491         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
3492         Handle generic instances recursively.
3493
3494 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
3495
3496         * iltests.il: test for conv.u8 on a constant
3497
3498 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
3499
3500         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
3501         LCONV_x4 (shrun_32 (membase)).
3502
3503 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
3504
3505         * inssel-x86.brg: c&p rules for push/setret of long
3506
3507 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
3508
3509         * inssel-x86.brg: c&p rules for compare (base, regvar) and
3510         compare (regvar, base)
3511
3512         * inssel-x86.brg: more burg love
3513
3514         * inssel.brg: more cleanup
3515
3516         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
3517
3518 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
3519
3520         * basic-long.cs, basic-calls.cs: new tests for optimization.
3521
3522 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
3523
3524         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
3525         patch.
3526
3527 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
3528
3529         * mini-amd64.c (read_tls_offset_from_method): Add another case.
3530         
3531 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
3532
3533         * inssel.brg (mini_emit_memcpy): use 
3534         NO_UNALIGNED_ACCESS to disable memcpy optimization
3535
3536 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
3537
3538         * mini-amd64.c: Handle generic types in various places.
3539
3540         * mini.c (mono_method_to_ir): Handle generic types in init locals.
3541
3542 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
3543
3544         * mini.c (handle_box): Fix warning.
3545
3546         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
3547
3548         * mini-amd64.h: Enable the emit_state optimization.
3549
3550         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
3551
3552         * mini-amd64.c: Add some new 64 bit peephole opts.
3553
3554         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
3555
3556         * cpu-amd64.md: sreg1 of div instructions must be %rax.
3557
3558         * mini-amd64.c: Register allocator fixes.
3559
3560         * mini.c: Add an optimization to emit_state to avoid allocation of new
3561         registers on some platforms.
3562
3563 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
3564
3565         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
3566
3567         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
3568         allocation. Fixes #63085.
3569
3570         * basic-long.cs: Add new regression test.
3571
3572         * mini-amd64.c: Register allocator improvements.
3573
3574 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
3575
3576         * mini-amd64.c (read_tls_offset_from_method): Add another code
3577         sequence.
3578
3579         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
3580         instruction sequence for nullifying class init trampolines.
3581
3582         * objects.cs: Add new regalloc test.
3583
3584         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
3585
3586 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
3587
3588         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
3589         
3590         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
3591         arguments.
3592
3593         * driver.c: Fix profiling after TLS changes.
3594         
3595         * driver.c (mono_main): Set mono_stats.enabled if needed.
3596
3597         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
3598         CEE_BOX.
3599
3600 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
3601
3602         * mini-x86.c: use a 1 op rather than a 2 op tls access
3603         instruction -> faster.
3604
3605 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
3606
3607         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
3608         x86 backend.
3609
3610 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
3611
3612         * exceptions-sparc.c (throw_exception): fix typo
3613
3614 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
3615
3616         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
3617         set tree->dreg correctly with tls. Allow any
3618         register to be used.
3619
3620         * mini-x86.c (read_tls_offset_from_method): add new code
3621         generation pattern seen with GCC.
3622
3623
3624 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
3625
3626         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
3627         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
3628         exceptions-sparc.c: fix some performance issues in exception
3629         handling and setting of the stack trace for exceptions that were
3630         already thrown.
3631
3632 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
3633
3634         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
3635         x86 backend.
3636         
3637         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
3638         registers.
3639
3640 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
3641
3642         This patch inlines tls access, when possible.
3643         
3644         * mini.h: new arch functions for TLS intrinsics.
3645         All platforms updated with a stub.
3646
3647         * mini.c: use the new intrinsics
3648
3649         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
3650         arch specific intrinsic for tls variables
3651
3652 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
3653
3654         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
3655         under windows.
3656
3657 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
3658
3659         * mini.c: thread local allocation
3660
3661 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
3662
3663         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
3664
3665         * Makefile.am: Link against the static version of libmonogc.
3666         
3667         * Makefile.am: Link the static versions of the convenience libraries
3668         into the mono executable.
3669
3670         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
3671
3672 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
3673
3674         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
3675         on integer overflow.
3676
3677         * mini-amd64.c: Reorganize function call code.
3678
3679         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
3680
3681 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
3682
3683         * inssel-x86.brg: use xor eax,eax.
3684         
3685         * basic.cs: new tests
3686
3687 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
3688
3689         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
3690         in exception throwing code.
3691         
3692 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
3693
3694         * inssel-x86.brg: use xor esi,esi.
3695
3696 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
3697
3698         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
3699         can trace methods compiled during mini_init () too.
3700
3701         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
3702         CEE_CONV_U4.
3703
3704 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
3705
3706         * Makefile.am: static link on x86 (r=zoltan)
3707
3708 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
3709
3710         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
3711         code since it causes some programs to fail.
3712
3713 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
3714
3715         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
3716
3717 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
3718
3719         * mini.c: ovfops_op_map - add STACK_OBJ case for
3720         CONV_I 
3721         * basic.cs: add test_0_pin_string as test
3722         case for above.
3723
3724 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
3725
3726         * Makefile.am: build C# if srcdir != builddir
3727
3728 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
3729
3730         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
3731         fall-through blocks.
3732
3733 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
3734
3735         * driver.c: enable loop by default again and include abcrem in -O=all.
3736
3737 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
3738
3739         * iltests.il: Add some localloc tests.
3740
3741         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
3742
3743         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
3744         Fixes #62574.
3745
3746         * inssel-amd64.brg: Add some optimizations.
3747
3748         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
3749         for gcc-3.4.
3750
3751         * Makefile.am: Statically link mono against libmono on AMD64.
3752         
3753         * mini-amd64.c inssel-amd64.brg: Optimizations.
3754
3755 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
3756
3757         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
3758
3759         * tramp-amd64.c: Patch calling code in trampolines.
3760
3761 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
3762
3763         * mini-amd64.c: pinvoke struct passing fixes.
3764
3765 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
3766
3767         * mini-sparc.c: redo change, make mono_arch_cpu_init call
3768         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
3769
3770 2004-08-05  Duncan Mak  <duncan@ximian.com>
3771
3772         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
3773         CEE_LDELEM_ANY.
3774
3775 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
3776
3777         * mini-amd64.c (emit_move_return_value): Move return value for normal
3778         calls too.
3779
3780 2004-08-05  Martin Baulig  <martin@ximian.com>
3781
3782         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
3783         `type->type'; just modify `type' itself when dealing with enums
3784         and generic instances.
3785         (check_call_signature): Make `simple_type' a `MonoType *'.
3786
3787 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
3788
3789         * mini.c: Use OP_PADD to add offsets to addresses.
3790
3791         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
3792
3793 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
3794
3795         * mini-sparc.c (mono_arch_emit_epilog): fix check
3796         for folding last op into restore instruction
3797
3798 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
3799
3800         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
3801         helper methods using the code manager.
3802         
3803         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
3804
3805         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
3806
3807 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
3808         
3809         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
3810           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
3811
3812         * mini-s390.c: fix tail processing
3813
3814 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
3815
3816         * mini-ppc.c: mul.ovf.un exception name fix.
3817
3818 2004-08-03  Martin Baulig  <martin@ximian.com>
3819
3820         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
3821         instances; before jumping to `handle_enum', also modify `ptype'.
3822
3823 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
3824
3825         * cpu-sparc.md: fcall maximal length too small.
3826
3827 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
3828
3829         * mini-amd64.c mini.h: Add initial support for passing/returning 
3830         structures to/from pinvoked methods.
3831
3832 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
3833
3834         * mini-ppc.c: reg allocator fix.
3835
3836 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
3837
3838         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
3839
3840         * inssel.brg: Optimize memset on 64 bit machines.
3841
3842         * mini-amd64.c: Fix some vararg cases.
3843
3844 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
3845
3846         * mini-s390.c: Corrected macro in emit_float_to_int
3847
3848         * s390-abi.cs: Tests to exercise the s390 ABI
3849
3850 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
3851
3852         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
3853         caller saved regs.
3854
3855         * basic.cs: Add a test for add.ovf.un.
3856
3857 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
3858
3859         * mini-sparc.c: add case for OP_IDIV_UN
3860
3861 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
3862
3863         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
3864         
3865         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
3866
3867 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
3868
3869         * basic.cs: regression tests.
3870
3871         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
3872         regressions.
3873
3874 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
3875
3876         * basic.cs: Add a new test.
3877
3878         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
3879         and AOT. Various fixes and optimizations.
3880
3881         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
3882
3883 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
3884
3885         * mini-ppc.c: make sure temp regs are not used for global reg
3886         allocation.
3887
3888 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
3889
3890         * cpu-sparc.md: conv_i8 fix for 64bits
3891
3892         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
3893
3894 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
3895         
3896         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
3897         add opcode for cmp BYTE PTR [eax], imm.
3898
3899         * inssel.brg: Make memcpy and memset takes bases.
3900
3901 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
3902
3903         * *-amd64.*: More AMD64 work.
3904         
3905 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
3906
3907         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
3908         add a compare-not-equal opcode.
3909         
3910 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
3911
3912         * mini.c: Use mono_init_from_assembly instead of mono_init.
3913         
3914 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
3915
3916         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
3917
3918         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
3919
3920         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
3921
3922         * inssel.brg: 64 bit fixes.
3923
3924         * mini.h (MonoCallInst): Add some AMD64 specific data.
3925
3926         * mini.h: Add some OP_P opcodes.
3927
3928 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
3929
3930         * basic.cs: tests for 61797 and 61740
3931
3932 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
3933
3934         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
3935         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
3936
3937 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
3938
3939         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
3940
3941         * *-amd64*.*: Ongoing AMD64 work.
3942
3943 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
3944
3945         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
3946
3947         * *-amd64*: Ongoing AMD64 work.
3948
3949         * mini-arch.h: Add AMD64 support.
3950
3951         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
3952
3953         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
3954
3955         * mini-ops.h: Add new opcodes.
3956
3957         * Makefile.am: Add AMD64 support.
3958
3959         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
3960         rules into the inssel-long*.brg files.
3961
3962         * *-amd64.*: Add beginnings of AMD64 backend.
3963
3964 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
3965
3966         * mini.c (print_dfn): commenting out the code that prints
3967         the cil. With -O=deadce, this makes -v -v crash.
3968         
3969         * cpu-pentium.md: make checkthis have a length of 2
3970
3971 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
3972
3973         * mini-sparc.h: fix implementations of __builtin
3974         functions for Sun compiler for V9.
3975
3976 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
3977
3978         * mini.c: use the new stelem.ref wrapper
3979         * exceptions.cs, arrays.cs: new stelem.ref tests
3980
3981 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
3982
3983         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
3984         new XSP should work with these changes).
3985
3986 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
3987         
3988         * inssel-{long32,x86,}.brg: trivial optimizations.
3989         
3990 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
3991
3992         * mini.c: load value when emitting box operation in
3993         constrained calls.
3994
3995 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
3996
3997         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
3998         is one byte shorter than cmp DWORD PTR [eax], 0.
3999
4000 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
4001
4002         * inssel-ppc.brg: arguments on the stack are always
4003         relative to the stack pointer (spotted by Neale Ferguson).
4004
4005 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4006
4007         * exceptions-x86.c: delay appending the method name to the trace until
4008         after mono_jit_info_table_find is called, as this gets the real
4009         MonoMethod.
4010
4011 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
4012
4013         * aot.c: register roots
4014
4015 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
4016
4017         * aot.c : I could just use PLATFORM_WIN32 flag.
4018
4019 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
4020
4021         * aot.c : Reverting the previous fix. This time it broke linux build.
4022
4023 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
4024
4025         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
4026
4027 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
4028
4029         * mini.c (handle_stack_args): Remove some more debugging code.
4030         
4031         * mini.c (handle_stack_args): Remove debug output left in by mistake.
4032
4033         * driver.c mini.h aot.c: Allow additional options to be specified with
4034         --aot and pass them to mono_compile_assembly.
4035
4036         * aot.c: Add experimental code to AOT compile all loaded assemblies
4037         on demand and save the code into a cache in the filesystem.
4038
4039         * aot.c: Add support for more wrapper methods.
4040         
4041         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
4042         58863.
4043
4044         * cpu-*.md: Remove removed opcodes.
4045
4046         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
4047         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
4048         related icalls to marshal.c.
4049
4050 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
4051
4052         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
4053
4054         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
4055
4056         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
4057
4058 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
4059         * liveness.c: If liveness is recomputated we need to reset the information
4060         for each variable. This way, if the liveness range has been narrowed
4061         by optimizations that happened after the last computation, we can return
4062         a smaller range.
4063         
4064         For example, if you have
4065         
4066         {
4067                 int i = 0;
4068                 
4069                 // Tons of code that does not affect i
4070                 
4071                 i = foo ();
4072                 ...
4073         }
4074         
4075         i = 0 is dead code and will be removed by SSA. However, when
4076         linear scan gets to the code, i will still appear to be live
4077         throughout the entire block. This prevents good register allocation.
4078
4079 2004-07-06  Martin Baulig  <martin@ximian.com>
4080
4081         * debug-mini.c (mono_debug_init_method): Allow
4082         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
4083         (mono_debug_add_icall_wrapper): New method.
4084
4085         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
4086
4087 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
4088
4089         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
4090         optimization.
4091
4092 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
4093
4094         * aot.c (mono_aot_load_method): Fix loading of debug info.
4095
4096 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
4097
4098         * aot.c: Add logging support.
4099
4100 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
4101
4102         * mini.h: Add prototype for mono_print_method_from_ip.
4103
4104         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
4105
4106         * inssel.brg: 64 bit fixes.
4107
4108         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
4109         inssel-long32.brg.
4110
4111         * Makefile.am: Add SPARC64 support.
4112
4113 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
4114
4115         * aot.c: Fix alignment problems on 32 bit platforms.
4116
4117 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
4118
4119         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
4120         SPARC64.
4121
4122         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
4123         problems.
4124
4125         * mini.h: Bump AOT file version. Some 64 bit fixes.
4126
4127 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
4128
4129         * inssel-sparc.brg: Add new rule to avoid register moves.
4130
4131         * inssel.brg: Add ldind_to_load_membase helper function.
4132
4133 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
4134
4135         * mini.c: OffsetToStringData intrinsic.
4136         
4137 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
4138
4139         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
4140
4141         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
4142         regression tests.
4143
4144         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
4145 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
4146
4147         * mini.c: reinstated mono_compile_get_interface_var()
4148         on x86, too, since the change breaks the Gtk# build there as well.
4149
4150 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
4151
4152         * driver.c: remove loop from the default optimizations: it seems to
4153         interact badly with some of the other options (see bug #60613).
4154
4155 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
4156
4157         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
4158         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
4159
4160 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
4161
4162         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
4163         vararg-using methods.
4164
4165 2004-06-21  Martin Baulig  <martin@ximian.com>
4166
4167         * mini/mini-exceptions.c
4168         (mono_handle_exception): Added `gpointer original_ip' argument.
4169         After calling mono_unhandled_exception(), call
4170         mono_debugger_unhandled_exception() and if that returns true,
4171         restore the context and return.
4172
4173 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
4174
4175         * mini-ppc.c: prefer the use of relative branches so
4176         they won't need to be patched in aot code (patch from Patrick Beard).
4177
4178 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
4179
4180         * aot.c: patch from Patrick Beard to make the output assembly
4181         more correct for the MacOSX assembler. Small tweak to
4182         generate sane images on Linux/PPC, too.
4183
4184 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
4185
4186         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
4187         case until bug #59509 is fixed (shows up in #60332).
4188
4189 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
4190
4191         * mini.c: make sure the needed wrappers are compiled, too, with
4192         precomp.
4193
4194 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
4195
4196         * driver.c: remove NPTL reference in --version output.
4197
4198 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
4199
4200         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
4201         generate valid assembly for the Mach-O assembler.
4202
4203 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
4204
4205         * driver.c: don't include abcrem in the all optimization specifier
4206         since it slows down jit compilation too much for now.
4207
4208 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
4209
4210         * mini.c: use BIGMUL only if both operands have the same signage.
4211         * iltests.il: Test for bug 60056. (errors related to signage in
4212         BIGMUL).
4213
4214         r=lupus.
4215
4216 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
4217
4218         * mini.c, aot.c: memory leak fixes.
4219
4220 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
4221
4222         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
4223
4224 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
4225
4226         * Makefile.am: remove the -static hack completely, it links in
4227         statically glib as well.
4228
4229 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
4230
4231         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
4232         * exceptions.cs: make it compile with new mcs/csc.
4233
4234 2004-06-03 Massimiliano Mantione <massi@ximian.com>
4235         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
4236         and added relevant test case.
4237
4238 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
4239
4240         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
4241         regressions in gtk-sharp.
4242
4243 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
4244
4245         * exceptions.cs: New regression tests.
4246
4247         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
4248
4249 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
4250
4251         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
4252
4253 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
4254
4255         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
4256
4257         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
4258
4259 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
4260
4261         * mini.c (mono_jit_runtime_invoke): Init class in this
4262         method instead of trusting mono_jit_compile_method to
4263         do the work (because wrappers can be in object class)
4264
4265 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
4266
4267         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
4268
4269         * basic-long.cs: New regression test.
4270
4271 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
4272
4273         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
4274         and div/rem checks.
4275
4276 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
4277
4278         * Makefile.am: fix miguel's change to build mono statically against
4279         libmono (track build dependencies).
4280
4281 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
4282
4283         * cfold.c: Some glib versions do not have G_MININT32.
4284
4285 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
4286
4287         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
4288         with precision of tan, atan, sin and cos, and implemented related
4289         regressions tests (fixes bug 54467, but one new problem appeared and
4290         is not fixed yet).
4291
4292 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
4293
4294         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
4295
4296         * exceptions.cs: Add test for constant folding && division by zero.
4297
4298         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
4299         since driver.c is in libmono too, so the optimization was useless.
4300
4301         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
4302         variable to driver.c so the compiler can emit more efficient code to
4303         access them.
4304
4305 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4306
4307         * Makefile.am: don't distribute generated inssel.[ch] files.
4308
4309 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
4310
4311         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
4312         into the default appdomain. Fixes #58707.
4313
4314         * jit-icalls.c: Remove the broken approximation for truncl, doing
4315         no conversion is better.
4316
4317         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
4318         Fixes #58863.
4319
4320 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
4321
4322         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
4323         of the mcrxr instruction which is not available on some processors
4324         even if it's documented to be. Implement add and sub overflow correctly
4325         (still not complete for long unsigned). Speed up icalls a bit.
4326
4327 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
4328
4329         * mini.c (mono_jit_compile_method_with_opt): Make sure that
4330         we run .cctor in the current domain instead of target_domain.
4331         
4332         Fixes bug #58558, .cctor not being called in -O=shared.
4333
4334 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
4335
4336         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
4337
4338 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
4339
4340         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
4341         which can be done with an imm8, do it that way.
4342         (mono_arch_output_basic_block): ditto for a jmp
4343         (mono_arch_emit_prolog): Computate maximum offset of a label.
4344
4345 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
4346
4347         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
4348         now tries to allocate prefered physical reg's for virtual
4349         regs. This reduces the number of emited spills/loads with
4350         20-30% on our core assemblies.
4351
4352 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
4353
4354         * jit-icalls.c: truncl() is not needed and trunc() is
4355         the correct thing to do anyway (bug #58287).
4356
4357 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
4358
4359         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
4360         if available.
4361
4362 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
4363
4364         * driver.c: enable loop optimizations by default.
4365
4366 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
4367
4368         * mini-x86.c: fix calc of max loop size when aligning loops start.
4369
4370 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
4371
4372         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
4373         the stack.
4374
4375 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
4376
4377         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
4378         should set carry.
4379
4380         * basic-long.cs: Add tests for add/subtract of immediates with carry.
4381
4382         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
4383         
4384         * mini.c (inline_method): Allways inline some wrappers even if the cost
4385         is too large. Fixes #58785.
4386
4387         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
4388         
4389 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
4390
4391         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
4392         (crichton@gimp.org). Beginning of support for sparc/linux.
4393
4394         * mini-sparc.c: Optimize retrieval of LMF address.
4395
4396 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
4397
4398         * exceptions-ppc.c:  handle alloca in methods with clauses.
4399
4400 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
4401
4402         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
4403
4404 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
4405
4406         * mini.c: Delegate most of the abort signal work to 
4407           mono_thread_request_interruption, which also handles Stop and Suspend
4408           states.
4409
4410 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
4411
4412         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
4413         supports the save/restore lmf opcodes.
4414
4415 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
4416
4417         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
4418         by gcc-3.4 as well.
4419
4420         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
4421
4422 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
4423
4424         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
4425         methods which contain array accesses.
4426
4427         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
4428         boundaries. Fixes #58537.
4429
4430         * iltests.il: Add regression test for #58537.
4431
4432 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
4433
4434         * mini-x86.c (mono_arch_local_regalloc): Last part of
4435         fix for bug #58633 (releasing register to early).
4436
4437 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
4438
4439         * basic-long.cs: Add new regression test.
4440
4441 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
4442
4443         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
4444         register too early on the chain.
4445
4446 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
4447
4448         * mini.c (create_helper_signature): Use a helper function to reduce
4449         the code which needs to be written. Also set the calling convention of
4450         icalls on windows. Fixes #57840.
4451
4452 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
4453
4454         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
4455         exceptions-ppc.c: added helper function to get the instruction address
4456         from a signal handler context.
4457
4458 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
4459
4460         * helpers.c: use g_get_tmp_dir. Invokes happyness 
4461         from gonzalo.
4462
4463 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
4464
4465         * helpers.c: Add new env variable to pass args to objdump.
4466         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
4467
4468 2004-05-17  Radek Doulik  <rodo@ximian.com>
4469
4470         * Makefile.am (common_sources): added abcremoval.h so it get
4471         disted and daily mono packages on go-mono.com will build again
4472
4473 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
4474
4475         * abcremoval.c: Fixed coding style, added copyright header.
4476
4477         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
4478
4479         * mini.h: Added prototype for abc removal main function.
4480
4481         * build_relations_propagation_table.pl: Added copyright header.
4482
4483 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
4484
4485         * basic-long.cs: reg test for complex ceq_long bug.
4486
4487 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
4488
4489         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
4490         reg in long and clob case (bug #58343). Fixed/added comments.
4491
4492 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
4493
4494         * mini.c (mono_jit_runtime_invoke): Follow new convention
4495         of calling the invoke method with an function pointer.
4496
4497 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
4498
4499         * ChangeLog: Fix author of memory leak patch.
4500
4501 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
4502
4503         * Makefile.am: fix make dist as well...
4504
4505
4506 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
4507
4508         * cfold.c: Made so that conversions from pointer to int4 are no-ops
4509         on archs where pointers are 4 bytes long.
4510
4511         * Makefile.am: Added abcremoval.c source file.
4512
4513         * abcremoval.c: Added abcremoval.c.
4514
4515         * abcremoval.h: Added abcremoval.h.
4516
4517         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
4518
4519         * inssel.brg: Enabled bounds check removal.
4520
4521         * mini.c: Added support for abcrem optimization.
4522
4523         * mini.h: Added abcrem optimization label.
4524
4525         * driver.c: Added support for abcrem optimization.
4526
4527         * propagated_relations_table.def: Added propagated_relations_table.def.
4528
4529 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
4530
4531         * mini.c, cfold.c: fix style.
4532
4533 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
4534
4535         * mini.c: handle issue with the low-level implementation of
4536         some long opcodes (bug #54209).
4537
4538 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
4539
4540         * basic.cs: test for my new cmov stuff.
4541
4542 2004-05-13      Patrik Torstensson
4543
4544         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
4545         opt and added peephole documentation.
4546
4547 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
4548
4549         * tramp-ppc.c: rewrote the generic trampoline code.
4550
4551 2004-05-11      Patrik Torstensson
4552
4553         * mini-x86.c: optimize long shl/shr asm code (one less branch)
4554
4555 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
4556
4557         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
4558
4559         * mini.h mini.c dominators.c: Applied patch from Derek Woo
4560         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
4561
4562         * mini.c: Add new icalls for AsAny marshalling.
4563
4564 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
4565
4566         * tramp-ppc.c, mini-ppc.c: more cleanups.
4567
4568 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4569
4570         * mini.c: no warnings.
4571
4572 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
4573
4574         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
4575
4576 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
4577
4578         * mini.c: In the thread abort signal handler, if the thread is in the
4579         process of being stoped, don't throw the Abort exception, just stop the
4580         thread.
4581
4582 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
4583
4584         * tramp-ppc.c: removed old code.
4585
4586 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
4587
4588         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
4589         do some simple speed optimizations on ppc.
4590
4591 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
4592
4593         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
4594         and large offsets in load/store.
4595
4596 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
4597
4598         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
4599         it causes regressions.
4600
4601 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
4602
4603         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
4604         support.
4605
4606 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
4607
4608         * jit-icalls.c: remove warnings.
4609         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
4610         speedups for unsafe code.
4611
4612 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
4613
4614         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
4615
4616 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
4617
4618         * basic-calls.cs: Add new regression test.
4619
4620         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
4621         more portable.
4622
4623         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
4624
4625         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
4626         is no longer used.
4627
4628 2004-05-06      Patrik Torstensson
4629
4630         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
4631         long reg allocation in any reg (not only eax:edx) and implemented 
4632         long shl/shr ops in asm instead of helpers.
4633
4634 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
4635
4636         * mini-sparc.h: Fix warnings.
4637
4638         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
4639         stack.
4640
4641         * mini-exceptions.c (mono_handle_exception): Call the filter in a
4642         separate statement for clarity.
4643
4644         * mini-sparc.c: Update status.
4645
4646 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
4647
4648         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
4649         here.
4650
4651 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
4652
4653         * inssel-ppc.brg: another small pre-release workaround:
4654         we don't do overflow detection for long_sub_un.
4655
4656 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
4657
4658         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
4659         (also works around a weird ppc bug: 57957).
4660
4661 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
4662
4663         * tramp-ppc.c: trampoline fixes.
4664
4665 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
4666
4667         * mini-ppc.c: fixed typos.
4668
4669 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
4670
4671         * mini-ppc.c, exceptions-ppc.c: more code saves registers
4672         at the top of the stack. Fixed typos. Use a frame registers
4673         for all the methods with exception clauses.
4674
4675 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
4676
4677         * exceptions-ppc.c: restore fp registers.
4678
4679 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
4680
4681         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
4682         order from the stack top (moved the stack room to save the
4683         return value for trace after the param area). Fixed corruption
4684         in restoring registers on unwind.
4685
4686 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
4687
4688         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
4689
4690 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
4691
4692         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
4693         and prolog/epilog for methods that use it. Allow
4694         enough param area room for varargs methods. Fix miguel's
4695         breakage in exception handling.
4696
4697 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
4698
4699         * Makefile.am: run genmdesc only on current arch.
4700
4701 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4702
4703         * exceptions-x86.c:
4704         * mini-x86.h: fix the build on windows.
4705
4706 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
4707
4708         * 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.
4709
4710         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
4711
4712         * mini-exceptions.c: New file.
4713         
4714         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
4715         Move some parts of the x86 exception handling code to an 
4716         arch-independent file so it can be shared with other ports.
4717
4718 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
4719
4720         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
4721
4722 2004-04-26  David Waite  <mass@akuma.org>
4723
4724         * driver.c: remove comma from end of enumeration declaration
4725
4726 2004-04-26  Jackson Harper  <jackson@ximian.com>
4727
4728         * driver.c: parse config file before loading first assembly. This
4729         allows the user gac to be enabled/disabled. 
4730         
4731 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
4732
4733         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
4734         simpler mechanism: we do not care what is encoded initially
4735         (branch absolute or relative), we care about the code and its
4736         target.  I kept the old code for reference for now.
4737
4738         The new code tries first to determine if the jump is anywhere in
4739         the -/+32 absolute meg range, if it succeeds, it encodes using the
4740         absolute branch;  If not, it tried to find something in the
4741         relative range, if not, it uses the handle_thunk code. 
4742
4743 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
4744
4745         * exceptions-ppc.c: use the correct ip register on macosx.
4746
4747 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
4748
4749         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
4750
4751 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
4752
4753         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
4754         Raise exception on integer divide by zero by hand since the hw
4755         doesn't support it. Handle NaNs in FP compares.
4756
4757 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
4758
4759         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
4760         code reducing duplication between the platforms and enabled
4761         signal exception handling (on linux for now).
4762
4763 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
4764
4765         * exceptions-ppc.c: more macosx support.
4766
4767 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
4768
4769         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
4770
4771 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
4772
4773         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
4774
4775 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
4776
4777         * iltests.il: more tests.
4778
4779 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
4780
4781         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
4782         vars as well.
4783
4784 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
4785
4786         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
4787
4788 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
4789
4790         * liveness.c: Mark variables as volatile in all basic blocks reachable
4791         from exception clauses.
4792
4793 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
4794
4795         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
4796         inlining.
4797
4798 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
4799
4800         * iltests.il, basic.cs: more tests for regalloc.
4801
4802 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
4803
4804         * iltests.il: Some tests for register allocation modifications
4805         I have locally.
4806
4807 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
4808
4809         * exceptions.cs: Add regression test for bug #56782.
4810
4811         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
4812         original stack trace if an exception is rethrown. Fixes #56782. Oh,
4813         the beauty of fixing the same thing in 5 different files...
4814
4815 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
4816
4817         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
4818         methods.
4819
4820 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
4821
4822         * mini.c: Add support for STRWLPARRAY marshalling convention.
4823
4824 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
4825
4826         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
4827         to init the context to setup the regs pointer).
4828
4829 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
4830
4831         * exceptions-ppc.c: more exceptions work.
4832
4833 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
4834
4835         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
4836         not allowed.
4837
4838 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
4839
4840         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
4841         can use the memory directly.
4842
4843         * cpu-pentium.md: Update documentation from a post from Zoltan. 
4844
4845         add x86_add_membase, x86_sub_membase, x86_mul_membase
4846
4847 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
4848
4849         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
4850         GENERAL_REGS they were also hardcoded for all PPC ports.
4851
4852         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
4853
4854         Remove hard-coded limit for floating point registers, use
4855         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
4856
4857         Notice that in MacOS X calling conventions you can fit a lot more
4858         floating point values in registers, so I should update the PInvoke
4859         test to excercise the passing of floating point values on the
4860         stack (currently broken).
4861         
4862 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
4863
4864         * tramp-ppc.c (create_trampoline_code): Added
4865         JUMP_TRAMPOLINE_SIZE. 
4866         (ppc_magic_trampoline): Follow the pattern from
4867         x86_magic_trampoline: if code is set to zero, return. 
4868         (create_trampoline_code): Always pass MonoMethod to the jump
4869         trampoline, before it was passing a null.
4870         (mono_arch_create_jump_trampoline): Implement the jump stub, could
4871         share the code with mono_arch_create_jit_trampoline. 
4872
4873         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
4874         implemented.
4875         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
4876         implemented.  
4877
4878         * cpu-g4.md: Added length for jmp instruction, the worst case
4879         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
4880         for save_lmf).
4881
4882 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
4883
4884         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
4885
4886 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
4887
4888         * mini.c: Only set bblock->real_offset when adding a new bblock, and
4889         before each IL instruction.
4890
4891         * mini.c (CEE_BOX): Fix warnings.
4892
4893 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4894
4895         * mini.c: removed a few unused vars and extra whitespace.
4896
4897 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
4898
4899         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
4900         checks.
4901         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
4902         index.
4903         (OP_GETCHR): use the above
4904         (CEE_LDELEMA): use the above.
4905
4906         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
4907         version of the generic impl.
4908         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
4909         (CEE_LDELEMA): use the above.
4910
4911 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
4912
4913         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
4914         Fixes #56317.
4915
4916         * iltests.il: Added new regression test for #56317.
4917
4918 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
4919
4920         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
4921         under NetBSD. Fixes #56450.
4922
4923         * liveness.c (update_gen_kill_set): Fix previous patch.
4924
4925 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4926
4927         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
4928
4929 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
4930
4931         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
4932         ldsfld and ldsflda.
4933
4934         * inssel-sparc.brg: Add more optimizations.
4935
4936         * mini-sparc.c: Replace multiply/divide with shifts if possible.
4937
4938 2004-04-01  Martin Baulig  <martin@ximian.com>
4939
4940         * mini.c (handle_box): New static function; moved the
4941         implementation of CEE_BOX here.
4942         (mono_method_to_ir): Added `constrained_call' variable.
4943         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
4944         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
4945         mono_method_get_constrained() to get the method.
4946
4947 2004-04-01  Martin Baulig  <martin@ximian.com>
4948
4949         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
4950         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
4951         (mono_method_to_ir): We don't need these macros anymore since
4952         mono_class_get_full() already takes care of it. 
4953
4954 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4955
4956         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
4957         use @function (as doesn't accept #function here) and check the return
4958         value of system and stop if fails.
4959
4960 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
4961
4962         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
4963
4964 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
4965
4966         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
4967
4968         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
4969
4970         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
4971         #56223.
4972
4973         * basic-long.cs: Add test for negation of Int64.MinValue.
4974
4975 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
4976
4977         * mini-sparc.c: Update status.
4978
4979         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
4980
4981         * exceptions-sparc.c: Fix return value in filters.
4982
4983         * inssel-sparc.brg: Fix register allocation in some rules.
4984
4985 2004-03-28  Martin Baulig  <martin@ximian.com>
4986
4987         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
4988         if neccessary.  
4989
4990 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
4991
4992         * mini-x86.c (mono_arch_patch_code): Fix warnings.
4993         
4994         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
4995         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
4996         remove unused conv_u4 opcode.
4997
4998         * mini-x86.c: Remove valgrind workaround since it slows down things
4999         even when mono is not run under valgrind.
5000
5001 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
5002
5003         * mini-sparc.c: Update status.
5004
5005         * inssel-sparc.brg: Add some optimizations.
5006
5007         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
5008         future delay slot filling. Add support for varargs, tail calls and JMP.
5009
5010         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
5011         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
5012
5013         * inssel.brg: Fix register allocation in OP_ARGLIST.
5014
5015         * inssel.brg: Fix warnings.
5016
5017 2004-03-25  Martin Baulig  <martin@ximian.com>
5018
5019         * mini.c (inflate_generic_field): Removed.
5020         (mini_get_method): Removed, use mono_get_method_full(),
5021         (mini_get_class): Removed, use mono_class_get_full().
5022         (mono_method_to_ir): Pass our generic context to
5023         mono_field_from_token().        
5024
5025 2004-03-25  Martin Baulig  <martin@ximian.com>
5026
5027         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
5028         of a `MonoMethod *'.
5029         (mini_get_method): Take a `MonoGenericContext *' instead
5030         of a `MonoMethod *'.
5031         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
5032         a new local variable called `generic_context' which holds the
5033         current `MonoGenericContext *'; use it to lookup things.
5034
5035 2004-03-24  Martin Baulig  <martin@ximian.com>
5036
5037         * mini.c (mini_get_class): New static method; if we're inside a
5038         generic instance, inflate the class if neccessary.
5039         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
5040
5041 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
5042
5043         * iltests.il: New regression test for #55976.
5044
5045         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
5046         #55976.
5047
5048 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
5049
5050         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
5051         output.
5052
5053 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
5054
5055         * liveness.c: Consider SSA stores as well as loads when making vars
5056         volatile.
5057
5058         * exceptions.cs: New regression tests for register allocation.
5059         
5060 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
5061
5062         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
5063         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
5064           domain lock only to protect puntual access to data structures.
5065           Added access lock for sighash, jit_icall_hash_name, 
5066           jit_icall_hash_addr and domain->code_mp.
5067
5068 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
5069
5070         * driver.c: Print SIGSEGV handling method.
5071
5072         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
5073
5074         * mini.c (setup_jit_tls_data): Handle case when this is called
5075         multiple times for a thread.
5076
5077         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
5078         is different from fbxx_un. Fixes #54303. Also use constants instead of
5079         magic numbers in a lot of places.
5080
5081 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
5082
5083         * exceptions.cs: Fix cctor test when --regression is used.
5084
5085 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
5086
5087         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
5088         for Linux/ppc.
5089
5090 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
5091
5092         * inssel-ppc.brg: fixed register assignments for some rules.
5093
5094 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
5095
5096         * exceptions.cs: Add test for exceptions in static constructors.
5097
5098         * mini.c (mono_jit_compile_method_with_out): Move the calling of
5099         static constructors outside the domain lock. Fixes #55720.
5100
5101 2004-03-17  Martin Baulig  <martin@ximian.com>
5102
5103         * mini.c (get_generic_field_inst): Removed, this'll never happen.
5104         (inflate_generic_field): Take the `MonoMethod *' instead of the
5105         `MonoClass *' and added support for generic method.
5106         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
5107         have a `field->parent->gen_params', only inflate the field if it's
5108         an open constructed type.
5109
5110 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
5111
5112         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
5113         exception object instead of the preconstructed ones.
5114
5115 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
5116
5117         * mini.c: reverted changed to sigsegv_signal_handler commited
5118         accidentally in the previous patch.
5119
5120 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
5121
5122         * mini.c:
5123         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
5124         running --aot with an old assembly.
5125
5126 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
5127
5128         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
5129         point values.
5130
5131         * mini-sparc.c: Add support for v9 branches with prediction.
5132
5133 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
5134
5135         * mini.c (mini_init): #warning is GNUC only
5136
5137         * mini-sparc.h: implement __builtin_frame_address
5138         and __builtin_return_address for Sun C compiler
5139
5140 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
5141
5142         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
5143
5144 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
5145
5146         * basic-calls.cs: Add test for unaligned byref long argument passing.
5147
5148         * mini-ops.h: Add sparcv9 compare and branch instructions.
5149
5150         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
5151         v9 instructions if we have a v9 cpu.
5152
5153         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
5154         registers for global allocation.
5155
5156         * exceptions-sparc.c: Fixes.
5157         
5158 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
5159
5160         * liveness.c (mono_analyze_liveness): Optimized version.
5161
5162         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
5163
5164         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
5165         sparc work.
5166
5167         * basic-float.cs basic-calls.cs: New regression tests.
5168
5169 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
5170
5171         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
5172         sigaltstack implementation.
5173
5174         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
5175         
5176         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
5177         stuff if SIGSEGV_ON_ALTSTACK is not defined.
5178
5179 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
5180
5181         * mini.c: Fix warnings.
5182         
5183         * mini.c (mono_resolve_patch_target): New function which contains the
5184         arch independent part of the patching process.
5185
5186         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
5187         patching code to a separate function.
5188
5189 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
5190
5191         * mini.c (add_signal_handler): ifdef out on Windows
5192
5193 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
5194
5195         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
5196         cpu-sparc.md: Add exception handling support + other fixes.
5197
5198         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
5199         typed GC detection in --version.
5200
5201         * basic.cs exceptions.cs: New regression tests.
5202
5203         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
5204         the arch specific code can store data during a compilation.
5205
5206         * mini-ops.h: Add OP_SETFRET.
5207
5208         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
5209         function, register a separate icall for each arity, so the icalls can
5210         get a wrapper.
5211         
5212         * mini.c (mono_print_tree): Print negative offsets in a more readable
5213         form.
5214         
5215         * mini.c: Make signal handling work on sparc.
5216         
5217         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
5218
5219         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
5220
5221         * jit-icalls.c: Emulate truncl by aintl on solaris.
5222
5223         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
5224
5225 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
5226
5227         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
5228
5229 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
5230
5231         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
5232         a MarshalByRef type, inline a method that performs the check, taking into
5233         account that the object can be a proxy. Also implemented tow new opcodes:
5234         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
5235         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
5236         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
5237
5238 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
5239
5240         * mini-ppc.c: if a relative branch displacement is too big
5241         but it points to and area reachable with an absolute branch, 
5242         avoid the thunks.
5243
5244 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
5245
5246         * mini.c: optimize small copies in cpblk.
5247
5248 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
5249
5250         * basic-calls.cs basic-float.cs: New regression tests.
5251
5252         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
5253         negative offsets from %fp. Implement localloc. Fix local register 
5254         allocation. Fix the case when the this argument needs to be saved to
5255         the stack. Implement some missing opcodes.
5256
5257 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
5258
5259         * mini.c (mini_method_compile): Reenable global regalloc in methods
5260         with exception handlers.
5261
5262         * linear-scan.c (mono_varlist_sort): Fix warning.
5263
5264         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
5265
5266         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
5267         regalloc costs.
5268
5269         * liveness.c: Make all variables uses in exception clauses volatile, to
5270         prevent them from being allocated to registers. Fixes #42136.
5271
5272 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
5273
5274         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
5275         causes regressions.
5276
5277         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
5278         argument to mono_arch_regalloc_cost.
5279
5280         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
5281         precisely.
5282
5283 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
5284
5285         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
5286         Make the cost of allocating a variable to a register arch dependent.
5287
5288         * basic-calls.cs: Fix compilation of tests.
5289         
5290         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
5291         helper function to cut back on the number of #ifdefs needed.
5292
5293         * mini-ppc.c: Fix compilation.
5294
5295         * basic-calls.cs: New regression tests.
5296
5297         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
5298
5299         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
5300         of l0 since that is callee saved.
5301
5302         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
5303         to virtual calls.
5304
5305         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
5306         of delay instruction.
5307
5308         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
5309
5310         * mini.h (MonoCallInst): Add 'virtual' flag.
5311
5312         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
5313
5314 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
5315
5316         * *.cs: New regression tests.
5317
5318         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
5319         work.
5320
5321         * mini.c (mono_runtime_install_handlers): Fix build.
5322
5323         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
5324         'signal_stack_size' members.
5325
5326         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
5327         alternate signal stack.
5328
5329         * exceptions-x86.c: Add stack overflow handling.
5330
5331         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
5332         functions to arch independent code.
5333
5334         * mini.c (mono_print_tree): Print more detailed info for load_membase
5335         opcodes.
5336         
5337 2004-02-23  Martin Baulig  <martin@ximian.com>
5338
5339         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
5340
5341 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
5342
5343         * mini-x86.c: fixed reg allocation for div/rem.
5344
5345 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
5346
5347         * driver.c (mono_main): Report some configuratio options on --version.
5348
5349 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
5350
5351         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
5352         low in the address space. Correctly flush memory in thunks where we
5353         output native code.
5354
5355 2004-02-20  Martin Baulig  <martin@ximian.com>
5356
5357         * mini.c (mini_get_method): New static method; inflate all generic
5358         methods and methods in open generic instances.
5359         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
5360         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
5361
5362 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
5363
5364         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
5365
5366         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
5367
5368 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
5369
5370         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
5371
5372         * mini-sparc.c (flushi mono_arch_output_basic_block): make
5373         it compile using Sun's compiler.
5374
5375 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
5376
5377         * 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.
5378
5379         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
5380
5381 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
5382
5383         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
5384         code.
5385         * mini-ppc.c: handle calls outside of the allowed range with thunks
5386         allocated using the code manager.
5387         * tramp-ppc.c: use the code manager to hold generated native code.
5388         Fixed the magic trampoline to just patch vtable entries.
5389
5390 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
5391
5392         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
5393         independent file.
5394
5395 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
5396
5397         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
5398         PPC.
5399
5400         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
5401         if we have a working __thread implementation.
5402
5403         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
5404         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
5405
5406 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
5407
5408         * mini-x86.c: Fix compilation under gcc 2.
5409         
5410 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
5411
5412         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
5413         contains a call to the wrapped function.
5414
5415         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
5416         OP_<CALL>_IMM opcodes, and use them under X86.
5417         
5418         * mini.c (mono_jit_find_compiled_method): Fix warning.
5419
5420         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
5421
5422         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
5423
5424         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
5425         functionality to mini.c.
5426
5427         * mini.c (mono_create_jump_trampoline): New function to create a jump
5428         trampoline. Return a compiled method instead of a trampoline if it
5429         exists. Add a cache for jump trampolines.
5430
5431         * mini.c (mono_jit_find_compiled_method): New function to return a
5432         compiled method if it exists.
5433
5434         * mini-x86.c: Call mono_create_jump_trampoline instead of 
5435         mono_arch_create_jit_trampoline.
5436
5437         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
5438         a jump trampoline. Fixes #52092.
5439         
5440 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
5441
5442         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
5443         which is not up-to-date. Add check_corlib_version () instead.
5444
5445         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
5446         have to call it.
5447         
5448         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
5449         since newer valgrind versions do not need it.
5450
5451         * mini.c (mono_jit_compile_method_with_opt): New helper function to
5452         compile a method with a given set of optimizations.
5453
5454         * mini.c: Compile icall wrappers on-demand instead of at startup.
5455
5456         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
5457         wrapper for an icall.
5458
5459 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
5460
5461         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
5462         #54063.
5463
5464         * iltests.il: Add test for non-empty stack before switch instruction.
5465
5466 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
5467
5468         * mini.c: Add support for new stringbuilder marshalling conventions.
5469
5470         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
5471
5472 2004-02-01  Martin Baulig  <martin@ximian.com>
5473
5474         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
5475         in `ginst->mtype_argv'.
5476
5477 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
5478
5479         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
5480         facilitate grepping.
5481
5482 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
5483
5484         * mini.c: fixed buglet in initobj generic implementation for references.
5485
5486 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
5487
5488         * Makefile.am: make the version script conditional.
5489         * jit-icalls.c: handle missing truncl().
5490
5491 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
5492
5493         * exceptions.cs: Add more tests for double->int conversion.
5494
5495         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
5496         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
5497
5498 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
5499
5500         * driver.c: make --verbose --version emit an error
5501         if the loaded corlib doesn't match the runtime version.
5502
5503 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
5504
5505         * mini-ppc.h: export ppc_patch().
5506         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
5507         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
5508         on par or better than on MacOSX.
5509
5510 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
5511
5512         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
5513         mono_lookup_pinvoke_call.
5514
5515         * mini-x86.c: Under windows, the default pinvoke calling convention is
5516         stdcall. Fixes #52834.
5517
5518         * mini.c (optimize_branches): Add an upper bound to the number of
5519         iterations to prevent infinite loops on strange loops. Fixes #53003.
5520
5521 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
5522
5523         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
5524         and ISINST. Fixes #52093.
5525
5526         * objects.cs (test_0_vector_array_cast): New tests.
5527         
5528 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
5529
5530         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
5531         checking in Array.Set ().
5532
5533         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
5534         #52590.
5535
5536         * object.cs (test_0_multi_array_cast): New regression test.
5537
5538 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
5539
5540         * exceptions-ppc.c: fix build on Linux/PPC.
5541
5542 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
5543
5544         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
5545         running under valgrind.
5546         (x86_magic_trampoline): Fix build bustage.
5547
5548         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
5549         negative values as well. This is needed for the encoding of the line number
5550         info, since sometimes the line numbers are not in increasing order.
5551
5552 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
5553
5554         * cpu-pentium.md (localloc): Increase the size of the localloc 
5555         instruction since it is a loop under Win32.
5556
5557         * debug-mini.c (record_line_number): Get rid of unneccesary memory
5558         allocation.
5559
5560 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
5561
5562         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
5563         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
5564         Max Horn (max@quendi.de). Fix file names in comments.
5565
5566 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
5567
5568         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
5569         avoid stack overflow.
5570         (replace_usage): Avoid uninitialized variable warnings.
5571
5572         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
5573         and taking the address of valuetype variables.
5574
5575 2004-01-03  Patrik Torstensson
5576
5577         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
5578         for other purposes than FP later on.
5579
5580 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
5581
5582         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
5583         of tail calls.
5584
5585 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
5586
5587         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
5588
5589 2003-12-30  Patrik Torstensson <p@rxc.se>
5590
5591         * mini-x86.h: Decreased number of availiable fp regs.
5592         Solves corner cases with FP spilling.
5593
5594 2003-12-23  Patrik Torstensson <p@rxc.se>
5595
5596         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
5597         for floating point stack tracking / spilling on x86. 
5598         Fixes bug #49012.
5599         
5600         * basic-float.cs: added float mul overflow test.
5601
5602 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
5603
5604         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
5605
5606 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
5607
5608         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
5609         supports for cond branches that overflow the immediate
5610         overflow offset. mcs can compile simple programs.
5611
5612 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
5613
5614         * exceptions-ppc.c: exception handling support wip:
5615         finally handlers get run on exception.
5616
5617 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
5618
5619         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
5620         profiling.
5621
5622 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
5623
5624         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
5625         initial support for stack walking and unwinding.
5626
5627 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
5628
5629         * driver.c (mono_main): Make corlib-out-of-sync message more 
5630         descriptive. Also remove verify_corlib call.
5631
5632 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
5633
5634         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
5635         not overlap with other call's arguments, too.
5636
5637 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
5638
5639         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
5640         move to arch-specific code the choice of arch-specific
5641         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
5642         * mini.c: ensure emulation calls will not interleave
5643         with other calls.
5644
5645 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
5646
5647         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
5648         the magic trampoline stack frame is dropped before executing
5649         the new method.
5650
5651 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
5652
5653         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
5654         and integer to fp conversions. Added support for overflowing
5655         arguments on the stack. Reserve a couple more registers as temps.
5656         Added support for aot compilation (as output still needs to be
5657         tweaked, though).
5658
5659 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
5660
5661         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
5662         Don't overwrite return register in some corner cases.
5663
5664 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
5665
5666         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
5667         static constructors when AOT compiling.
5668
5669         * driver.c (mono_main): Call mono_check_corlib_version.
5670
5671 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
5672
5673         * cpu-g4.md, basic.cs: fixed div target register.
5674
5675 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
5676
5677         * mini-ppc.c, basic.cs: shl_imm fix with test.
5678
5679 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
5680
5681         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
5682         structures by value. Misc fixes.
5683         * objects.cs: more tests.
5684
5685 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
5686
5687         * mini-ppc.c: lconv.ovf.i implemented.
5688
5689 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
5690
5691         * mini.c:
5692         (mini_init): don't error out if someone already called g_thread_init.
5693
5694 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
5695
5696         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
5697         to be any type per the spec. Fix abnormal memory usage when
5698         the same object is repeatedly thrown.
5699
5700 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
5701
5702         * mini.c: check for overruns in IL code.
5703
5704 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
5705
5706         * TODO: Add/remove some todo entries.
5707
5708 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
5709
5710         * driver.c (mono_main): Call mono_verify_corlib.
5711
5712 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
5713
5714         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
5715         This has been moved to mini.c
5716         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
5717         type being casted is marshalbyref it could be a proxy, so instead of
5718         emitting the type check code, emit a call to a runtime method that will
5719         perform the check by calling CanCastTo if needed.
5720
5721 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
5722
5723         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
5724         methods with large stack frames under Win32.
5725
5726 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
5727
5728         * Makefile.am: Distribute regression tests.
5729
5730         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
5731         at the end instead of inserting each variable into the sorted list.
5732
5733         * linear-scan.c (mono_varlist_sort): New helper function.
5734         
5735 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
5736
5737         * mini.c: ensure arguments and locals are within bounds.
5738
5739 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
5740
5741         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
5742         related fixes.
5743
5744 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
5745
5746         * mini.c (mono_cprop_copy_values): Fix crash.
5747
5748         * aot.c: Set verbosity back to 0.
5749         
5750 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
5751
5752         * regalloc.c: complete memory leak fix by Laurent Morichetti
5753         (l_m@pacbell.net).
5754
5755 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
5756
5757         * driver.c (main_thread_handler): Revert the previous patch.
5758
5759         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
5760         under valgrind.
5761
5762         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
5763         memory from the memory pool.
5764
5765         * driver.c (main_thread_handler): Turn on all optimizations when
5766         --aot is used.
5767
5768         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
5769         an array for better performance.
5770
5771         * regalloc.c (mono_regstate_assign): Fix memory leak.
5772
5773         * debug-mini.c (mono_debug_serialize_debug_info): New function to
5774         serialize the debug info.
5775
5776         * debug-mini.c (mono_debug_add_aot_method): New function to load the
5777         debug info from the serialized representation.
5778
5779         * aot.c: Save debug info into the generated file and load it when 
5780         loading a method.
5781
5782         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
5783
5784 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
5785
5786         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
5787         More FP-related fixes.
5788
5789 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
5790
5791         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
5792         and register allocation buglet. Hello world now runs.
5793
5794 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
5795
5796         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
5797         * tramp-ppc.c: fixed class init trampoline.
5798         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
5799
5800 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
5801
5802         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
5803         mini.c: more ppc changes/fixes.
5804
5805 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
5806
5807         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
5808         Also optimize the case when the arguments are the same in the caller 
5809         and in the callee.
5810
5811         * iltests.il: Add tests for tail calls with valuetype arguments.
5812
5813 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
5814
5815         * mini-ppc.c: fixes for struct return type.
5816
5817 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
5818
5819         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
5820         mono_spillvar_offset() to arch-specific code.
5821
5822 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
5823
5824         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
5825
5826 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
5827
5828         * exceptions-x86.c: Fix stack space leaks.
5829         
5830         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
5831         registers from the lmf if the method has save_lmf set.
5832
5833 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
5834
5835         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
5836         of icall wrappers into InvokeInDomain, since these are now per-domain.
5837
5838 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
5839
5840         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
5841         make some opcode emulation and intrinsic ops enabled/disabled 
5842         according to the architecture. More fixes.
5843
5844 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
5845
5846         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
5847
5848 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
5849
5850         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
5851         arch-specific handling for 'this' and struct return type to
5852         arch-specific code.
5853
5854 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
5855
5856         * aot.c: prevent divide by zero error when reporting (it happened with
5857         Accessibility.dll).
5858
5859 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
5860
5861         * mini.h (inst_switch): Remove unused macro.
5862
5863 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
5864
5865         * aot.c:
5866         (load_aot_module): free 'info->methods' and 'info' properly. No more
5867         "free(): invalid pointer blah" messages when you have an old aot
5868         compiled assembly.
5869
5870 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
5871
5872         * jit-icalls.c, mini.c: Added support for context static fields.
5873
5874 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
5875
5876         * mini.c (mono_method_blittable): Methods which set LastError are not 
5877         blittable either. Fixes #51108.
5878         
5879 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
5880
5881         * mini.c: flush icache.
5882         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
5883
5884 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
5885
5886         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
5887
5888 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
5889
5890         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
5891         safe on IA32.
5892
5893         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
5894         vararg calls.
5895
5896         * inssel.brg (CEE_MKREFANY): Fix AOT case.
5897
5898 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
5899
5900         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
5901         instruction when the result is discarded.
5902
5903         * iltests.il (test_0_div_regalloc): New regression test.
5904
5905         * arrays.cs: Fix compilation error.
5906
5907 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
5908
5909         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
5910         float rules to inssel-x86.brg: sane architectures with FP registers
5911         don't need to implement these rules.
5912
5913 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
5914
5915         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
5916
5917 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
5918
5919         * mini.h, inssel-long32.brg: fixed endianess issues in int64
5920         implementation of 32 bit systems.
5921
5922 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
5923
5924         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
5925         (Jeroen Zwartepoorte).
5926
5927 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
5928
5929         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
5930         the caller and the callee matches.
5931         
5932         * mini.c (mono_method_to_ir): Add comment.
5933
5934         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
5935         signbit is missing on some platforms.
5936
5937 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
5938
5939         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
5940
5941         * mini.c (setup_jit_tls_data): Call the new function.
5942         
5943         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
5944
5945         * mini-x86.c: Add experimental support for fast access to the lmf
5946         structure under NPTL/Linux 2.6.x.
5947
5948 2003-11-06  Martin Baulig  <martin@ximian.com>
5949
5950         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
5951         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
5952         the debugger.
5953
5954 2003-11-02  Martin Baulig  <martin@ximian.com>
5955
5956         * mini.c (inflate_generic_field): New static method.
5957         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
5958         generic instance and the field is declared in a generic type, call
5959         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
5960
5961 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
5962
5963         * mini.h mini.c (mono_method_same_domain): New function to return
5964         whenever the caller and the callee are in the same domain.
5965
5966         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
5967
5968 2003-10-30  Martin Baulig  <martin@ximian.com>
5969
5970         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
5971         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
5972         method parameters.
5973         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
5974         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
5975
5976 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
5977
5978         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
5979         propagation.
5980
5981         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
5982         object here, so it is in the correct appdomain etc.
5983
5984 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
5985
5986         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
5987         already done.
5988         (mono_method_to_ir): Avoid freeing the type created returned from
5989         mono_type_create_from_typespec, since it is put into an internal cache
5990         by the function. Fixes pointer.exe.
5991
5992         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
5993         trampolines for icalls and pinvokes as well. Fixes #33569.
5994
5995 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
5996
5997         * mini.c: Update after appdomain changes.
5998
5999         * mini.c (mono_jit_compile_method_inner): Allways compile native
6000         method wrappers in the root domain, since there can only be one
6001         instance of them, whose address is stored in method->info.
6002
6003 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
6004
6005         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
6006         environment variable. Instead detect automatically whenever running
6007         under valgrind using the magic macro RUNNING_ON_VALGRIND from
6008         valgrind.h.
6009
6010 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
6011
6012         * trace.c, trace.h: New files that implement the new trace option
6013         parsing. 
6014
6015         * driver.c: Document new --trace options.
6016
6017         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
6018         mini-x86.c: Apply:
6019
6020         -       if (mono_jit_trace_calls)
6021         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
6022
6023         * mini.h: prototypes.
6024         
6025 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
6026
6027         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
6028
6029         * mini.c inssel.brg: Implement typedefbyref opcodes.
6030
6031         * mini.c (mono_jit_compile_method): Remove unused local variable.
6032
6033         * mini.c (mono_jit_compile_method_inner): Ditto.
6034         
6035 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
6036
6037         * tramp-x86.c (x86_class_init_trampoline): Fix build.
6038         
6039         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
6040
6041 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
6042
6043         * mini.c (mono_no_aot): Remove unused global variable.
6044
6045         * mini.c: Thread safety fixes.
6046
6047 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
6048
6049         * mini.c (mono_create_class_init_trampoline): Add a lock around
6050         class_init_hash_addr.
6051
6052         * arrays.cs (test_0_newarr_emulation): Add new regression test for
6053         #30073.
6054
6055         * mini.c: Decompose the NEWARR instruction before decomposing its
6056         arguments. Fixes #30073.
6057
6058 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
6059
6060         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
6061         convention.
6062
6063 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
6064
6065         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
6066
6067         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
6068
6069         * driver.c: Add support for compiling icall wrappers to --compile.
6070
6071 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
6072
6073         * inssel.brg: The empty value in class->interface_offsets is -1, not
6074         0. Fixes #49287.
6075
6076 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
6077
6078         * objects.cs: New test for 'is' operator on an array of interfaces.
6079
6080 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
6081
6082         * tramp-ppc.c: update trampoline code to support jumps
6083         and class initialization.
6084
6085 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
6086
6087         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
6088
6089         * inssel.brg (OP_UNBOXCAST): Fix #46027.
6090
6091         * inssel.brg (OP_UNBOX): Remove unused rule.
6092
6093         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
6094         region instead of one for each method. Fixes #47813.
6095
6096 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
6097
6098         * exceptions.cs (test_0_nested_finally): New regression test for
6099         nested exception handlers.
6100
6101         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
6102
6103         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
6104
6105         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
6106         inlining.
6107
6108         * mini.c (mono_method_check_inlining): Make the inlining limit 
6109         configurable by an environment variable.
6110         
6111         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
6112
6113         * mini.h: Bump AOT file version.
6114
6115         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
6116         token, store the image along with the token, since the token might not 
6117         refer to the same image as the method containing the relocation, 
6118         because of inlining.
6119
6120 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
6121
6122         * mini.c (mono_precompile_assemblies): New function to compile
6123         all methods in all loaded assemblies.
6124
6125         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
6126
6127         * regalloc.h regalloc.c (MonoRegState): Change the type of 
6128         iassign and fassign to int*, since they can contain large negative
6129         values if the register is spilled. Also added some comments. Fixes
6130         #45817.
6131
6132         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
6133         under Win32. Fixes #42964.
6134
6135 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
6136
6137         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
6138
6139         * aot.c: Added support for AOT compiling methods which contain calls
6140         to wrappers. Currently, only remoting-invoke-with-check wrappers are
6141         handled.
6142         
6143         * driver.c (compile_all_methods): Run the compilation in a thread
6144         managed by mono. Fixes #44023.
6145
6146         * mini.c (mono_codegen): Print full method name in verbose output.
6147
6148         * mini-x86.c (mono_arch_patch_code): Fix warning.
6149         
6150         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
6151         jumps, since the method we are jumping to might be domain-specific.
6152
6153         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
6154
6155 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
6156
6157         * inssel.brg: string chars are unsigned.
6158
6159 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
6160
6161         * TODO: New todo item.
6162
6163         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
6164         which calls mono_runtime_class_init and patches the call site to
6165         avoid further calls.
6166         (mono_arch_create_class_init_trampoline): New arch specific function 
6167         to create a class init trampoline.
6168         (create_trampoline_code): Generalized so it can create
6169         class init trampolines as well.
6170
6171         * mini.c (helper_sig_class_init_trampoline): New helper variable.
6172         (mono_create_class_init_trampoline): New function to create and cache
6173         class init trampolines.
6174         (mono_find_class_init_trampoline_by_addr): New function to lookup the
6175         vtable given the address of a class init trampoline. Used by the
6176         patching process.
6177         (mono_codegen): Generate a call to a trampoline instead of
6178         mono_runtime_class_init in LDSFLD[A].
6179         (mono_codegen): Add relocations for the new trampoline.
6180         
6181         * mini.h mini-x86.c aot.c: Added a new relocation type: 
6182         MONO_PATCH_INFO_CLASS_INIT.
6183
6184         * mini.h: Bump AOT version number.
6185
6186         * aot.c: Create a copy of the loaded code instead of using the original
6187         so methods which call each other will be close in memory, improving
6188         cache behaviour.
6189         
6190         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
6191         patch since it breaks the regression tests.
6192         
6193         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
6194         for the register saving instruction sequence since the 
6195         frame_state_for function in glibc 2.3.2 don't seem to detect it.
6196
6197 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
6198
6199         * TODO: Fix todo item && remove another.
6200
6201 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
6202
6203         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
6204         previous checkin.
6205
6206         * aot.c: Moved the check for MONO_LASTAOT into the initialization
6207         function of the module.
6208
6209         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
6210         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
6211         --no-aot command line option.
6212
6213 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
6214
6215         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
6216         by Bernie Solomon (bernard@ugsolutions.com).
6217
6218         * inssel.brg: Refactor the interface offset table related code into
6219         its separate functions and add support for the AOT case.
6220
6221 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
6222
6223         * aot.c (mono_aot_get_method_inner): Fix memory leak.
6224         
6225         * aot.c: Added mono_aot_verbose variable and made all debugging
6226         output depend on the value of this variable.
6227
6228         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
6229         method_label and info_label.
6230
6231         * mini.h mini-x86.c aot.c: Added a new relocation type 
6232         MONO_PATCH_INFO_IID for klass->interface_id.
6233
6234         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
6235         the MonoJitInfo structure.
6236
6237         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
6238         a non-root appdomain in shared mode.
6239
6240 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
6241
6242         * aot.c: make aot loader less verbose. Remove free of unused variable.
6243
6244 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
6245
6246         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
6247
6248         * .cvsignore: Added *.dll.
6249
6250         * mini.c (mono_print_tree_nl): New function callable while debugging.
6251
6252         * mini.c (mono_print_code): Export this.
6253
6254         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
6255         patched code.
6256
6257 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
6258
6259         * mini.h (MonoCompile): Added 'jit_info' field.
6260
6261         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
6262         the cfg structure, since it is needed by the AOT compiler.
6263
6264         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
6265
6266         * aot.c: A major rewrite. Changes include:
6267         - save exception tables for methods which have them.
6268         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
6269         to g_module_symbol.
6270         - reworked the file format so it is now much smaller and needs
6271         fewer relocation entries.
6272         
6273 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
6274
6275         * aot.c (load_aot_module): Fix build bustage on platforms without
6276         Boehm GC.
6277
6278 2003-09-04  Martin Baulig  <martin@ximian.com>
6279
6280         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
6281
6282 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
6283
6284         * TODO: Some new optimization ideas.
6285
6286         * aot.c: Move AOT module loading logic here from mono_assembly_open.
6287
6288         * aot.c: Save the optimization flags used to compile the code into
6289         the AOT module.
6290
6291         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
6292         support emitting domain specific code.
6293         
6294         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
6295         no longer domain neutral. It can be made domain neutral by compiling 
6296         with --optimize=shared.
6297
6298         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
6299         between appdomains.
6300
6301         * driver.c mini.h mini.c: New --no-aot debugging option which disables
6302         loading of AOT code.
6303
6304         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
6305         
6306         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
6307         if there is no domain neutrality information.
6308
6309 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
6310
6311         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
6312         format version into the generated library.
6313
6314         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
6315         callee method into the caller since one of them could be shared.
6316
6317         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
6318         system exceptions from AOT code now works.
6319
6320         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
6321         method if it is domain neutral and the callee is not.
6322
6323         * graph.c (cfg_emit_one_loop_level): Fix warning.
6324
6325 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
6326
6327         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
6328         last checkin.
6329
6330 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
6331
6332         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
6333         is needed  by code which is executed before mono_runtime_init ().
6334         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
6335         
6336         * mini.c (mono_thread_abort): Fix warning.
6337         (mono_jit_compile_method): Call static constructor in the AOT case too.
6338
6339         * aot.c (mono_compile_assembly): Fix warning.
6340
6341 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
6342
6343         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
6344
6345 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
6346
6347         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
6348
6349         * cpu-pentium.md: Fix the length of call opcodes so they include the
6350         ESP restoring instruction. Fixes #47968.
6351
6352 2003-08-28  Martin Baulig  <martin@ximian.com>
6353
6354         * mini-x86.c (mono_arch_call_opcode): Added support for
6355         MONO_TYPE_GENERICINST.
6356
6357         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
6358
6359 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
6360
6361         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
6362         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
6363
6364         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
6365         metadata_section.
6366
6367 2003-08-26  Martin Baulig  <martin@ximian.com>
6368
6369         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
6370         when reporting an error, set this to the actual error location.
6371         (mono_method_to_ir): Report the correct error location if
6372         get_basic_blocks() returned an error.
6373
6374 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
6375
6376         * mini.c (mono_type_blittable): OBJECT is not blittable.
6377         (mono_method_blittable): Methods which have marshalling descriptors
6378         are not blittable either. Fixes #47842.
6379
6380 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
6381
6382         * driver.c mini.c: Use an environment variable instead of a global 
6383         variable. Also fix the build.
6384
6385         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
6386         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
6387         reporting this. 
6388
6389         * driver.c mini.c: Added --with-valgrind option to turn off some
6390         code which prevents mono from running under valgrind.
6391
6392         * mini.c (mono_emit_call_args): Fixed warning.
6393
6394         * mini.c (mono_emulate_opcode): Fixed warning.
6395
6396 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
6397
6398         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
6399         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
6400         regalloc.c, regalloc.h: specify available registers in arch-specific
6401         code and support floats in the regallocator (patch by Laurent Morichetti 
6402         <l_m@pacbell.net>)
6403
6404 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
6405
6406         * mini.c: mono_thread_current() can be called only after
6407         mono_runtime_init(): rearrange code to not call it early on.
6408
6409 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
6410
6411         * mini.c: allocate jump tables in the code mempools.
6412
6413 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
6414
6415         * mini.c, mini.h: make sure per-thread data allocated by the jit is
6416         freed.
6417
6418 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
6419
6420         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
6421         12 to 16.  This fixes bug #47453.
6422
6423
6424 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
6425
6426         * mini-ppc.c: fixed indexed load and unsigned compares.
6427
6428 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
6429
6430         * mini.c: reenabled installation of handler for
6431           thread abort signal.
6432
6433 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
6434
6435         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
6436         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
6437         until it's fixed and actually useful.
6438
6439 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
6440
6441         * inssel-long32.brg: couple more opcodes implemented.
6442
6443 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
6444         
6445         * mini-sparc.c: Even more opcodes implemeted.
6446
6447 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
6448
6449         * mini-sparc.c: More opcodes implemented.
6450
6451 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
6452
6453         * mini-sparc.c: More opcodes implemented.
6454
6455 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
6456
6457         * inssel-sparc.brg: Add some needed rules.  Direct
6458         copy from PPC.
6459         * Makefile.am: Use inssel-sparc.brg
6460         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
6461         an assert happy for now.
6462
6463 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
6464
6465         * mini-sparc.c: Fixed compile errors.
6466         * exceptions-sparc.c: Same.  We now produce a mono binary 
6467         on sparc-linux.  Yea.
6468
6469 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
6470
6471         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
6472         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
6473         They compile, but do not work.
6474
6475 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
6476
6477         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
6478         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
6479         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
6480         (ct@gentoo.org).
6481
6482 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
6483
6484         * mini.c: more opcodes implemented and better support for generics.
6485
6486 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
6487
6488         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
6489         * mini.c, mini.h: first cut at generics support: some new instructions 
6490         added and changed the behaviour of some of the existing ones.
6491
6492 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
6493
6494         * mini.c: Removed definition of metadata_shared mutex here.
6495
6496 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
6497
6498         * mini-x86.c: make vararg calls work for instance methods.
6499
6500 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
6501
6502         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
6503         returns the arguments in a separte list, now.
6504
6505 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
6506
6507         * aot.c, mini.c: updates for array type representation changes.
6508
6509 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
6510
6511         * mini.c: register function to perform jit shutdown.
6512
6513 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
6514
6515         * mini.c: use a faster allocator if possible.
6516
6517 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
6518
6519         * aot.c: some cleanups and portability changes.
6520
6521 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
6522
6523         * mini.c: use faster allocation for CEE_BOX if possible.
6524
6525 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
6526
6527         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
6528         Moved inlined mempcy code to its own function so that is can be
6529         reused. Added an inline memset function as well (optimized initobj).
6530         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
6531
6532 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
6533
6534         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
6535
6536 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
6537
6538         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
6539         arch code can setup the cpu for CLR execution, if needed.
6540         We use it on x86 to set the precision of FP operations.
6541
6542 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
6543
6544         * mini.c: disable some optimizations if we can guess they'll cost too
6545         much for a given method.
6546
6547 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
6548
6549         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
6550         
6551 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
6552         * mini.h mini.c mini-x86.c: Added instruction level coverage 
6553         info collection support.
6554
6555 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
6556
6557         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
6558         is now implemented in the profiling API. Get rid of a couple of
6559         unnecessary global variables.
6560
6561 2003-06-15  Nick Drochak <ndrochak@gol.com>
6562
6563         * basic-long.cs: tests for negative values for bigmul, and unsigned.
6564         * cpu-g4.md: add op_bigmul and op_bigmul_un
6565         * cpu_pentium.md: add op_bigmul_un
6566         * inssel-long32.brg: add rule for unsigned bigmul
6567         * mini-ops.h: define OP_BIGMUL_UN
6568         * mini-x86.c: THE BUG: handle (un)signed properly
6569         * mini.c: choose unsigned opcode if needed.
6570         This set of patches fixes bug #44291
6571
6572 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
6573
6574         * mini.c (optimize_branches): improved to handle all kinds of
6575         conditional branches.
6576
6577 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
6578
6579         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
6580         don't raise exceptions.
6581
6582 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
6583
6584         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
6585         to arch-specific files.
6586
6587 2003-06-09  Martin Baulig  <martin@ximian.com>
6588
6589         * Makefile.am (libs): Added $(LIBGC_LIBS).
6590
6591 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
6592
6593         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
6594         and OP_ATAN (fixes bug#44293).
6595
6596 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
6597
6598         * Makefile.am, mini-x86.c: rename cpu description array to
6599         pentium_desc, since some compilers define the 'pentium' preprocessor
6600         symbol.
6601
6602 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
6603
6604         * mini.c (mini_select_instructions): add explicit branch if the
6605         following block is not the false target of a conditional branch -
6606         we need this with any optimization that reorder or remove bblocks
6607
6608         * mini.c (optimize_branches): bug fixes
6609
6610 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
6611
6612         * mini.c (mono_method_to_ir): inline static readonly fields
6613
6614         * ssa.c (fold_tree): start cfold support for long (very simple
6615         cases only)
6616
6617         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
6618
6619 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
6620
6621         * inssel.brg: fixed memcpy (bug #44219).
6622
6623 2003-06-05  Dick Porter  <dick@ximian.com>
6624
6625         * driver.c: Set the glib log levels to not abort if g_message
6626         recurses.
6627
6628         g_set_prgname() has to happen before mini_init() so that the
6629         process handle gets the info.
6630         
6631 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
6632
6633         * driver.c: add intrins to the default optimizations to get wider
6634         exposure.
6635
6636 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
6637
6638         * mini.h: some large basic blocks will overflow a 16-bit
6639         integers for symbolic registers.
6640
6641 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
6642
6643         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
6644         (mono_arch_output_basic_block): fix bug 43499 
6645
6646 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
6647
6648         * mini.c: kill duplicated definition of mono_debug_format.
6649
6650 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
6651
6652         * mini-x86.c, arrays.cs: fixed register allocation bug.
6653
6654 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
6655
6656         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
6657
6658         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
6659
6660 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
6661
6662         * mini.c:
6663         (print_method_from_ip): also print source location information if
6664         available.
6665
6666 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
6667
6668         * mini.c (mono_find_block_region): bug fix in region code
6669         (mini_method_compile): enable removing unreachable code again, but
6670         only in methods without exception clauses.
6671
6672 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
6673
6674         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
6675         Implemented arglist opcode and handling of TypedReference type.
6676         Fixed x86 call convention when a structure is returned.
6677         Minimal support for calling static vararg methods.
6678
6679 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
6680
6681         * mini.c (mini_method_compile):  always remove unreachable code,
6682         because the code in them may be inconsistent  (access to dead
6683         variables for example).
6684
6685 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
6686
6687         * driver.c, debug-mini.c: warning fixes.
6688
6689 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
6690
6691         * Makefile.am, jit.h, mini.h: install header for embedding mono.
6692
6693 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
6694
6695         * mini.c: thread-static fields are registered in mono_class_vtable(),
6696         so ensure the function is called before checking for them.
6697
6698 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
6699
6700         * mini.c (optimize_branches): fix for bug 43586
6701
6702         * jit-icalls.c (mono_llmult_ovf): added an additional check for
6703         overflow (fixes Bug #43639)
6704
6705 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
6706
6707         * mini.c, objects.cs: allow the use of stobj for primitive types.
6708
6709 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
6710
6711         * mini.c: be less strict about argument checking until we support
6712         running the verifier.
6713
6714 2003-05-27  Nick Drochak <ndrochak@gol.com>
6715
6716         * basic-long.cs: tests for (ulong)int * (ulong)int also
6717         * mini.c: use the same trick for (ulong)int * (ulong)int
6718
6719 2003-05-27  Nick Drochak <ndrochak@gol.com>
6720
6721         * basic-long.cs: add regression test for (long)int * (long)int
6722         * cpu-pentium.md: add op_bigmul specification
6723         * inssel-long32.brg: add OP_BIGMUL rule
6724         * mini-ops.h: add OP_BIGMUL
6725         * mini-x86.c: register allocator: handle case where src1 needs to be
6726         in EAX.
6727         * mini.c: substitute special BIGMUL opcode in the tree for 
6728         (long)int * (long)int
6729
6730 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
6731
6732         * jit-icalls.c: call the type ctor on field access if needed.
6733
6734 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
6735
6736         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
6737         to a method (including results of ldelema, bug#43207).
6738
6739 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
6740
6741         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
6742         colors to show exception handler blocks.
6743
6744         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
6745         (fix for pinvoke7.cs).
6746
6747 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
6748
6749         * mini.h, mini.c: ensure correct initialization order for types that
6750         require it. Prepare for lazy compilation of jit icall wrappers.
6751         Provide a name for opcode emulation to reduce unneeded mallocing.
6752
6753 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
6754
6755         * mini-x86.c: better register restoring code and profiling
6756         support for tail calls.
6757
6758 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
6759
6760         * mini.h, driver.c: prepare for leaf methods optimization.
6761
6762 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
6763
6764         * mini.c: get targets of branches before converting a method.
6765
6766 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
6767
6768         * mini.c (optimize_branches): added some experimental code (disbaled) 
6769
6770 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
6771
6772         * mini.c (optimize_branches): fix branch to branch optimization 
6773
6774         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
6775
6776         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
6777
6778         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
6779
6780         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
6781         if needed.
6782
6783 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
6784
6785         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
6786         enable use of interface variables again.
6787
6788         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
6789         I1 to registers because there is no simply way to sign extend 8bit
6790         quantities in caller saved registers on x86.
6791
6792         * inssel-float.brg: set costs of some rules to 2 so
6793         that monobure always select the arch. specific ones if supplied,
6794         regardless of the order we pass the files to monoburg.
6795
6796 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
6797
6798         * mini.c, mini-x86.c: since the magic trampoline for jumps
6799         can't patch the code directly, we do it as soon as the
6800         method gets compiled.
6801
6802 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
6803
6804         * mini-x86.c, mini.h: introduce a new patching method
6805         to support CEE_JMP and tail calls.
6806         * mini.c: obey tail.call. Don't precompile methods target
6807         of CEE_JMP.
6808         * tramp-x86.c: new trampoline code to handle methods
6809         reached through a jump.
6810
6811 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
6812
6813         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
6814         bit values to registers
6815
6816 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
6817
6818         * mini.c (mono_compile_get_interface_var): share interface
6819         variables if possible.
6820
6821 2003-05-16  Martin Baulig  <martin@ximian.com>
6822
6823         * debug-mini.c (mono_init_debugger): New function to initialize
6824         the debugger.  This is not in the debugger since it needs to
6825         access some of mini's internals.
6826
6827 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
6828
6829         * mini.c (mono_method_to_ir): inlining fixes/cleanups
6830
6831 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
6832
6833         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
6834         for value type handling.
6835
6836 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
6837
6838         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
6839         (mono_method_check_inlining): enable inlining of all kinds of wrappers
6840
6841 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
6842
6843         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
6844           the constructor through a proxy.
6845
6846 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
6847
6848         * jit-icalls.c, inssel.brg: fixes to array element address
6849         calculations.
6850
6851 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
6852
6853         * mini-x86.c (is_regsize_var): allocate pointer to registers
6854
6855 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
6856
6857         * driver.c: fixed typo, added intrins to the set of optimizations
6858         tested with regressions.
6859
6860 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
6861
6862         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
6863         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
6864         test case.
6865
6866 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
6867
6868         * inssel.brg: remove some common pop instructions without side effects
6869
6870 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
6871
6872         * inssel-x86.brg: fixed thinko in int to double conversions.
6873
6874 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
6875
6876         * mini.c, jit-icalls.c: added runtime thread-static variable support.
6877
6878 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
6879
6880         * inssel-long32.brg: two more missing instructions.
6881
6882 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
6883
6884         * mini.c (mono_emit_call_args): set the cil_code for all arguments
6885         if not already set.
6886
6887 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
6888
6889         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
6890         correctly.
6891
6892         * basic-float.cs: Added tests for negative zero.
6893
6894 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
6895
6896         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
6897         a couple of missing operations for long casts, with test cases.
6898
6899 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
6900
6901         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
6902
6903 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
6904
6905         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
6906         code size estimation.
6907
6908 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
6909
6910         * mini.c (mono_jit_create_remoting_trampoline): make it work with
6911         abstract methods (fix bug 42542)
6912
6913         * aot.c: add ability to handle array types
6914         
6915 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
6916
6917         * mini.c: Call the _specific versions of the object allocation
6918         functions if possible.
6919
6920 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
6921
6922         * driver.c: call setlocale ().
6923
6924 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
6925
6926         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
6927         windows build.
6928
6929 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
6930
6931         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
6932
6933         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
6934         wrappers (fix bug 42122)
6935
6936 2003-05-04  Martin Baulig  <martin@ximian.com>
6937
6938         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
6939
6940         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
6941         s/mini_set_defaults/mono_set_defaults/g.
6942
6943 2003-05-04  Martin Baulig  <martin@ximian.com>
6944
6945         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
6946
6947 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
6948
6949         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
6950         (reported by Don Roberts).
6951
6952 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
6953
6954         * mini.c: temporarily work around two bugs for this release.
6955
6956 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
6957
6958         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
6959         that contains -export-dynamic and it makes using the ld script
6960         useless.
6961         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
6962
6963 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
6964
6965         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
6966         specific cpu.
6967
6968 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
6969
6970         * mini.c: make sure leave calls all the needed finally blocks,
6971         even when the target jumps out of multiple exception clauses.
6972
6973 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
6974
6975         * ldscript, Makefile.am: add linker script to reduce the number of
6976         exported symbols (should also fix the issues with libwine defining
6977         some of the same symbols in io-layer).
6978
6979 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
6980
6981         * driver.c (mini_main): Avoid assertion when no file name is given on 
6982         the command line.
6983
6984 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
6985
6986         * driver.c: added --version/-V command line option.
6987         Added the inline optimization in the regression tests.
6988
6989 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
6990
6991         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
6992         to the type in the method signature (fixes bug#42134).
6993
6994 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
6995
6996         * mini.c: when inlining, check this is not null only when needed (bug #42135).
6997
6998 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
6999
7000         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
7001
7002 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7003
7004         * driver.c: fixed bug #42100.
7005
7006 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
7007
7008         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
7009
7010 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
7011
7012         * mini.c: moved most of the code required to do inlining to its own
7013         function so it can be reused. Inline also ctors if appropriate.
7014
7015 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
7016
7017         * Makefile.am: Link with -export-dynamic so shared libs loaded by
7018         the runtime can call mono API functions.
7019
7020 2003-04-27  Martin Baulig  <martin@ximian.com>
7021
7022         * debug-mini.c (mono_debug_init_method): Added
7023         `guint32 breakpoint_id' argument; if the method has a breakpoint,
7024         send a notification to the debugger.
7025
7026         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
7027         running in the Mono Debugger, just pass the breakpoint number to
7028         mono_debug_init_method().
7029
7030         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
7031
7032 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
7033
7034         * mini.c: allow some more unsafe compares.
7035
7036 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
7037
7038         * mini-x86.c, Makefile.am: make distcheck works (partially from
7039         a patch by Richard Lee <r.h.lee@attbi.com>).
7040         * regset.c, regset.h: removed, they are unused.
7041
7042 2003-04-25  Dick Porter  <dick@ximian.com>
7043
7044         * driver.c: Usage reports the name as 'mono' not 'mini'
7045         * exceptions-x86.c: Build and run on freebsd
7046
7047 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
7048
7049         * Makefile.am: install the program with the 'mono' name and
7050         the library as libmono instead of mini and libmini.
7051
7052 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
7053
7054         * driver.c: provide the APIs for the embedding interface of the old jit.
7055
7056 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
7057
7058         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
7059
7060 2003-04-23  Martin Baulig  <martin@ximian.com>
7061
7062         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
7063
7064         * driver.c: Added `--debug' command line argument to enable
7065         debugging support.
7066
7067 2003-04-23  Martin Baulig  <martin@ximian.com>
7068
7069         * debug.[ch]: Removed.  The code is now in
7070         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
7071
7072         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
7073         last six months.
7074
7075 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
7076
7077         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
7078
7079 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
7080
7081         * mini.c:
7082         (mini_cleanup): moved mono_runtime_cleanup call after the call to
7083         mono_domain_finalize.
7084         (mini_method_compile): use mono_method_profile* if the the option is
7085         enabled.
7086
7087 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
7088
7089         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
7090         methods with their wrapper.
7091
7092         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
7093         methods with their wrapper.
7094
7095         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
7096         their wrapper.
7097
7098         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
7099         wrapper.
7100
7101         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
7102         methods.
7103
7104 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
7105
7106         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
7107
7108 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
7109
7110         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
7111         of the mempool. This is slightly faster and uses less memory
7112
7113 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
7114
7115         * mini.c: avoid O(n) allocation for variables.
7116
7117 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
7118
7119         * mini.c: handle items on the stack after inlining methods.
7120
7121 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
7122
7123         * mini.c: make the method->opcode optimization dependent
7124         on MONO_OPT_INSTRINS and do it lazily.
7125
7126 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
7127
7128         * driver.c: print overall results at the end of regression run.
7129
7130 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
7131
7132         * inssel.brg: don't overwrite symbolic registers.
7133
7134 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
7135
7136         * inssel-x86.brg: fix conversion from long to float.
7137
7138 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
7139
7140         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
7141
7142 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
7143
7144         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
7145
7146         * driver.c: Added --print-vtable option as in the old JIT.
7147
7148 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
7149
7150         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
7151
7152 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
7153
7154         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
7155
7156 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
7157
7158         * mini.c regalloc.c regalloc.h: Fix memory leak.
7159
7160 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
7161
7162         * aot.c (mono_aot_get_method): register all used strings
7163
7164 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
7165
7166         * mini.c: always intern strings references with ldstr at compile time.
7167
7168 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
7169
7170         * Makefile.am: add BUILT_SOURCES.
7171
7172 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
7173
7174         * driver.c: give a better error message when the assembly to execute
7175         doesn't have an entry point.
7176
7177 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
7178
7179         * Makefile.am: added hack for automake
7180
7181         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
7182         correct sematics.
7183
7184         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
7185
7186 22003-04-07  Martin Baulig  <martin@ximian.com>
7187
7188         * Makefile.am: Added Makefile.am.
7189
7190         * debugger-main.c: Removed, this is now in the debugger where it
7191         belongs.
7192
7193         * mini.pc.in: Call this package `mini' for the moment.
7194
7195
7196
7197
7198