Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / mini / ChangeLog
1
2 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
3
4         * mini.c: print the delegate counter.
5
6 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
7
8         * mini-x86.c: make it easier to enable the debugging code for IMT
9         slots.
10
11 2007-09-28  Martin Baulig  <martin@ximian.com>
12
13         * debug-debugger.h
14         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
15         `mono_method_klass_offset' and `mono_method_token_offset'.
16
17 2007-09-20  Mark Probst  <mark.probst@gmail.com>
18
19         * mini.c: First generics sharing implementation.  Can only share
20         in very simple cases.  If sharing doesn't work it falls back to
21         dedicated compilation.
22
23         * mini.h: Flag in MonoCompile to specify whether generic
24         compilation is shared.  Flags enum for marking which generic inst
25         of a context is used.  Prototypes for helper functions.
26
27         * generic-sharing.c: Helper functions for generic method sharing.
28
29         * optflags-def.h: Optimization flag (gshared) for enabling generic
30         method sharing added.
31
32         * Makefile.am: generic-sharing.c added.
33
34 2007-09-19 Daniel Nauck <dna@mono-project.de>
35
36         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
37
38 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
39         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
40         fixes bug 325507.
41
42 2007-09-19  Martin Baulig  <martin@ximian.com>
43
44         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
45         mono_debug_cleanup() is now part of mono_cleanup().
46
47 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
48
49         * driver.c (mono_main): Fix a warning.
50
51 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
52
53         * aot-compiler.c: Optimize various parts when processing large assemblies.
54         Fixes ##325568.
55
56         * mini.c (mono_patch_info_hash): Improve hash function.
57
58 2007-09-14  Jonathan Chambers <joncham@gmail.com>
59
60         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
61         
62         Code is contributed under MIT/X11 license.
63
64 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
65
66         * mini.c (mini_init): Fix a leak.
67
68         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
69
70 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
71
72         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
73
74 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
75
76         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
77
78 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
79
80         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
81         variance tests.
82
83         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
84
85         * mini.c (handle_alloc): Enable managed allocators in AOT code.
86
87         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
88
89         * aot-runtime.c (decode_patch_info): Ditto.
90
91 2007-09-12  Jonathan Chambers <joncham@gmail.com>
92
93         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
94         static case. Cache delegates in architecture specific code, 
95         based on number of parameters.
96         
97         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
98         in architecture specific code, based on number of parameters.
99         
100         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
101         caching happen in architecture specific code now.
102         
103         Code is contributed under MIT/X11 license.
104
105 2007-09-12  Jonathan Chambers <joncham@gmail.com>
106
107         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
108         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
109         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
110
111         Code is contributed under MIT/X11 license.
112
113 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
114         * mini.c: (mono_thread_abort) Fixed bug #82416.
115
116 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
117
118         * mini.: hook the new managed GC allocation feature into the JIT.
119
120 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
121
122         * mini.c: implementation for the new runtime tls opcode.
123
124 2007-09-11  Martin Baulig  <martin@ximian.com>
125
126         * debug-debugger.h
127         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
128         `mono_method_inflated_offset'.
129
130 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
131
132         * driver.c mini.h mini.c: Add a new devel command line option for injecting
133         async exceptions into a method.
134
135         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
136         purpose of testing whenever the unwinder works at every instruction.
137
138 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
139
140         * mini.c: check accessibility of method used in ldftn (fixes
141         bug #82635).
142
143 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
144
145         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
146
147         * inssel.brg: Fix a warning.
148
149 2007-09-03  Martin Baulig  <martin@ximian.com>
150
151         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
152         now takes the `main_method' as argument.
153
154 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
155
156         * cpu-sparc.md (endfilter): Add missing src1:i argument.
157
158 2007-08-30  Jonathan Chambers <joncham@gmail.com>
159
160         * driver.c: include the cil-coff.h header on Windows.
161         
162         Code is contributed under MIT/X11 license.
163
164 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
165
166         * mini.c, driver.c: don't include the cil-coff.h header.
167
168 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
169
170         * mini.c: flag places that needs fixes fo soft-float support.
171
172 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
173
174         * mini.h, inssel-float.brg: fix soft-float constant loads on big
175         endian systems (partially from Dean Jenkins, bug #81924).
176
177 2007-08-28  Mark Probst  <mark.probst@gmail.com>
178
179         * mini.c (check_linkdemand): Remove embedded reference object in
180         call to LinkDemandSecurityException.
181         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
182         with an IntPtr instead of a reference object.
183
184 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
185
186         * mini.c (handle_initobj): Handle alignment properly.
187
188         * inssel.brg (mini_emit_memset): Ditto. 
189
190         * inssel.brg (mini_emit_memcpy): Ditto. 
191
192         * inssel-sparc.brg: Ditto.              
193
194         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
195
196 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
197
198         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
199         exceptions raised in unmanaged code. Fixes part of #82594.
200
201 2007-08-24  Mark Probst  <mark.probst@gmail.com>
202
203         * mini.c (mono_method_to_ir), declsec.c
204         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
205
206 2007-08-22  Martin Baulig  <martin@ximian.com>
207
208         * debug-mini.h
209         (MonoDebuggerThreadInfo): New typedef.
210         (mono_debugger_thread_table): New global variable.
211         (mono_debugger_thread_created): New public function.
212         (mono_debugger_thread_cleanup): New public function.
213
214         * debug-debugger.h
215         (MonoDebuggerInfo):
216         - removed `get_current_thread' and `lookup_assembly'.
217         - removed `data_table'.
218         - added `thread_table'.
219
220         * mini.c
221         (mono_thread_start_cb): Call mono_debugger_thread_created().
222         (mono_thread_attach_cb): Likewise.
223         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
224         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
225         initial domain.
226
227         * driver.c (mono_main): Move mono_debug_init() up, before calling
228         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
229
230 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
231
232         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
233         together when passing several arguments of type double (gives a small
234         speedup and saves a few bytes of generated code).
235
236 2007-08-20  Jb Evain  <jbevain@novell.com>
237
238         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
239
240 2007-08-20  Jb Evain  <jbevain@novell.com>
241
242         * mini.c (mono_method_to_ir): throw MethodAccessException
243         and FieldAccessException instead of InvalidProgramException.
244
245 2007-08-20  Mark Probst  <mark.probst@gmail.com>
246
247         * mini.c: CoreCLR security checks.
248
249         * mini.h: Removed MonoSecurityMode (moved to
250         metadata/security-manager.h) and mono_security_mode global var
251         (replaced by set/get functions in security-manager.h).
252
253         * driver.c: Added "core-clr-test" security mode for testing.  Used
254         set-function for setting security mode.
255
256 2007-08-17  Mark Probst  <mark.probst@gmail.com>
257
258         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
259         the new jit_info_table.
260
261         * driver.c: Test code for the new jit_info_table (enabled by the
262         define MONO_JIT_INFO_TABLE_TEST).
263
264 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
265
266         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
267         detection of call <REG> instruction sequence. Fixes build on freebsd.
268
269 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
270
271         * mini-exceptions.c: Fix a warning.
272
273 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
274
275         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
276         stack overflow handling code on amd64 too.
277
278         * mini-exceptions.c (mono_setup_altstack): Make this use 
279         mono_thread_get_stack_bounds ().
280
281         * mini-x86.h: Disable sigaltstack on solaris x86.
282
283 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
284
285         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
286
287 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
288
289         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
290
291 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
292
293         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
294
295         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
296
297 2007-08-03  Neale Ferguson <neale@sinenomine.net>
298
299         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
300         due to alignment.
301
302 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
303
304         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
305         to be emitted (bug #82281).
306
307 2007-08-01  Martin Baulig  <martin@ximian.com>
308
309         Merged the `debugger-dublin' branch.
310
311         * debug-debugger.h (MonoDebuggerInfo):
312         Removed the `old_*' compatibility entries.
313         Added `debugger_version' and `data_table'.
314         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
315         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
316
317         * debug-mini.c
318         (MiniDebugMethodBreakpointInfo): Add `address_list'.
319         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
320         instead of a `gconstpointer'.
321         (mono_debugger_insert_method_breakpoint): Return a
322         `MonoDebugMethodAddressList *'.
323
324 2007-06-28  Martin Baulig  <martin@ximian.com>
325
326         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
327
328 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
329
330         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
331         __builtin_frame_address () since it is broken on older gcc versions.
332
333 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
334
335         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
336         on the stack overflow handling and made the managed stack overflows
337         catchable in most cases using soft guard pages.
338         * exceptions-x86.c: added code to restore the protection in the soft
339         guard pages at the end of exception handling.
340
341 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
342
343         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
344
345 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
346
347         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
348         exception handling.
349
350 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
351
352         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
353         signal handling support until it has been ported to the new mechanism.
354         * mini.c: fixed stack overflow detection and use the new
355         architecture code  to handle signals on the altstack.
356
357 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
358
359         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
360         stack overflows on the alt stack.
361
362 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
363
364         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
365         stack overflows on the alt stack.
366
367 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
368
369         * exceptions-ppc.c: cleanup preparing for altstack support.
370
371 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
372
373         * exceptions-arm.c: cleanup preparing for altstack support.
374
375 2007-07-27  Mark Probst  <mark.probst@gmail.com>
376
377         * mini.c (print_jit_stats): Output hazard pointer stats.
378
379 2007-07-26  Mark Probst  <mark.probst@gmail.com>
380
381         * driver.c, mini.c: Replaced security mode flags with a single
382         enum variable.
383
384 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
385
386         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
387
388 2007-07-25  Mark Probst  <mark.probst@gmail.com>
389
390         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
391         (which doesn't do anything yet) for activating Core CLR
392         (Silverlight) security.
393
394 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
395
396         * mini-codegen.c: work around a possible gcc bug on arm.
397
398 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
399
400         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
401         message for platforms that don't support AOT compilation.
402
403 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
404
405         * mini.h, mini.c, driver.c: temporary smcs hack.
406
407 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
408
409         * mini-arm.h, mini-arm.c: arm EABI fixes.
410
411 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
412
413         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
414         case.
415
416         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
417         trampolines taking a method argument.
418
419         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
420
421         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
422         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
423
424         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
425         JIT compilation throws an exception. Fixes #82050.
426
427 2007-07-19  Mark Probst  <mark.probst@gmail.com>
428
429         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
430         with the MONO_EXCEPTION_ defines.
431
432 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
433
434         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
435         #82117.
436         
437         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
438         the cause of an assertion.
439
440 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
441
442         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
443         removed.
444
445 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
446
447         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
448         assert. Should fix #82103.
449
450 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
451
452         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
453         here too. Fixes #82095.
454
455         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
456         addresses.
457
458         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
459
460         * mini-amd64.h: Enable IMT for amd64.
461         
462         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
463
464 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
465
466         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
467
468 2007-07-12  Mark Probst  <mark.probst@gmail.com>
469
470         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
471         as soon as check_linkdemand sets an exception_type.
472
473 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
474
475         * mini-x86.c: fixed offsets for IMT call sequence.
476         * mini-x86.h: enable IMT again.
477
478 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
479
480         * trace.c (mono_trace_enter_method): Decode MonoType too.
481
482         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
483
484         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
485
486         * mini-amd64.c: Add preliminary IMT implementation.
487         
488 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
489
490         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
491         understand the new IMT-base interface invocation (thanks to
492         Daniel Nauck for the report and the remote debugging session).
493
494 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
495
496         * mini-x86.c: size and speed optimizations for the IMT bsearch.
497
498 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
499
500         * Makefile.am (aotcheck): Make this actually use the AOTed code.
501
502 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
503
504         * mini-trampolines.c: implement AOT IMT support.
505         * mini-x86.h: enable IMT support for wider testing.
506
507 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
508
509         * inssel.brg (emit_imt_argument): Add aot support here.
510
511         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
512
513 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
514
515         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
516         of the IMT implementation, partially from massi, with my
517         implementation of the bsearch sequence. Disabled by default until
518         the AOT code is implemented.
519
520 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
521
522         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
523
524         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
525
526 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
527
528         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
529         arch-independent IMT JIT code from Massimiliano
530         Mantione (massi@ximian.com) with small cleanups from me.
531
532 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
533
534         * Makefile.am: fix svn invocation to get the svn revision to be
535         independent of the local language (build fix).
536
537 2007-07-09  Mark Probst  <mark.probst@gmail.com>
538
539         * mini.c (inline_method): Reset cfg->exception_type if the
540         inlining is aborted.  Fixes: 82049.
541
542 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
543
544         * mini.c: remove assert from exception handling code when exception_ptr
545         is not set.
546
547 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
548
549         * mini.c (mono_codegen): Add an assert.
550
551         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
552         enter and leave code.
553         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
554
555 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
556
557         * mini-ppc.c: fixed memory corruption for localloc(0)
558         (bug #81852).
559
560 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
561         
562         * mini.c: Fix warnings.
563
564 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
565
566         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
567         to emit better double->int conversions.
568
569 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
570
571         * mini.c: the provided Min/Max optimizations are valid for unisgned
572         ints.
573
574 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
575
576         * mini.c (can_access_method, can_access_field): methods moved to metadata/class.c and renamed to mono_method_can_access_method and mono_method_can_acesss_field
577
578 2007-06-28  Miguel de Icaza  <miguel@novell.com>
579
580         * mini.c (mono_running_on_valgrind): Add support for reporting the
581         method and  its boundaries to valgrind.
582
583 2007-06-28  Martin Baulig  <martin@ximian.com>
584
585         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
586
587 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
588
589         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
590
591         * generic.2.cs: Add new test case.
592
593 2007-06-25  Martin Baulig  <martin@ximian.com>
594
595         Merged the `debugger-dublin' branch.
596
597         * debug-mini.c
598         (mono_debugger_insert_method_breakpoint): New public method.
599         (mono_debugger_remove_method_breakpoint): Likewise.
600         (mono_debugger_check_breakpoints): New static method.
601         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
602
603         * debug-debugger.h (MonoDebuggerInfo):
604         Renamed (to keep backward compatibility in the vtable):
605         `insert_breakpoint' -> `old_insert_breakpoint'.
606         `remove_breakpoint' -> `old_remove_breakpoint'.
607         `create_string' -> `old_create_string'.
608         `lookup_class' -> `old_lookup_class'.
609         `lookup_type' -> removed; changed into a dummy field.
610         `lookup_assembly' -> `old_lookup_assembly'.
611         Added (same functionality, but different signature):
612         `create_string', `lookup_class', `lookup_assembly'
613         Added new:
614         `get_method_addr_or_bpt', `remove_method_breakpoint',
615         `runtime_class_init'.
616
617         * debug-debugger.c: Merged the `debugger-dublin' branch.
618
619 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
620
621         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
622         well.
623         (peephole_pass): Likewise.
624
625 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
626
627         * driver.c: hopefully make setaffinity work also for ancient
628         versions of linux.
629
630 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
631
632         * driver.c : win32 build fix.
633
634 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
635
636         * driver.c: check for the MONO_NO_SMP env var and bind to a single
637         processor if it is set.
638
639 2007-06-21  Martin Baulig  <martin@ximian.com>
640
641         * debug-mini.h: New file.
642
643         * debug-mini.c
644         (mono_debugger_insert_breakpoint_full): Moved here from
645         ../metadata/mono-debug-debugger.c.
646         (mono_debugger_remove_breakpoint): Likewise.
647         (mono_debugger_breakpoint_callback): Likewise.
648
649 2007-06-15  Raja R Harinath  <rharinath@novell.com>
650
651         * jit-icalls.c (mono_helper_compile_generic_method): Update to
652         changes in MonoGenericClass.
653
654 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
655
656         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
657
658 2007-06-14  Raja R Harinath  <rharinath@novell.com>
659
660         * jit-icalls.c (mono_helper_compile_generic_method): Update to
661         removal of MonoGenericMethod.
662
663 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
664
665         * mini-exceptions.c: hooks for the exception events profiling API.
666
667 2007-06-14  Randolph Chung  <tausq@debian.org>
668
669         * Makefile.ma: Add hppa target.
670         * mini-arch.h: Include mini-hppa.h
671         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
672         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
673         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
674
675 2007-06-14  Randolph Chung  <tausq@debian.org>
676
677         * inssel.brg: Add rules for "chained" compare-branch operations so that
678         a single compare op can affect multiple branches.  Adjust cost for
679         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
680         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
681         cost for some rules so that they can more easily be overridden by
682         per-arch rules (with fixes from lupus).
683         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
684
685 2007-06-13  Randolph Chung  <tausq@debian.org>
686
687         * mini-ops.h: Reorder branch ops so that they match the order of the
688         corresponding CEE_* ops.  The code expects them this way.
689         Add new ops for HPPA target.
690         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
691
692 2007-06-13  Randolph Chung  <tausq@debian.org>
693
694         * mini-exceptions.c: Handle cases where the stack grows towards
695         larger addresses.
696         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
697
698 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
699
700         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
701         counter.
702         * driver.c: explain where a non-matching corlib is found.
703
704 2007-06-13  Mark Probst  <mark.probst@gmail.com>
705
706         * mini.c (print_jit_stats): Output dynamic code allocation stats.
707
708 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
709
710         * mini-exceptions.c: Generate a method profile leave event during
711         an exception to ensure that the profiler gets notified.
712
713 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
714
715         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
716         branch.
717
718         * cpu-amd64.md: Add long_and/or/xor opcodes.
719
720 2007-06-06  Wade Berrier  <wberrier@novell.com>
721
722         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
723         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
724         length of instruction shr_imm (expected 8, got 10)
725
726 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
727
728         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
729
730 2007-06-06  Mark Probst  <mark.probst@gmail.com>
731
732         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
733         MonoInternalHashTable again (fixed bug in the internal hash table
734         code).
735
736 2007-06-06  Mark Probst  <mark.probst@gmail.com>
737
738         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
739         Have to figure out what makes it crash the SWF regression.
740
741 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
742
743         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
744
745 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
746
747         * mini.c: optimize out the type check when storing null in a
748         reference array.
749
750 2007-06-04  Mark Probst  <mark.probst@gmail.com>
751
752         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
753         MonoInternalHashTable.
754
755 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
756
757         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
758         signed integer methods.
759
760 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
761
762         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
763         permanently since the current approach doesn't work.
764
765 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
766
767         * inssel.brg (stmt): Only call delegate->invoke_impl if 
768         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
769
770 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
771
772         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
773         the sreg2==rdx case.
774         
775         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
776         account if it contains a rex prefix.
777         (peephole_pass): Handle OP_FMOVE as well.
778
779 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
780
781         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
782         as it causes regressions.
783
784 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
785
786         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
787         static case as well.
788
789         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
790
791         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
792         (mono_arch_get_this_arg_from_call): Ditto.
793
794         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
795
796         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
797         invoke_impl field.
798
799         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
800         (mono_arch_get_this_arg_from_call): Ditto.
801
802         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
803         
804         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
805         try to create optimized invoke code and use that for further invocations. 
806         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
807
808         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
809
810 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
811
812         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
813         sealed classes or methods.
814         *devirtualization.cs: tests for the new optimization
815
816 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
817
818         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
819         by the update_volatile () function.
820
821 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
822
823         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
824         require it.
825
826         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
827
828 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
829
830         * mini.c: Add configure checks for header files.
831         * mini-x86.c: Add configure checks for header files.
832         * trace.c: Add configure checks for header files.
833         * aot-runtime.c: Add configure checks for header files.
834         * aot-compiler.c: Add configure checks for header files.
835         * driver.c: Add configure checks for header files.
836         * mini-codegen.c: Add configure checks for header files.
837         
838         Code is contributed under MIT/X11 license.
839
840 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
841
842         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
843         icompare_imm -128 + op_iclt. Fixes #81703.
844
845 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
846
847         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
848
849 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
850
851         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
852         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
853         so that all isinst checks now use "interface_bitmap".
854
855 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
856
857         * cpu-amd64.md (jmp): Fix a warning.
858
859         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
860
861         * basic.cs: Add new regression test.
862
863         * basic.cs: Remove test which is now in basic-long.cs.
864
865         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
866
867         * basic-long.cs: Add new test.
868         
869 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
870
871         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
872
873 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
874
875         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
876
877         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
878         places.
879         
880         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
881         throwing code a bit.
882
883         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
884         the exception throwing code a bit.
885
886         * mini-x86.c (get_call_info): Allocate result from a mempool.
887
888 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
889
890         * aot-compiler.c (find_typespec_for_class): Fix the assert.
891
892         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
893
894         * mini.h (MonoCompile): Add 'token_info_hash' field.
895
896         * mini.c: Save token->method associations during compilation so the AOT 
897         compiler can use it.
898         
899         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
900         which reference generic classes and methods.
901
902 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
903
904         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
905
906         * aot-compiler.c (compile_method): Fix a typo in a comment.
907
908         * aot-runtime.c (decode_cached_class_info): Skip generic types.
909
910         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
911         everything generic.
912
913         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
914
915 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
916
917         * mini.h (MonoCompile): Add 'args' field.
918
919         * mini.c (mono_compile_create_vars): Store variables representing the arguments
920         into cfg->args.
921
922         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
923
924 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
925
926         * mini.c (mono_compile_get_interface_var): Remove this unused function.
927
928         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
929
930         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
931         opcodes for some opcodes.
932
933         * mini.h *.brg *.c: Use the new opcodes.
934
935 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
936
937         * mini.h: Bumped aot revision.
938
939         * inssel.brg: modified code generation of type checks for interfaces
940         to use the new "MonoClass.interface_bitmap" instead of the old
941         "MonoClass.interface_offsets".
942
943 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
944
945         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
946
947 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
948
949         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
950         64 bit platforms.
951
952 2007-04-27  Neale Ferguson <neale@sinenomine.net>
953
954         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
955
956 2007-04-27  Wade Berrier  <wberrier@novell.com>
957
958         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
959         mini.h) to fix build.
960
961 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
962
963         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
964         
965         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
966         causes the corlib unit tests to fail.
967
968 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
969
970         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
971
972         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
973
974         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
975         opcodes to the comparison relations.
976
977         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
978         opcodes to their types.
979         
980         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
981
982         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
983         it in cfg->arch.cinfo.
984
985         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
986
987         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
988         cfg->cil_offset_to_bb.
989
990 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
991
992         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
993         created becase of initlocals.
994
995 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
996
997         * mini-alpha.c cpu-alpha.md: More alpha port work from 
998         Sergey Tikhonov <tsv@solvo.ru>.
999
1000 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
1001
1002         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
1003
1004 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
1005
1006         * cpu-s390.md (break): Correct the length of break instruction.
1007
1008 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
1009
1010         * mini.c: fix a couple of soft-float issues and comments.
1011
1012 2007-04-15  Miguel de Icaza  <miguel@novell.com>
1013
1014         * trace.c (is_filenamechar): - is also a filename char.
1015
1016 2007-04-15  Neale Ferguson <neale@sinenomine.net>
1017
1018         * mini-s390.c: Correct checking for enum type in return value processing.
1019
1020 2007-04-14  Raja R Harinath  <rharinath@novell.com>
1021
1022         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
1023         (version.h): Makefile is in the build directory.
1024
1025 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
1026
1027         * mini-amd64.h: fix for assertion failure on Solaris/amd64
1028
1029 2007-04-11  Martin Baulig  <martin@ximian.com>
1030
1031         * mini.c (can_access_member): Fix handling of generic classes;
1032         fixes #81259.
1033
1034 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
1035
1036         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
1037
1038 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
1039
1040         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
1041
1042 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
1043
1044         * mini-codegen.c: make sure the right spill amount is
1045         used for fp or integer registers (fixes the float_sub_spill() on ppc).
1046
1047 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
1048
1049         * mini-ppc.c: fixes for the fp_branch_nan test.
1050
1051 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
1052
1053         * basic.cs: Comment out new test which still fails on ia64.
1054
1055 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
1056
1057         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
1058
1059 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
1060
1061         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
1062
1063 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
1064
1065         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
1066         on 64 bit machines. Fixes part of #80738.
1067
1068         * basic.cs: Add regression test.
1069
1070 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
1071
1072         * inssel.brg basic.cs: Revert previous change to fix build.
1073
1074         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
1075         platforms.
1076         
1077         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
1078
1079         * basic.cs: Add new regression test.
1080
1081 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
1082
1083         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
1084         many arguments.
1085
1086 2007-03-16  Neale Ferguson <neale@sinenomine.net>
1087
1088         * cpu-s390x.md: Correct length of break instruction.
1089
1090 2007-03-16  Neale Ferguson <neale@sinenomine.net>
1091
1092         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
1093         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
1094
1095 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
1096
1097         * *.c: Begin WIN64 port.
1098         * mini.c:  Use correct register in profiler.
1099         * mini-amd64.c: No inline assembly on Win64.
1100         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
1101         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
1102         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
1103         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
1104         mono_arch_ip_from_context for Win64.
1105         
1106         Contributed under MIT/X11 license.
1107
1108 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
1109
1110         * exceptions-amd64.c (seh_handler): Ditto.
1111
1112         * exceptions-x86.c (seh_handler): Fix a memory leak.
1113
1114 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
1115
1116         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
1117         mini-s390x.c: fixed peephole optimizations to deal
1118         correctly with 1 and 2 byte reload avoidance.
1119
1120 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
1121
1122         * cpu-s390.md, cpu-s390x.md: update localloc length.
1123
1124 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
1125
1126         * cpu-g4.md: added missing descriptions.
1127
1128 2007-03-14  Miguel de Icaza  <miguel@novell.com>
1129
1130         *  Makefile.am: Add support so the tail tests are not executed on
1131         PowerPC as that is a known limitation of the PowerPC port.
1132
1133 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
1134
1135         * runmdesc.bat:  Move to msvc directory.
1136         
1137 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
1138
1139         * runmdesc.bat:  Run executable that was produced by the current
1140         target and sent via an argument.
1141         
1142 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
1143
1144         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
1145         #81102.
1146
1147         * generics.2.cs: Add regression test.
1148
1149 2007-03-09  Wade berrier  <wberrier@novell.com>
1150
1151         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
1152
1153 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
1154
1155         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
1156         AOT code depends on this.
1157
1158 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
1159
1160         * mini.c: more precise tracking of types in the eval stack
1161         (part of fix for bug #81044).
1162
1163 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
1164
1165         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
1166
1167         * aot-compiler.c (encode_patch): Remove an obsolete comment.
1168
1169 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
1170
1171         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
1172
1173         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
1174
1175 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
1176
1177         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
1178         a pointer on 64 bit systems. Fixes #80190.
1179
1180         * iltests.il: Add new regression test.
1181
1182 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
1183
1184         * mini.c: inline a constant for Environment.IsRunningOnWindows.
1185
1186 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
1187
1188         * trace.c: Remove an erroneous alignemnt check when tracing.
1189           Fixes --trace on OSX86.
1190
1191 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
1192
1193         * mini-$(arch).h: initialize SP in context for all the archs.
1194
1195 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
1196
1197         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
1198         regressions in the thread tests.
1199
1200 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
1201
1202         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
1203         - fixed implementation of LOCALLOC opcode
1204         - implemented non-un compare for floats
1205         - code cleanup
1206         - implementation of FDIV and CKFINITE opcodes
1207         - fixes for latest mono updates
1208         - additional arch opcodes
1209
1210 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
1211
1212         * Makefile.am: simplify and merge rules for cross-compilation.
1213
1214 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
1215
1216         * local-propagation.c: Actually *apply* the fix for bug 80591...
1217
1218 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
1219
1220         * mini-exceptions.c: backuot part of the last change
1221         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
1222
1223 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
1224         * inssel.brg: Fix bug 59286.
1225
1226
1227 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
1228
1229         * mini-exceptions.c: patch from Zoltan to correctly check for
1230         stack boundaries (using the stack register, not the frame register),
1231         fixes bugs #80724, #79717.
1232
1233 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
1234
1235         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
1236         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
1237
1238         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
1239         presence of frame pointer elimination.
1240
1241 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
1242         
1243         * mini-x86.h: NetBSD UCONTEX_REG defines.
1244
1245 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
1246
1247         * inssel-amd64.brg: Fix amd64 build.
1248
1249 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
1250
1251         * mini.h: remove extern to workaround what looks likes gcc bug 26905
1252         on amd64.
1253
1254 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
1255
1256         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
1257         ends.
1258
1259         * mini-<ARCH>.c: Use mono_is_regsize_var ().
1260
1261 2007-01-30 Mark Mason <mason@broadcom.com>
1262
1263            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
1264            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
1265            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
1266            beginning support for CEE_JMP [not quite working yet]
1267            * tramp-mips.c: LMF handling now works
1268         
1269 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
1270
1271         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
1272
1273         * mini.h (NULLIFY_INS): New macro.
1274
1275 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
1276
1277         * mini.c: statistical profiler fix for windows, patch
1278         from Tor Lillqvist (tml@novell.com).
1279
1280 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
1281         * local-propagation.c: Fix bug 80591.
1282
1283 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
1284
1285         * Makefile.am: put back the --export-dynamic option as with
1286         the previous gmodule flags (thanks to Robert Jordan).
1287
1288 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
1289
1290         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
1291
1292         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
1293         simplify and speed up the local register allocator. Also rename some fields
1294         like iassign->vassign.
1295         
1296         * regalloc.c: Remove some functions which are no longer used since their
1297         inlined version is in mini-codegen.c.
1298         
1299         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
1300
1301         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
1302
1303 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
1304
1305         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
1306         narrowing. Fixes #80622.
1307
1308         * iltests.il: Add new regresssion test. 
1309
1310 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
1311
1312         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
1313         debug-debugger.c, debug-debugger.h: warning fixes.
1314         * driver.c: updated copyright year and made it fit in one line.
1315
1316 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
1317
1318         * aot-runtime.c: updated to use mono-dl instead of gmodule.
1319
1320 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
1321
1322         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
1323
1324         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
1325
1326         * iltests.il: Add new test for bug #80507.
1327
1328 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
1329
1330         * mini-arm.h: use soft-float also on vfp for now.
1331
1332 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
1333
1334         * mini.c: fix some more soft-float issues.
1335
1336 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
1337
1338         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
1339
1340 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
1341         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
1342         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
1343         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
1344
1345 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
1346
1347         * mini-arm.c: typo fix.
1348
1349 2007-01-23  Neale Ferguson <neale@sinenomine.net>
1350
1351         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
1352
1353 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
1354
1355         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
1356         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
1357
1358         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
1359
1360         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
1361
1362         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
1363         
1364         * inssel.brg: Fix a warning.
1365
1366         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
1367
1368         * abcremoval.c ssa.c ssapre.c: Update after this change.
1369         
1370         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
1371
1372         * dominators.c (df_set): Use mono_bitset_union_fast.    
1373
1374 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
1375
1376         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
1377         mini-codegen.c: reduce relocations and memory usage for the cpu
1378         description.
1379
1380 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
1381
1382         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
1383
1384         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
1385         to reduce their size.
1386
1387 2007-01-19 Mark Mason <mason@broadcom.com>
1388
1389         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
1390         * mini-mips.c: more configuration macros, support long conditional branches, additional
1391         asserts, fix epilog instrumentation.
1392         * mini-mips.h: use standard stack walk
1393         * cpu-mips.md: increase size of div, rem and conditional branches
1394         
1395 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
1396
1397         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
1398         to cpu spec data.
1399
1400 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
1403         (compile_method): Ditto.
1404
1405         * aot-runtime.c (decode_klass_info): Ditto.
1406
1407         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
1408         needed by the code generated by inssel.brg. Also fix a warning.
1409
1410 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
1411
1412         * mini.c: deal with enums that become genericinsts by
1413         being nested in a generic class (bug #79956).
1414
1415 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
1416
1417         * mini.c: match the generic definition to check for
1418         private access with generic types (bug #78431).
1419
1420 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
1421
1422         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
1423         to make life easier for people cross-compiling that insist on not
1424         using scratchbox.
1425
1426 2007-01-17 Mark Mason <mason@broadcom.com>
1427
1428         * inssel-long.brg: patch to deal with mips missing flags
1429         * inssel-long32-mips.brg: implement overflow checks
1430         * insset-mips.brg: implement overflow checks
1431         * mini-mips.h: implement conditional exception handling
1432         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
1433           Remove unused code, minor cleanups.
1434         * exceptions-mips.c: minor cleanups
1435         * mini-ops.h: add mips conditional exception ops
1436         * cpu-mips.md: add mips conditional exception ops
1437
1438         
1439 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
1440
1441         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
1442         to deal with mips missing of flags.
1443
1444 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
1445
1446         * exceptions-ppc.c: execute fault handlers.
1447
1448 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
1449
1450         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
1451
1452 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
1453
1454         * mini.c: handle also floating point values in initialize_array.
1455
1456 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
1457
1458         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
1459         array initialization and make it conditional on the intrins option.
1460
1461 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
1462
1463         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
1464         relocations and put the patch info names close to the enum definition.
1465
1466 2007-01-15 Mark Mason <mason@broadcom.com>
1467
1468         * basic.cs, exceptions.cs: break up large tests to increase debugability.
1469
1470 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
1471
1472         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
1473
1474 2007-01-12  Raja R Harinath  <rharinath@novell.com>
1475
1476         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
1477
1478 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
1479
1480         * Makefile.am: distribute the mips sources.
1481
1482 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
1483
1484         * mini-codegen.h: handle bug #80489 here, by excluding ecx
1485         directly.
1486
1487 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
1488
1489         * cpu-x86.md: back out for now as this triggers other regressions.
1490
1491 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
1492
1493         * cpu-x86.md: force src1 and dest regpair for long shift instructions
1494         to eax:edx, so ecx can't get allocated to them (bug #80489).
1495
1496 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
1497
1498         * mini.c, mini-exceptions.c: enabled running fault handlers
1499         (bug #80469).
1500
1501 2007-01-03  Miguel de Icaza  <miguel@novell.com>
1502
1503         * driver.c: If nothing fail, do not use the string "failed",
1504         because it makes it very annoying to view test result logs on the
1505         web. 
1506
1507 2006-12-30  Miguel de Icaza  <miguel@novell.com>
1508
1509         * debug-debugger.c (mono_debugger_main): Rename "main" to
1510         "main_method" to prevent a warning.
1511
1512         Remove a warning for unused field.
1513
1514 2006-12-28  Martin Baulig  <martin@ximian.com>
1515
1516         * debug-debugger.c
1517         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
1518
1519 2006-12-22  Martin Baulig  <martin@ximian.com>
1520
1521         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
1522         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
1523         seperate `.mdb_debug_info' section, so we can access it from the
1524         debugger even if the binary is stripped.
1525
1526         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
1527         from the `.mdb_debug_info' here to prevent the linker from
1528         removing that section.
1529
1530         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
1531         mdb-debug-info64.s.
1532
1533 2006-12-19  Robert Jordan  <robertj@gmx.net>
1534
1535         * mini-x86: enable the code to return small structures in
1536         registers for FreeBSD as well. Fixes bug #80278.
1537         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
1538
1539 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
1540
1541         * mini-x86.c: align the stack when calling the profiler
1542         function instrumenting the prolog (on OSX).
1543
1544 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
1545
1546         * mini.c: emit a break opcode where Debugger.Break () is called.
1547
1548 2006-12-13  Miguel de Icaza  <miguel@novell.com>
1549
1550         * mini.c (mono_method_to_ir): Provide useful information on this
1551         assert, to prevent others from debugging like I did.
1552
1553 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
1554
1555         * mini.c: enable code which was incorrectly commented
1556         (bug #80235).
1557
1558 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
1559
1560         * mini-x86.c: enable on OSX, too, the code to return small
1561         structures in registers.
1562
1563 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
1564
1565         * mini-x86.c: remove the use of the dynamic code manager here, too.
1566
1567 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
1568
1569         * mini.h, debug-debugger.c, tramp-*.c: fixed 
1570         mono_debugger_create_notification_function() to use
1571         mono_global_codeman_reserve () instead of a dynamic code manager.
1572
1573 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
1574
1575         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
1576         ves_array_element_address() jit icall and use a generated
1577         managed method instead (which is about 4 times faster for a rank 3
1578         array access).
1579
1580 2006-11-29  Mark Mason  <mason@broadcom.com>
1581
1582         * basic-calls.cs: additional tests for passing
1583         structures as function arguments.
1584
1585 2006-11-29  Mark Mason  <mason@broadcom.com>
1586
1587         * mini-mips.h: disable custom exception handling
1588         * mini-mips.c: throw/rethrow should use jalr to call
1589         exception stubs.  Fixed bug with passing structures
1590         by value. More support for tracing floating point
1591         functions.
1592
1593 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
1594
1595         * mini.c: fixed typo in the soft-float ldind.r4 handling
1596         (bug #80086).
1597
1598 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
1599
1600         * mini.c, mini.h, driver.c: added --runtime command line
1601         option to select a different runtime than the autodetected one.
1602         * jit.h: added API for embedders to initialize with a specific
1603         runtime version.
1604
1605 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
1606
1607         * mini.c: handle also boxing of r4 values (bug #80024).
1608
1609 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
1610
1611         * mini-ppc.c: force indirect calls until we reserve
1612         enough address space for all the generated code.
1613
1614 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
1615
1616         * exceptions-arm.c: workaround bugs in the libc definition
1617         of struct ucontext.
1618
1619 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
1620
1621         * inssel.brg: fixes from me and Mark Mason.
1622
1623 2006-11-23  Dick Porter  <dick@ximian.com>
1624
1625         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
1626         semaphore display now we've fixed the initial value
1627
1628 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
1629
1630         * inssel.brg: partially revert the last change to fix the build.
1631
1632 2006-11-21  Mark Mason  <mason@broadcom.com>
1633
1634         * inssel.brg: Add and use compare-and-branch macros to support
1635         architectures that do not have condition code registers (ie. MIPS).
1636         * *-mips.{c,brg,md}: Fix copyright statements
1637
1638 2006-11-20  Mark Mason  <mason@broadcom.com>
1639
1640         * Makefile.am: remove mini-codegen.c from list of MIPS sources
1641         * mini.c: Allow GET_CONTEXT to be specified by the arch port
1642         * mini.h: Added declaration for mono_print_ins()
1643         * mini-codegen.c: added ins_spec initializer for MIPS
1644         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
1645         vreg to be virtual and hreg to be non-virtual.
1646         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
1647         is not yet working/implemented correctly.
1648         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
1649         non-static, fixup calls to print_ins() from other parts in the file.
1650
1651 2006-11-20  Mark Mason  <mason@broadcom.com>
1652
1653         * basic-calls.cs: added tests for passing structures as arguments
1654         to calls.
1655
1656 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
1657
1658         * inssel-long32.brg: optimize signed division by power of two.
1659
1660 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
1661
1662         * mini-arm.c: added support for interworking with thumb code
1663         (mono must be still be built using the ARM instruction encoding).
1664
1665 2006-11-19  Miguel de Icaza  <miguel@novell.com>
1666
1667         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
1668         verifier has different rules for it.   Fixes a few verifier issues
1669         in the test suite.
1670
1671         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
1672         at the end, so people know what happened.
1673
1674 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
1675
1676         * brach-opts.c: in optimize_exception_target() make sure we
1677         are in a catch clause (fixes bug #79871).
1678
1679 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
1680
1681         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
1682         more soft-float support fixes.
1683
1684 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
1685
1686         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
1687         that are passed half on the stack and half in registers.
1688
1689 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
1690
1691         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
1692         more mips integration work from Mark E Mason 
1693         <mark.e.mason@broadcom.com>.
1694
1695 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
1696
1697         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
1698         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
1699         tramp-mips.c: added sources for the mips port, not
1700         integrated in the build yet. Contributed by
1701         Mark E Mason <mark.e.mason@broadcom.com>.
1702
1703 2006-11-14  Neale Ferguson <neale@sinenomine.net>
1704
1705         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
1706
1707 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
1708
1709         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
1710         put the soft-float rules in its own file since it seems to
1711         break s390 compilation.
1712
1713 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
1714
1715         * mini-arm.c: fixed wrnings.
1716
1717 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
1718
1719         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
1720         inssel-arm.brg: ARM support for soft-float.
1721
1722 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
1723
1724         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
1725         loads and stores of 32 bit fp values.
1726
1727 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
1728
1729         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
1730
1731         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
1732         works. Fixes #79852 and #79463.
1733
1734 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
1735
1736         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
1737         more soft-float support WIP and fixes.
1738
1739 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
1740
1741         * mini-arm.c: some VFP updates.
1742
1743 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
1744
1745         * mini-exceptions.c: 0 is a valid local var offset in some
1746         architectures, don't assert (bug #78508).
1747
1748 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
1749
1750         * exceptions-arm.c: fixed off by one error in stack walk code.
1751
1752 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
1753
1754         * mini.h, mini.c: more precise tracking of type load exceptions.
1755
1756 2006-11-03  Robert Jordan  <robertj@gmx.net>
1757
1758         * Makefile.am: [WIN32] Add monow.exe target.
1759         * driver.c: [WIN32] Don't detach the console when debugging.
1760         Fixes bug #79797.
1761         
1762 2006-10-30  Miguel de Icaza  <miguel@novell.com>
1763
1764         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
1765
1766 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
1767
1768         * aot-compiler.c (emit_method_info): Add a case missed earlier.
1769
1770         * driver.c (mini_regression): Fix --regression with AOT.
1771
1772         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
1773
1774 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
1775
1776         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
1777
1778         * mini-sparc.h: Don't use sigaction on sparc/linux.
1779
1780         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
1781
1782         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
1783
1784         * mini-exceptions.c: Add proper include files for getpid ().
1785
1786 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
1787
1788         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
1789         address instead of a MonoJitInfo* to avoid decoding the exception info for the
1790         method.
1791
1792         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
1793         name cache to reduce its size.
1794
1795         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
1796
1797 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
1798
1799         * mini-x86.c: Save/restore the current LMF structure more efficiently using
1800         the mono_lmf TLS variable.
1801
1802         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
1803         trampoline lmf frames.  
1804
1805         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
1806
1807 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
1808
1809         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
1810         the mono_lmf TLS variable.
1811
1812         * mini-exceptions.c: Access the LMF structure through accessors.
1813
1814         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
1815         variable instead of in jit_tls->lmf.
1816
1817         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
1818         
1819         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
1820         trampoline lmf frames.
1821
1822         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
1823
1824 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
1825
1826        * mini.c trace.c mini-x86.c: Revert these too.
1827         
1828        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
1829        signature change.
1830
1831 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
1832
1833         * genmdesc.c: removed now dead code.
1834
1835 2006-10-09  Robert Jordan <robertj@gmx.net>
1836
1837         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
1838
1839 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
1840
1841         * mini.h: do not leave gaps in the opcode values.
1842
1843 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
1844
1845         * jit-icalls.h: flag functions as internal here, too.
1846
1847 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
1848
1849         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
1850         functions with the internal attribute.
1851
1852 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
1853
1854         * aot-compiler.c: fclose the file descriptor in the profile read loop.
1855
1856 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
1857
1858         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
1859         for soft-float.
1860
1861 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
1862
1863         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
1864         tail calls as on other platforms.
1865
1866         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
1867
1868         * iltests.il: Add a few tailcall tests.
1869
1870 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
1871
1872         * driver.c: fix loop for old compilers (bug #79521).
1873
1874 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
1875
1876         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
1877
1878         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
1879
1880         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
1881         metadata without any code.
1882
1883         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
1884         more precise debugging information using gdb.
1885
1886 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
1887
1888         * inssel-ia64.brg: Make the helper methods static.
1889
1890 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
1891
1892         * inssel-x86.brg: make the helper methods static.
1893
1894 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
1895
1896         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
1897
1898 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
1899
1900         * mini.c: updates for monoburg changes.
1901         * inssel.brg: make a few helper functions static as they should.
1902
1903 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
1904
1905         * Makefile.am: Move mini-codegen.c to common_sources.
1906
1907 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
1908
1909         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
1910         instructions.
1911         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
1912         mini-ppc.h: port to use the common local register allocator.
1913
1914 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
1915
1916         * mini.h: Remove the comment too then.
1917
1918 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
1919
1920         * mini.h: put back backend.data which is to be used shortly and
1921         doesn't increase the size of MonoInst. If any 64 bit arch aligned
1922         pointers on 4 byte boundaries it'd have much bigger issues running
1923         and you can ifdef it out anyway.
1924
1925 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
1926
1927         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
1928         MonoInst size by 4 bytes on 64 bit machines.
1929
1930 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
1931
1932         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
1933         replacement with more meaningful field names. Arch maintainers, please
1934         check the assigned names are good enough for your arch.
1935
1936 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
1937
1938         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
1939         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
1940
1941 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
1942
1943         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
1944         relocations and memory requirements, put the optimization flags
1945         definitions in their own file.
1946
1947 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
1948
1949         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
1950
1951         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
1952
1953 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
1954
1955         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
1956
1957 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
1958
1959         * inssel.brg: use the correct function to get the size of an item
1960         in an array, given an element class.
1961         * aot-compiler.c: do not access class->class_size directly.
1962
1963 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
1964
1965         * mini.h, debug-mini.c: added a debugging function to print
1966         info about local variables and arguments in a jitted method.
1967
1968 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
1971
1972         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
1973
1974 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
1975
1976         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
1977         inner and outer loops when passing vtypes.
1978
1979 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
1980
1981         * mini-ppc.c: take into account the cpu errata for cache flushing
1982         which caused some random errors (bug #79381).
1983
1984 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
1985
1986         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
1987         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
1988
1989 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
1990
1991         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
1992         loaded.
1993
1994         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
1995         freebsd ports tree.
1996
1997         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
1998         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
1999
2000         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
2001         displacement.
2002
2003 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
2004
2005         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
2006
2007 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
2008
2009         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
2010         macro does not have to be changed during debugging.
2011
2012         * cpu-alpha.md inssel-alpha.brg mini-alpha.h mini-alpha.c exceptions-alpha.c tramp-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
2013
2014         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
2015
2016         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
2017         
2018         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
2019         MONO_ARCH_NO_EMULATE_MUL is defined.
2020
2021         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
2022
2023         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
2024
2025         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
2026
2027         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
2028         
2029 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
2030
2031         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
2032         stuff to mini-exceptions.c where it is used.
2033
2034         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
2035         setup code, the real one is in mini-exceptions.c.
2036
2037         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
2038         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
2039         some changes from the freebsd ports tree.
2040
2041         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
2042         constants.
2043         
2044         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
2045
2046 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
2047
2048         * mini.c: on Linux, check for /proc to be mounted
2049         (bug# 79351, novell bug#201204).
2050
2051 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
2052
2053         * mini.c: handle cases where pthread_attr_getstack() behaves
2054         incorrectly (bug #78096).
2055
2056 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
2057
2058         * mini-arm.c: support larger stack frames (bug #79272).
2059
2060 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
2061
2062         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
2063
2064         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
2065         tokens.
2066
2067         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
2068         mono_class_from_name () to find a class from its name.
2069
2070         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
2071
2072 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
2073
2074         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
2075
2076 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
2077
2078         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
2079
2080 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
2081
2082         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
2083         callinfo->trampoline.
2084
2085         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
2086         fixes #79271.
2087         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
2088         future.
2089
2090 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
2091
2092         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
2093
2094 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
2095
2096         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
2097         stats.method_trampolines, it is already done by the generic trampoline code.
2098
2099         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
2100         
2101 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
2102
2103         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
2104
2105         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
2106
2107         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
2108
2109         * mini.c (print_jit_stats): Print mscorlib mempool size too.
2110         
2111         * mini.c (print_jit_stats): Print new stats.
2112
2113         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
2114
2115 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
2118         Address on two dimensional arrays. Fixes #78729.
2119
2120         * mini.h (MonoCompile): Add a 'skip_visibility' field.
2121
2122         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
2123         a method.
2124
2125         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
2126
2127         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
2128         #79130.
2129         
2130         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
2131         a race condition.
2132         (mini_get_ldelema_ins): Ditto.
2133
2134 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
2135
2136         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
2137         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
2138         Fixes #79213.
2139
2140 2006-08-29 Neale Ferguson <neale@sinenomine.net>
2141
2142         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
2143         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
2144
2145         * exceptions-s390x.c: Cosmetic change.
2146
2147         * tramp-s390.c: Fix warning.
2148
2149         * cpu-s390.md: Correct length of mul_imm.
2150
2151 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
2152
2153         * aot-compiler.c: added binary writer with ELF backend
2154         implementation (only on Linux/x86 for now).
2155
2156 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
2157
2158         * Makefile.am: Don't run net 2.0 AOT tests.
2159
2160         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
2161         (mono_compile_assembly): Skip net 2.0 assemblies as well.
2162
2163         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
2164
2165 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
2166
2167         * aot-compiler.c: simplified and refactored the asm-writing code
2168         to allow different backends.
2169
2170 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
2171
2172         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
2173
2174         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
2175         little. Share patches of type TYPE_FROM_HANDLE as well.
2176
2177         * mini.c (mono_patch_info_equal): New helper function.
2178         (mono_patch_info_hash): Ditto.
2179
2180         * aot-compiler.c (emit_method_code): Fix s390 build.
2181
2182         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
2183         is not handled because it is stored as a flag and not as a type ctor. Fixes
2184         #79016.
2185
2186 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
2187
2188         * aot-compiler.c: Fix computation of GOT slot statistics.
2189         
2190         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
2191         Also remove support for not PIC AOT.
2192
2193         * mini.h: Bump AOT file format version.
2194
2195         * objects.cs: Add a test for #78990.
2196
2197         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
2198         (peter.dettman@iinet.net.au). Fixes #79087.
2199
2200         * basic-long.cs: Add a test for the above.
2201
2202 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
2203
2204         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
2205         
2206         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
2207         code somewhat.
2208
2209 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
2210
2211         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
2212         exceptions.
2213
2214 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
2215
2216         * mini.c: Don't verify COM proxy invoke calls
2217         
2218
2219 2006-08-10  Dick Porter  <dick@ximian.com>
2220
2221         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
2222         which process is holding semaphores locked.
2223
2224 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
2225
2226         * mini-ia64.c mini-amd64.c: Fix #79027.
2227
2228         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
2229
2230         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
2231
2232         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
2233         implicit arguments in a vararg call. Fixes #79027.
2234
2235 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
2236
2237         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
2238         (mono_get_array_new_va_signature): Ditto.
2239
2240 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
2241
2242         * aot-runtime.c: Call init_plt lazily.
2243
2244         * inssel-long.brg: Fix unsigned long->int conversion.
2245
2246         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
2247
2248         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
2249         that most data is now in the .rss/.data section.
2250
2251 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
2252
2253         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
2254
2255         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
2256
2257         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
2258
2259         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
2260
2261         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
2262         virtual call. Fixes #79010.
2263
2264         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
2265         and use the result as the this argument in the real call.
2266
2267         * generics.2.cs: Add a new test for #79010.
2268         
2269 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * mini-x86.c: Fix a warning.
2272
2273         * aot-compiler.c: Add a bunch of statistics.
2274
2275         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
2276
2277 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
2278
2279         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
2280
2281 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
2282
2283         * cpu-alpha.md inssel-alpha.brg mini-alpha.h mini-alpha.c exceptions-alpha.c tramp-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
2284
2285 2006-07-13  Miguel de Icaza  <miguel@novell.com>
2286
2287         * mini.c (mono_method_to_ir): Obtain the original method in the
2288         CIL stream and use this to perform validation.
2289
2290         Fixed: #78816
2291
2292 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
2293
2294         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
2295         (mono_arch_call_opcode): Ditto.
2296
2297         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
2298         #78826.
2299
2300         * mini.c (mono_patch_info_dup_mp): New helper function.
2301         
2302         * aot-compiler.c (compile_method): Fix some of the memory allocated during
2303         compilation. Fixes #78827.
2304
2305 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
2306
2307         * declsec.c: Use original security informations for
2308           MONO_WRAPPER_MANAGED_TO_MANAGED.
2309
2310 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
2311
2312         * mini.c: Allow Com Interop methods/classes and
2313         don't verify COM wrapper calls
2314         
2315
2316 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * inssel-long32.brg: Fix long->i4 checked conversion.
2319
2320         * exceptions.cs: Add a test for the above.
2321
2322 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
2325
2326         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
2327         leaks.
2328
2329         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
2330         #78775.
2331
2332 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * mini.c: Fix solaris/x86 exception handling.
2335
2336         * Makefile.am: Get rid of $(ICU_LIBS).
2337
2338 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
2339
2340         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
2341         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
2342         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
2343
2344         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
2345
2346         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
2347         this function causes a SIGSEGV.
2348
2349 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
2350
2351         * mini.c: Remove unused solaris/x86 includes.
2352
2353 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
2354
2355         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
2356
2357 2006-06-20  Jb Evain  <jbevain@gmail.com>
2358
2359         * cpu-g4.md: fix max length of start_handler instruction.
2360
2361 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
2362         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
2363
2364 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
2365         * ssa.c: Fixed bug 78653 for SSA based deadce.
2366         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
2367         MonoInst.flags, used in SSA based deadce.
2368         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
2369         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
2370
2371 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
2372
2373         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
2374         it can end up using non executable memory on ppc64 systems
2375         running ppc32 userspace (fix from Johannes Berg).
2376
2377 2006-06-14  Dick Porter  <dick@ximian.com>
2378
2379         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
2380         4.1.1
2381
2382 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
2383         * mini.c: Made so that inline is locally disabled if it would
2384         trigger a .cctor, because too many apps depend on this behavior
2385         (which seems to be also the one of the MS CLR).
2386
2387 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
2390         No idea why this worked before.
2391
2392         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
2393         which branch to outer exception clauses since they could skip the
2394         inner finally clauses. Fixes #78633.
2395
2396         * exceptions.cs: Add a test for the above.
2397
2398         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
2399         Fixes #78629.
2400
2401         * iltests.il: Add a test for the above.
2402
2403 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
2404
2405         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
2406         after the end of a try bblock, to prevent asserts in mini_method_compile ().
2407
2408         * iltests.il: Add a test for the above.
2409
2410 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
2411
2412         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
2413         
2414         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
2415         methods as instrinsics.
2416
2417 2006-06-09  Wade Berrier <wberrier@novell.com>
2418
2419         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
2420         (simple-cee-ops.h ssapre-mini-ops.h)
2421
2422 2006-06-09  Neale Ferguson <neale@sinenomine.net>
2423
2424         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
2425         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
2426         instruction).
2427         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
2428         * cpu-s390x.md: Fix max. length values for a couple of instructions.
2429
2430 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
2431
2432         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
2433
2434 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
2435
2436         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
2437         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
2438         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
2439         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
2440         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
2441         of opcodes, so that bug 78549 should not happen again.
2442         * ssapre.c: Updated to use the renamed files.
2443
2444 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
2445
2446         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
2447         in OP_ATOMIC_EXCHANGE_I4.
2448
2449 2006-06-07  Wade Berrier <wberrier@novell.com>
2450
2451         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
2452         in mono_debugger_create_notification_function)
2453
2454 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
2455
2456         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
2457         
2458         * mini.c (type_from_stack_type): Disable some changes which do not
2459         seem to work.
2460
2461         * driver.c: Reenable opts.
2462
2463         * mini.h (MonoStackSlot): New structure to keep track of the verification state
2464         of the evaluation stack.
2465         
2466         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
2467         evaluation stack trace at entry to the bblock.
2468
2469         * mini.c (merge_stacks): New function to perform verification of stack merges.
2470         Turned off by default.
2471
2472         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
2473         STACK_MP.
2474         
2475 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
2476
2477         * local-propagation.c: Fixed bug 78549.
2478
2479 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
2480
2481         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
2482
2483 2006-06-02  Miguel de Icaza  <miguel@novell.com>
2484
2485         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
2486         tramp-arm.c, tramp-ia64.c
2487         (mono_debugger_create_notification_function): Update signature to
2488         new signature and use new protocol for creating the notification
2489         function.  
2490
2491         Should fix the build.
2492
2493 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
2494
2495         * exceptions-ppc.c (mono_jit_walk_stack)
2496         (ves_icall_get_frame_info): Fix the build
2497
2498 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
2499
2500         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
2501
2502 2006-05-31  Raja R Harinath  <rharinath@novell.com>
2503
2504         * il2tests.2.il: New file for generics CIL tests.  Add test for
2505         #78019.
2506         * Makefile.am: Update.
2507
2508         Fix #78019
2509         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
2510         to nullable types.
2511
2512 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
2513
2514         * aliasing.c: Fixed bug 78311.
2515
2516 2006-05-29  Martin Baulig  <martin@ximian.com>
2517
2518         * mini-exceptions.c (mono_find_jit_info): When computing the
2519         native offset, check whether we're actually inside the method's
2520         code; call mono_debug_print_stack_frame() to format the frame.
2521         (ves_icall_System_Exception_get_trace): Call
2522         mono_debug_print_stack_frame() to format the stack frame.
2523         (ves_icall_get_trace): Update to the new debugging API.
2524         (mono_jit_walk_stack_from_ctx): Likewise.
2525         (ves_icall_get_frame_info): Likewise.
2526
2527         * mini.c (get_method_from_ip): Use the new debugging API.
2528         (mono_print_method_from_ip): Likewise.
2529
2530         * exceptions-ppc.c
2531         (mono_jit_walk_stack): Use the new debugging API.
2532         (ves_icall_get_frame_info): Likewise.   
2533
2534 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
2535
2536         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
2537
2538 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
2539
2540         * mini.c: Added "limitator" to inline for debugging.
2541
2542 2006-05-24  Martin Baulig  <martin@ximian.com>
2543
2544         * debug-debugger.c (mono_debugger_init): Create a private,
2545         malloc()-based code manager for the notification function and
2546         intentionally leak it on exit.  This fixes the crash-on-exit race
2547         condition.
2548
2549         * tramp-amd64.c
2550         (mono_debugger_create_notification_function): Added
2551         `MonoCodeManager *' argument.
2552
2553         * tramp-x86.c
2554         (mono_debugger_create_notification_function): Added
2555         `MonoCodeManager *' argument.
2556
2557 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
2558
2559         * aliasing.c: Fixed 64 bit issue.
2560         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
2561         default since all known bugs are fixed (one more time!).
2562
2563 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
2564
2565         * mini.c: write barrier support.
2566
2567 2006-05-23  Martin Baulig  <martin@ximian.com>
2568
2569         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
2570         check at the top of the file.
2571
2572 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
2573
2574         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
2575         reverting changes without reason and without changelog entries.
2576
2577 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
2578
2579         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
2580         to a few opcodes. Fixes #78439.
2581
2582         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
2583         consistency with other archs.
2584
2585         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
2586
2587 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
2588
2589         * debug-debugger.c: fix the build.
2590
2591 2006-05-17  Martin Baulig  <martin@ximian.com>
2592
2593         * debug-debugger.c
2594         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
2595         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
2596         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
2597         (debugger_attach): Call GC_mono_debugger_add_all_threads().
2598
2599 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
2600
2601         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
2602
2603 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
2604
2605         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
2606         MONO_TYPE_GENERICINST.
2607         
2608         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
2609         MONO_TYPE_GENERICINST.
2610
2611 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
2612
2613         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
2614         #78325.
2615
2616 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
2617
2618         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
2619         mempool.
2620         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
2621
2622 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
2623
2624         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
2625         mono_trace_cleanup ().
2626
2627         * iltests.il: Fix problem with the newly added test.
2628
2629         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
2630         due to register constraints, free up the previous hreg. Fixes #78314.
2631
2632         * iltests.il: Add new test for #78314.  
2633
2634         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
2635         Interlocked.Add. Fixes #78312.
2636
2637         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
2638         
2639 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
2640
2641         * inssel.brg (mini_emit_virtual_call): Fix a warning.
2642
2643 2006-05-05  Martin Baulig  <martin@ximian.com>
2644
2645         * debug-mini.c (mono_debug_open_block): New method.
2646
2647         * mini-amd64.c
2648         (mono_arch_output_basic_block): Call mono_debug_open_block() at
2649         the beginning of each basic block.
2650
2651         * mini-x86.c
2652         (mono_arch_output_basic_block): Call mono_debug_open_block() at
2653         the beginning of each basic block.
2654
2655 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
2656
2657         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
2658         default until I understand why they break the build on amd64.
2659
2660 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * mini.c (mini_cleanup): Call mono_cleanup ().
2663
2664         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
2665         errors.
2666
2667 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
2668
2669         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
2670         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
2671         default since all known bugs are fixed, and I cannot reproduce bug
2672         77944... I'm asking Matt Hargett to test again after this commit.
2673
2674 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
2675
2676         * mini-codegen.c: Fixed typo that thrashed inline.
2677
2678 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
2679
2680         * dominators.c (compute_dominators): Avoid using a worklist since
2681         it is not correct in some cases. Instead, iterate over all bblocks as
2682         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
2683
2684 2006-04-28  Miguel de Icaza  <miguel@novell.com>
2685
2686         * mini.c (mono_jit_compile_method_inner): Use
2687         mono_prepare_exception_from_error that resets the value
2688         internally.
2689
2690 2006-04-27  Miguel de Icaza  <miguel@novell.com>
2691
2692         * mini.c: Move the mini_loader_error_to_exception to metadata. 
2693         
2694 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
2695
2696         * aliasing.c: Fixed bug 78210.
2697
2698 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
2699
2700         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
2701         default until all their problems (or the ones they trigger) are fixed.
2702
2703 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
2704
2705         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
2706         
2707         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
2708         as loaded only after resolving patches since that could invoke the same method.
2709
2710         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
2711
2712         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
2713         functions.
2714
2715         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
2716         AOT loader.
2717
2718         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
2719         stack.
2720
2721         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
2722         made from AOT code through the PLT table.
2723
2724         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
2725         holding the plt offset when a call is made to the aot plt trampoline.
2726         
2727 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
2728
2729         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
2730         amd64 AOT support.
2731
2732         * Makefile.am (common_sources): Fix build breakage.
2733
2734         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
2735         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
2736         intra-assembly calls if possible.
2737         
2738         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
2739
2740         * mini-trampolines.c: Handle PLT entries.
2741
2742         * mini.c: Avoid creating a GOT var for calls.
2743
2744         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
2745         from mscorlib code.
2746
2747         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
2748         from mscorlib code.
2749
2750         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
2751         AOT code.       
2752
2753         * mini.h: Bump AOT file format version.
2754         
2755         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
2756         covers more cases.
2757
2758 2006-04-25  Martin Baulig  <martin@ximian.com>
2759
2760         * driver.c: Disable copyprop, consprop and inline when running
2761         inside the debugger.
2762
2763 2006-04-25  Martin Baulig  <martin@ximian.com>
2764
2765         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
2766         with `get_current_thread' and added `detach'.
2767         (MonoDebuggerMetadataInfo): Added `thread_size',
2768         `thread_tid_offset', `thread_stack_ptr_offset' and
2769         `thread_end_stack_offset'.
2770
2771 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
2772
2773         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
2774         aot-runtime.c.
2775
2776         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
2777         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
2778
2779         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
2780
2781         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
2782
2783         * aot.c: Add support for ADJUSTED_IID.  
2784
2785 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
2786
2787         * aot.c (emit_method_order): Don't align method_order_end.
2788
2789         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
2790         the interface ID changes.
2791
2792 2006-04-21  Dick Porter  <dick@ximian.com>
2793
2794         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
2795         cleaning up a thread.  Fixes the new part of bug 77470.
2796
2797 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
2798
2799         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
2800         to managed wrapper.
2801                      
2802 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
2803
2804         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
2805         
2806         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
2807         SIGSEGV. Fixes #78072.
2808
2809         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
2810         unregister our SIGABRT handler.
2811
2812 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
2813
2814         * mini.c: Disabled inline where it can alter the call stack in a
2815         way visible from managed code.
2816         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
2817         default.
2818
2819 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
2820
2821         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
2822         on other platforms. Fixes #78089.
2823
2824 2006-04-13  Martin Baulig  <martin@ximian.com>
2825
2826         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
2827         determine whether we're inside the debugger.
2828
2829         * debug-debugger.h
2830         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
2831
2832 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
2833
2834         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
2835         handler clauses. Fixes #78024.
2836
2837         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
2838         in the CALL_MEMBASE opcodes. Fixes #78088.
2839         (mono_arch_get_vcall_slot_addr): Ditto.
2840
2841 2006-04-10  Martin Baulig  <martin@ximian.com>
2842
2843         * debug-debugger.c: The thread handling code has now been moved
2844         into ../metadata/threads.c.
2845
2846 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
2847
2848         * driver.c (mono_main): Fix --with-gc=none build.
2849
2850         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
2851         (mono_spillvar_offset_float): Ditto.
2852         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
2853         hreg, not when its !global, since on ia64, there is a third category: stacked
2854         registers.      
2855
2856 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
2857
2858         * mini.c: set MonoInst->klass for load field address and a few other
2859         places.
2860
2861 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
2862
2863         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
2864
2865 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
2866
2867         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
2868         the branch opt changes.
2869
2870 2006-04-06  Dick Porter  <dick@ximian.com>
2871
2872         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
2873         
2874         * wapihandles.c (mini_wapi_seminfo): 
2875         * driver.c (mono_main): Add semaphore info option
2876
2877 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
2878
2879         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
2880         branch optimization changes. Fixes #78009.
2881
2882 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
2883
2884         * mini.c: ignore accessibility of methods in managed->native wrappers.
2885
2886 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
2887
2888         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
2889         
2890         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
2891
2892 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
2893
2894         * mini.c: Modify the branch optimizations to preserve the invariant that
2895         the entries inside the in_bb and out_bb arrays are unique.
2896         (mono_unlink_bblock): Avoid creation of new arrays.
2897
2898 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
2899
2900         * mini.c (mono_unlink_bblock): Fix regression caused by previous
2901         change (#77992).
2902
2903 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
2904
2905         * mini.c (optimize_branches): Remove the "optimizations" in
2906         the cbranch1/cbranch2 -> branch cases which were causing several
2907         problems in the past. Fixes #77986.
2908
2909 2006-03-31  Chris Toshok  <toshok@ximian.com>
2910
2911         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
2912         default optimizations :(
2913
2914 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
2915
2916         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
2917         branch.
2918
2919 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
2920
2921         * local-propagation.c: Added comments to structs and removed
2922         "Mono" prefixes from local tree mover types.
2923
2924 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
2925
2926         * Makefile.am (arch_sources): Define this for each architecture so 
2927         libmono_la_SOURCES is defined in one place.
2928
2929 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
2930
2931         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
2932         from handles/.
2933
2934 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
2935
2936         * driver.c: print the GC name supplied by configure.
2937
2938 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
2939
2940         * local-propagation.c: Added tree mover, and moved here all the
2941         local propagation code from mini.c
2942         * mini.c: Added support for treeprop, and moved all the local
2943         propagation code to local-propagation.c
2944         * mini.h: Added support for treeprop
2945         * driver.c: Added support for treeprop, enabled consprop, copyprop,
2946         treeprop, inline and deadce by default
2947         * Makefile.am: Added local-propagation.c
2948
2949 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
2950
2951         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
2952
2953 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
2954
2955         * debug-debugger.c: make it compile without the Boehm GC.
2956
2957 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
2958
2959         * mini.c: fixed issue with mismatch when an icall is registered
2960         with multiple names but same address.
2961
2962 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
2963
2964         * declsec.c, mini-exceptions.c: use write barrier to set reference
2965         fields of managed objects.
2966
2967 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
2968
2969         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
2970         (can_access_internals): Fix a warning.
2971
2972         * mini.c (print_method_from_ip): Rename this to 
2973         mono_print_method_from_ip so it gets exported.
2974
2975         * trace.c: Deal with strings inside StringBuilder's containing garbage
2976         and fix memory leaks. Fixes #77848.
2977
2978 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
2979
2980         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
2981         fixes #77787.
2982
2983 2006-03-16 Neale Ferguson <neale@sinenomine.net>
2984         
2985         * mini-s390.c: Remove OP_X86_TEST_NULL.
2986
2987 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
2988
2989         * mini.c: use the correct GetHashCode() for the moving collector.
2990
2991 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
2992
2993         * liveness.c: Regalloc spill cost tuning.
2994
2995 2006-03-15 Neale Ferguson <neale@sinenomine.net>
2996         
2997         * mini-s390x.h: Correct S390_LONG macro.
2998
2999         * mini-s390x.c: Cleanup unused code.
3000
3001 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
3002
3003         * jit-icalls.h: New file.
3004
3005         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
3006         icalls and include that instead of including jit-icalls.c.
3007
3008         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
3009         OP_X86 opcodes.
3010
3011 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
3012
3013         * mini.c: when checking for member accessibility, also check for
3014         friend assemblies and for explicit interface implementations.
3015
3016 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
3017
3018         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
3019
3020         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
3021
3022         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
3023         common cases are done first.    
3024
3025         * mini-ops.h: Only define platform specific opcodes on the given platform.
3026
3027         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
3028         branch.
3029         
3030 2006-03-14  Martin Baulig  <martin@ximian.com>
3031
3032         Revert Paolo's change from r57348:
3033
3034         * mini.h: don't use gboolean for bitfields.
3035         * mini.c: verifier changes for fields and methods accessibility.
3036
3037 2006-03-13  Neale Ferguson <neale@sinenomine.net>
3038
3039         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
3040
3041         * mini-s390x.c: Fix conv_r_un.
3042
3043         * cpu-s390, cpu-s390x.md: Fix lengths.
3044
3045 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
3046
3047         * mini.c: nested types have access to all the nesting
3048         levels, not just the enclosing types.
3049
3050 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
3051
3052         * mini.c: added a few more verification checks.
3053
3054 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
3055
3056         * liveness.c: Merge optimizations from the linear-il branch.
3057
3058 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * mini-ia64.c (emit_call): Add a comment.
3061
3062         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
3063
3064         * tramp-ia64.c: Fix some warnings.
3065
3066 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
3067
3068         * mini.h: don't use gboolean for bitfields.
3069         * mini.c: verifier changes for fields and methods accessibility.
3070
3071 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
3072
3073         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
3074         lazy icall wrapper changes.
3075
3076         * dominators.c: Replace all the dominator algorithms with faster
3077         ones from the linear-il branch.
3078
3079         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
3080         the mempool.
3081
3082         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
3083         common cases are done first.
3084
3085         * mini-amd64.c: Fix some warnings.
3086
3087         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
3088         from the mempool.
3089
3090         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
3091         added code.
3092
3093         * mini.h: Add a missing prototype.
3094
3095 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
3096
3097         * mini.c: Compile icall wrappers lazily.
3098
3099         * mini-codegen.c: Use printf instead of g_print since its much faster.
3100
3101         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
3102         function.
3103
3104         * mini.c (optimize_branches): Cache the negative result from 
3105         remove_block_if_useless ().
3106
3107         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
3108         Also fix some bblock linking issues.
3109
3110         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
3111         assembly files.
3112
3113         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
3114
3115         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
3116         accessed fields first, for better cache behavior.
3117         
3118 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
3119
3120         * mini.c: speedup IList<T> array accesses.
3121
3122 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
3123
3124         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
3125         inline_costs counter. Fixes #77190.
3126
3127 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
3128
3129         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
3130         trace messages. Fixes #77706.
3131
3132 2006-03-04  Martin Baulig  <martin@ximian.com>
3133
3134         * tramp-amd64.c, tramp-x86.c
3135         (mono_debugger_create_notification_function): Use
3136         mono_global_codeman_reserve() to allocate a buffer at runtime and
3137         return it.
3138
3139         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
3140
3141         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
3142         notification function at runtime and then call `initialize' in the
3143         `MONO_DEBUGGER__debugger_info' vtable.
3144
3145 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
3146
3147         * iltests.il: Fix a visibility problem.
3148
3149 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
3150
3151         * driver.c, mini.c: add hooks for the counters API.
3152
3153 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
3154
3155         * driver.c: show disabled options.
3156
3157 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
3158
3159         * linear-scan.c: always use cost-driven selection.
3160
3161 2006-02-28  Raja R Harinath  <rharinath@novell.com>
3162
3163         * jit-icalls.c (helper_compile_generic_method): Revert change from
3164         2006-02-24.
3165
3166 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
3167
3168         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
3169
3170 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
3171
3172         * inssel.brg: style fixes, mostly to force the updated monoburg
3173         to run for people using svn.
3174
3175 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
3176
3177         * mini.c: match monoburg changes.
3178
3179 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
3180
3181         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
3182         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
3183         declaration in the header file.
3184
3185 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
3186
3187         * helpers.c: reduce relocations and mem usage.
3188
3189 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
3190
3191         * mini.h, mini-codegen.c: disable logging features if
3192         requested by configure.
3193
3194 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
3195
3196         * mini.c: tiny verifier changes.
3197
3198 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
3199
3200         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
3201         cpu-pentium.md: stack alignment changes for osx/x86,
3202         partially from Geoff Norton <gnorton@customerdna.com>.
3203
3204 2006-02-24  Raja R Harinath  <harinath@gmail.com>
3205
3206         * jit-icalls.c (helper_compile_generic_method): Update to changes
3207         in metadata/class.c.
3208
3209 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
3210         
3211         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
3212         
3213         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
3214         interface calls with large offsets.
3215
3216 2006-02-23  Raja R Harinath  <rharinath@novell.com>
3217
3218         * jit-icalls.c (helper_compile_generic_method): Document the
3219         special-case we depend on so that we can inflate the method twice
3220         with the same context with no bad side-effects.
3221
3222 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
3223
3224         * mini-x86.c, mini-amd64.c: fix for case when xen support
3225         is disabled.
3226
3227 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
3228
3229         * mini-x86.c, mini-amd64.c: generate code to access tls items
3230         in a faster way for Xen systems.
3231
3232 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
3233
3234         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
3235         updates and compilation fixes for the OSX/x86 port, mostly from
3236         Geoff Norton <gnorton@customerdna.com>.
3237
3238 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
3239
3240         * inssel.brg: faster interface call implementation
3241         to sync with the interface_offsets MonoVTable changes.
3242
3243 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
3244
3245         * mini.c: more verification checks.
3246
3247 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
3248
3249         * mini.c: added a few more verification checks.
3250
3251 2006-02-17      Neale Ferguson <neale@sinenomine.net>
3252
3253         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
3254         facility on the processor and use it if available.
3255
3256 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
3257
3258         * driver.c, aot.c, mini.c: throw exception if the IL code is
3259         invalid or unverifiable.
3260
3261 2006-02-17  Raja R Harinath  <rharinath@novell.com>
3262
3263         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
3264         m.StructField.
3265
3266 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
3267
3268         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
3269
3270 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
3271
3272         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
3273         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
3274         handling of instantiated generic valuetypes.
3275
3276 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
3277
3278         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
3279         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
3280         instead.
3281
3282         * generics.2.cs: Revert the nullable reftypes tests.
3283
3284 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
3285
3286         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
3287         using __builtin_frame_address (1) as it doesn't work in the presence
3288         of optimizations. Hopefully fixes #77273.
3289
3290         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
3291         -> generics.cs change as it doesn't work with some automake versions.
3292
3293 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
3294
3295         * mini.c: handle systems that sue a different way to
3296         retrieve the stack address of the current thread.
3297
3298 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
3299
3300         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
3301         it specially in the makefile.
3302
3303         * generics.2.cs: Add tests for nullable reference types.
3304
3305 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
3306
3307         * mini.c: always handle the case when mono_jit_init()
3308         is called in a thread different from the main thread,
3309         confusing libgc (bug #77309).
3310
3311 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
3312
3313         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
3314
3315 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
3316
3317         * mini.c: change optimize_branches () to use a single loop
3318         and introduce a new optimization to simplify some range checks.
3319
3320 2006-02-03  Martin Baulig  <martin@ximian.com>
3321
3322         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
3323         and merged with debugger_thread_manager_add_thread().
3324         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
3325         inform the debugger about the main thread.
3326
3327 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
3328
3329         * basic.cs: Add test for div.un/rem.un constant folding.
3330
3331 2006-02-03  Neale Ferguson <neale@sinenomine.net>
3332
3333         * cpu-s390x.md: correct int_xor_imm length
3334
3335 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
3336
3337         * generics.2.cs: New test for #77442.
3338
3339         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
3340         #77442.
3341
3342 2006-02-02  Martin Baulig  <martin@ximian.com>
3343
3344         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
3345         <mono/metadata/mono-debug-debugger.h>   
3346
3347         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
3348
3349 2006-02-02  Martin Baulig  <martin@ximian.com>
3350
3351         * debug-debugger.h: New header file for debug-debugger.c.
3352
3353         * debug-debugger.c: Big API cleanup; don't run the managed Main()
3354         function is a separate thread anymore; add support for attaching.
3355
3356 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
3357
3358         * tramp-x86.c: Fix a warning.
3359
3360 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
3361
3362         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
3363         on very large methods.
3364
3365         * aot.c (load_patch_info): Fix a warning.
3366
3367 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
3368
3369         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
3370         mini-ops.h: alu membase optimizations.
3371
3372 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
3373
3374         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
3375         to speedup StringBuilder.
3376
3377 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
3378
3379         * dominators.c (mono_compute_natural_loops): Fix detection of
3380         loop body start blocks.
3381
3382         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
3383
3384 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
3385
3386         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
3387         #75145.
3388
3389 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
3390
3391         * aliasing.c: Fixed aliasing issue on 64 bit archs.
3392
3393 2006-01-25  Martin Baulig  <martin@ximian.com>
3394
3395         * debug-debugger.c: Moved the `MonoDebuggerManager' and
3396         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
3397         started to cleanup this file a little bit.
3398
3399 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
3400
3401         * mini.c: optimize a codepath frequently happening in generics code.
3402
3403 2006-01-23  Martin Baulig  <martin@ximian.com>
3404
3405         * Makefile.am: Only compile debug-debugger.c on supported platforms.
3406
3407         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
3408         functions directly.
3409
3410         * driver.c: debug-debugger.c is only available if
3411         `MONO_DEBUGGER_SUPPORTED' is defined.   
3412
3413 2006-01-23  Martin Baulig  <martin@ximian.com>
3414
3415         * debug-debugger.c: Only enable this on platforms where the Mono
3416         Debugger is working (x86 and x86_64).
3417
3418 2006-01-21  Martin Baulig  <martin@ximian.com>
3419
3420         The Mono Debugger is now using the normal `mono' instead of the
3421         `mono-debugger-mini-wrapper' when executing managed code.
3422
3423         * debug-debugger.c: New file; previously known as
3424         debugger/wrapper/wrapper.c.
3425
3426         * debug-mini.c (mono_init_debugger): Removed.
3427
3428         * driver.c (mono_main): Added new `--inside-mdb' command line
3429         argument which is used when running inside the debugger.
3430
3431 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
3432
3433         * liveness.c (mono_analyze_liveness): Remove some unused data
3434         structures.
3435
3436 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
3437
3438         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
3439
3440 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
3441
3442         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
3443         depends on implementation details of monobitset.
3444
3445         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
3446         Fixes #77271.
3447
3448 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
3449
3450         * liveness.c: Update after monobitset changes.
3451
3452 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
3453
3454         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
3455
3456 2006-01-11 Neale Ferguson <neale@sinenomine.net>
3457
3458         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
3459
3460         * mini-s390x.c: Remove warning messages.
3461
3462 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
3463
3464         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
3465
3466 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
3467
3468         * generics.2.cs: Add ldelem/stelem_any test.
3469
3470 2006-01-10 Neale Ferguson <neale@sinenomine.net>
3471
3472         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
3473
3474 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
3475
3476         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
3477         
3478 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
3479
3480         * generics.2.cs: Reenable vtype tests.
3481
3482         * inssel-x86.brg: Remove an icorrect valuetype rule.
3483
3484 2006-01-06 Neale Ferguson <neale@sinenomine.net>
3485
3486         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
3487         initial support for OP_ABS.
3488
3489 2006-01-05 Neale Ferguson <neale@sinenomine.net>
3490
3491         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
3492
3493 2006-01-05 Neale Ferguson <neale@sinenomine.net>
3494
3495         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
3496         conversion and implement LADD/LSUB.
3497
3498         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
3499         architectures.
3500
3501 2006-01-05 Neale Ferguson <neale@sinenomine.net>
3502
3503         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
3504
3505         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
3506         architectures.
3507
3508 2006-01-05 Neale Ferguson <neale@sinenomine.net>
3509
3510         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
3511         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
3512         (stack walk problem).
3513
3514 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
3515
3516         * aot.c (mono_aot_load_method): Fix a warning.
3517
3518 2006-01-03  Neale Ferguson <neale@sinenomine.net>
3519
3520         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
3521
3522 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
3523
3524         * iltests.il: Add test for #77148.
3525
3526         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
3527         #77148.
3528
3529 2006-01-03  Neale Ferguson <neale@sinenomine.net>
3530
3531         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
3532
3533 2006-01-03  Neale Ferguson <neale@sinenomine.net>
3534
3535         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
3536         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
3537
3538         * basic-long.cs: Add lconv-to-r4/r8 tests.
3539
3540 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
3541
3542         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
3543
3544         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
3545         here as on other archs.
3546
3547 2005-12-29 Neale Ferguson <neale@sinenomine.net>
3548
3549         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
3550
3551 2005-12-29 Neale Ferguson <neale@sinenomine.net>
3552
3553         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
3554         
3555         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
3556
3557         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
3558         instrument_prolog; Add memory_barrier instruction.
3559
3560 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
3561
3562         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
3563
3564 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
3565
3566         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
3567
3568         * aliasing.c inssel.brg: Fix warnings.
3569
3570         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
3571         could skip initialization of some parts of memory.
3572
3573         * mini.c mini-ia64.c: Fix warnings.
3574
3575         * inssel-sparc.brg: Add an implementation of lneg which actually works.
3576
3577 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
3578
3579         * aliasing.c (mono_build_aliasing_information): Add a workaround for
3580         a crash seen on sparc.
3581
3582         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
3583         
3584         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
3585
3586 2005-12-21 Neale Ferguson <neale@sinenomine.net>
3587
3588         * mini-ops.h: Add s390_backchain instruction
3589
3590         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
3591
3592         * cpu-s390.md: Add s390_backchain instruction
3593
3594         * mini-s390.c: Significant ABI changes
3595
3596         * mini-s390.h: Cater for zero length structures
3597
3598 2005-12-20 Neale Ferguson <neale@sinenomine.net>
3599
3600         * mini-s390.c: ABI fixes
3601
3602         * inssel-s390.brg: Remove debug statements
3603
3604         * cpu-s390.md: Fix length of ATOMIC_xx operations
3605
3606 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
3607
3608         * basic-float.cs: Add float<->long conversion tests.
3609
3610 2005-12-16 Neale Ferguson <neale@sinenomine.net>
3611
3612         * mini-s390.c: Fix LOCALLOC processing.
3613
3614         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
3615
3616 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
3617
3618         * iltests.il: Add tests for some opcodes not covered by the other
3619         tests.
3620
3621 2005-12-15 Neale Ferguson <neale@sinenomine.net>
3622
3623         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
3624         register loading for Tail processing; Correct trace output.
3625
3626         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
3627
3628         * cpu-s390.md: Correct size of jmp instruction. 
3629
3630 2005-12-13 Neale Ferguson <neale@sinenomine.net>
3631
3632         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
3633
3634 2005-12-13 Neale Ferguson <neale@sinenomine.net>
3635
3636         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
3637           Bring s390 up to current level.
3638
3639 2005-12-12  Zltan Varga  <vargaz@gmail.com>
3640
3641         * generics.2.cs: Disable the newly added tests as they do not work yet.
3642         
3643         * generics.2.cs: Add valuetype tests.
3644
3645 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
3646
3647         * basic-long.cs: Add i4->u8 test.
3648
3649         * objects.cs: Add tests for JIT intrinsic.
3650
3651         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
3652         optimizations lost by a mistake.
3653
3654 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
3655
3656         * basic-long.cs: Remove a test moved to objects.cs.
3657
3658         * arrays.cs: Add more array tests.
3659
3660 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
3661
3662         * arrays.cs: Add new tests for multi-dimensional arrays.
3663
3664 2005-12-06  Raja R Harinath  <rharinath@novell.com>
3665
3666         * Makefile.am (test_sources2): Add generics.2.cs.
3667         (EXTRA_DIST): Add test_sources2.
3668
3669 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
3670
3671         Support for boxing and unboxing nullable types as well as the
3672         isinst operation on nullables, per the CLI ammendment.
3673
3674         * inssel.brg (CEE_ISINST): Special case for nullable
3675
3676         * mini.c (handle_unbox_nullable): new method
3677         (handle_box): Special case for nullable types
3678         (mono_method_to_ir): Call handle_unbox_nullable in correct
3679         places.
3680
3681         * generics.2.cs: New test suite
3682
3683         * Makefile.am: Support for regression tests with generics.
3684
3685 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
3686
3687         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
3688         allocated to registers. Fixes #76800.
3689
3690 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
3691
3692         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
3693
3694 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
3695
3696         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
3697         of platforms.
3698
3699 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
3700
3701         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
3702         objects.cs.
3703
3704         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
3705         
3706         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
3707 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
3708
3709         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
3710         single precision before storing to a single precision location.
3711
3712 2005-11-28  Raja R Harinath  <rharinath@novell.com>
3713
3714         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
3715
3716 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
3717
3718         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
3719         correct files.
3720
3721         * basic.cs: Remove test_0_byte_compares test which was moved to
3722         objects.cs a long time ago.
3723
3724 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
3725
3726         * aliasing.c: Fixed aliasing issue on 64 bit archs.
3727
3728 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
3729
3730         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
3731         handlers are called.
3732
3733         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
3734         throwing code.
3735
3736          * mini-ia64.c: Add support for the throw->branch exception 
3737         optimization.   
3738
3739         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
3740
3741 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
3742
3743         * mini.c: Enabled "fastpath" deadce :-)
3744         
3745 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
3746
3747         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
3748         alias analysis pass to support it.
3749         * mini.h: Likewise.
3750         * ssa.c: Likewise.
3751         * liveness.c: Likewise (liveness computation can use aliasing
3752         information to be more accurate).
3753         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
3754         moreover made so that "--compile-all" uses the given optimization
3755         flags and not the default ones.
3756         * aliasing.c: Alias analysis (new file).
3757         * aliasing.h: Likewise.
3758         * Makefile.am: added "aliasing.c" and "aliasing.h".
3759         
3760 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
3761
3762         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
3763         OP_L opcodes.
3764
3765 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
3766
3767         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
3768         fp >= end_of_stack exit condition, as it is not needed, and it might
3769         become true for fp eliminated frames.
3770
3771 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
3772
3773         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
3774         coded offsets.
3775
3776 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
3777
3778         * mini-arm.c: fixed alignment of doubles/longs to match
3779         the C ABI (bug #76635).
3780
3781 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
3782
3783         * aot.c: fix compilation with --enable-minimal=aot.
3784
3785 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
3786
3787         * mini-arm.c: fixed compatibility with the new
3788         floating point emulator package for compares.
3789
3790 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
3791
3792         * mini.c : reverted sig->pinvoke changes (r51396-51397).
3793
3794 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
3795
3796         * mini-exceptions.c (print_stack_frame): Output to stderr.
3797         (mono_handle_native_sigsegv): Ditto.
3798
3799 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
3800
3801         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
3802         OP_LCONV_TO_OVF_I implementation.
3803
3804         * mini-amd64.c: Add support for the throw->branch exception 
3805         optimization.
3806
3807         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
3808         when the catch clause catches a more general exception, i.e. Object.
3809
3810 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
3811
3812         * cpu-ia64.md: Remove unused opcodes.
3813
3814         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
3815         specific defines for architectures defining USE_SIGACTION.
3816
3817         * mini-ia64.c: Fix some warnings.
3818
3819         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
3820         version seemed to skip a frame.
3821
3822 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
3823
3824         * mini.c: Clean up the usage of sig->pinvoke flag. Now
3825         only calls which are made to native code use this flag.
3826
3827 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
3828
3829         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
3830         varargs methods as well.
3831         
3832         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
3833         which have save_lmf set. Reorganize methods prologs a bit.
3834
3835         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
3836         debugger to the proper place.
3837
3838 2005-10-29  Martin Baulig  <martin@ximian.com>
3839
3840         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
3841         when running inside the debugger until the debugger has support
3842         for it.
3843
3844 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
3845
3846         * mini.h: Fix a warning.
3847
3848 2005-10-24  Miguel de Icaza  <miguel@novell.com>
3849
3850         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
3851         we expose publicly, this returns the string.
3852
3853 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
3854
3855         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
3856         with fp elimination.
3857
3858 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
3859
3860         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
3861         native stacktrace using the glibc 'backtrace' function if available.
3862
3863 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
3864
3865         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
3866
3867         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
3868         handle SIGSEGVs received while in native code.
3869
3870         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
3871         code, call mono_handle_native_sigsegv which will abort the runtime
3872         after printing some diagnostics, instead of converting it into a
3873         confusing NullReferenceException.
3874
3875 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
3876
3877         * cpu-pentium.md: Remove unused opcodes.
3878
3879 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
3880
3881         * mini-amd64.h (MonoLMF): Add rsp field.
3882
3883         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
3884         the lmf too.
3885
3886 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * mini-codegen.c (get_register_spilling): Fix some warnings.
3889
3890 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
3891
3892         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
3893         elimination during exception handling. Enable fp elimination by
3894         default.
3895
3896         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
3897         elimination.
3898
3899 2005-10-16  Martin Baulig  <martin@ximian.com>
3900
3901         * mini-exceptions.c
3902         (mono_debugger_run_finally): New public method for the debugger.
3903
3904 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
3905
3906         * debug-mini.c (mono_debug_init_method): Fix warning.
3907
3908         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
3909         the 'exname' parameter const to fix some warnings.
3910
3911 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
3912
3913         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
3914         introduced by the previous patch.
3915
3916 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
3917
3918         * basic-float.cs: Add test for precision of float arithmetic.
3919
3920         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
3921         when loading/storing single values from/to memory.
3922
3923         * mini.c (mono_jit_compile_method_with_opt): Create the function
3924         pointers in the correct domain.
3925
3926 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
3927
3928         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
3929         introduced by previous patch.
3930         
3931         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
3932         when out_filter_idx is NULL.
3933
3934         * mini-exceptions.c: Don't run filter clauses twice during exception
3935         handling. Fixes #75755.
3936
3937 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * aot.c: Add support for ldflda wrappers.
3940
3941         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
3942         #75902.
3943
3944 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
3945
3946         * mini.c, mini.h: do not consider exception handlers blocks when
3947         setting up interface variables.
3948
3949 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
3950
3951         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
3952
3953 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
3954
3955         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
3956         causes a regression.
3957
3958         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
3959
3960 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
3961
3962         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
3963         of the OP_P definitions.
3964
3965         * TODO: Add a proposal for dealing with the CEE/OP mess.
3966
3967         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
3968         optimizations from the x86 port.
3969
3970         * cpu-amd64.md: Ditto.
3971
3972         * basic.cs basic-long.cs: Add tests.
3973
3974 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
3975
3976         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
3977         Patrik Torstensson's implementation of my exception-handling
3978         optimization idea, when the exception object is not used
3979         (bug #62150).
3980
3981 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
3982
3983         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
3984         of the mul_imm optimizations from the old jit.
3985
3986 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
3987
3988         * mini.c, liveness.c: patch by Patrik Torstensson and
3989         Zoltan Varga to improve performance in methods with
3990         exception clauses.
3991
3992 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
3993
3994         * driver.c: Remove 'Globalization' entry from --version.
3995
3996 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
3997
3998         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
3999         there is a profiler interested in JIT events.
4000
4001         * aot.c: Load profile files produced by the AOT profiling module, and
4002         reorder methods based on the profiling info. Add a 'method_order' table
4003         to the AOT file to make mono_aot_find_jit_info work with the reordered
4004         methods.
4005
4006         * mini.h: Bump AOT file version info.
4007
4008 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
4009
4010         * mini-arm.h: work around what looks like a gcc bug when optimizations
4011         are enabled.
4012
4013 2005-09-28  Raja R Harinath  <rharinath@novell.com>
4014
4015         * Makefile.am (AM_CFLAGS): Don't use += to append inside
4016         conditionals.  Use ...
4017         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
4018
4019 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
4020
4021         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
4022         to determine the amount of memory to copy when passing valuetypes.
4023
4024         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
4025         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
4026
4027 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
4028
4029         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
4030         information about aot.
4031
4032 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
4033
4034         * *.c: Replace the use of {Enter,Leave}CriticalSection with
4035         macros. This will allow a deadlock debugger to easily be plugged
4036         in.
4037
4038 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
4039
4040         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
4041
4042 2005-09-27  Raja R Harinath  <rharinath@novell.com>
4043
4044         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
4045         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
4046         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
4047         ($(arch_built)) [CROSS_COMPILING]: Error out.
4048
4049 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
4050
4051         * aot.c: Add support for the no_special_static flag for classes.
4052
4053 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
4054
4055         * Reapply reverted patches.
4056
4057         * *: Revert r50174 as well.
4058
4059         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
4060
4061 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
4062
4063         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
4064
4065 2005-09-23  Miguel de Icaza  <miguel@novell.com>
4066
4067         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
4068         part of the SIG_HANDLER_SIGNATURE.  
4069
4070 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
4071
4072         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
4073         statistics.
4074
4075         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
4076         introduced by previous patch.
4077
4078 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
4079
4080         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
4081         saved registers too.
4082
4083         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
4084         upon the information returned by get_call_info ().
4085         
4086         * mini-x86.c (add_float): Fix stack size calculation.
4087         (mono_arch_call_opcode): Rewrite this so it works based up the
4088         information returned by get_call_info ().
4089         (mono_arch_get_this_vret_args): Ditto.
4090
4091 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
4092
4093         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
4094         in cinfo to determine the registers which need to be used.
4095
4096 2005-09-20  Miguel de Icaza  <miguel@novell.com>
4097
4098         * driver.c (mono_main): Add --server and --desktop flags. 
4099
4100 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
4101
4102         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
4103         registers as global registers.
4104
4105         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
4106         longer needed with the new register allocator.
4107
4108         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
4109
4110         * cpu-ia64.md: Remove unused opcodes.
4111         
4112         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
4113         
4114 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
4115
4116         * cpu-amd64.md: Remove unused opcodes.
4117
4118         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
4119         needed with the new register allocator.
4120
4121         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
4122         reg-reg moves.
4123
4124 2005-09-16  Raja R Harinath  <rharinath@novell.com>
4125
4126         * Makefile.am (check-local): Don't invoke semdel-wrapper.
4127
4128 2005-09-16  Martin Baulig  <martin@ximian.com>
4129
4130         * exceptions-amd64.c
4131         (throw_exception): Don't call mono_debugger_throw_exception() if
4132         we're a rethrow - see the FIXME in the code.
4133
4134 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
4135
4136         * mini.c (mono_init_exceptions): This only works on some architectures.
4137         
4138 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
4139
4140         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
4141         on ia64.
4142
4143         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
4144
4145         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
4146         now in mini-exceptions.c.
4147
4148 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
4149
4150         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
4151         now in mini-exceptions.c.
4152
4153 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
4154
4155         * exceptions-x86.c: Applied patch from Patrik Torstensson 
4156         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
4157
4158         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
4159         code into mini-exceptions.c. Add some assertions to it.
4160
4161 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
4162
4163         * aot.c (emit_section_change): Applied patch from "The Software Team" 
4164         (<software@solmersa.com>). Fix as errors on windows.
4165
4166 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
4167
4168         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
4169         method info into the LMF.
4170
4171 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
4172         
4173         * mini-ia64.c: Add proper unwind info for method epilogs.
4174
4175         * exceptions-ia64.c: Add some code to help debugging.
4176         
4177         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
4178
4179         * mini-exceptions.c: Fix warning.
4180
4181 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
4182
4183         * mini.c: Really fix build.
4184
4185         * mini-x86.c mini-amd64.c: Fix build.
4186
4187 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
4188
4189         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
4190
4191         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
4192         some Interlocked methods as intrinsics.
4193
4194         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
4195         for Thread methods as well.
4196
4197         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
4198
4199         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
4200
4201         * mini-ia64.c mini-x86.c mini-amd64.c 
4202         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
4203         OP_MEMORY_BARRIER.
4204         
4205         * mini.c (mono_init_exceptions): Fix build breakage.
4206
4207 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
4208
4209         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
4210         of instructions. Use the new ia64_unw_op macros for emitting unwind
4211         info.
4212
4213         * mini.c (mono_init_exceptions): Initialize exception handling
4214         related trampolines at startup.
4215
4216 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
4217
4218         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
4219
4220 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
4221
4222         * mini.c: Handle type loading errors gracefully during compilation and
4223         throw the appropriate exception.
4224
4225 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
4226
4227         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
4228         for the mono binary.
4229
4230 2005-09-09  Martin Baulig  <martin@ximian.com>
4231
4232         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
4233         the release.
4234
4235 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
4236
4237         * mini-arm.h: use emulation for conv.r.un for the release.
4238
4239 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
4240
4241         * mini-arm.c, objects.cs: more fixes and tests for them.
4242
4243 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
4244
4245         * mini-arm.c: align structures to at least 4 bytes to be able
4246         to keep our current optimized memcpy.
4247
4248 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
4249
4250         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
4251
4252 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4253
4254         * mini.c: ignore SIGPIPE.
4255
4256 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
4257
4258         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
4259
4260         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
4261
4262 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
4263
4264         * mini.h: Add prototype for mono_allocate_stack_slots_full.
4265
4266 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
4267
4268         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
4269         exception handling support.
4270         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
4271         patch by Brian Koropoff <briank@marakicorp.com>).
4272
4273 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
4274
4275         * mini.c: revert another 'optimization' which breaks when
4276         items on the eval stack need to be saved at a basic block end
4277         (bug #75940).
4278
4279 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
4280
4281         * jit-icalls.c: for arrays, ensure we always provide
4282         lower bounds.
4283
4284 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
4285
4286         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
4287         
4288         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
4289
4290 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
4291
4292         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
4293         arguments in their original register.
4294
4295 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
4296
4297         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
4298         memset/memcpy.
4299
4300         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
4301         when ssapre is enabled.
4302
4303         * inssel-long.brg: Fix bug in previous patch.
4304
4305         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
4306         multiplication by a constant.
4307
4308 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
4309
4310         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
4311         icc.
4312
4313         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
4314         saving registers.
4315
4316 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
4317
4318         * inssel-arm.brg: apply changes tested by Brian Koropoff
4319         <briank@marakicorp.com>.
4320
4321 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
4322
4323         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
4324         
4325 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
4326
4327         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
4328         to the same register if dreg is just a base register.
4329         (print_ins): Improve printing of membase opcodes.
4330
4331         * inssel-x86.brg: Add optimized ldind(reg) rules.
4332
4333         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
4334
4335 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
4336
4337         * mini.c: when running under valgrind, set the stack bottom for
4338         the GC at the actual approximate stack for the app (fixes running
4339         mono with valgrind).
4340
4341 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
4342
4343         * mini.c: do no break at the first valuetype to init found
4344         (fixes bug #75791).
4345
4346 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
4347
4348         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
4349
4350 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
4351
4352         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
4353
4354 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
4355
4356         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
4357
4358 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
4359
4360         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
4361
4362         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
4363         code.
4364
4365         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
4366         code.
4367
4368         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
4369         methods.
4370
4371 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
4372
4373         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
4374
4375 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
4376
4377         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
4378         in the tail recursion optimization.
4379
4380         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
4381         debug info into the assembly file.
4382
4383         * iltests.il: Add test for filter regions.
4384
4385         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
4386         initial stack of filter regions. Fixes #75755.
4387
4388 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
4389
4390         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
4391         stack requirements.
4392
4393 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
4394
4395         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
4396         the check for an already compiled method on non-ia64 platforms.
4397         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
4398         proper domain.
4399
4400         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
4401
4402         * inssel-x86.brg: Add some optimized call rules.
4403
4404 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
4405
4406         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
4407         method here.
4408
4409         * mini.h mini-trampolines.c: Pass the trampoline argument to 
4410         mono_arch_patch_delegate_trampoline.
4411
4412         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
4413
4414         * mini-trampolines.c: Fix build.
4415
4416         * mini-amd64.h: Add delegate trampolines.
4417
4418         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
4419
4420         * inssel-amd64.brg: Add optimized call rules.
4421         
4422         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
4423
4424         * inssel-ia64.brg: Add optimized ldind(reg) rules.
4425
4426 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
4427
4428         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
4429         change.
4430
4431         * mini-ia64.c: Remove LMF fixmes.
4432
4433         * mini-ia64.h: Remove most fields from LMF.
4434
4435         * inssel-ia64.brg (stmt): Fix unaligned access errors.
4436
4437         * mini-trampolines.c: Add support for IA64 function descriptors.
4438
4439         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
4440         for IA64 function descriptors.
4441
4442 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
4443
4444         * tramp-arm.c: patch the vtable for virtual calls. Added
4445         support code to register/unregister the LMF.
4446         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
4447         more LMF work.
4448
4449 2005-08-19  Dick Porter  <dick@ximian.com>
4450
4451         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
4452         bit value if needed.
4453
4454 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
4455
4456         * mini.c (mini_get_method): Move handling of wrapper data here.
4457
4458         * mini.c (mono_method_to_ir): Add support for dynamic methods.
4459
4460         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
4461         virtual.
4462
4463         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
4464         bblock->code does not remain empty.
4465
4466 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
4467
4468         * arrays.cs: Add regression test for #75832.
4469
4470         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
4471         rules. Fixes #75832.
4472
4473         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
4474         instruction scheduling.
4475
4476 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
4477
4478         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
4479
4480 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
4481
4482         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
4483
4484         * mini-codegen.c: Fix VC build.
4485
4486         * cpu-pentium.md: Increase length of atomic_exhange_i4.
4487
4488 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4489
4490         * mini.h: fix signature for mono_register_opcode_emulation.
4491
4492 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
4493
4494         * mini.c: Get rid of most of the helper_sig_... constants using
4495         mono_create_icall_signature ().
4496
4497 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
4498
4499         * jit-icalls.c (helper_ldstr): New helper function.
4500
4501         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
4502
4503         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
4504         throw, load the string using a helper call instead of creating a string object.
4505
4506         * aot.c: Update after LDSTR changes.
4507
4508         * mini.h: Bump AOT file version.
4509         
4510         * aot.c: Save class size info into the AOT file. Print more statistics during
4511         compilation.
4512
4513         * mini.h: Bump AOT file version.
4514
4515         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
4516         ordering of disasm cases. Fixes #74957.
4517
4518 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
4519
4520         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
4521         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
4522         the generic code needed for the ARM port.
4523
4524 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
4525
4526         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
4527         inssel-arm.brg: more ARM features and fixes.
4528
4529 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
4530
4531         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
4532         ARM port work in progress.
4533
4534 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
4535
4536         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
4537
4538         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
4539
4540         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
4541
4542         * inssel.brg (mini_emit_memset): Add support for unaligned access.
4543
4544         * *-ia64.*: Ongoing IA64 work.
4545         
4546         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
4547
4548 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
4549
4550         * TODO: Remove out-of-data todo stuff.
4551
4552         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
4553         dead code.
4554
4555         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
4556
4557         * mini.h: Bump corlib version.
4558
4559 2005-07-27  Martin Baulig  <martin@ximian.com>
4560
4561         * mini-codegen.c
4562         (create_copy_ins): Added `const unsigned char *ip' argument; set
4563         `copy->cil_code' from it.
4564
4565 2005-07-27  Martin Baulig  <martin@ximian.com>
4566
4567         * mini-exceptions.c (mono_handle_exception): Don't call
4568         mono_debugger_handle_exception() for filters.
4569
4570 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
4571
4572         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
4573         as well.
4574
4575 2005-07-26  Martin Baulig  <martin@ximian.com>
4576
4577         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
4578
4579         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
4580         helper_compile_generic_method() if the method is actually virtual
4581         and non-final.
4582
4583 2005-07-26  Martin Baulig  <martin@ximian.com>
4584
4585         * mini.c
4586         (trampoline_code): Renamed to `mono_trampoline_code' and made it
4587         public; this is now accessed directly by the debugger.
4588         (mono_generic_trampoline_code): Removed.
4589
4590         * debug-mini.c
4591         (mono_debug_init_method): Also add interncalls and wrappers.
4592
4593 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
4594
4595         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
4596
4597 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
4598
4599         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
4600
4601 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
4602
4603         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
4604
4605 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
4606
4607         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
4608         getting TLS offsets on AMD64 too.
4609
4610 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
4611
4612         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
4613
4614 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
4615
4616         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
4617         inssel-arm.brg, mini-arm.h: ARM port work in progress.
4618
4619 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
4620
4621         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
4622
4623         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
4624         to mini.c.
4625
4626         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
4627         mono_sparc_is_virtual_call ().
4628         
4629         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
4630
4631         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
4632         trampoline parameters.
4633
4634         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
4635         
4636         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
4637         to mono_arch_get_vcall_slot_addr.
4638
4639         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
4640         trampoline code.
4641
4642         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
4643
4644 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
4645
4646         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
4647
4648 2005-07-19  Martin Baulig  <martin@ximian.com>
4649
4650         * exceptions-amd64.c (throw_exception): Call
4651         mono_debugger_throw_exception() here like we're doing it on i386.
4652
4653 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
4654
4655         * mini-ia64.c: Add optimized TLS access support.
4656
4657 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
4658
4659         * mini-exceptions.c: Ongoing IA64 work.
4660
4661         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
4662
4663         * mini.c: Use the default optimization set when embedding. Fixes
4664         #75194.
4665
4666 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
4667
4668         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
4669         of trampolines to a separate file.
4670
4671         * mini-trampolines.c: New file.
4672
4673         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
4674         separate file.
4675         
4676         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
4677         amd64/ia64 code.
4678
4679         * mini-codegen.c: Fix cygwin build.
4680
4681 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
4682
4683         * mini.c: Add some minor changes needed by the IA64 port.
4684
4685         * *-ia64.*: Ongoing IA64 work.
4686
4687 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
4688
4689         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
4690         trampolines into arch-independent and arch-dependent parts.
4691
4692         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
4693
4694 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
4695
4696         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
4697
4698         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
4699         the xp-regalloc-branch for amd64.
4700
4701         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
4702         xp-regalloc-branch for x86.
4703
4704 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
4705
4706         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
4707
4708 2005-07-06  Martin Baulig  <martin@ximian.com>
4709
4710         * mini.c
4711         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
4712         (mono_jit_runtime_invoke): Likewise.
4713
4714 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
4715
4716         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
4717         on x86 too.
4718         
4719         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
4720         without loading their metadata. Reorganize the file format so exception handling+
4721         debug info is kept separate from normal method info. Create MonoJitInfo 
4722         structures for methods lazily.
4723
4724         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
4725         loading metadata.
4726         (x86_class_init_trampoline): Patch AOT class init trampolines too.
4727
4728         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
4729
4730         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
4731         in AOT code.
4732
4733         * mini.h: Bump AOT file version.
4734
4735 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
4736
4737         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
4738
4739 2005-07-01  Raja R Harinath  <rharinath@novell.com>
4740
4741         * Makefile.am (check-local): Call semdel-wrapper.
4742
4743 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
4744
4745         * mini-x86.c: Revert the last change as it seems to break the build..
4746
4747 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
4748
4749         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
4750         
4751         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
4752
4753 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
4754
4755         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
4756         outside of the macro, so strange stuff doesn't happen with gcc4
4757         (NEW_AOTCONST_TOKEN): Likewise.
4758
4759 2005-06-28  Martin Baulig  <martin@ximian.com>
4760
4761         * mini.c (mini_class_is_system_array): New static method; use this
4762         instead of `klass->parent == mono_defaults.array_class' everywhere
4763         since this also works for the new generic array class.
4764
4765 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
4766
4767         * inssel.brg: Remove warnings.
4768
4769 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
4770
4771         * mini-ia64.c: Ongoing IA64 work.
4772
4773         * basic-float.cs: Add float->i1 conversion test.
4774
4775         * iltests.il: Add conv.u4 test.
4776
4777 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
4778
4779         * inssel-long.brg: Fix bug caused by last change.
4780
4781 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
4782
4783         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
4784         BSDs.  Allows the x86 JIT to work on OSX86
4785
4786 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
4787
4788         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
4789         u4->i8 conversion.
4790
4791         * mini-ia64.c: Ongoing IA64 work.
4792
4793 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
4794
4795         * mini-ia64.c: Ongoing IA64 work.
4796
4797         * driver.c: Clean up jit_code_hash as well when using --regression.
4798
4799         * inssel-long.brg: Fix long->i4/u4 conversion rules.
4800
4801         * basic-long.cs: Add tests for long->u4 conversion.
4802
4803 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
4804
4805         * mini.c: Take mono_get_domainvar out of macros. This makes sure
4806         that we do not depend on undefined C behavior: the order stuff
4807         gets evaluated within an expression. Fixes mono when compiled on
4808         GCC 4.
4809
4810 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
4811
4812         * *-ia64.*: Ongoing IA64 work.
4813
4814         * aot.c: Lower memory usage while loading AOT methods.
4815
4816         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
4817
4818         * mini.h: Bump AOT file format version.
4819
4820 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
4821
4822         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
4823
4824 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
4825
4826         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
4827         not on callee assembly). Fixed some comments.
4828
4829 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
4830
4831         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
4832         it gets proper disassembly.
4833         (emit_method_info): Remove some dead code.
4834
4835         * mini.c (mini_method_compile): Allways allocate the GOT var in
4836         mono_method_to_ir for emulating opcodes.
4837
4838 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
4839
4840         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
4841         before freeing the code memory. Fixes #74990.
4842
4843         * objects.cs: Add regression test for #74992.
4844
4845         * liveness.c: Extend live ranges of arguments to the beginning of the
4846         method. Fixes #74992.
4847
4848         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
4849         so it points into the faulting instruction.
4850
4851 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
4852
4853         * jit-icalls.c (mono_imul_ovf): Add exception handling.
4854
4855         * *-ia64.*: Ongoing IA64 work.
4856
4857         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
4858
4859 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
4860
4861         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
4862
4863         * *-ia64.*: Ongoing IA64 work.
4864
4865 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
4866
4867         * basic-long.cs: Add tests for add/sub.ovf.
4868
4869         * basic.cs: Add tests for sub.ovf.
4870
4871         * *-ia64.*: Ongoing IA64 work.
4872
4873 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
4874
4875         * *-ia64.*: Ongoing IA64 work.
4876
4877         * basic.cs: Add conv.ovf.i4.un test.
4878
4879 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
4880
4881         * mini.c: (remove_block_if_useless) Fixed bug 75061.
4882         
4883 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4884
4885         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
4886
4887 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
4888
4889         * *-ia64.*: Ongoing IA64 work.
4890
4891 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4892
4893         * trace.[ch]:
4894         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
4895
4896 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
4897
4898         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
4899
4900 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
4901
4902         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
4903
4904         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
4905         of a call is callable by a near call.
4906
4907 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
4908
4909         * mini-ia64.c: Ongoing IA64 work.
4910
4911 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
4912
4913         * genmdesc.c: Make the generated array non-static.
4914
4915         * inssel-long.brg: Fix LSHR_IMM rule.
4916
4917         * *-ia64.*: Ongoing IA64 work.
4918
4919         * *-ia64.*: Ongoing IA64 work.
4920
4921 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
4922
4923         * *-ia64.*: Ongoing IA64 work.
4924
4925         * *-ia64.*: Ongoing IA64 work.
4926         
4927         * mini-ia64.c: Ongoing IA64 work.
4928
4929         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
4930
4931 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
4932
4933         * objects.cs basic-calls.cs: Move some tests to objects.cs.
4934         
4935         * objects.cs basic-long.cs: Move some tests to objects.cs.
4936
4937 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
4938
4939         * *-ia64.*: Ongoing IA64 work.
4940
4941         * iltests.il: Add a new test.
4942
4943         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
4944         newobj. Fixes #75042.
4945
4946 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
4947
4948         * *-ia64.*: Ongoing IA64 work.
4949         
4950         * *-ia64.*: Ongoing IA64 work.
4951         
4952         * *-ia64.*: Ongoing IA64 work.
4953
4954         * basic.cs objects.cs: Move tests accessing static variables as well.
4955
4956         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
4957
4958 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
4959
4960         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
4961
4962         * driver.c: Always print failed tests.
4963
4964         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
4965         frame pointer.
4966
4967         * *ia64*: Ongoing IA64 work.
4968
4969 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
4970
4971         * basic.cs: Add tests for add.ovf. Fix warnings.
4972
4973 2005-05-18  Miguel de Icaza  <miguel@novell.com>
4974
4975         * driver.c (mono_main): Avoid crash if no argument is passed to
4976         --break;  Do not use g_error, but f_printf.   And fix all other
4977         ocurrences of the same crash.
4978
4979 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
4980
4981         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
4982         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
4983         Fixes #74742.
4984
4985 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
4986
4987         * *-ia64.*: Add beginnings of IA64 backend.
4988
4989         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
4990
4991 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
4992
4993         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
4994         Fixes #74925.
4995
4996         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
4997
4998         * mini-amd64.c: Fix a warning.
4999
5000 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
5001
5002         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
5003         in float_neg. Fixes #74897.
5004
5005         * mini-amd64.c (emit_call): Fix another near call bug.
5006
5007 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
5008
5009         * declsec.c: Keep the appdomain information in the structure. Added a 
5010         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
5011         value gets overwritten).
5012         * declsec.h: Set the default MonoArray for the the stack to 6. Added
5013         an MonoAppDomain member to MonoSecurityFrame.
5014         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
5015         used in the stack walk. Now use a MonoArray which grow (double) when
5016         it gets full.
5017
5018 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
5019
5020         * mini.c: Re-enabled runtime cleanup, since running threads should
5021         now properly stop when exiting.
5022
5023 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
5024
5025         * mini-codegen.c: New file contaning the arch-independent local
5026         register allocator. Not used by any architectures yet.
5027
5028         * mini.h linear-scan.c: Merge some changes from the 
5029         mini-xp-local-regalloc branch.
5030
5031 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
5032
5033         * mini-amd64.c (emit_call): Fix calls to native functions when the
5034         runtime is compiled as a shared library. Fixes #74756.
5035
5036         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
5037         on a literal field. Fixes #74751.
5038
5039 2005-04-25  Raja R Harinath  <rharinath@novell.com>
5040
5041         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
5042
5043 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
5044
5045         * objects.cs: Add missing null casting test.
5046
5047 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
5048
5049         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
5050         in wrapper methods. Also rename 'address' variable to 'offset'.
5051
5052 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
5053
5054         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
5055         warnings.
5056         
5057         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
5058
5059         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
5060         work on windows.
5061
5062 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
5063
5064         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
5065
5066 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
5067
5068         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
5069         just the last bytes.
5070
5071 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
5072
5073         * aot.c (mono_compile_assembly): Fix warning.
5074
5075         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
5076         by the _MSC_VER stuff.
5077
5078 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
5079
5080         * inssel-long.brg: Fix #74588.
5081
5082         * cpu-amd64.md: Fix #74591.
5083
5084         * iltests.il: Add new regression tests.
5085
5086 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
5087
5088         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
5089         valuetype.
5090
5091 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
5092
5093         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
5094
5095         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
5096         from Bill Middleton <flashdict@gmail.com>.
5097
5098 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
5099
5100         * arrays.cs: Add new regression test. Fix warnings.
5101
5102 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
5103
5104         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
5105         and leakage in CKFINITE.
5106
5107         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
5108         this to a null op since it is called on amd64 too.
5109
5110         * exceptions-amd64.c (get_throw_trampoline): Align stack.
5111
5112         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
5113         body since this is not used on amd64.
5114         
5115         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
5116
5117         * mini-amd64.c: Remove obsolete fixmes.
5118
5119         * mini.c (print_method_from_ip): Fix debugging support.
5120
5121 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
5122
5123         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
5124         so that expressions that don't give much gain are not reduced.
5125         * ssapre.h: Likewise.
5126
5127 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
5128
5129         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
5130
5131         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
5132
5133         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
5134
5135 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
5136
5137         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
5138
5139         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
5140
5141 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
5142
5143         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
5144         stack touching.
5145
5146         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
5147
5148         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
5149
5150         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
5151
5152         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
5153         MONO_ARCH_USE_SIGACTION. Fixes #74252.
5154
5155         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
5156
5157         * mini-x86.c: Fix up stack overflow handling.   
5158
5159         * exceptions.cs: Add new regression test.
5160
5161 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
5162
5163         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
5164         mono_jit_thread_attach.
5165
5166         * mini.c (mono_method_to_ir): Verify called method is not abstract.
5167
5168 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
5169
5170         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
5171         avoid calling constructors using callvirt.
5172
5173         * inssel.brg: Fix #74073.
5174
5175 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
5176
5177         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
5178         compilation with non-GCC compilers.
5179         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
5180         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
5181
5182 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
5183
5184         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
5185         klass->interface_offsets (will likely fix bug#74073).
5186
5187 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
5188
5189         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
5190
5191 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
5192
5193         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
5194         to amd64_div_reg_size ().
5195         
5196         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
5197
5198 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
5199
5200         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
5201
5202 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
5203
5204         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
5205
5206 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
5207
5208         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
5209         
5210         * mini.c (mono_precompile_assembly): Load and precompile referenced
5211         assemblies as well. Fixes #74015.
5212
5213 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
5214
5215         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
5216
5217 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
5218
5219         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
5220         a lot of checks and (anyway) permissions cannot work until corlib is 
5221         loaded.
5222
5223 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
5224
5225         * mini-ppc.c: fixed ABI issue on sysv/ppc.
5226
5227 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
5228
5229         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
5230         calls (fixes bug#72824).
5231
5232 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
5233
5234         * mini.c: fix tail recursion elimination (see test in bug#73936).
5235
5236 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
5237
5238         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
5239         some fp functions in sse2 mode.
5240
5241 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
5242
5243         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
5244
5245 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
5246
5247         * mini.h mini.c: Add mono_get_jit_tls_key ().
5248
5249         * mini-x86.c: Enable fast TLS support on windows.
5250
5251 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5252
5253         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
5254         * mini.c: Check for p/invoke method when generating code. If a
5255         p/invoke method, or it's class, isn't decorated with [Suppress
5256         UnmanagedCodeSecurity] then generate code to call System.Security.
5257         UnmanagedDemand (only if the security manager is active).
5258
5259 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
5260
5261         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
5262         last change as it seems to cause strange crashes.
5263         
5264 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
5265
5266         * *.c: handle unsafe function pointers where needed.
5267
5268 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
5269
5270         * mini.c (mono_jit_free_method): Remove the fixme too.
5271
5272 2005-03-15  Miguel de Icaza  <miguel@novell.com>
5273
5274         * mini.c: As discussed, make the code actually free the delegate
5275         thunk now, to enable the debugging of delegate problems, use
5276         MONO_DEBUG=1 when running Mono. 
5277
5278         This takes also care of parts of the leaks as seen by Joe.
5279
5280 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
5281
5282         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
5283         thread_tls_offset calculation.
5284
5285 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
5286
5287         * declsec.c: Reworked linkdemand checks for icall. The previous code
5288         was using the declaration code (untrusted) and didn't work as expected
5289         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
5290         specific case.
5291
5292 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
5293
5294         * iltests.il: Add new localloc test.
5295
5296         * mini-amd64.c: Handle large stack allocations the same way as on
5297         windows if stack overflow handling is working.
5298         
5299         * mini-amd64.c: Allocate the signal stack using mmap.
5300
5301         * mini.c (sigsegv_signal_handler): Fix reading of context.
5302
5303         * mini-exceptions.c: Fix up stack overflow handling.
5304
5305         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
5306
5307         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
5308
5309         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
5310
5311         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
5312
5313         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
5314         tramp_init functions as they are no longer needed.
5315
5316 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
5317
5318         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
5319         
5320         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
5321
5322         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
5323         
5324         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
5325         support that now.
5326
5327         * mini-ops.h: Add OP_LMUL_IMM.
5328
5329         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
5330         long mul/div opcodes as intrinsic.
5331
5332         * mini-amd64.c (emit_call): Handle the case when the callee might be
5333         an AOT method.
5334
5335 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
5336
5337         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
5338         extra safe.
5339         
5340         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
5341
5342         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
5343
5344 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
5345
5346         * mini.c (mono_codegen): Don't leak here, to help people running
5347         monogrind.
5348
5349 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
5350
5351         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
5352         conversions in sse2 mode.
5353
5354         * basic-float.cs: Add regression test.
5355         
5356         * mini-amd64.c: Reenable sse2.
5357
5358 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
5359
5360         * mini-amd64.c: Disable sse2 until some regressions are fixed.
5361
5362 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
5363
5364         * driver.c: Copyright text should include 2005.
5365         
5366 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
5367
5368         * cpu-amd64.md (load_membase): Fix more max lengths.
5369
5370 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
5371
5372         * cpu-amd64.md (load_membase): Fix max length.
5373
5374         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
5375
5376         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
5377
5378         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
5379         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
5380
5381         * basic-float.cs: Add rounding regression test.
5382
5383         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
5384
5385 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
5386
5387         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
5388         structures in registers for pinvoke wrappers.
5389
5390 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
5391
5392         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
5393
5394 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
5395
5396         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
5397         wrapper to mono_jit_thread_attach.
5398
5399         * mini.c (mini_jit_thread_attach): New jit icall.
5400
5401         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
5402         native->managed wrappers.
5403
5404         * exceptions.cs: Add new regression test.
5405
5406         * mini.c (optimize_branches): Check regions in the cbranch to throw
5407         block case as well. Fixes #73242.
5408
5409 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
5410
5411         * mini.c: thread safety fixes.
5412
5413 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
5414
5415         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
5416         patching stuff, since delegates use jump trampolines so there is
5417         no caller.
5418
5419         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
5420         jump trampolines.
5421         
5422         * tramp-amd64.c: Fix build.
5423
5424         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
5425         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
5426
5427         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
5428         Rename this to mono_arch....
5429         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
5430
5431         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
5432
5433         * mini-amd64.c (emit_call): If both the caller and the callee is
5434         guaranteed to have 32 bit addresses, emit a normal call.
5435
5436         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
5437
5438         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
5439         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
5440         method_ptr inside delegates.
5441
5442 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
5443
5444         * mini.c (mono_jit_free_method): Free the method info even if the native code is
5445         invalidated. Fixes #73001.
5446
5447         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
5448
5449         * mini-x86.c: Only use stdcall for pinvokes on windows.
5450
5451 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
5452
5453         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
5454         * mini-x86.c: remove unreliable __thread var offset detection,
5455         use the correct accessors and enable by default.
5456
5457 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
5458
5459         * mini.c (mono_jit_free_method): Fix memory leak.
5460
5461 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
5462
5463         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
5464
5465 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
5466
5467         * cpu-amd64.md: Fix lengths of atomic opcodes.
5468
5469 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
5470
5471         * driver.c: try to not imply using ICU is any good.
5472
5473 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
5474
5475         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
5476         functions as inline ops.
5477
5478         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
5479         some Interlocked functions as inline ops.
5480
5481         * mini.c (move_basic_block_to_end): Fix bug in last patch.
5482
5483         * mini.h (MonoBasicBlock): Reorganize fields a bit.
5484
5485         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
5486
5487         * mini.c: Add support for OP_NOT_TAKEN.
5488
5489         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
5490         structures in registers for pinvoke wrappers.
5491
5492         * mini-amd64.c: Fix warnings.
5493
5494 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
5495
5496         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
5497
5498         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
5499
5500         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
5501         address instead of loading the address from it.
5502
5503         * mini-x86.c: Add support for returning small structs in registers
5504         on Win32. Fixes part of #70864.
5505         
5506 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
5507
5508         * trace.c (get_token): Improve error checking.
5509
5510 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
5511
5512         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
5513
5514 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
5515  
5516         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
5517         it can be reused for MonoClass.
5518         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
5519         _LINKDEMAND.
5520
5521 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
5522
5523         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
5524         instead of a MonoReflectionMethod. The method information wasn't used
5525         when displaying SecurityException details (but will be now).
5526
5527 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
5528
5529         * Makefile.am : windows build fix.
5530
5531 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
5532
5533         * iltests.il: Add new regression test.
5534
5535         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
5536         #72522.
5537
5538 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
5539  
5540         * mini.c: Moved linkdemand check into helper function check_linkdemand
5541         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
5542         LDFTN, LDVIRTFTN).
5543
5544 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
5545
5546         * declsec.c: Added statistics counter for different kinds of 
5547         LinkDemands.
5548         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
5549         (and commented) declaration.
5550         * mini.c: Added statistics counter for security Demand code 
5551         generation. Added display of security statistics.
5552
5553 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
5554
5555         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
5556         Fix compilation errors under gcc-2.95.
5557
5558 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
5559
5560         * mini.c, driver.c: Use the new jit trampoline hashtable
5561
5562 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
5563
5564         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
5565
5566 2005-02-11  Martin Baulig  <martin@ximian.com>
5567
5568         * debug-mini.c (mono_debug_close_method): Free the line number array.
5569
5570 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
5571
5572         * aot.c: Break up large methods into smaller ones. Share GOT slots for
5573         icalls.
5574
5575         * mini.h: Bump AOT file format version. 
5576
5577 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
5578
5579         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
5580         APTC and P/Invoke.
5581         * declsec.h: Added macros to get/set lazyly initialized security 
5582         informations about assemblies. Added new enum for different type of
5583         possible LinkDemand violation. Added function to check LinkDemands.
5584         * mini.h: Added a field to MonoCompile to hold any security violation
5585         detected when JITting a method (so it can be thrown later).
5586         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
5587         and CEE_CALLVIRT. Added code to throw exception at the end of
5588         mini_method_compile (note: the exception is unhandled right now).
5589
5590 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
5591
5592         * mini.c, jit-icalls.c: use the managed implementation of
5593         memset for initobj and memset, to avoid managed <-> unmanaged
5594         transitions.
5595
5596 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
5597
5598         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
5599         optimization if it would need a GOT var.
5600
5601         * basic.cs: Add tests for constant propagation and switch statements.
5602
5603         * ssa.c: Fix out-of-range constant propagation and switch statements.
5604
5605 2005-02-09    <vargaz@freemail.hu>
5606
5607         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
5608
5609 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
5610
5611         * cpu-amd64.md (load_membase): Fix max length of load_membase.
5612
5613 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
5614
5615         * mini.c: update to new signature of mono_class_get_allocation_ftn().
5616
5617 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
5618
5619         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
5620         arithmetic operations.
5621
5622 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
5623
5624         * mini-ppc.c: add a workaround for broken user code that
5625         DllImports vararg functions with non-vararg signatures.
5626
5627 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
5628
5629         * mini.c (mono_jit_compile_method_inner): Add detection and a 
5630         meaningfull error message for assemblies written in Managed C++.
5631
5632         * tramp-amd64.c mini-amd64.h: Add support for 
5633         create_trampoline_from_token ().
5634
5635         * aot.c mini-x86.c abcremoval.c: Applied patch from
5636         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
5637
5638 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
5639
5640         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
5641         which takes a MonoImage/token as parameter instead of a MonoMethod.
5642
5643         * aot.c: Use the new trampoline for initializing vtables.
5644
5645         * aot.c: Add support for ldfld/stfld_remote wrappers.
5646
5647         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
5648         rules for compare <MEM>, IMM.
5649
5650         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
5651
5652         * aot.c: Handle inherited finalizers correctly.
5653
5654 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
5655
5656         * inssel.brg (stmt): Add a missing _setup_... ().
5657
5658         * aot.c: Save some parts of the class state to the AOT file and use it
5659         to recompute that state when a class is initialized.
5660
5661         * mini.c: Install AOT hooks into the runtime.
5662
5663         * mini.h: Bump AOT file format version.
5664         
5665         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
5666         Fixes #72148.
5667
5668         * iltests.il: Add new test.
5669
5670 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
5671
5672         * mini.c: fix typo.
5673
5674 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
5675
5676         * mini.c: setup the statistical profiler in the thread attach
5677         callback to cope with the new single thread code.
5678
5679 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
5680
5681         * mini-ppc.c: ensure we have enough room for the profiler
5682         calls (fixed bug#72084).
5683
5684 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
5685
5686         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
5687         it.
5688
5689 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
5690
5691         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
5692
5693 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
5694
5695         * ssapre.c: Fixed an issue with down safety (this allows IronPython
5696         to succesfully execute parrotbench).
5697         * ssapre.h: Likewise.
5698
5699 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
5700
5701         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
5702         variable for stores to method arguments (fixes a SSAPRE issue).
5703
5704 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
5705
5706         * mini.c: handle value types in dup, fixes gen-112.cs.
5707
5708 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
5709
5710         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
5711         sequence for calls in dynamic methods to avoid thunks.
5712
5713 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
5714
5715         * mini.c: correctly remove dynamic methods from the hashtable.
5716
5717 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
5718
5719         * driver.c: Disabled SSAPRE until fix the bug that appears
5720         in IronPython's parrotbench.
5721
5722 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
5723
5724         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
5725
5726         * mini.c (mono_method_to_ir): Revert the previous change.
5727         
5728         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
5729         when AOT compiling.
5730
5731         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
5732         mono_jit_info_table_find () etc. when running under valgrind.
5733
5734         * inssel.brg: Fix warnings.
5735
5736         * mini-exceptions.c: Fix warnings.
5737
5738 2005-01-31  Martin Baulig  <martin@ximian.com>
5739
5740         * driver.c (compile_all_methods_thread_main): Don't try to compile
5741         generic methods or anything which has type parameters.
5742
5743 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
5744
5745         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
5746
5747         * TestDriver.cs: Add --verbose flags.
5748
5749         * graph.c ssa.c: Fix 64 bit warnings.
5750         
5751         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
5752         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
5753         Fix 64 bit warnings.
5754
5755         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
5756         variable not spotted by gcc.
5757         
5758         * mini-amd64.c inssel-amd64.brg: Applied patch from  
5759         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
5760         X86_COMPARE_MEMBASE opcodes.
5761
5762         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
5763
5764 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
5765
5766         * *: MonoMethod->signature might be NULL now. You *MUST* use
5767         mono_method_signature.
5768
5769 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
5770
5771         * driver.c (compile_all_methods_thread_main): Compile the methods
5772         without invoking cctors.
5773
5774 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
5775
5776         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
5777         * basic-calls.cs: test for the above.
5778
5779 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
5780
5781         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
5782         MonoJitInfo changes.
5783
5784 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
5785
5786         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
5787         eagerly if it contains dynamic methods.
5788         
5789         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
5790
5791         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
5792         trace, it is now computed by an icall from trace_ips.
5793         
5794         * mini-exceptions.c: Fix a warning.
5795
5796 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
5797
5798         * mini-exceptions.c: don't bother getting stack trace info if
5799         it's not going to be used.
5800
5801 2005-01-27  Raja R Harinath  <rharinath@novell.com>
5802
5803         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
5804         ssapre-mini-ops.h.
5805
5806 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
5807
5808         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
5809
5810         * aot.c: Avoid calling mono_method_get_header () if not needed.
5811
5812         * mini.h: Bump AOT file format version.
5813         
5814         * mini.c (mono_emit_native_call): Allocate a GOT var here.
5815
5816         * mini.c (mono_print_tree): Print more info for calls.
5817
5818 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
5819
5820         * declsec.h: Remove warning by adding missing include for marshal.h
5821
5822 2005-01-26  Martin Baulig  <martin@ximian.com>
5823
5824         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
5825         `ip' twice.
5826
5827 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
5828
5829         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
5830         flags.
5831
5832         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
5833
5834         * aot.c (mono_compile_assembly): Fix a warning.
5835
5836 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
5837
5838         * declsec.c: Look for security attributes on the original MonoMethod 
5839         (and not the wrapped one). This fix permissions on icalls.
5840
5841 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
5842
5843         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
5844
5845         * mini.c (mono_allocate_stack_slots): Add a fixme.
5846
5847         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
5848
5849 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
5850
5851         * inssel.brg: optimize casts of sealed types (more
5852         optimizations waiting for fixes in remoting).
5853
5854 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
5855
5856         * inssel.brg (stmt): Add another dummy rule.
5857
5858         * driver.c: Fix warnings.
5859
5860         * driver.c (mono_main): If running under valgrind, instruct glib to use
5861         the system allocation functions so valgrind can track the memory
5862         allocated by the g_... functions.
5863
5864         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
5865
5866         * mini-ops.h: Add OP_DUMMY_STORE opcode.
5867
5868         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
5869
5870         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
5871         variables in try regions.
5872
5873         * mini.c (mini_method_compile): Don't disable optimizations on large
5874         methods when AOT compiling.
5875
5876         * mini.c (mono_allocate_stack_slots): New arch independent method to 
5877         allocate stack slots. Not yet used.
5878
5879 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
5880
5881         * debug-mini.c (mono_debug_close_method): Plug some leaks.
5882
5883 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
5884
5885         * mini-ppc.c: make the branch info relative as the code
5886         buffer can be reallocated.
5887
5888 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
5889
5890         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
5891         * driver.c: Removed the AOT/security restriction. Now initialize the
5892         security manager (in metadata) if --security is used.
5893         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
5894         rather than the pointer to declarative security, when AOT is used.
5895
5896 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
5897
5898         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
5899         basic blocks, reduced intrinsic exception throwing code size.
5900
5901 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
5902
5903         * driver.c (mini_usage): Reorder the usage screen.
5904
5905 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
5906
5907         * mini.c (mono_resolve_patch_target): Fix warning.
5908
5909 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
5910
5911         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
5912         previous patch.
5913
5914         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
5915
5916         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
5917         breaks the amd64 build.
5918
5919         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
5920         register allocation. Fixes #71454.
5921
5922         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
5923
5924         * arrays.cs: Add new regression test.   
5925
5926 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
5927
5928         * ssapre.c: Turned usage of snprintf to GString.
5929         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
5930         (I left it on by mistake in my previous commit).
5931
5932 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
5933
5934         * mini.c, cfold.c, basic-calls.cs: preserve side effects
5935         on cond branch optimization (fixes bug# 71515).
5936
5937 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
5938
5939         * abcremoval.c: Fixed bug 71062.
5940         * abcremoval.h: Likewise.
5941
5942 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
5943
5944         * mini.c: Added a new functionality to optimize_branches, the removal
5945         of useless basic blocks, and fixed some problem in the removal of
5946         critical edges; some utility functions added for both purposes.
5947         * ssapre.c: Added complex expression support, and fixed bug 70637.
5948         * ssapre.h: Likewise.
5949         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
5950         enabled in SSAPRE.
5951         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
5952         * driver.c: Re-enabled SSAPRE.
5953
5954 2005-01-19  Martin Baulig  <martin@ximian.com>
5955
5956         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
5957         the result of mono_get_method_constrained().
5958
5959 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
5960
5961         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
5962         manager.
5963
5964 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
5965
5966         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
5967         be detected.  Fixes #59296.
5968
5969 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
5970
5971         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
5972         which can happen. Fixes #71361.
5973
5974 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
5975
5976         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
5977         manager.
5978
5979 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
5980
5981         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
5982         appdomain-unload.exe to fail.
5983         
5984         * mini.c: Fix some memory leaks.
5985
5986 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
5987
5988         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
5989         Fixed bug and sped up some codepaths.
5990
5991 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
5992
5993         * mini.c: Fix some memory leaks.
5994
5995         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
5996         conversion.
5997
5998         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
5999
6000         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
6001         #71320.
6002
6003         * iltests.il: Add regression test for #71320.
6004
6005 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
6006
6007         * mini.c (mono_codegen): Fix installation of profiler hooks.
6008
6009         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
6010
6011 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
6012
6013         * mini.h, mini.c, cfold.c: optimize access to enum
6014         readonly fields, too. Eval conditional branches if possible
6015         to perform unreachable code removal in more cases.
6016
6017 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
6018
6019         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
6020
6021         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
6022         code manager.
6023
6024         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
6025         WinXP DEP. Fixes #71244.
6026
6027 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
6028
6029         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
6030
6031 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
6032
6033         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
6034
6035 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
6036
6037         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
6038         changes.
6039
6040         * mini.h: Bump AOT version.
6041
6042         * mini.h (MonoCompile): Change exvar to a hash table.
6043
6044         * mini.c: Allocate a separate exvar for each handler block.
6045
6046         * mini.c: Get rid of the computation of filter_lengths, its not needed.
6047
6048         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
6049         ex var with the pending exception and only throw if the two are equal.
6050         Fixes #68552.
6051         
6052         * exceptions.cs: Add tests for rethrow and nested catch clauses.
6053
6054         * mini-x86.c: Fix warnings.
6055
6056         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
6057         used by all the ports now.
6058
6059         * aot.c: Add write-symbols and save-temps options.
6060
6061 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
6062
6063         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
6064
6065 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
6066
6067         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
6068         operations.
6069
6070         * tramp-s390.c: Check vtable slot belongs to the domain.
6071
6072         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
6073         as per other platforms.
6074
6075         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
6076
6077 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
6078
6079         * driver.c: we don't run the Main() code in a subthread anymore.
6080
6081 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
6082
6083         * mini.c: added experimental rtc support in the statistical
6084         profiler: if the user has the permission, more accurate statistics
6085         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
6086         The MONO_RTC value must be restricted to what the linux rtc allows:
6087         power of two from 64 to 8192 Hz.
6088
6089 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
6090
6091         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
6092
6093 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
6094
6095         * mini-ppc.c: better icache flush for smp.
6096
6097 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
6098
6099         * mini-amd64.c (emit_move_return_value): Fix memory leak.
6100
6101         * mini-x86.c (get_call_info): Add the get_call_info () code from the
6102         amd64 port, not yet used.
6103
6104 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
6105
6106         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
6107         a struct type.
6108
6109 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
6110
6111         * driver.c: Added --security option to activate the security manager.
6112         Right now this will allow code generation for declarative demands and
6113         is disabled when AOT is specified.
6114         * mini.c: Add code generation for declarative security demands.
6115         * mini.h: Add mono_use_security_manager as an extern gboolean.
6116
6117 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
6118
6119         * aot.c (mono_compile_assembly): Speed up compilation a bit by
6120         emitting more dense assembly code.
6121
6122         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
6123         exception throwing stuff.
6124
6125 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
6126
6127         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
6128         dead code.
6129
6130         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
6131         left in by mistake.
6132
6133         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
6134         fixed.
6135
6136         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
6137
6138         * tramp-*.c: Only patch vtable slots if the object is in the current
6139         domain. Fixes appdomain-unload.exe.
6140
6141         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
6142         
6143         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
6144         x86 branch.
6145
6146 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
6147
6148         * mini.c (reverse_branch_op): New helper function.
6149
6150         * mini.c (optimize_branches): Run the new optimization only on 
6151         platforms which support it. Also reverse all kinds of branches.
6152
6153         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
6154
6155         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
6156         a throw statement.
6157
6158         * mini.c (optimize_branches): Reverse not-equals branches if the false
6159         bblock is a throw. This happens a lot of time with argument checking in
6160         corlib.
6161
6162         * mini.c (mono_codegen): Add support for placing basic blocks after
6163         the function epilogue.
6164
6165         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
6166         function epilogue.
6167         
6168 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
6169
6170         * mini.c (setup_stat_profiler): Only set this up if the platform
6171         supports ITIMER_PROF.
6172
6173 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
6174
6175         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
6176         previous patch.
6177
6178         * inssel.brg: Fix a warning.
6179
6180 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
6181
6182         * mini.c: added support for statistical profiler 
6183         (run with: --profile=default:stat).
6184
6185 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
6186
6187         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
6188
6189         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
6190
6191         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
6192         related to global registers from the amd64 port.
6193
6194 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
6195
6196         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
6197
6198         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
6199         with global registers.
6200         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
6201
6202         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
6203
6204 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
6205
6206         * debug-mini.c (encode_value): Fix off-by-one.
6207
6208         * aot.c (encode_value): Likewise.
6209
6210         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
6211
6212 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
6213
6214         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
6215         AOT.
6216
6217         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
6218         
6219         * aot.c (emit_method_info): Increase size of temp buffer.
6220
6221         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
6222         the AOT case.
6223
6224 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
6225
6226         * aot.c (emit_method_info): Fix build.
6227         
6228         * aot.c: Further rework of the AOT file format to reduce the size of
6229         the method info data.
6230
6231         * mini.h: Bump AOT file format version.
6232
6233 2004-12-27  Martin Baulig  <martin@ximian.com>
6234
6235         * mini.c (mini_get_method): New static method; call
6236         mono_get_method_full() and mono_get_inflated_method().
6237         (mono_method_to_ir): Use mini_get_method() instead of
6238         mono_get_method_full(). 
6239
6240 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
6241
6242         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
6243
6244 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
6245
6246         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
6247
6248         * inssel-amd64.brg: Add some optimization rules.
6249
6250 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
6251
6252         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
6253         standard not GC'd stuff is fine.
6254
6255 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
6256
6257         * aot.c: Rework the AOT file format to get rid of most of the global
6258         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
6259
6260         * mini.h: Bump AOT file format version.
6261         
6262 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
6263
6264         * mini.h: Bump AOT file format version.
6265
6266         * aot.c (mono_aot_is_got_entry): New function to determine if an 
6267         address is inside a GOT.
6268
6269         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
6270
6271         * cpu-pentium.md: Increase the maximum size of some instructions which
6272         might involve a got access.
6273         
6274         * mini.c (get_method_from_ip): Another debug helper function.
6275
6276         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
6277         when got var accesses are created during the decompose phase.
6278
6279         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
6280
6281         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
6282         argument mini_compile_method and to MonoCompile, and use this to
6283         determine whenever a given method is compiled for AOT. This allows the
6284         other methods compiled during AOT compilation to be free of AOT stuff,
6285         so the backends does not need to add special support for them by
6286         creating a fake GOT etc.
6287
6288         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
6289         longer needed.
6290
6291 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
6292
6293         * mini.c (mono_method_to_ir): It turns out that some of the
6294         x-appdomain wrappers are lax with types, so just ignore this for
6295         all wrappers.
6296
6297         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
6298         at the vtable->klass. If it is non-shared code we can just use the
6299         vtable.
6300
6301 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
6302
6303         * mini-ppc.c: access MonoDomain from tls, too.
6304
6305 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
6306
6307         * declsec.c: Removed unused variable (and related warning ;-)
6308
6309 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
6310
6311         * iltests.il: New test for LDELEMA on an array of ref types.
6312
6313         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
6314         all ldelema's on reftypes.
6315         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
6316         it was the wrong place to put it.
6317
6318         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
6319         register to pop to make this cleaner, at the request of Paolo.
6320
6321 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
6322
6323         * mini-ops.h (OP_GETHASHCODE): New op.
6324
6325         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
6326
6327         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
6328         operation.
6329
6330         For a microbenchmark, this reduces the cost of Hashtable.get_Item
6331         by 25%.
6332         
6333         * mini-x86.c (mono_arch_output_basic_block): Rather than
6334
6335         add ebp, 4
6336
6337         Emit
6338
6339         pop edx
6340
6341         The first is 3 bytes while the second is 1. This saves 36 kb on
6342         mscorlib, quite a big saving. When bootstraping mcs, I was able to
6343         see a small boost because of icache locality.
6344
6345         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
6346
6347 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
6348
6349         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
6350         started code sharing with the generic code.
6351
6352 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
6353
6354         * mini-ppc.c, cpu-g4.md: added code for direct access to
6355         tls data slots.
6356
6357 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
6358
6359         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
6360          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
6361         to OP_TLS_GET.
6362
6363 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
6364
6365         * declsec.c|h: Added functions to cache the declarative stack modifiers
6366         in MonoJitInfo and to create a security frame from a MonoJitInfo 
6367         structure.
6368         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
6369         created. Register internal calls for System.Security.SecurityFrame::
6370         _GetSecurityFrame and _GetSecurityStack.
6371         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
6372         the definitions for the new stack walk/callback mechanism.
6373         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
6374         first security frame for LinkDemands and InheritanceDemands) and
6375         GetSecurityStack for Demands. Both use the new mono_walk_stack code
6376         from lupus.
6377         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
6378         walk initialization (lupus).
6379
6380 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
6381
6382         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
6383         idiom.
6384         (handle_loaded_temps): Do not create a temporary variable for
6385         things that we know are temps. They will never be modified.
6386         (mono_spill_call): Set MONO_INST_IS_TEMP
6387         (mono_emulate_opcode): ditto
6388         (emit_tree): ditto
6389         (mono_method_to_ir.CEE_DUP): ditto
6390
6391 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
6392
6393         * mini.c (type_to_eval_stack_type): Make this handle the void type
6394         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
6395         (emit_tree): use ip_in_bb to special case some common idioms
6396         Update all callers to pass in the IP.
6397         (mono_method_to_ir): Make CEE_CALL* do the above as well.
6398
6399         This gives us a nice 2% speedup in mcs bootstrap.
6400
6401         * mini-x86.c (peephole_pass): Peephole pass to make
6402         mov  [foo], eax
6403         push [foo]
6404
6405         into
6406
6407         mov [foo], eax
6408         push eax
6409
6410         * mini.c (ip_in_bb): new method.
6411         (mono_method_to_ir): use this method rather than doing the hash
6412         lookup ourselves.
6413
6414         * linear-scan.c (mono_linear_scan): When expiring actives, you
6415         don't need to keep around variables that expire on this
6416         instruction. This makes it so that:
6417              a = b + 1
6418         will turn into:
6419              store (ebx add (ebx, 1))
6420         which will become
6421              add ebx, 1
6422
6423 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
6424
6425         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
6426         combination to avoid doing two copies. Fix up problems with previous
6427         patch.
6428
6429         * mini.c: Fix 64 bit warnings.
6430
6431         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
6432
6433 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
6434
6435         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
6436         changes from the x86 code.
6437
6438         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
6439
6440 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
6441
6442         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
6443         throwing code to reduce its size, unify the AOT and non-aot code and 
6444         get rid of relocations in the AOT case.
6445
6446         * mini-x86.h mini.c exceptions-x86.c 
6447         (mono_arch_get_throw_corlib_exception): New arch specific function to 
6448         raise corlib exceptions which doesn't require relocations in the 
6449         caller.
6450
6451         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
6452
6453 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
6454
6455         * mini.c (mono_emit_method_call): Only allocate the got var when it is
6456         needed.
6457
6458         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
6459         in the AOT case.
6460
6461 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
6462
6463         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
6464         with add function when used from Inc/dec atomic 
6465         functions. Re-enabled optimization on x86.
6466         * mini-ops.h: renamed atomic_add functions to
6467         allow _add to match the Interlocked::Add and
6468         _add_next to match Interlocked::Inc/Dec.
6469
6470 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
6471
6472         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
6473         linking of BBs to the end BB, and enabled SSAPRE also with
6474         consprop and copyprop (which was prevented by that bug).
6475
6476 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
6477
6478         * mini-x86.c: disabling the Interlocked optimizing code. 
6479
6480 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
6481
6482         * aot.c (load_aot_module): Move reading of got_addr after the AOT
6483         file version check.
6484         
6485 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
6486
6487         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
6488         interlocked optimization due lack of support on x86, rewrote 
6489         exchange to take into account that base may be in eax.
6490         
6491         xsp works again; activated Interlocked optimizing code.
6492         
6493 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
6494
6495         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
6496
6497 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
6498
6499         * mini-ops.h: Add new opcodes.
6500
6501         * mini.h: Add new patch types. Add got_var to MonoCompile.
6502
6503         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
6504         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
6505         make it work with all kinds of patchable code.
6506
6507         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
6508         address of the GOT, and referencing entries in the GOT.
6509
6510         * mini.c: Add code to load the GOT address if needed by an opcode.
6511
6512         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
6513         independent AOT code on the x86 using an elf-style Global Offset Table.
6514
6515 2004-12-14  Raja R Harinath  <rharinath@novell.com>
6516
6517         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
6518
6519 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6520
6521         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
6522         when running xsp.
6523
6524 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
6525
6526         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
6527         of Interlocked:Increment/Decrement/Add as inline ops.
6528         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
6529
6530 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
6531
6532         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
6533         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
6534
6535 2004-12-12  Duncan Mak  <duncan@ximian.com>
6536
6537         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
6538         again. `patch_info->table_size' is no longer valid after Zoltan's
6539         commit #37636.
6540
6541 2004-12-12  Martin Baulig  <martin@ximian.com>
6542
6543         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
6544         if we are the "real" method, ie. not an inlined method inside it.
6545
6546 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
6547
6548         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
6549         before we look in the special fields table. This fixes
6550         ../tests/thread-static-init.cs.
6551
6552 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
6553
6554         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
6555         for Array get_Rank and get_Length. Fixes bug #70465.
6556
6557 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
6558
6559         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
6560         separate structure to reduce the size of MonoJumpInfo.
6561
6562 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
6563
6564         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
6565
6566 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
6567
6568         * mini.c (mini_get_inst_for_method): Changed to allow ports
6569         to return a MonoInst instead of opcode 
6570         (renamed mini_get_opcode_for_method to better reflect the new functionality)
6571         
6572         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
6573         Allow ports to return a created MonoInst instead of op-code, will enable
6574         new optimizations.
6575         (renamed mini_get_opcode_for_method to better reflected the functionality)
6576
6577 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
6578
6579         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
6580
6581 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
6582
6583         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
6584         Fixes #69985.
6585
6586 2004-12-08  Martin Baulig  <martin@ximian.com>
6587
6588         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
6589         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
6590
6591 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
6592
6593         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
6594         correctly.
6595
6596         * exceptions.cs: Disable some tests which depend on properties of x86 fp
6597         arithmetic.
6598
6599 2004-12-08  Raja R Harinath  <rharinath@novell.com>
6600
6601         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
6602
6603 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
6604
6605         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
6606         bug introduced by the previous patch.
6607
6608 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
6609
6610         * mini-ppc.c, objectc.cs: handle large structs passed by value
6611         (fixes bug #69972).
6612
6613 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
6614
6615         * mini-ppc.c: OP_ARGLIST implementation from
6616         Geoff Norton  <gnorton@customerdna.com>.
6617
6618 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
6619
6620         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
6621         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
6622
6623 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
6624
6625         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
6626
6627 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6628
6629         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
6630         support.
6631
6632 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
6633
6634         * mini-sparc.c: Zero out localled-ed memory.
6635
6636         * iltests.il: Add tests for zeroing out localloc-ed memory.
6637
6638 2004-12-04  Martin Baulig  <martin@ximian.com>
6639
6640         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
6641         mono_method_get_signature_full().       
6642
6643 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
6644
6645         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
6646         and some utility functions (always for SSAPRE), integrated SSAPRE.
6647         * mini.h: Likewise.
6648         * driver.c: Added ssapre option.
6649         * ssa.c: Small fix on OP_ARG handling.
6650         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
6651         * Makefile.am: Likewise.
6652
6653 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
6654
6655         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
6656         now in the xp code.
6657
6658         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
6659         icall.
6660
6661 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6662
6663         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
6664         
6665         * cpu-s390.md : Increase instruction length of oparglist.
6666
6667         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
6668
6669 2004-11-30  Martin Baulig  <martin@ximian.com>
6670
6671         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
6672         virtual generic methods.  We call a special helper_compile_generic_method()
6673         icall to retrieve the method from the vtable, inflate and compile
6674         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
6675
6676         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
6677
6678 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
6679
6680         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
6681
6682 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
6683
6684         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
6685         Fixes #69929.
6686
6687 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
6688
6689         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
6690         platforms with PIC aot.
6691
6692 2004-11-28  Martin Baulig  <martin@ximian.com>
6693
6694         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
6695         Fixes gen-112.cs.
6696
6697 2004-11-28  Martin Baulig  <martin@ximian.com>
6698
6699         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
6700         the result of mono_type_get_underlying_type() to check whether
6701         we're byref.
6702
6703 2004-11-26  Martin Baulig  <martin@ximian.com>
6704
6705         * mini.c
6706         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
6707         in the g_assert().
6708
6709 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
6710
6711         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
6712         the same way as the other arguments so they won't get clobbered.
6713
6714         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
6715         calls through R11 since it is clobbered by the trampoline code.
6716
6717 2004-11-26  Raja R Harinath  <rharinath@novell.com>
6718
6719         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
6720         pick up in-tree mscorlib.dll.
6721
6722 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
6723
6724         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
6725
6726         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
6727         runtime data/code are now stored in a table similar to the GOT in ELF. 
6728         This allows the code itself to be position independent.
6729
6730         * aot.c: Fix loading of referenced assemblies after the lazy assembly
6731         loading changes.
6732
6733         * aot.c: Attach ELF type (object/function) directives to all global
6734         symbols.
6735
6736         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
6737
6738         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
6739
6740         * mini-amd64.h: Turn on PIC AOT code.
6741
6742         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
6743         returning the offset within an OP_AOTCONST instruction where the GOT
6744         offset needs to be added.
6745
6746         * mini.h: Bump AOT file format version.
6747
6748 2004-11-25  Martin Baulig  <martin@ximian.com>
6749
6750         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
6751         uninflated generic methods.
6752
6753 2004-11-25  Martin Baulig  <martin@ximian.com>
6754
6755         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
6756
6757 2004-11-24  Martin Baulig  <martin@ximian.com>
6758
6759         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
6760         original klass (this only applies for generic instances).
6761
6762 2004-11-24  Martin Baulig  <martin@ximian.com>
6763
6764         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
6765         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
6766         that array).
6767
6768 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
6769
6770         * mini.c (mono_method_to_ir): Disable inlining for methods containing
6771         localloc. Fixes #69678.
6772
6773         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
6774         
6775 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
6776
6777         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
6778         used SSE registers on pinvoke calls. Fixes #69774.
6779
6780 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
6781
6782         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
6783         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
6784
6785 2004-11-23  Raja R Harinath  <rharinath@novell.com>
6786
6787         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
6788         Refer directly to the mcs/ tree.
6789
6790 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6791
6792         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
6793         Check if a trampoline for a synchronized method is required. 
6794
6795 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
6796
6797         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
6798         with localloc if needed. Throe arithmetric exception in
6799         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
6800         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
6801
6802 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
6803
6804         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
6805         types before switching on type.  Fixes #69622.
6806
6807 2004-11-19  Raja R Harinath  <rharinath@novell.com>
6808
6809         * Makefile.am (check-local): New.  Integrate into 'make check'.
6810         (MCS,RUNTIME): Define using in-tree mono and mcs.
6811         (ILASM): New.
6812         (%.exe): Use $(ILASM).
6813
6814 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
6815
6816         * mini-ppc.c: adjust initial prolog size (bug #69691).
6817
6818 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
6819
6820         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
6821         #69664.
6822
6823 2004-11-17  Raja R Harinath  <rharinath@novell.com>
6824
6825         * Makefile.am (clean-local): Rename from 'clean'.
6826
6827 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6828
6829         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
6830         to mono_arch_is_int_overflow. 
6831         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
6832         SIGFPE events.
6833
6834 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
6835
6836         * declsec.c|h: New files to support declarative security attributes.
6837         Added function to check if a method has (applicable) security.
6838         * mini.c|h: Add check for declarative security attributes in
6839         mono_method_check_inlining.
6840         * Makefile.am: Added declsec.c and declsec.h to the build.
6841
6842 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
6843
6844         * mini.c, mini.h: update to keep dynamic code info per-domain.
6845
6846 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
6847
6848         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
6849         (mini_init): Get rid of it from here too.
6850
6851 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
6852
6853         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
6854         implemented OP_RETHROW (patch by Geoff Norton
6855         <gnorton@customerdna.com>).
6856
6857 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
6858
6859         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
6860         between appdomains.  Fixes appdomain-unload on PPC.
6861
6862 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
6863
6864         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
6865         mini-exceptions.c: handle the new wrapper types.
6866         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
6867         token value as a MonoClass* when compiling a wrapper.
6868         mono_jit_create_remoting_trampoline now takes an additional
6869         MonoRemotingTarget parameter.
6870         
6871 2004-11-10  Martin Baulig  <martin@localhost>
6872
6873         * mini.c (mono_method_to_ir): Use `generic_container->context'
6874         rather than creating a new one.
6875
6876 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
6877
6878         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
6879
6880         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
6881
6882 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
6883
6884         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
6885         the experimental aot cache stuff.
6886
6887 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
6888
6889         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
6890         mini-exceptions.c: update to exception clause structure changes.
6891
6892 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
6893
6894         * exceptions-x86.c (throw_exception): Fix warnings.
6895
6896         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
6897         for OP_RETHROW.
6898
6899 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
6900
6901         * exceptions-sparc.c (get_throw_exception): Really fix this.
6902
6903 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
6904
6905         * tramp-*.c: we no longer support icalls without wrappers, so
6906         a bit of code can be removed here
6907
6908 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
6909
6910         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
6911         patch.
6912
6913         * cpu-sparc.md: Add op_rethrow.
6914
6915         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
6916
6917         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
6918
6919         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
6920         * mini-ops.h: Add OP_RETHROW.
6921
6922         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
6923
6924         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
6925
6926 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
6927         
6928         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
6929         Makes the output much easier to read
6930
6931 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
6932
6933         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
6934         prevents another huge leak when compiling with ssa. Secondly, the
6935         performance of doing this rather than freeing the lists is much
6936         better. GList does a lock every time you allocate a list link,
6937         so that it can use a memory pool. So, it is better to just use
6938         a memory pool of our own.
6939         
6940         * ssa.c, linear-scan.c: replace g_list_remove_link with
6941         g_list_delete.  The remove one does not free the GList, so we were
6942         leaking memory. On -O=all --compile-all with corlib, this cut down
6943         3 MB of allocations.
6944
6945 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
6946
6947         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
6948
6949         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
6950
6951         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
6952         into a new function mono_create_jit_trampoline ().
6953
6954 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
6955
6956         * trace.c (get_spec): Allow tracing of classes without a namespace.
6957
6958 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
6959
6960         * mini.c: Fix pointer overwrite in mini_method_compile.
6961
6962 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
6963
6964         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
6965         The darwin ABI needs some special handling for 1 and 2 byte structs
6966         Lets use lbz/lhz instead of lwz everywhere.
6967         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
6968         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
6969         Use stb/sth for the former, and put the latter always on stack instead of in
6970         argument registers.
6971
6972 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
6973
6974         * trace.c (is_filenamechar): Add '_'.
6975
6976 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
6977
6978         * mini-s390.c: Fix prolog length to allow for large trace requirements.
6979
6980         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
6981
6982 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
6983
6984         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
6985         depends on libmonogc. Fixes #68805.
6986
6987 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
6988
6989         * mini.c (mono_jit_free_method): Provide extra information for
6990         this error.  Currently this leaks, but will be turned into a
6991         developer option in the future.
6992
6993 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
6994
6995         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
6996
6997 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
6998
6999         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
7000         boundary. Fixes reading of PATCH_INFO_R4 and R8.
7001         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
7002
7003 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
7004
7005         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
7006         trampolines for AOT code.
7007
7008 2004-10-22    <vargaz@freemail.hu>
7009
7010         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
7011         constructed types. Fixes #68136.
7012
7013 2004-10-21  Martin Baulig  <martin@ximian.com>
7014
7015         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
7016         if it returns true, unwind the stack to the call instruction.
7017
7018 2004-10-21    <vargaz@freemail.hu>
7019
7020         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
7021
7022         * mini.h: Bump AOT version number.
7023
7024         * objects.cs: Add another test for unbox trampolines.
7025
7026         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
7027         valuetype methods.
7028
7029 2004-10-20    <vargaz@freemail.hu>
7030
7031         * driver.c: Add SHARED to the set of optimizations tested.
7032
7033         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
7034
7035         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
7036         used by CEE_NEWARR.
7037
7038         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
7039
7040 2004-10-20  Martin Baulig  <martin@ximian.com>
7041
7042         * mini-exceptions.c (mono_handle_exception): Call
7043         mono_debugger_handle_exception() to tell the debugger about
7044         catch/finally clauses.
7045
7046 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
7047
7048         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
7049
7050         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
7051         #68447.
7052
7053 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
7054
7055         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
7056         methods as their native size, fixed bug #57543, #57545.
7057         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
7058         This saves a temporary register and mullw call down into 1 (minor perf
7059         increase for cases like sum = sum * 5;  This use to translate into:
7060             li r11,5
7061             mullw r28,r28,r11
7062         It now translates to
7063             mulli r28,r28,5
7064
7065 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
7066
7067         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
7068         #68388.
7069
7070 2004-10-11  Martin Baulig  <martin@ximian.com>
7071
7072         * mini.c (mono_method_to_ir): If we're a generic method, get the
7073         MonoGenericContainer from our MonoMethodNormal and create a
7074         MonoGenericContext from it.
7075
7076 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
7077
7078         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
7079
7080         * basic-long.cs: Add test for checked i8->i2 cast.
7081
7082 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7083
7084         * inssel-ppc.brg: added a couple of speedup rules.
7085
7086 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
7087
7088         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
7089         to speed up rebuilds.
7090
7091 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7092
7093         * mini-s390.c: Minor fix to OP_OR_IMM.
7094
7095 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
7096
7097         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
7098         better. Fixes appdomain-unload.exe on sparc.
7099
7100 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
7101
7102         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
7103         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
7104         see bug 67324.
7105
7106 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
7107
7108         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
7109
7110 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
7111
7112         * mini.c: Always generate a field read/write wrapper for members
7113         of the class MarshalByRefObject since the actual instance could
7114         be a CBO.
7115
7116 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
7117
7118         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
7119
7120 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
7121
7122         * driver.c mini.h trace.c: Move the setting of the main assembly into
7123         a separate function called mono_trace_set_assembly () and call it after
7124         actually loading the main assembly. Fixes #66872.
7125
7126 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
7127
7128         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
7129         using the code manager.
7130
7131 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
7132
7133         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
7134
7135 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
7136
7137         * cpu-amd64.md: Fix bug in previous patch.
7138         
7139         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
7140         #66650.
7141
7142 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
7143
7144         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
7145         mini-exceptions.c: updates for changed stack walk interface.
7146
7147 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7148
7149         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
7150
7151 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
7152
7153         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
7154
7155 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
7156
7157         * driver.c (mini_regression_list): Do not call mono_assembly_close 
7158         since assemblies can't be unloaded.
7159         
7160 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
7161
7162         * cpu-amd64.md: Fix more instruction lengths.
7163
7164         * cpu-amd64.md: Fix lengths of some instructions.
7165
7166 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
7167
7168         * inssel.brg: Make the array ldelema check aot friendly.
7169
7170 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
7171
7172         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
7173
7174         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
7175
7176 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
7177
7178         * mini-x86.c: Fix build.
7179
7180         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
7181         mono_type_get_underlying_type () helper function to simplify code.
7182         
7183 2004-09-09  Martin Baulig  <martin@ximian.com>
7184
7185         * mini-amd64.c: Don't access `type->data.klass' directly, call
7186         mono_class_from_mono_type() instead since the type may be a
7187         generic instance.
7188
7189 2004-09-09  Martin Baulig  <martin@ximian.com>
7190
7191         * mini-amd64.c (get_call_info): Fix support for generic instances.
7192         (add_valuetype): Use mono_class_from_mono_type() to get the class
7193         since we can be a generic instance.
7194
7195 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
7196
7197         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
7198
7199 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
7200
7201         * liveness.c: reset spill costs on each scan: bug 62107
7202
7203 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
7204
7205         * exceptions-sparc.c (mono_arch_find_jit_info): remove
7206         unnecessary line that doesn't compile
7207
7208 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
7209
7210         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
7211         trampolines, make them call an error function so people can fix their
7212         code.
7213
7214 2004-09-06  Martin Baulig  <martin@ximian.com>
7215
7216         * mini.c (mono_method_to_ir): When initializing locals, handle a
7217         generic instances like a valuetype if it's a valuetype and like a
7218         class if it's a class.
7219
7220 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
7221
7222         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
7223         stack. Fixes #64674.
7224
7225         * exceptions.cs: Add test for unwinding of call arguments.
7226
7227 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
7228
7229         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
7230         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
7231         set the carry/borrow flag). The sparc and s390 implementations
7232         can now use optimized versions (and simplify the code). ppc bugfixes.
7233
7234 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
7235
7236         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
7237
7238 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
7239
7240         * inssel-amd64.brg: Remove leftover 32 bit rule.
7241
7242         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
7243
7244 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
7245
7246         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
7247         mono_arch_find_jit_info functions into a new function. Fix a memory
7248         leak.
7249
7250         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
7251         refactored code.
7252         
7253 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
7254
7255         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
7256         as well.
7257         
7258         * exceptions.cs: Add array size tests.
7259
7260         * mini.c: Allocate a separate icall wrapper for each arity of 
7261         mono_array_new_va. Fixes #59509.
7262
7263         * exceptions.cs: Add testcase for 64578.
7264
7265         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
7266
7267         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
7268         
7269 2004-09-02  Martin Baulig  <martin@ximian.com>
7270
7271         * mini.c (mono_method_to_ir): When initializing the locals, call
7272         handle_initobj() on the generic instance itself, not its
7273         underlying type.
7274
7275 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
7276
7277         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
7278         MonoJitInfo for dynamic methods.
7279
7280         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
7281
7282         * mini.c: Add support for freeing JIT data for dynamic methods.
7283         
7284 2004-09-01  Martin Baulig  <martin@ximian.com>
7285
7286         * mini-x86.c (is_regsize_var): Added support for generic
7287         instances.
7288         (mono_arch_emit_prolog): Make this compile again, use
7289         `x86_push_imm_template (code)'.
7290
7291 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
7292
7293         * mini-x86.c: make all push_imm instructions that get
7294         patched always emit the long form
7295
7296 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
7297
7298         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
7299         in a per-domain hash.
7300
7301         * mini-amd64.c (merge_argument_class_from_type): Handle generic
7302         types.
7303
7304 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
7305
7306         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
7307         work.
7308         
7309         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
7310         work.
7311
7312         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
7313         Beginnings of SSE2 support.
7314
7315         * exceptions.cs: Add more tests for checked int<->uint casts.
7316
7317 2004-08-28  Martin Baulig  <martin@ximian.com>
7318
7319         * mini-x86.c (mono_arch_instrument_epilog): Added support for
7320         generic instances.
7321
7322         * mini.c
7323         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
7324         Handle generic instances recursively.
7325
7326 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
7327
7328         * iltests.il: test for conv.u8 on a constant
7329
7330 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
7331
7332         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
7333         LCONV_x4 (shrun_32 (membase)).
7334
7335 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
7336
7337         * inssel-x86.brg: c&p rules for push/setret of long
7338
7339 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
7340
7341         * inssel-x86.brg: c&p rules for compare (base, regvar) and
7342         compare (regvar, base)
7343
7344         * inssel-x86.brg: more burg love
7345
7346         * inssel.brg: more cleanup
7347
7348         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
7349
7350 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
7351
7352         * basic-long.cs, basic-calls.cs: new tests for optimization.
7353
7354 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
7355
7356         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
7357         patch.
7358
7359 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
7360
7361         * mini-amd64.c (read_tls_offset_from_method): Add another case.
7362         
7363 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
7364
7365         * inssel.brg (mini_emit_memcpy): use 
7366         NO_UNALIGNED_ACCESS to disable memcpy optimization
7367
7368 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
7369
7370         * mini-amd64.c: Handle generic types in various places.
7371
7372         * mini.c (mono_method_to_ir): Handle generic types in init locals.
7373
7374 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
7375
7376         * mini.c (handle_box): Fix warning.
7377
7378         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
7379
7380         * mini-amd64.h: Enable the emit_state optimization.
7381
7382         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
7383
7384         * mini-amd64.c: Add some new 64 bit peephole opts.
7385
7386         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
7387
7388         * cpu-amd64.md: sreg1 of div instructions must be %rax.
7389
7390         * mini-amd64.c: Register allocator fixes.
7391
7392         * mini.c: Add an optimization to emit_state to avoid allocation of new
7393         registers on some platforms.
7394
7395 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
7396
7397         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
7398
7399         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
7400         allocation. Fixes #63085.
7401
7402         * basic-long.cs: Add new regression test.
7403
7404         * mini-amd64.c: Register allocator improvements.
7405
7406 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
7407
7408         * mini-amd64.c (read_tls_offset_from_method): Add another code
7409         sequence.
7410
7411         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
7412         instruction sequence for nullifying class init trampolines.
7413
7414         * objects.cs: Add new regalloc test.
7415
7416         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
7417
7418 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
7419
7420         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
7421         
7422         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
7423         arguments.
7424
7425         * driver.c: Fix profiling after TLS changes.
7426         
7427         * driver.c (mono_main): Set mono_stats.enabled if needed.
7428
7429         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
7430         CEE_BOX.
7431
7432 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
7433
7434         * mini-x86.c: use a 1 op rather than a 2 op tls access
7435         instruction -> faster.
7436
7437 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
7438
7439         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
7440         x86 backend.
7441
7442 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
7443
7444         * exceptions-sparc.c (throw_exception): fix typo
7445
7446 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
7447
7448         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
7449         set tree->dreg correctly with tls. Allow any
7450         register to be used.
7451
7452         * mini-x86.c (read_tls_offset_from_method): add new code
7453         generation pattern seen with GCC.
7454
7455
7456 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
7457
7458         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
7459         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
7460         exceptions-sparc.c: fix some performance issues in exception
7461         handling and setting of the stack trace for exceptions that were
7462         already thrown.
7463
7464 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
7465
7466         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
7467         x86 backend.
7468         
7469         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
7470         registers.
7471
7472 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
7473
7474         This patch inlines tls access, when possible.
7475         
7476         * mini.h: new arch functions for TLS intrinsics.
7477         All platforms updated with a stub.
7478
7479         * mini.c: use the new intrinsics
7480
7481         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
7482         arch specific intrinsic for tls variables
7483
7484 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
7485
7486         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
7487         under windows.
7488
7489 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
7490
7491         * mini.c: thread local allocation
7492
7493 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
7494
7495         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
7496
7497         * Makefile.am: Link against the static version of libmonogc.
7498         
7499         * Makefile.am: Link the static versions of the convenience libraries
7500         into the mono executable.
7501
7502         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
7503
7504 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
7505
7506         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
7507         on integer overflow.
7508
7509         * mini-amd64.c: Reorganize function call code.
7510
7511         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
7512
7513 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
7514
7515         * inssel-x86.brg: use xor eax,eax.
7516         
7517         * basic.cs: new tests
7518
7519 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
7520
7521         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
7522         in exception throwing code.
7523         
7524 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
7525
7526         * inssel-x86.brg: use xor esi,esi.
7527
7528 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
7529
7530         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
7531         can trace methods compiled during mini_init () too.
7532
7533         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
7534         CEE_CONV_U4.
7535
7536 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
7537
7538         * Makefile.am: static link on x86 (r=zoltan)
7539
7540 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
7541
7542         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
7543         code since it causes some programs to fail.
7544
7545 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
7546
7547         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
7548
7549 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
7550
7551         * mini.c: ovfops_op_map - add STACK_OBJ case for
7552         CONV_I 
7553         * basic.cs: add test_0_pin_string as test
7554         case for above.
7555
7556 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
7557
7558         * Makefile.am: build C# if srcdir != builddir
7559
7560 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
7561
7562         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
7563         fall-through blocks.
7564
7565 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
7566
7567         * driver.c: enable loop by default again and include abcrem in -O=all.
7568
7569 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
7570
7571         * iltests.il: Add some localloc tests.
7572
7573         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
7574
7575         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
7576         Fixes #62574.
7577
7578         * inssel-amd64.brg: Add some optimizations.
7579
7580         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
7581         for gcc-3.4.
7582
7583         * Makefile.am: Statically link mono against libmono on AMD64.
7584         
7585         * mini-amd64.c inssel-amd64.brg: Optimizations.
7586
7587 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
7588
7589         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
7590
7591         * tramp-amd64.c: Patch calling code in trampolines.
7592
7593 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
7594
7595         * mini-amd64.c: pinvoke struct passing fixes.
7596
7597 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
7598
7599         * mini-sparc.c: redo change, make mono_arch_cpu_init call
7600         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
7601
7602 2004-08-05  Duncan Mak  <duncan@ximian.com>
7603
7604         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
7605         CEE_LDELEM_ANY.
7606
7607 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
7608
7609         * mini-amd64.c (emit_move_return_value): Move return value for normal
7610         calls too.
7611
7612 2004-08-05  Martin Baulig  <martin@ximian.com>
7613
7614         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
7615         `type->type'; just modify `type' itself when dealing with enums
7616         and generic instances.
7617         (check_call_signature): Make `simple_type' a `MonoType *'.
7618
7619 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
7620
7621         * mini.c: Use OP_PADD to add offsets to addresses.
7622
7623         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
7624
7625 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
7626
7627         * mini-sparc.c (mono_arch_emit_epilog): fix check
7628         for folding last op into restore instruction
7629
7630 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
7631
7632         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
7633         helper methods using the code manager.
7634         
7635         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
7636
7637         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
7638
7639 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7640         
7641         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
7642           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
7643
7644         * mini-s390.c: fix tail processing
7645
7646 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
7647
7648         * mini-ppc.c: mul.ovf.un exception name fix.
7649
7650 2004-08-03  Martin Baulig  <martin@ximian.com>
7651
7652         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
7653         instances; before jumping to `handle_enum', also modify `ptype'.
7654
7655 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
7656
7657         * cpu-sparc.md: fcall maximal length too small.
7658
7659 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
7660
7661         * mini-amd64.c mini.h: Add initial support for passing/returning 
7662         structures to/from pinvoked methods.
7663
7664 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
7665
7666         * mini-ppc.c: reg allocator fix.
7667
7668 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
7669
7670         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
7671
7672         * inssel.brg: Optimize memset on 64 bit machines.
7673
7674         * mini-amd64.c: Fix some vararg cases.
7675
7676 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7677
7678         * mini-s390.c: Corrected macro in emit_float_to_int
7679
7680         * s390-abi.cs: Tests to exercise the s390 ABI
7681
7682 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
7683
7684         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
7685         caller saved regs.
7686
7687         * basic.cs: Add a test for add.ovf.un.
7688
7689 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
7690
7691         * mini-sparc.c: add case for OP_IDIV_UN
7692
7693 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
7694
7695         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
7696         
7697         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
7698
7699 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
7700
7701         * basic.cs: regression tests.
7702
7703         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
7704         regressions.
7705
7706 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
7707
7708         * basic.cs: Add a new test.
7709
7710         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
7711         and AOT. Various fixes and optimizations.
7712
7713         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
7714
7715 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
7716
7717         * mini-ppc.c: make sure temp regs are not used for global reg
7718         allocation.
7719
7720 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
7721
7722         * cpu-sparc.md: conv_i8 fix for 64bits
7723
7724         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
7725
7726 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
7727         
7728         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
7729         add opcode for cmp BYTE PTR [eax], imm.
7730
7731         * inssel.brg: Make memcpy and memset takes bases.
7732
7733 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
7734
7735         * *-amd64.*: More AMD64 work.
7736         
7737 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
7738
7739         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
7740         add a compare-not-equal opcode.
7741         
7742 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
7743
7744         * mini.c: Use mono_init_from_assembly instead of mono_init.
7745         
7746 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
7747
7748         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
7749
7750         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
7751
7752         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
7753
7754         * inssel.brg: 64 bit fixes.
7755
7756         * mini.h (MonoCallInst): Add some AMD64 specific data.
7757
7758         * mini.h: Add some OP_P opcodes.
7759
7760 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
7761
7762         * basic.cs: tests for 61797 and 61740
7763
7764 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
7765
7766         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
7767         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
7768
7769 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
7770
7771         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
7772
7773         * *-amd64*.*: Ongoing AMD64 work.
7774
7775 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
7776
7777         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
7778
7779         * *-amd64*: Ongoing AMD64 work.
7780
7781         * mini-arch.h: Add AMD64 support.
7782
7783         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
7784
7785         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
7786
7787         * mini-ops.h: Add new opcodes.
7788
7789         * Makefile.am: Add AMD64 support.
7790
7791         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
7792         rules into the inssel-long*.brg files.
7793
7794         * *-amd64.*: Add beginnings of AMD64 backend.
7795
7796 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
7797
7798         * mini.c (print_dfn): commenting out the code that prints
7799         the cil. With -O=deadce, this makes -v -v crash.
7800         
7801         * cpu-pentium.md: make checkthis have a length of 2
7802
7803 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
7804
7805         * mini-sparc.h: fix implementations of __builtin
7806         functions for Sun compiler for V9.
7807
7808 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
7809
7810         * mini.c: use the new stelem.ref wrapper
7811         * exceptions.cs, arrays.cs: new stelem.ref tests
7812
7813 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
7814
7815         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
7816         new XSP should work with these changes).
7817
7818 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
7819         
7820         * inssel-{long32,x86,}.brg: trivial optimizations.
7821         
7822 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
7823
7824         * mini.c: load value when emitting box operation in
7825         constrained calls.
7826
7827 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
7828
7829         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
7830         is one byte shorter than cmp DWORD PTR [eax], 0.
7831
7832 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
7833
7834         * inssel-ppc.brg: arguments on the stack are always
7835         relative to the stack pointer (spotted by Neale Ferguson).
7836
7837 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7838
7839         * exceptions-x86.c: delay appending the method name to the trace until
7840         after mono_jit_info_table_find is called, as this gets the real
7841         MonoMethod.
7842
7843 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
7844
7845         * aot.c: register roots
7846
7847 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
7848
7849         * aot.c : I could just use PLATFORM_WIN32 flag.
7850
7851 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
7852
7853         * aot.c : Reverting the previous fix. This time it broke linux build.
7854
7855 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
7856
7857         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
7858
7859 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
7860
7861         * mini.c (handle_stack_args): Remove some more debugging code.
7862         
7863         * mini.c (handle_stack_args): Remove debug output left in by mistake.
7864
7865         * driver.c mini.h aot.c: Allow additional options to be specified with
7866         --aot and pass them to mono_compile_assembly.
7867
7868         * aot.c: Add experimental code to AOT compile all loaded assemblies
7869         on demand and save the code into a cache in the filesystem.
7870
7871         * aot.c: Add support for more wrapper methods.
7872         
7873         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
7874         58863.
7875
7876         * cpu-*.md: Remove removed opcodes.
7877
7878         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
7879         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
7880         related icalls to marshal.c.
7881
7882 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
7883
7884         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
7885
7886         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
7887
7888         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
7889
7890 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
7891         * liveness.c: If liveness is recomputated we need to reset the information
7892         for each variable. This way, if the liveness range has been narrowed
7893         by optimizations that happened after the last computation, we can return
7894         a smaller range.
7895         
7896         For example, if you have
7897         
7898         {
7899                 int i = 0;
7900                 
7901                 // Tons of code that does not affect i
7902                 
7903                 i = foo ();
7904                 ...
7905         }
7906         
7907         i = 0 is dead code and will be removed by SSA. However, when
7908         linear scan gets to the code, i will still appear to be live
7909         throughout the entire block. This prevents good register allocation.
7910
7911 2004-07-06  Martin Baulig  <martin@ximian.com>
7912
7913         * debug-mini.c (mono_debug_init_method): Allow
7914         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
7915         (mono_debug_add_icall_wrapper): New method.
7916
7917         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
7918
7919 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
7920
7921         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
7922         optimization.
7923
7924 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
7925
7926         * aot.c (mono_aot_load_method): Fix loading of debug info.
7927
7928 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
7929
7930         * aot.c: Add logging support.
7931
7932 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
7933
7934         * mini.h: Add prototype for mono_print_method_from_ip.
7935
7936         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
7937
7938         * inssel.brg: 64 bit fixes.
7939
7940         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
7941         inssel-long32.brg.
7942
7943         * Makefile.am: Add SPARC64 support.
7944
7945 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
7946
7947         * aot.c: Fix alignment problems on 32 bit platforms.
7948
7949 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
7950
7951         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
7952         SPARC64.
7953
7954         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
7955         problems.
7956
7957         * mini.h: Bump AOT file version. Some 64 bit fixes.
7958
7959 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
7960
7961         * inssel-sparc.brg: Add new rule to avoid register moves.
7962
7963         * inssel.brg: Add ldind_to_load_membase helper function.
7964
7965 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
7966
7967         * mini.c: OffsetToStringData intrinsic.
7968         
7969 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
7970
7971         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
7972
7973         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
7974         regression tests.
7975
7976         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
7977 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
7978
7979         * mini.c: reinstated mono_compile_get_interface_var()
7980         on x86, too, since the change breaks the Gtk# build there as well.
7981
7982 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7983
7984         * driver.c: remove loop from the default optimizations: it seems to
7985         interact badly with some of the other options (see bug #60613).
7986
7987 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
7988
7989         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
7990         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
7991
7992 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
7993
7994         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
7995         vararg-using methods.
7996
7997 2004-06-21  Martin Baulig  <martin@ximian.com>
7998
7999         * mini/mini-exceptions.c
8000         (mono_handle_exception): Added `gpointer original_ip' argument.
8001         After calling mono_unhandled_exception(), call
8002         mono_debugger_unhandled_exception() and if that returns true,
8003         restore the context and return.
8004
8005 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
8006
8007         * mini-ppc.c: prefer the use of relative branches so
8008         they won't need to be patched in aot code (patch from Patrick Beard).
8009
8010 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
8011
8012         * aot.c: patch from Patrick Beard to make the output assembly
8013         more correct for the MacOSX assembler. Small tweak to
8014         generate sane images on Linux/PPC, too.
8015
8016 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8017
8018         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
8019         case until bug #59509 is fixed (shows up in #60332).
8020
8021 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
8022
8023         * mini.c: make sure the needed wrappers are compiled, too, with
8024         precomp.
8025
8026 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
8027
8028         * driver.c: remove NPTL reference in --version output.
8029
8030 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8031
8032         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
8033         generate valid assembly for the Mach-O assembler.
8034
8035 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
8036
8037         * driver.c: don't include abcrem in the all optimization specifier
8038         since it slows down jit compilation too much for now.
8039
8040 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
8041
8042         * mini.c: use BIGMUL only if both operands have the same signage.
8043         * iltests.il: Test for bug 60056. (errors related to signage in
8044         BIGMUL).
8045
8046         r=lupus.
8047
8048 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
8049
8050         * mini.c, aot.c: memory leak fixes.
8051
8052 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
8053
8054         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
8055
8056 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
8057
8058         * Makefile.am: remove the -static hack completely, it links in
8059         statically glib as well.
8060
8061 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
8062
8063         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
8064         * exceptions.cs: make it compile with new mcs/csc.
8065
8066 2004-06-03 Massimiliano Mantione <massi@ximian.com>
8067         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
8068         and added relevant test case.
8069
8070 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
8071
8072         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
8073         regressions in gtk-sharp.
8074
8075 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
8076
8077         * exceptions.cs: New regression tests.
8078
8079         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
8080
8081 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
8082
8083         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
8084
8085 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
8086
8087         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
8088
8089         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
8090
8091 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
8092
8093         * mini.c (mono_jit_runtime_invoke): Init class in this
8094         method instead of trusting mono_jit_compile_method to
8095         do the work (because wrappers can be in object class)
8096
8097 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
8098
8099         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
8100
8101         * basic-long.cs: New regression test.
8102
8103 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
8104
8105         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
8106         and div/rem checks.
8107
8108 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
8109
8110         * Makefile.am: fix miguel's change to build mono statically against
8111         libmono (track build dependencies).
8112
8113 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
8114
8115         * cfold.c: Some glib versions do not have G_MININT32.
8116
8117 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
8118
8119         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
8120         with precision of tan, atan, sin and cos, and implemented related
8121         regressions tests (fixes bug 54467, but one new problem appeared and
8122         is not fixed yet).
8123
8124 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
8125
8126         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
8127
8128         * exceptions.cs: Add test for constant folding && division by zero.
8129
8130         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
8131         since driver.c is in libmono too, so the optimization was useless.
8132
8133         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
8134         variable to driver.c so the compiler can emit more efficient code to
8135         access them.
8136
8137 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8138
8139         * Makefile.am: don't distribute generated inssel.[ch] files.
8140
8141 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
8142
8143         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
8144         into the default appdomain. Fixes #58707.
8145
8146         * jit-icalls.c: Remove the broken approximation for truncl, doing
8147         no conversion is better.
8148
8149         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
8150         Fixes #58863.
8151
8152 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
8153
8154         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
8155         of the mcrxr instruction which is not available on some processors
8156         even if it's documented to be. Implement add and sub overflow correctly
8157         (still not complete for long unsigned). Speed up icalls a bit.
8158
8159 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
8160
8161         * mini.c (mono_jit_compile_method_with_opt): Make sure that
8162         we run .cctor in the current domain instead of target_domain.
8163         
8164         Fixes bug #58558, .cctor not being called in -O=shared.
8165
8166 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
8167
8168         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
8169
8170 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
8171
8172         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
8173         which can be done with an imm8, do it that way.
8174         (mono_arch_output_basic_block): ditto for a jmp
8175         (mono_arch_emit_prolog): Computate maximum offset of a label.
8176
8177 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
8178
8179         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
8180         now tries to allocate prefered physical reg's for virtual
8181         regs. This reduces the number of emited spills/loads with
8182         20-30% on our core assemblies.
8183
8184 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
8185
8186         * jit-icalls.c: truncl() is not needed and trunc() is
8187         the correct thing to do anyway (bug #58287).
8188
8189 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
8190
8191         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
8192         if available.
8193
8194 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
8195
8196         * driver.c: enable loop optimizations by default.
8197
8198 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
8199
8200         * mini-x86.c: fix calc of max loop size when aligning loops start.
8201
8202 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
8203
8204         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
8205         the stack.
8206
8207 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
8208
8209         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
8210         should set carry.
8211
8212         * basic-long.cs: Add tests for add/subtract of immediates with carry.
8213
8214         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
8215         
8216         * mini.c (inline_method): Allways inline some wrappers even if the cost
8217         is too large. Fixes #58785.
8218
8219         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
8220         
8221 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
8222
8223         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
8224         (crichton@gimp.org). Beginning of support for sparc/linux.
8225
8226         * mini-sparc.c: Optimize retrieval of LMF address.
8227
8228 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
8229
8230         * exceptions-ppc.c:  handle alloca in methods with clauses.
8231
8232 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
8233
8234         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
8235
8236 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
8237
8238         * mini.c: Delegate most of the abort signal work to 
8239           mono_thread_request_interruption, which also handles Stop and Suspend
8240           states.
8241
8242 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
8243
8244         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
8245         supports the save/restore lmf opcodes.
8246
8247 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
8248
8249         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
8250         by gcc-3.4 as well.
8251
8252         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
8253
8254 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
8255
8256         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
8257         methods which contain array accesses.
8258
8259         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
8260         boundaries. Fixes #58537.
8261
8262         * iltests.il: Add regression test for #58537.
8263
8264 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
8265
8266         * mini-x86.c (mono_arch_local_regalloc): Last part of
8267         fix for bug #58633 (releasing register to early).
8268
8269 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
8270
8271         * basic-long.cs: Add new regression test.
8272
8273 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
8274
8275         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
8276         register too early on the chain.
8277
8278 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
8279
8280         * mini.c (create_helper_signature): Use a helper function to reduce
8281         the code which needs to be written. Also set the calling convention of
8282         icalls on windows. Fixes #57840.
8283
8284 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
8285
8286         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
8287         exceptions-ppc.c: added helper function to get the instruction address
8288         from a signal handler context.
8289
8290 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
8291
8292         * helpers.c: use g_get_tmp_dir. Invokes happyness 
8293         from gonzalo.
8294
8295 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
8296
8297         * helpers.c: Add new env variable to pass args to objdump.
8298         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
8299
8300 2004-05-17  Radek Doulik  <rodo@ximian.com>
8301
8302         * Makefile.am (common_sources): added abcremoval.h so it get
8303         disted and daily mono packages on go-mono.com will build again
8304
8305 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
8306
8307         * abcremoval.c: Fixed coding style, added copyright header.
8308
8309         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
8310
8311         * mini.h: Added prototype for abc removal main function.
8312
8313         * build_relations_propagation_table.pl: Added copyright header.
8314
8315 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
8316
8317         * basic-long.cs: reg test for complex ceq_long bug.
8318
8319 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
8320
8321         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
8322         reg in long and clob case (bug #58343). Fixed/added comments.
8323
8324 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
8325
8326         * mini.c (mono_jit_runtime_invoke): Follow new convention
8327         of calling the invoke method with an function pointer.
8328
8329 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
8330
8331         * ChangeLog: Fix author of memory leak patch.
8332
8333 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
8334
8335         * Makefile.am: fix make dist as well...
8336
8337
8338 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
8339
8340         * cfold.c: Made so that conversions from pointer to int4 are no-ops
8341         on archs where pointers are 4 bytes long.
8342
8343         * Makefile.am: Added abcremoval.c source file.
8344
8345         * abcremoval.c: Added abcremoval.c.
8346
8347         * abcremoval.h: Added abcremoval.h.
8348
8349         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
8350
8351         * inssel.brg: Enabled bounds check removal.
8352
8353         * mini.c: Added support for abcrem optimization.
8354
8355         * mini.h: Added abcrem optimization label.
8356
8357         * driver.c: Added support for abcrem optimization.
8358
8359         * propagated_relations_table.def: Added propagated_relations_table.def.
8360
8361 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
8362
8363         * mini.c, cfold.c: fix style.
8364
8365 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
8366
8367         * mini.c: handle issue with the low-level implementation of
8368         some long opcodes (bug #54209).
8369
8370 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
8371
8372         * basic.cs: test for my new cmov stuff.
8373
8374 2004-05-13      Patrik Torstensson
8375
8376         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
8377         opt and added peephole documentation.
8378
8379 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
8380
8381         * tramp-ppc.c: rewrote the generic trampoline code.
8382
8383 2004-05-11      Patrik Torstensson
8384
8385         * mini-x86.c: optimize long shl/shr asm code (one less branch)
8386
8387 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
8388
8389         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
8390
8391         * mini.h mini.c dominators.c: Applied patch from Derek Woo
8392         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
8393
8394         * mini.c: Add new icalls for AsAny marshalling.
8395
8396 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
8397
8398         * tramp-ppc.c, mini-ppc.c: more cleanups.
8399
8400 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8401
8402         * mini.c: no warnings.
8403
8404 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8405
8406         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
8407
8408 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
8409
8410         * mini.c: In the thread abort signal handler, if the thread is in the
8411         process of being stoped, don't throw the Abort exception, just stop the
8412         thread.
8413
8414 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
8415
8416         * tramp-ppc.c: removed old code.
8417
8418 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8419
8420         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
8421         do some simple speed optimizations on ppc.
8422
8423 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
8424
8425         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
8426         and large offsets in load/store.
8427
8428 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
8429
8430         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
8431         it causes regressions.
8432
8433 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
8434
8435         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
8436         support.
8437
8438 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
8439
8440         * jit-icalls.c: remove warnings.
8441         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
8442         speedups for unsafe code.
8443
8444 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
8445
8446         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
8447
8448 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
8449
8450         * basic-calls.cs: Add new regression test.
8451
8452         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
8453         more portable.
8454
8455         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
8456
8457         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
8458         is no longer used.
8459
8460 2004-05-06      Patrik Torstensson
8461
8462         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
8463         long reg allocation in any reg (not only eax:edx) and implemented 
8464         long shl/shr ops in asm instead of helpers.
8465
8466 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
8467
8468         * mini-sparc.h: Fix warnings.
8469
8470         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
8471         stack.
8472
8473         * mini-exceptions.c (mono_handle_exception): Call the filter in a
8474         separate statement for clarity.
8475
8476         * mini-sparc.c: Update status.
8477
8478 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
8479
8480         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
8481         here.
8482
8483 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
8484
8485         * inssel-ppc.brg: another small pre-release workaround:
8486         we don't do overflow detection for long_sub_un.
8487
8488 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
8489
8490         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
8491         (also works around a weird ppc bug: 57957).
8492
8493 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
8494
8495         * tramp-ppc.c: trampoline fixes.
8496
8497 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
8498
8499         * mini-ppc.c: fixed typos.
8500
8501 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
8502
8503         * mini-ppc.c, exceptions-ppc.c: more code saves registers
8504         at the top of the stack. Fixed typos. Use a frame registers
8505         for all the methods with exception clauses.
8506
8507 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
8508
8509         * exceptions-ppc.c: restore fp registers.
8510
8511 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
8512
8513         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
8514         order from the stack top (moved the stack room to save the
8515         return value for trace after the param area). Fixed corruption
8516         in restoring registers on unwind.
8517
8518 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
8519
8520         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
8521
8522 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
8523
8524         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
8525         and prolog/epilog for methods that use it. Allow
8526         enough param area room for varargs methods. Fix miguel's
8527         breakage in exception handling.
8528
8529 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
8530
8531         * Makefile.am: run genmdesc only on current arch.
8532
8533 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8534
8535         * exceptions-x86.c:
8536         * mini-x86.h: fix the build on windows.
8537
8538 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
8539
8540         * 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.
8541
8542         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
8543
8544         * mini-exceptions.c: New file.
8545         
8546         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
8547         Move some parts of the x86 exception handling code to an 
8548         arch-independent file so it can be shared with other ports.
8549
8550 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
8551
8552         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
8553
8554 2004-04-26  David Waite  <mass@akuma.org>
8555
8556         * driver.c: remove comma from end of enumeration declaration
8557
8558 2004-04-26  Jackson Harper  <jackson@ximian.com>
8559
8560         * driver.c: parse config file before loading first assembly. This
8561         allows the user gac to be enabled/disabled. 
8562         
8563 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
8564
8565         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
8566         simpler mechanism: we do not care what is encoded initially
8567         (branch absolute or relative), we care about the code and its
8568         target.  I kept the old code for reference for now.
8569
8570         The new code tries first to determine if the jump is anywhere in
8571         the -/+32 absolute meg range, if it succeeds, it encodes using the
8572         absolute branch;  If not, it tried to find something in the
8573         relative range, if not, it uses the handle_thunk code. 
8574
8575 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
8576
8577         * exceptions-ppc.c: use the correct ip register on macosx.
8578
8579 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
8580
8581         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
8582
8583 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
8584
8585         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
8586         Raise exception on integer divide by zero by hand since the hw
8587         doesn't support it. Handle NaNs in FP compares.
8588
8589 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
8590
8591         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
8592         code reducing duplication between the platforms and enabled
8593         signal exception handling (on linux for now).
8594
8595 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
8596
8597         * exceptions-ppc.c: more macosx support.
8598
8599 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8600
8601         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
8602
8603 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
8604
8605         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
8606
8607 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
8608
8609         * iltests.il: more tests.
8610
8611 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
8612
8613         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
8614         vars as well.
8615
8616 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
8617
8618         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
8619
8620 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
8621
8622         * liveness.c: Mark variables as volatile in all basic blocks reachable
8623         from exception clauses.
8624
8625 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
8626
8627         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
8628         inlining.
8629
8630 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
8631
8632         * iltests.il, basic.cs: more tests for regalloc.
8633
8634 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
8635
8636         * iltests.il: Some tests for register allocation modifications
8637         I have locally.
8638
8639 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
8640
8641         * exceptions.cs: Add regression test for bug #56782.
8642
8643         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
8644         original stack trace if an exception is rethrown. Fixes #56782. Oh,
8645         the beauty of fixing the same thing in 5 different files...
8646
8647 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
8648
8649         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
8650         methods.
8651
8652 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
8653
8654         * mini.c: Add support for STRWLPARRAY marshalling convention.
8655
8656 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
8657
8658         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
8659         to init the context to setup the regs pointer).
8660
8661 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
8662
8663         * exceptions-ppc.c: more exceptions work.
8664
8665 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
8666
8667         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
8668         not allowed.
8669
8670 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
8671
8672         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
8673         can use the memory directly.
8674
8675         * cpu-pentium.md: Update documentation from a post from Zoltan. 
8676
8677         add x86_add_membase, x86_sub_membase, x86_mul_membase
8678
8679 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
8680
8681         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
8682         GENERAL_REGS they were also hardcoded for all PPC ports.
8683
8684         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
8685
8686         Remove hard-coded limit for floating point registers, use
8687         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
8688
8689         Notice that in MacOS X calling conventions you can fit a lot more
8690         floating point values in registers, so I should update the PInvoke
8691         test to excercise the passing of floating point values on the
8692         stack (currently broken).
8693         
8694 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
8695
8696         * tramp-ppc.c (create_trampoline_code): Added
8697         JUMP_TRAMPOLINE_SIZE. 
8698         (ppc_magic_trampoline): Follow the pattern from
8699         x86_magic_trampoline: if code is set to zero, return. 
8700         (create_trampoline_code): Always pass MonoMethod to the jump
8701         trampoline, before it was passing a null.
8702         (mono_arch_create_jump_trampoline): Implement the jump stub, could
8703         share the code with mono_arch_create_jit_trampoline. 
8704
8705         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
8706         implemented.
8707         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
8708         implemented.  
8709
8710         * cpu-g4.md: Added length for jmp instruction, the worst case
8711         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
8712         for save_lmf).
8713
8714 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
8715
8716         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
8717
8718 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
8719
8720         * mini.c: Only set bblock->real_offset when adding a new bblock, and
8721         before each IL instruction.
8722
8723         * mini.c (CEE_BOX): Fix warnings.
8724
8725 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8726
8727         * mini.c: removed a few unused vars and extra whitespace.
8728
8729 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
8730
8731         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
8732         checks.
8733         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
8734         index.
8735         (OP_GETCHR): use the above
8736         (CEE_LDELEMA): use the above.
8737
8738         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
8739         version of the generic impl.
8740         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
8741         (CEE_LDELEMA): use the above.
8742
8743 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
8744
8745         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
8746         Fixes #56317.
8747
8748         * iltests.il: Added new regression test for #56317.
8749
8750 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
8751
8752         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
8753         under NetBSD. Fixes #56450.
8754
8755         * liveness.c (update_gen_kill_set): Fix previous patch.
8756
8757 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8758
8759         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
8760
8761 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
8762
8763         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
8764         ldsfld and ldsflda.
8765
8766         * inssel-sparc.brg: Add more optimizations.
8767
8768         * mini-sparc.c: Replace multiply/divide with shifts if possible.
8769
8770 2004-04-01  Martin Baulig  <martin@ximian.com>
8771
8772         * mini.c (handle_box): New static function; moved the
8773         implementation of CEE_BOX here.
8774         (mono_method_to_ir): Added `constrained_call' variable.
8775         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
8776         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
8777         mono_method_get_constrained() to get the method.
8778
8779 2004-04-01  Martin Baulig  <martin@ximian.com>
8780
8781         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
8782         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
8783         (mono_method_to_ir): We don't need these macros anymore since
8784         mono_class_get_full() already takes care of it. 
8785
8786 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8787
8788         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
8789         use @function (as doesn't accept #function here) and check the return
8790         value of system and stop if fails.
8791
8792 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8793
8794         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
8795
8796 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
8797
8798         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
8799
8800         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
8801
8802         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
8803         #56223.
8804
8805         * basic-long.cs: Add test for negation of Int64.MinValue.
8806
8807 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
8808
8809         * mini-sparc.c: Update status.
8810
8811         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
8812
8813         * exceptions-sparc.c: Fix return value in filters.
8814
8815         * inssel-sparc.brg: Fix register allocation in some rules.
8816
8817 2004-03-28  Martin Baulig  <martin@ximian.com>
8818
8819         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
8820         if neccessary.  
8821
8822 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
8823
8824         * mini-x86.c (mono_arch_patch_code): Fix warnings.
8825         
8826         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
8827         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
8828         remove unused conv_u4 opcode.
8829
8830         * mini-x86.c: Remove valgrind workaround since it slows down things
8831         even when mono is not run under valgrind.
8832
8833 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
8834
8835         * mini-sparc.c: Update status.
8836
8837         * inssel-sparc.brg: Add some optimizations.
8838
8839         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
8840         future delay slot filling. Add support for varargs, tail calls and JMP.
8841
8842         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
8843         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
8844
8845         * inssel.brg: Fix register allocation in OP_ARGLIST.
8846
8847         * inssel.brg: Fix warnings.
8848
8849 2004-03-25  Martin Baulig  <martin@ximian.com>
8850
8851         * mini.c (inflate_generic_field): Removed.
8852         (mini_get_method): Removed, use mono_get_method_full(),
8853         (mini_get_class): Removed, use mono_class_get_full().
8854         (mono_method_to_ir): Pass our generic context to
8855         mono_field_from_token().        
8856
8857 2004-03-25  Martin Baulig  <martin@ximian.com>
8858
8859         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
8860         of a `MonoMethod *'.
8861         (mini_get_method): Take a `MonoGenericContext *' instead
8862         of a `MonoMethod *'.
8863         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
8864         a new local variable called `generic_context' which holds the
8865         current `MonoGenericContext *'; use it to lookup things.
8866
8867 2004-03-24  Martin Baulig  <martin@ximian.com>
8868
8869         * mini.c (mini_get_class): New static method; if we're inside a
8870         generic instance, inflate the class if neccessary.
8871         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
8872
8873 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
8874
8875         * iltests.il: New regression test for #55976.
8876
8877         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
8878         #55976.
8879
8880 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
8881
8882         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
8883         output.
8884
8885 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
8886
8887         * liveness.c: Consider SSA stores as well as loads when making vars
8888         volatile.
8889
8890         * exceptions.cs: New regression tests for register allocation.
8891         
8892 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
8893
8894         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
8895         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
8896           domain lock only to protect puntual access to data structures.
8897           Added access lock for sighash, jit_icall_hash_name, 
8898           jit_icall_hash_addr and domain->code_mp.
8899
8900 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
8901
8902         * driver.c: Print SIGSEGV handling method.
8903
8904         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
8905
8906         * mini.c (setup_jit_tls_data): Handle case when this is called
8907         multiple times for a thread.
8908
8909         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
8910         is different from fbxx_un. Fixes #54303. Also use constants instead of
8911         magic numbers in a lot of places.
8912
8913 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
8914
8915         * exceptions.cs: Fix cctor test when --regression is used.
8916
8917 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
8918
8919         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
8920         for Linux/ppc.
8921
8922 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
8923
8924         * inssel-ppc.brg: fixed register assignments for some rules.
8925
8926 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
8927
8928         * exceptions.cs: Add test for exceptions in static constructors.
8929
8930         * mini.c (mono_jit_compile_method_with_out): Move the calling of
8931         static constructors outside the domain lock. Fixes #55720.
8932
8933 2004-03-17  Martin Baulig  <martin@ximian.com>
8934
8935         * mini.c (get_generic_field_inst): Removed, this'll never happen.
8936         (inflate_generic_field): Take the `MonoMethod *' instead of the
8937         `MonoClass *' and added support for generic method.
8938         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
8939         have a `field->parent->gen_params', only inflate the field if it's
8940         an open constructed type.
8941
8942 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
8943
8944         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
8945         exception object instead of the preconstructed ones.
8946
8947 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8948
8949         * mini.c: reverted changed to sigsegv_signal_handler commited
8950         accidentally in the previous patch.
8951
8952 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8953
8954         * mini.c:
8955         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
8956         running --aot with an old assembly.
8957
8958 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
8959
8960         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
8961         point values.
8962
8963         * mini-sparc.c: Add support for v9 branches with prediction.
8964
8965 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
8966
8967         * mini.c (mini_init): #warning is GNUC only
8968
8969         * mini-sparc.h: implement __builtin_frame_address
8970         and __builtin_return_address for Sun C compiler
8971
8972 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
8973
8974         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
8975
8976 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
8977
8978         * basic-calls.cs: Add test for unaligned byref long argument passing.
8979
8980         * mini-ops.h: Add sparcv9 compare and branch instructions.
8981
8982         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
8983         v9 instructions if we have a v9 cpu.
8984
8985         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
8986         registers for global allocation.
8987
8988         * exceptions-sparc.c: Fixes.
8989         
8990 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
8991
8992         * liveness.c (mono_analyze_liveness): Optimized version.
8993
8994         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
8995
8996         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
8997         sparc work.
8998
8999         * basic-float.cs basic-calls.cs: New regression tests.
9000
9001 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
9002
9003         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
9004         sigaltstack implementation.
9005
9006         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
9007         
9008         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
9009         stuff if SIGSEGV_ON_ALTSTACK is not defined.
9010
9011 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
9012
9013         * mini.c: Fix warnings.
9014         
9015         * mini.c (mono_resolve_patch_target): New function which contains the
9016         arch independent part of the patching process.
9017
9018         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
9019         patching code to a separate function.
9020
9021 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
9022
9023         * mini.c (add_signal_handler): ifdef out on Windows
9024
9025 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
9026
9027         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
9028         cpu-sparc.md: Add exception handling support + other fixes.
9029
9030         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
9031         typed GC detection in --version.
9032
9033         * basic.cs exceptions.cs: New regression tests.
9034
9035         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
9036         the arch specific code can store data during a compilation.
9037
9038         * mini-ops.h: Add OP_SETFRET.
9039
9040         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
9041         function, register a separate icall for each arity, so the icalls can
9042         get a wrapper.
9043         
9044         * mini.c (mono_print_tree): Print negative offsets in a more readable
9045         form.
9046         
9047         * mini.c: Make signal handling work on sparc.
9048         
9049         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
9050
9051         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
9052
9053         * jit-icalls.c: Emulate truncl by aintl on solaris.
9054
9055         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
9056
9057 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
9058
9059         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
9060
9061 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
9062
9063         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
9064         a MarshalByRef type, inline a method that performs the check, taking into
9065         account that the object can be a proxy. Also implemented tow new opcodes:
9066         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
9067         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
9068         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
9069
9070 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
9071
9072         * mini-ppc.c: if a relative branch displacement is too big
9073         but it points to and area reachable with an absolute branch, 
9074         avoid the thunks.
9075
9076 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
9077
9078         * mini.c: optimize small copies in cpblk.
9079
9080 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
9081
9082         * basic-calls.cs basic-float.cs: New regression tests.
9083
9084         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
9085         negative offsets from %fp. Implement localloc. Fix local register 
9086         allocation. Fix the case when the this argument needs to be saved to
9087         the stack. Implement some missing opcodes.
9088
9089 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
9090
9091         * mini.c (mini_method_compile): Reenable global regalloc in methods
9092         with exception handlers.
9093
9094         * linear-scan.c (mono_varlist_sort): Fix warning.
9095
9096         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
9097
9098         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
9099         regalloc costs.
9100
9101         * liveness.c: Make all variables uses in exception clauses volatile, to
9102         prevent them from being allocated to registers. Fixes #42136.
9103
9104 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
9105
9106         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
9107         causes regressions.
9108
9109         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
9110         argument to mono_arch_regalloc_cost.
9111
9112         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
9113         precisely.
9114
9115 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
9116
9117         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
9118         Make the cost of allocating a variable to a register arch dependent.
9119
9120         * basic-calls.cs: Fix compilation of tests.
9121         
9122         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
9123         helper function to cut back on the number of #ifdefs needed.
9124
9125         * mini-ppc.c: Fix compilation.
9126
9127         * basic-calls.cs: New regression tests.
9128
9129         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
9130
9131         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
9132         of l0 since that is callee saved.
9133
9134         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
9135         to virtual calls.
9136
9137         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
9138         of delay instruction.
9139
9140         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
9141
9142         * mini.h (MonoCallInst): Add 'virtual' flag.
9143
9144         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
9145
9146 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
9147
9148         * *.cs: New regression tests.
9149
9150         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
9151         work.
9152
9153         * mini.c (mono_runtime_install_handlers): Fix build.
9154
9155         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
9156         'signal_stack_size' members.
9157
9158         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
9159         alternate signal stack.
9160
9161         * exceptions-x86.c: Add stack overflow handling.
9162
9163         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
9164         functions to arch independent code.
9165
9166         * mini.c (mono_print_tree): Print more detailed info for load_membase
9167         opcodes.
9168         
9169 2004-02-23  Martin Baulig  <martin@ximian.com>
9170
9171         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
9172
9173 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
9174
9175         * mini-x86.c: fixed reg allocation for div/rem.
9176
9177 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
9178
9179         * driver.c (mono_main): Report some configuratio options on --version.
9180
9181 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
9182
9183         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
9184         low in the address space. Correctly flush memory in thunks where we
9185         output native code.
9186
9187 2004-02-20  Martin Baulig  <martin@ximian.com>
9188
9189         * mini.c (mini_get_method): New static method; inflate all generic
9190         methods and methods in open generic instances.
9191         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
9192         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
9193
9194 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
9195
9196         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
9197
9198         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
9199
9200 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
9201
9202         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
9203
9204         * mini-sparc.c (flushi mono_arch_output_basic_block): make
9205         it compile using Sun's compiler.
9206
9207 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
9208
9209         * 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.
9210
9211         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
9212
9213 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
9214
9215         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
9216         code.
9217         * mini-ppc.c: handle calls outside of the allowed range with thunks
9218         allocated using the code manager.
9219         * tramp-ppc.c: use the code manager to hold generated native code.
9220         Fixed the magic trampoline to just patch vtable entries.
9221
9222 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
9223
9224         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
9225         independent file.
9226
9227 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
9228
9229         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
9230         PPC.
9231
9232         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
9233         if we have a working __thread implementation.
9234
9235         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
9236         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
9237
9238 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
9239
9240         * mini-x86.c: Fix compilation under gcc 2.
9241         
9242 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
9243
9244         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
9245         contains a call to the wrapped function.
9246
9247         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
9248         OP_<CALL>_IMM opcodes, and use them under X86.
9249         
9250         * mini.c (mono_jit_find_compiled_method): Fix warning.
9251
9252         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
9253
9254         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
9255
9256         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
9257         functionality to mini.c.
9258
9259         * mini.c (mono_create_jump_trampoline): New function to create a jump
9260         trampoline. Return a compiled method instead of a trampoline if it
9261         exists. Add a cache for jump trampolines.
9262
9263         * mini.c (mono_jit_find_compiled_method): New function to return a
9264         compiled method if it exists.
9265
9266         * mini-x86.c: Call mono_create_jump_trampoline instead of 
9267         mono_arch_create_jit_trampoline.
9268
9269         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
9270         a jump trampoline. Fixes #52092.
9271         
9272 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
9273
9274         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
9275         which is not up-to-date. Add check_corlib_version () instead.
9276
9277         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
9278         have to call it.
9279         
9280         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
9281         since newer valgrind versions do not need it.
9282
9283         * mini.c (mono_jit_compile_method_with_opt): New helper function to
9284         compile a method with a given set of optimizations.
9285
9286         * mini.c: Compile icall wrappers on-demand instead of at startup.
9287
9288         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
9289         wrapper for an icall.
9290
9291 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
9292
9293         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
9294         #54063.
9295
9296         * iltests.il: Add test for non-empty stack before switch instruction.
9297
9298 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
9299
9300         * mini.c: Add support for new stringbuilder marshalling conventions.
9301
9302         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
9303
9304 2004-02-01  Martin Baulig  <martin@ximian.com>
9305
9306         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
9307         in `ginst->mtype_argv'.
9308
9309 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
9310
9311         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
9312         facilitate grepping.
9313
9314 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
9315
9316         * mini.c: fixed buglet in initobj generic implementation for references.
9317
9318 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
9319
9320         * Makefile.am: make the version script conditional.
9321         * jit-icalls.c: handle missing truncl().
9322
9323 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
9324
9325         * exceptions.cs: Add more tests for double->int conversion.
9326
9327         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
9328         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
9329
9330 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
9331
9332         * driver.c: make --verbose --version emit an error
9333         if the loaded corlib doesn't match the runtime version.
9334
9335 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
9336
9337         * mini-ppc.h: export ppc_patch().
9338         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
9339         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
9340         on par or better than on MacOSX.
9341
9342 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
9343
9344         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
9345         mono_lookup_pinvoke_call.
9346
9347         * mini-x86.c: Under windows, the default pinvoke calling convention is
9348         stdcall. Fixes #52834.
9349
9350         * mini.c (optimize_branches): Add an upper bound to the number of
9351         iterations to prevent infinite loops on strange loops. Fixes #53003.
9352
9353 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
9354
9355         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
9356         and ISINST. Fixes #52093.
9357
9358         * objects.cs (test_0_vector_array_cast): New tests.
9359         
9360 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
9361
9362         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
9363         checking in Array.Set ().
9364
9365         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
9366         #52590.
9367
9368         * object.cs (test_0_multi_array_cast): New regression test.
9369
9370 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
9371
9372         * exceptions-ppc.c: fix build on Linux/PPC.
9373
9374 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
9375
9376         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
9377         running under valgrind.
9378         (x86_magic_trampoline): Fix build bustage.
9379
9380         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
9381         negative values as well. This is needed for the encoding of the line number
9382         info, since sometimes the line numbers are not in increasing order.
9383
9384 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
9385
9386         * cpu-pentium.md (localloc): Increase the size of the localloc 
9387         instruction since it is a loop under Win32.
9388
9389         * debug-mini.c (record_line_number): Get rid of unneccesary memory
9390         allocation.
9391
9392 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
9393
9394         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
9395         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
9396         Max Horn (max@quendi.de). Fix file names in comments.
9397
9398 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
9399
9400         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
9401         avoid stack overflow.
9402         (replace_usage): Avoid uninitialized variable warnings.
9403
9404         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
9405         and taking the address of valuetype variables.
9406
9407 2004-01-03  Patrik Torstensson
9408
9409         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
9410         for other purposes than FP later on.
9411
9412 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
9413
9414         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
9415         of tail calls.
9416
9417 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
9418
9419         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
9420
9421 2003-12-30  Patrik Torstensson <p@rxc.se>
9422
9423         * mini-x86.h: Decreased number of availiable fp regs.
9424         Solves corner cases with FP spilling.
9425
9426 2003-12-23  Patrik Torstensson <p@rxc.se>
9427
9428         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
9429         for floating point stack tracking / spilling on x86. 
9430         Fixes bug #49012.
9431         
9432         * basic-float.cs: added float mul overflow test.
9433
9434 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
9435
9436         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
9437
9438 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
9439
9440         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
9441         supports for cond branches that overflow the immediate
9442         overflow offset. mcs can compile simple programs.
9443
9444 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
9445
9446         * exceptions-ppc.c: exception handling support wip:
9447         finally handlers get run on exception.
9448
9449 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
9450
9451         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
9452         profiling.
9453
9454 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
9455
9456         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
9457         initial support for stack walking and unwinding.
9458
9459 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
9460
9461         * driver.c (mono_main): Make corlib-out-of-sync message more 
9462         descriptive. Also remove verify_corlib call.
9463
9464 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
9465
9466         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
9467         not overlap with other call's arguments, too.
9468
9469 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
9470
9471         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
9472         move to arch-specific code the choice of arch-specific
9473         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
9474         * mini.c: ensure emulation calls will not interleave
9475         with other calls.
9476
9477 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
9478
9479         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
9480         the magic trampoline stack frame is dropped before executing
9481         the new method.
9482
9483 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
9484
9485         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
9486         and integer to fp conversions. Added support for overflowing
9487         arguments on the stack. Reserve a couple more registers as temps.
9488         Added support for aot compilation (as output still needs to be
9489         tweaked, though).
9490
9491 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
9492
9493         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
9494         Don't overwrite return register in some corner cases.
9495
9496 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
9497
9498         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
9499         static constructors when AOT compiling.
9500
9501         * driver.c (mono_main): Call mono_check_corlib_version.
9502
9503 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
9504
9505         * cpu-g4.md, basic.cs: fixed div target register.
9506
9507 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
9508
9509         * mini-ppc.c, basic.cs: shl_imm fix with test.
9510
9511 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
9512
9513         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
9514         structures by value. Misc fixes.
9515         * objects.cs: more tests.
9516
9517 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
9518
9519         * mini-ppc.c: lconv.ovf.i implemented.
9520
9521 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9522
9523         * mini.c:
9524         (mini_init): don't error out if someone already called g_thread_init.
9525
9526 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
9527
9528         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
9529         to be any type per the spec. Fix abnormal memory usage when
9530         the same object is repeatedly thrown.
9531
9532 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
9533
9534         * mini.c: check for overruns in IL code.
9535
9536 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
9537
9538         * TODO: Add/remove some todo entries.
9539
9540 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
9541
9542         * driver.c (mono_main): Call mono_verify_corlib.
9543
9544 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
9545
9546         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
9547         This has been moved to mini.c
9548         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
9549         type being casted is marshalbyref it could be a proxy, so instead of
9550         emitting the type check code, emit a call to a runtime method that will
9551         perform the check by calling CanCastTo if needed.
9552
9553 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
9554
9555         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
9556         methods with large stack frames under Win32.
9557
9558 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
9559
9560         * Makefile.am: Distribute regression tests.
9561
9562         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
9563         at the end instead of inserting each variable into the sorted list.
9564
9565         * linear-scan.c (mono_varlist_sort): New helper function.
9566         
9567 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
9568
9569         * mini.c: ensure arguments and locals are within bounds.
9570
9571 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
9572
9573         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
9574         related fixes.
9575
9576 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
9577
9578         * mini.c (mono_cprop_copy_values): Fix crash.
9579
9580         * aot.c: Set verbosity back to 0.
9581         
9582 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
9583
9584         * regalloc.c: complete memory leak fix by Laurent Morichetti
9585         (l_m@pacbell.net).
9586
9587 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
9588
9589         * driver.c (main_thread_handler): Revert the previous patch.
9590
9591         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
9592         under valgrind.
9593
9594         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
9595         memory from the memory pool.
9596
9597         * driver.c (main_thread_handler): Turn on all optimizations when
9598         --aot is used.
9599
9600         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
9601         an array for better performance.
9602
9603         * regalloc.c (mono_regstate_assign): Fix memory leak.
9604
9605         * debug-mini.c (mono_debug_serialize_debug_info): New function to
9606         serialize the debug info.
9607
9608         * debug-mini.c (mono_debug_add_aot_method): New function to load the
9609         debug info from the serialized representation.
9610
9611         * aot.c: Save debug info into the generated file and load it when 
9612         loading a method.
9613
9614         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
9615
9616 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
9617
9618         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
9619         More FP-related fixes.
9620
9621 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
9622
9623         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
9624         and register allocation buglet. Hello world now runs.
9625
9626 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
9627
9628         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
9629         * tramp-ppc.c: fixed class init trampoline.
9630         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
9631
9632 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
9633
9634         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
9635         mini.c: more ppc changes/fixes.
9636
9637 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
9638
9639         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
9640         Also optimize the case when the arguments are the same in the caller 
9641         and in the callee.
9642
9643         * iltests.il: Add tests for tail calls with valuetype arguments.
9644
9645 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
9646
9647         * mini-ppc.c: fixes for struct return type.
9648
9649 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
9650
9651         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
9652         mono_spillvar_offset() to arch-specific code.
9653
9654 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
9655
9656         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
9657
9658 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
9659
9660         * exceptions-x86.c: Fix stack space leaks.
9661         
9662         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
9663         registers from the lmf if the method has save_lmf set.
9664
9665 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
9666
9667         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
9668         of icall wrappers into InvokeInDomain, since these are now per-domain.
9669
9670 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
9671
9672         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
9673         make some opcode emulation and intrinsic ops enabled/disabled 
9674         according to the architecture. More fixes.
9675
9676 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
9677
9678         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
9679
9680 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
9681
9682         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
9683         arch-specific handling for 'this' and struct return type to
9684         arch-specific code.
9685
9686 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9687
9688         * aot.c: prevent divide by zero error when reporting (it happened with
9689         Accessibility.dll).
9690
9691 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
9692
9693         * mini.h (inst_switch): Remove unused macro.
9694
9695 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9696
9697         * aot.c:
9698         (load_aot_module): free 'info->methods' and 'info' properly. No more
9699         "free(): invalid pointer blah" messages when you have an old aot
9700         compiled assembly.
9701
9702 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
9703
9704         * jit-icalls.c, mini.c: Added support for context static fields.
9705
9706 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
9707
9708         * mini.c (mono_method_blittable): Methods which set LastError are not 
9709         blittable either. Fixes #51108.
9710         
9711 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
9712
9713         * mini.c: flush icache.
9714         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
9715
9716 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
9717
9718         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
9719
9720 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
9721
9722         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
9723         safe on IA32.
9724
9725         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
9726         vararg calls.
9727
9728         * inssel.brg (CEE_MKREFANY): Fix AOT case.
9729
9730 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
9731
9732         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
9733         instruction when the result is discarded.
9734
9735         * iltests.il (test_0_div_regalloc): New regression test.
9736
9737         * arrays.cs: Fix compilation error.
9738
9739 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
9740
9741         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
9742         float rules to inssel-x86.brg: sane architectures with FP registers
9743         don't need to implement these rules.
9744
9745 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
9746
9747         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
9748
9749 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
9750
9751         * mini.h, inssel-long32.brg: fixed endianess issues in int64
9752         implementation of 32 bit systems.
9753
9754 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
9755
9756         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
9757         (Jeroen Zwartepoorte).
9758
9759 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
9760
9761         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
9762         the caller and the callee matches.
9763         
9764         * mini.c (mono_method_to_ir): Add comment.
9765
9766         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
9767         signbit is missing on some platforms.
9768
9769 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
9770
9771         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
9772
9773         * mini.c (setup_jit_tls_data): Call the new function.
9774         
9775         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
9776
9777         * mini-x86.c: Add experimental support for fast access to the lmf
9778         structure under NPTL/Linux 2.6.x.
9779
9780 2003-11-06  Martin Baulig  <martin@ximian.com>
9781
9782         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
9783         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
9784         the debugger.
9785
9786 2003-11-02  Martin Baulig  <martin@ximian.com>
9787
9788         * mini.c (inflate_generic_field): New static method.
9789         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
9790         generic instance and the field is declared in a generic type, call
9791         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
9792
9793 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
9794
9795         * mini.h mini.c (mono_method_same_domain): New function to return
9796         whenever the caller and the callee are in the same domain.
9797
9798         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
9799
9800 2003-10-30  Martin Baulig  <martin@ximian.com>
9801
9802         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
9803         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
9804         method parameters.
9805         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
9806         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
9807
9808 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
9809
9810         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
9811         propagation.
9812
9813         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
9814         object here, so it is in the correct appdomain etc.
9815
9816 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
9817
9818         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
9819         already done.
9820         (mono_method_to_ir): Avoid freeing the type created returned from
9821         mono_type_create_from_typespec, since it is put into an internal cache
9822         by the function. Fixes pointer.exe.
9823
9824         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
9825         trampolines for icalls and pinvokes as well. Fixes #33569.
9826
9827 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
9828
9829         * mini.c: Update after appdomain changes.
9830
9831         * mini.c (mono_jit_compile_method_inner): Allways compile native
9832         method wrappers in the root domain, since there can only be one
9833         instance of them, whose address is stored in method->info.
9834
9835 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
9836
9837         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
9838         environment variable. Instead detect automatically whenever running
9839         under valgrind using the magic macro RUNNING_ON_VALGRIND from
9840         valgrind.h.
9841
9842 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
9843
9844         * trace.c, trace.h: New files that implement the new trace option
9845         parsing. 
9846
9847         * driver.c: Document new --trace options.
9848
9849         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
9850         mini-x86.c: Apply:
9851
9852         -       if (mono_jit_trace_calls)
9853         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
9854
9855         * mini.h: prototypes.
9856         
9857 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
9858
9859         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
9860
9861         * mini.c inssel.brg: Implement typedefbyref opcodes.
9862
9863         * mini.c (mono_jit_compile_method): Remove unused local variable.
9864
9865         * mini.c (mono_jit_compile_method_inner): Ditto.
9866         
9867 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
9868
9869         * tramp-x86.c (x86_class_init_trampoline): Fix build.
9870         
9871         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
9872
9873 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
9874
9875         * mini.c (mono_no_aot): Remove unused global variable.
9876
9877         * mini.c: Thread safety fixes.
9878
9879 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
9880
9881         * mini.c (mono_create_class_init_trampoline): Add a lock around
9882         class_init_hash_addr.
9883
9884         * arrays.cs (test_0_newarr_emulation): Add new regression test for
9885         #30073.
9886
9887         * mini.c: Decompose the NEWARR instruction before decomposing its
9888         arguments. Fixes #30073.
9889
9890 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
9891
9892         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
9893         convention.
9894
9895 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
9896
9897         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
9898
9899         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
9900
9901         * driver.c: Add support for compiling icall wrappers to --compile.
9902
9903 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
9904
9905         * inssel.brg: The empty value in class->interface_offsets is -1, not
9906         0. Fixes #49287.
9907
9908 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
9909
9910         * objects.cs: New test for 'is' operator on an array of interfaces.
9911
9912 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
9913
9914         * tramp-ppc.c: update trampoline code to support jumps
9915         and class initialization.
9916
9917 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
9918
9919         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
9920
9921         * inssel.brg (OP_UNBOXCAST): Fix #46027.
9922
9923         * inssel.brg (OP_UNBOX): Remove unused rule.
9924
9925         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
9926         region instead of one for each method. Fixes #47813.
9927
9928 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
9929
9930         * exceptions.cs (test_0_nested_finally): New regression test for
9931         nested exception handlers.
9932
9933         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
9934
9935         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
9936
9937         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
9938         inlining.
9939
9940         * mini.c (mono_method_check_inlining): Make the inlining limit 
9941         configurable by an environment variable.
9942         
9943         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
9944
9945         * mini.h: Bump AOT file version.
9946
9947         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
9948         token, store the image along with the token, since the token might not 
9949         refer to the same image as the method containing the relocation, 
9950         because of inlining.
9951
9952 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
9953
9954         * mini.c (mono_precompile_assemblies): New function to compile
9955         all methods in all loaded assemblies.
9956
9957         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
9958
9959         * regalloc.h regalloc.c (MonoRegState): Change the type of 
9960         iassign and fassign to int*, since they can contain large negative
9961         values if the register is spilled. Also added some comments. Fixes
9962         #45817.
9963
9964         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
9965         under Win32. Fixes #42964.
9966
9967 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
9968
9969         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
9970
9971         * aot.c: Added support for AOT compiling methods which contain calls
9972         to wrappers. Currently, only remoting-invoke-with-check wrappers are
9973         handled.
9974         
9975         * driver.c (compile_all_methods): Run the compilation in a thread
9976         managed by mono. Fixes #44023.
9977
9978         * mini.c (mono_codegen): Print full method name in verbose output.
9979
9980         * mini-x86.c (mono_arch_patch_code): Fix warning.
9981         
9982         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
9983         jumps, since the method we are jumping to might be domain-specific.
9984
9985         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
9986
9987 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
9988
9989         * inssel.brg: string chars are unsigned.
9990
9991 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
9992
9993         * TODO: New todo item.
9994
9995         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
9996         which calls mono_runtime_class_init and patches the call site to
9997         avoid further calls.
9998         (mono_arch_create_class_init_trampoline): New arch specific function 
9999         to create a class init trampoline.
10000         (create_trampoline_code): Generalized so it can create
10001         class init trampolines as well.
10002
10003         * mini.c (helper_sig_class_init_trampoline): New helper variable.
10004         (mono_create_class_init_trampoline): New function to create and cache
10005         class init trampolines.
10006         (mono_find_class_init_trampoline_by_addr): New function to lookup the
10007         vtable given the address of a class init trampoline. Used by the
10008         patching process.
10009         (mono_codegen): Generate a call to a trampoline instead of
10010         mono_runtime_class_init in LDSFLD[A].
10011         (mono_codegen): Add relocations for the new trampoline.
10012         
10013         * mini.h mini-x86.c aot.c: Added a new relocation type: 
10014         MONO_PATCH_INFO_CLASS_INIT.
10015
10016         * mini.h: Bump AOT version number.
10017
10018         * aot.c: Create a copy of the loaded code instead of using the original
10019         so methods which call each other will be close in memory, improving
10020         cache behaviour.
10021         
10022         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
10023         patch since it breaks the regression tests.
10024         
10025         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
10026         for the register saving instruction sequence since the 
10027         frame_state_for function in glibc 2.3.2 don't seem to detect it.
10028
10029 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
10030
10031         * TODO: Fix todo item && remove another.
10032
10033 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
10034
10035         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
10036         previous checkin.
10037
10038         * aot.c: Moved the check for MONO_LASTAOT into the initialization
10039         function of the module.
10040
10041         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
10042         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
10043         --no-aot command line option.
10044
10045 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
10046
10047         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
10048         by Bernie Solomon (bernard@ugsolutions.com).
10049
10050         * inssel.brg: Refactor the interface offset table related code into
10051         its separate functions and add support for the AOT case.
10052
10053 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
10054
10055         * aot.c (mono_aot_get_method_inner): Fix memory leak.
10056         
10057         * aot.c: Added mono_aot_verbose variable and made all debugging
10058         output depend on the value of this variable.
10059
10060         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
10061         method_label and info_label.
10062
10063         * mini.h mini-x86.c aot.c: Added a new relocation type 
10064         MONO_PATCH_INFO_IID for klass->interface_id.
10065
10066         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
10067         the MonoJitInfo structure.
10068
10069         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
10070         a non-root appdomain in shared mode.
10071
10072 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
10073
10074         * aot.c: make aot loader less verbose. Remove free of unused variable.
10075
10076 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
10077
10078         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
10079
10080         * .cvsignore: Added *.dll.
10081
10082         * mini.c (mono_print_tree_nl): New function callable while debugging.
10083
10084         * mini.c (mono_print_code): Export this.
10085
10086         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
10087         patched code.
10088
10089 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
10090
10091         * mini.h (MonoCompile): Added 'jit_info' field.
10092
10093         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
10094         the cfg structure, since it is needed by the AOT compiler.
10095
10096         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
10097
10098         * aot.c: A major rewrite. Changes include:
10099         - save exception tables for methods which have them.
10100         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
10101         to g_module_symbol.
10102         - reworked the file format so it is now much smaller and needs
10103         fewer relocation entries.
10104         
10105 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
10106
10107         * aot.c (load_aot_module): Fix build bustage on platforms without
10108         Boehm GC.
10109
10110 2003-09-04  Martin Baulig  <martin@ximian.com>
10111
10112         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
10113
10114 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
10115
10116         * TODO: Some new optimization ideas.
10117
10118         * aot.c: Move AOT module loading logic here from mono_assembly_open.
10119
10120         * aot.c: Save the optimization flags used to compile the code into
10121         the AOT module.
10122
10123         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
10124         support emitting domain specific code.
10125         
10126         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
10127         no longer domain neutral. It can be made domain neutral by compiling 
10128         with --optimize=shared.
10129
10130         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
10131         between appdomains.
10132
10133         * driver.c mini.h mini.c: New --no-aot debugging option which disables
10134         loading of AOT code.
10135
10136         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
10137         
10138         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
10139         if there is no domain neutrality information.
10140
10141 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
10142
10143         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
10144         format version into the generated library.
10145
10146         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
10147         callee method into the caller since one of them could be shared.
10148
10149         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
10150         system exceptions from AOT code now works.
10151
10152         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
10153         method if it is domain neutral and the callee is not.
10154
10155         * graph.c (cfg_emit_one_loop_level): Fix warning.
10156
10157 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
10158
10159         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
10160         last checkin.
10161
10162 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
10163
10164         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
10165         is needed  by code which is executed before mono_runtime_init ().
10166         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
10167         
10168         * mini.c (mono_thread_abort): Fix warning.
10169         (mono_jit_compile_method): Call static constructor in the AOT case too.
10170
10171         * aot.c (mono_compile_assembly): Fix warning.
10172
10173 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10174
10175         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
10176
10177 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
10178
10179         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
10180
10181         * cpu-pentium.md: Fix the length of call opcodes so they include the
10182         ESP restoring instruction. Fixes #47968.
10183
10184 2003-08-28  Martin Baulig  <martin@ximian.com>
10185
10186         * mini-x86.c (mono_arch_call_opcode): Added support for
10187         MONO_TYPE_GENERICINST.
10188
10189         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
10190
10191 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
10192
10193         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
10194         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
10195
10196         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
10197         metadata_section.
10198
10199 2003-08-26  Martin Baulig  <martin@ximian.com>
10200
10201         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
10202         when reporting an error, set this to the actual error location.
10203         (mono_method_to_ir): Report the correct error location if
10204         get_basic_blocks() returned an error.
10205
10206 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
10207
10208         * mini.c (mono_type_blittable): OBJECT is not blittable.
10209         (mono_method_blittable): Methods which have marshalling descriptors
10210         are not blittable either. Fixes #47842.
10211
10212 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
10213
10214         * driver.c mini.c: Use an environment variable instead of a global 
10215         variable. Also fix the build.
10216
10217         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
10218         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
10219         reporting this. 
10220
10221         * driver.c mini.c: Added --with-valgrind option to turn off some
10222         code which prevents mono from running under valgrind.
10223
10224         * mini.c (mono_emit_call_args): Fixed warning.
10225
10226         * mini.c (mono_emulate_opcode): Fixed warning.
10227
10228 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
10229
10230         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
10231         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
10232         regalloc.c, regalloc.h: specify available registers in arch-specific
10233         code and support floats in the regallocator (patch by Laurent Morichetti 
10234         <l_m@pacbell.net>)
10235
10236 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
10237
10238         * mini.c: mono_thread_current() can be called only after
10239         mono_runtime_init(): rearrange code to not call it early on.
10240
10241 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
10242
10243         * mini.c: allocate jump tables in the code mempools.
10244
10245 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
10246
10247         * mini.c, mini.h: make sure per-thread data allocated by the jit is
10248         freed.
10249
10250 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
10251
10252         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
10253         12 to 16.  This fixes bug #47453.
10254
10255
10256 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
10257
10258         * mini-ppc.c: fixed indexed load and unsigned compares.
10259
10260 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
10261
10262         * mini.c: reenabled installation of handler for
10263           thread abort signal.
10264
10265 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
10266
10267         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
10268         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
10269         until it's fixed and actually useful.
10270
10271 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
10272
10273         * inssel-long32.brg: couple more opcodes implemented.
10274
10275 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
10276         
10277         * mini-sparc.c: Even more opcodes implemeted.
10278
10279 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
10280
10281         * mini-sparc.c: More opcodes implemented.
10282
10283 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
10284
10285         * mini-sparc.c: More opcodes implemented.
10286
10287 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
10288
10289         * inssel-sparc.brg: Add some needed rules.  Direct
10290         copy from PPC.
10291         * Makefile.am: Use inssel-sparc.brg
10292         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
10293         an assert happy for now.
10294
10295 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
10296
10297         * mini-sparc.c: Fixed compile errors.
10298         * exceptions-sparc.c: Same.  We now produce a mono binary 
10299         on sparc-linux.  Yea.
10300
10301 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
10302
10303         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
10304         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
10305         They compile, but do not work.
10306
10307 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10308
10309         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
10310         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
10311         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
10312         (ct@gentoo.org).
10313
10314 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
10315
10316         * mini.c: more opcodes implemented and better support for generics.
10317
10318 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
10319
10320         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
10321         * mini.c, mini.h: first cut at generics support: some new instructions 
10322         added and changed the behaviour of some of the existing ones.
10323
10324 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
10325
10326         * mini.c: Removed definition of metadata_shared mutex here.
10327
10328 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
10329
10330         * mini-x86.c: make vararg calls work for instance methods.
10331
10332 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
10333
10334         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
10335         returns the arguments in a separte list, now.
10336
10337 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
10338
10339         * aot.c, mini.c: updates for array type representation changes.
10340
10341 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
10342
10343         * mini.c: register function to perform jit shutdown.
10344
10345 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10346
10347         * mini.c: use a faster allocator if possible.
10348
10349 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
10350
10351         * aot.c: some cleanups and portability changes.
10352
10353 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
10354
10355         * mini.c: use faster allocation for CEE_BOX if possible.
10356
10357 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
10358
10359         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
10360         Moved inlined mempcy code to its own function so that is can be
10361         reused. Added an inline memset function as well (optimized initobj).
10362         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
10363
10364 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
10365
10366         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
10367
10368 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
10369
10370         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
10371         arch code can setup the cpu for CLR execution, if needed.
10372         We use it on x86 to set the precision of FP operations.
10373
10374 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
10375
10376         * mini.c: disable some optimizations if we can guess they'll cost too
10377         much for a given method.
10378
10379 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
10380
10381         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
10382         
10383 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
10384         * mini.h mini.c mini-x86.c: Added instruction level coverage 
10385         info collection support.
10386
10387 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
10388
10389         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
10390         is now implemented in the profiling API. Get rid of a couple of
10391         unnecessary global variables.
10392
10393 2003-06-15  Nick Drochak <ndrochak@gol.com>
10394
10395         * basic-long.cs: tests for negative values for bigmul, and unsigned.
10396         * cpu-g4.md: add op_bigmul and op_bigmul_un
10397         * cpu_pentium.md: add op_bigmul_un
10398         * inssel-long32.brg: add rule for unsigned bigmul
10399         * mini-ops.h: define OP_BIGMUL_UN
10400         * mini-x86.c: THE BUG: handle (un)signed properly
10401         * mini.c: choose unsigned opcode if needed.
10402         This set of patches fixes bug #44291
10403
10404 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
10405
10406         * mini.c (optimize_branches): improved to handle all kinds of
10407         conditional branches.
10408
10409 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
10410
10411         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
10412         don't raise exceptions.
10413
10414 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
10415
10416         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
10417         to arch-specific files.
10418
10419 2003-06-09  Martin Baulig  <martin@ximian.com>
10420
10421         * Makefile.am (libs): Added $(LIBGC_LIBS).
10422
10423 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
10424
10425         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
10426         and OP_ATAN (fixes bug#44293).
10427
10428 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
10429
10430         * Makefile.am, mini-x86.c: rename cpu description array to
10431         pentium_desc, since some compilers define the 'pentium' preprocessor
10432         symbol.
10433
10434 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
10435
10436         * mini.c (mini_select_instructions): add explicit branch if the
10437         following block is not the false target of a conditional branch -
10438         we need this with any optimization that reorder or remove bblocks
10439
10440         * mini.c (optimize_branches): bug fixes
10441
10442 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
10443
10444         * mini.c (mono_method_to_ir): inline static readonly fields
10445
10446         * ssa.c (fold_tree): start cfold support for long (very simple
10447         cases only)
10448
10449         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
10450
10451 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
10452
10453         * inssel.brg: fixed memcpy (bug #44219).
10454
10455 2003-06-05  Dick Porter  <dick@ximian.com>
10456
10457         * driver.c: Set the glib log levels to not abort if g_message
10458         recurses.
10459
10460         g_set_prgname() has to happen before mini_init() so that the
10461         process handle gets the info.
10462         
10463 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
10464
10465         * driver.c: add intrins to the default optimizations to get wider
10466         exposure.
10467
10468 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
10469
10470         * mini.h: some large basic blocks will overflow a 16-bit
10471         integers for symbolic registers.
10472
10473 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
10474
10475         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
10476         (mono_arch_output_basic_block): fix bug 43499 
10477
10478 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
10479
10480         * mini.c: kill duplicated definition of mono_debug_format.
10481
10482 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
10483
10484         * mini-x86.c, arrays.cs: fixed register allocation bug.
10485
10486 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
10487
10488         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
10489
10490         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
10491
10492 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10493
10494         * mini.c:
10495         (print_method_from_ip): also print source location information if
10496         available.
10497
10498 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
10499
10500         * mini.c (mono_find_block_region): bug fix in region code
10501         (mini_method_compile): enable removing unreachable code again, but
10502         only in methods without exception clauses.
10503
10504 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
10505
10506         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
10507         Implemented arglist opcode and handling of TypedReference type.
10508         Fixed x86 call convention when a structure is returned.
10509         Minimal support for calling static vararg methods.
10510
10511 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
10512
10513         * mini.c (mini_method_compile):  always remove unreachable code,
10514         because the code in them may be inconsistent  (access to dead
10515         variables for example).
10516
10517 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
10518
10519         * driver.c, debug-mini.c: warning fixes.
10520
10521 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
10522
10523         * Makefile.am, jit.h, mini.h: install header for embedding mono.
10524
10525 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
10526
10527         * mini.c: thread-static fields are registered in mono_class_vtable(),
10528         so ensure the function is called before checking for them.
10529
10530 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
10531
10532         * mini.c (optimize_branches): fix for bug 43586
10533
10534         * jit-icalls.c (mono_llmult_ovf): added an additional check for
10535         overflow (fixes Bug #43639)
10536
10537 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
10538
10539         * mini.c, objects.cs: allow the use of stobj for primitive types.
10540
10541 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
10542
10543         * mini.c: be less strict about argument checking until we support
10544         running the verifier.
10545
10546 2003-05-27  Nick Drochak <ndrochak@gol.com>
10547
10548         * basic-long.cs: tests for (ulong)int * (ulong)int also
10549         * mini.c: use the same trick for (ulong)int * (ulong)int
10550
10551 2003-05-27  Nick Drochak <ndrochak@gol.com>
10552
10553         * basic-long.cs: add regression test for (long)int * (long)int
10554         * cpu-pentium.md: add op_bigmul specification
10555         * inssel-long32.brg: add OP_BIGMUL rule
10556         * mini-ops.h: add OP_BIGMUL
10557         * mini-x86.c: register allocator: handle case where src1 needs to be
10558         in EAX.
10559         * mini.c: substitute special BIGMUL opcode in the tree for 
10560         (long)int * (long)int
10561
10562 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
10563
10564         * jit-icalls.c: call the type ctor on field access if needed.
10565
10566 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
10567
10568         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
10569         to a method (including results of ldelema, bug#43207).
10570
10571 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
10572
10573         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
10574         colors to show exception handler blocks.
10575
10576         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
10577         (fix for pinvoke7.cs).
10578
10579 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
10580
10581         * mini.h, mini.c: ensure correct initialization order for types that
10582         require it. Prepare for lazy compilation of jit icall wrappers.
10583         Provide a name for opcode emulation to reduce unneeded mallocing.
10584
10585 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
10586
10587         * mini-x86.c: better register restoring code and profiling
10588         support for tail calls.
10589
10590 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
10591
10592         * mini.h, driver.c: prepare for leaf methods optimization.
10593
10594 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
10595
10596         * mini.c: get targets of branches before converting a method.
10597
10598 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
10599
10600         * mini.c (optimize_branches): added some experimental code (disbaled) 
10601
10602 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
10603
10604         * mini.c (optimize_branches): fix branch to branch optimization 
10605
10606         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
10607
10608         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
10609
10610         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
10611
10612         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
10613         if needed.
10614
10615 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
10616
10617         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
10618         enable use of interface variables again.
10619
10620         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
10621         I1 to registers because there is no simply way to sign extend 8bit
10622         quantities in caller saved registers on x86.
10623
10624         * inssel-float.brg: set costs of some rules to 2 so
10625         that monobure always select the arch. specific ones if supplied,
10626         regardless of the order we pass the files to monoburg.
10627
10628 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
10629
10630         * mini.c, mini-x86.c: since the magic trampoline for jumps
10631         can't patch the code directly, we do it as soon as the
10632         method gets compiled.
10633
10634 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
10635
10636         * mini-x86.c, mini.h: introduce a new patching method
10637         to support CEE_JMP and tail calls.
10638         * mini.c: obey tail.call. Don't precompile methods target
10639         of CEE_JMP.
10640         * tramp-x86.c: new trampoline code to handle methods
10641         reached through a jump.
10642
10643 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
10644
10645         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
10646         bit values to registers
10647
10648 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
10649
10650         * mini.c (mono_compile_get_interface_var): share interface
10651         variables if possible.
10652
10653 2003-05-16  Martin Baulig  <martin@ximian.com>
10654
10655         * debug-mini.c (mono_init_debugger): New function to initialize
10656         the debugger.  This is not in the debugger since it needs to
10657         access some of mini's internals.
10658
10659 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
10660
10661         * mini.c (mono_method_to_ir): inlining fixes/cleanups
10662
10663 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
10664
10665         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
10666         for value type handling.
10667
10668 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
10669
10670         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
10671         (mono_method_check_inlining): enable inlining of all kinds of wrappers
10672
10673 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
10674
10675         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
10676           the constructor through a proxy.
10677
10678 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
10679
10680         * jit-icalls.c, inssel.brg: fixes to array element address
10681         calculations.
10682
10683 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
10684
10685         * mini-x86.c (is_regsize_var): allocate pointer to registers
10686
10687 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
10688
10689         * driver.c: fixed typo, added intrins to the set of optimizations
10690         tested with regressions.
10691
10692 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
10693
10694         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
10695         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
10696         test case.
10697
10698 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
10699
10700         * inssel.brg: remove some common pop instructions without side effects
10701
10702 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
10703
10704         * inssel-x86.brg: fixed thinko in int to double conversions.
10705
10706 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
10707
10708         * mini.c, jit-icalls.c: added runtime thread-static variable support.
10709
10710 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
10711
10712         * inssel-long32.brg: two more missing instructions.
10713
10714 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
10715
10716         * mini.c (mono_emit_call_args): set the cil_code for all arguments
10717         if not already set.
10718
10719 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
10720
10721         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
10722         correctly.
10723
10724         * basic-float.cs: Added tests for negative zero.
10725
10726 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
10727
10728         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
10729         a couple of missing operations for long casts, with test cases.
10730
10731 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10732
10733         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
10734
10735 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
10736
10737         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
10738         code size estimation.
10739
10740 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
10741
10742         * mini.c (mono_jit_create_remoting_trampoline): make it work with
10743         abstract methods (fix bug 42542)
10744
10745         * aot.c: add ability to handle array types
10746         
10747 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
10748
10749         * mini.c: Call the _specific versions of the object allocation
10750         functions if possible.
10751
10752 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
10753
10754         * driver.c: call setlocale ().
10755
10756 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
10757
10758         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
10759         windows build.
10760
10761 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
10762
10763         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
10764
10765         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
10766         wrappers (fix bug 42122)
10767
10768 2003-05-04  Martin Baulig  <martin@ximian.com>
10769
10770         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
10771
10772         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
10773         s/mini_set_defaults/mono_set_defaults/g.
10774
10775 2003-05-04  Martin Baulig  <martin@ximian.com>
10776
10777         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
10778
10779 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
10780
10781         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
10782         (reported by Don Roberts).
10783
10784 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
10785
10786         * mini.c: temporarily work around two bugs for this release.
10787
10788 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
10789
10790         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
10791         that contains -export-dynamic and it makes using the ld script
10792         useless.
10793         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
10794
10795 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
10796
10797         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
10798         specific cpu.
10799
10800 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
10801
10802         * mini.c: make sure leave calls all the needed finally blocks,
10803         even when the target jumps out of multiple exception clauses.
10804
10805 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
10806
10807         * ldscript, Makefile.am: add linker script to reduce the number of
10808         exported symbols (should also fix the issues with libwine defining
10809         some of the same symbols in io-layer).
10810
10811 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
10812
10813         * driver.c (mini_main): Avoid assertion when no file name is given on 
10814         the command line.
10815
10816 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
10817
10818         * driver.c: added --version/-V command line option.
10819         Added the inline optimization in the regression tests.
10820
10821 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
10822
10823         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
10824         to the type in the method signature (fixes bug#42134).
10825
10826 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
10827
10828         * mini.c: when inlining, check this is not null only when needed (bug #42135).
10829
10830 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
10831
10832         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
10833
10834 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10835
10836         * driver.c: fixed bug #42100.
10837
10838 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
10839
10840         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
10841
10842 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
10843
10844         * mini.c: moved most of the code required to do inlining to its own
10845         function so it can be reused. Inline also ctors if appropriate.
10846
10847 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
10848
10849         * Makefile.am: Link with -export-dynamic so shared libs loaded by
10850         the runtime can call mono API functions.
10851
10852 2003-04-27  Martin Baulig  <martin@ximian.com>
10853
10854         * debug-mini.c (mono_debug_init_method): Added
10855         `guint32 breakpoint_id' argument; if the method has a breakpoint,
10856         send a notification to the debugger.
10857
10858         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
10859         running in the Mono Debugger, just pass the breakpoint number to
10860         mono_debug_init_method().
10861
10862         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
10863
10864 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
10865
10866         * mini.c: allow some more unsafe compares.
10867
10868 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10869
10870         * mini-x86.c, Makefile.am: make distcheck works (partially from
10871         a patch by Richard Lee <r.h.lee@attbi.com>).
10872         * regset.c, regset.h: removed, they are unused.
10873
10874 2003-04-25  Dick Porter  <dick@ximian.com>
10875
10876         * driver.c: Usage reports the name as 'mono' not 'mini'
10877         * exceptions-x86.c: Build and run on freebsd
10878
10879 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
10880
10881         * Makefile.am: install the program with the 'mono' name and
10882         the library as libmono instead of mini and libmini.
10883
10884 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
10885
10886         * driver.c: provide the APIs for the embedding interface of the old jit.
10887
10888 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
10889
10890         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
10891
10892 2003-04-23  Martin Baulig  <martin@ximian.com>
10893
10894         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
10895
10896         * driver.c: Added `--debug' command line argument to enable
10897         debugging support.
10898
10899 2003-04-23  Martin Baulig  <martin@ximian.com>
10900
10901         * debug.[ch]: Removed.  The code is now in
10902         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
10903
10904         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
10905         last six months.
10906
10907 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
10908
10909         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
10910
10911 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10912
10913         * mini.c:
10914         (mini_cleanup): moved mono_runtime_cleanup call after the call to
10915         mono_domain_finalize.
10916         (mini_method_compile): use mono_method_profile* if the the option is
10917         enabled.
10918
10919 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
10920
10921         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
10922         methods with their wrapper.
10923
10924         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
10925         methods with their wrapper.
10926
10927         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
10928         their wrapper.
10929
10930         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
10931         wrapper.
10932
10933         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
10934         methods.
10935
10936 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
10937
10938         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
10939
10940 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
10941
10942         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
10943         of the mempool. This is slightly faster and uses less memory
10944
10945 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
10946
10947         * mini.c: avoid O(n) allocation for variables.
10948
10949 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10950
10951         * mini.c: handle items on the stack after inlining methods.
10952
10953 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
10954
10955         * mini.c: make the method->opcode optimization dependent
10956         on MONO_OPT_INSTRINS and do it lazily.
10957
10958 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
10959
10960         * driver.c: print overall results at the end of regression run.
10961
10962 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
10963
10964         * inssel.brg: don't overwrite symbolic registers.
10965
10966 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
10967
10968         * inssel-x86.brg: fix conversion from long to float.
10969
10970 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
10971
10972         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
10973
10974 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
10975
10976         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
10977
10978         * driver.c: Added --print-vtable option as in the old JIT.
10979
10980 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
10981
10982         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
10983
10984 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
10985
10986         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
10987
10988 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
10989
10990         * mini.c regalloc.c regalloc.h: Fix memory leak.
10991
10992 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
10993
10994         * aot.c (mono_aot_get_method): register all used strings
10995
10996 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
10997
10998         * mini.c: always intern strings references with ldstr at compile time.
10999
11000 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
11001
11002         * Makefile.am: add BUILT_SOURCES.
11003
11004 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
11005
11006         * driver.c: give a better error message when the assembly to execute
11007         doesn't have an entry point.
11008
11009 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
11010
11011         * Makefile.am: added hack for automake
11012
11013         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
11014         correct sematics.
11015
11016         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
11017
11018 22003-04-07  Martin Baulig  <martin@ximian.com>
11019
11020         * Makefile.am: Added Makefile.am.
11021
11022         * debugger-main.c: Removed, this is now in the debugger where it
11023         belongs.
11024
11025         * mini.pc.in: Call this package `mini' for the moment.
11026
11027
11028
11029
11030
11031