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