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