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