2007-11-22 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
4         in the generic vtable trampoline case.
5
6         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
7         
8         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
9         return an AOT method based on a vtable slot.
10
11         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
12
13         * mini.c (mini_get_vtable_trampoline): Export this.
14
15 2007-11-22  Martin Baulig  <martin@ximian.com>
16
17         * debug-debugger.h
18         (MonoDebuggerInfo): Move `debugger_version' up.
19
20 2007-11-22  Martin Baulig  <martin@ximian.com>
21
22         * mini-amd64.c
23         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
24
25         * mini-trampolines.c
26         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
27         after compiling the method.
28
29 2007-11-20  Martin Baulig  <martin@ximian.com>
30
31         * debug-mini.c
32         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
33         (mono_debugger_remove_breakpoint): Likewise.
34         (mono_debugger_check_breakpoints): Likewise.
35
36         * debug-debugger.c: Implement the new breakpoint interface here.
37
38 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
39
40         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
41         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
42
43         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
44
45 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
46
47         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
48
49         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
50         mini.c.
51
52         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
53         mini.c.
54
55         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
56         returning a vtype in a register.
57
58         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
59         here from the arch specific code.
60
61         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
62         mini.c.
63
64         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
65         (mono_arch_emit_prolog): Increment maximum prolog size.
66
67         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
68         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
69
70         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
71         MonoGenericSharingContext.
72
73         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
74         MonoGenericSharingContext. Allocate memory from the cfg mempool.
75
76 2007-11-15  Mark Probst  <mark.probst@gmail.com>
77
78         * mini.c, mini.h, generic-sharing.c: Functions for producing code
79         which extract fields out of the runtime generic context.  Full
80         sharing of the NEWARR opcode.
81
82 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
83
84         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
85         --enable-minimal=ssa.
86
87 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
88
89         * mini-trampolines.c (mono_delegate_trampoline): Update after 
90         mono_marshal_get_delegate_invoke () signature change.
91
92 2007-11-13  Mark Probst  <mark.probst@gmail.com>
93
94         * mini.c: Removed the shared context in favor of the generic
95         sharing context.  Allocate the MonoJitInfo structure with room for
96         the generic sharing context if it's needed.
97
98         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
99         domain-internals.h now.
100
101         * mini-x86.c: Pass the generic sharing context to get_call_info ().
102
103         * generic-sharing.c: Several changes for working without a shared
104         context and instead operating on open types instead.
105
106 2007-11-12  David S. Miller  <davem@davemloft.net>
107
108        * inssel-sparc.brg: Fix double instruction emit.
109
110 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
111
112         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
113         Get/Set/Address methods.
114         
115         * mini.c debug-debugger.c mini-trampolines.c: Update after 
116         mono_marshal_get_delegate_invoke signature change.
117
118 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
119
120         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
121         This can happens with dynamic methods. Fixes the other bug in #322722.
122
123 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
124
125         * tramp-arm.c (mono_arch_patch_callsite): Support patching
126         BX call sequence.
127
128         * mini-arm.c (arm_patch): Implement patching of BX call
129         sequence. Fixes one of the bugs in #322722.
130
131 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
132
133        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
134        under Linux.  We only need to flush every 32-byte cache line.    
135
136 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
137
138         * mini.c:
139         move_basic_block_to_end: Add branches when needed, eventually creating
140         a new BB.
141         optimize_branches: added a parameter that tells if it's ok to create
142         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
143         and avoid calling move_basic_block_to_end when it's not ok.
144         Fixes bug 318677.
145
146 2007-11-07  Mark Probst  <mark.probst@gmail.com>
147
148         * mini.c: Abort inlining call to InitializeArray if something
149         looks wrong.  Let the icall handle it, which now has proper safety
150         checks.
151
152 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
153
154         * mini.c (mono_spill_call): add support for soft-float.
155
156         * mini.c (mono_method_to_ir): add support for soft-float
157         to inlined functions that return float.
158
159         * mini.c (mono_method_to_ir): add support for soft-float
160         to cee_stsfld opcode on float fields.
161
162 2007-11-05  Geoff Norton  <gnorton@novell.com>
163
164         * mini-x86.h: Fix the structure access for X86 Leopard.
165
166
167 2007-11-05  Martin Baulig  <martin@ximian.com>
168
169         * mini-trampolines.c
170         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
171         after compiling the method to notify the debugger.
172
173 2007-11-05  Martin Baulig  <martin@ximian.com>
174
175         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
176
177 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
178
179         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
180         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
181
182 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
183
184         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
185         native-to-managed wrappers.
186         
187 2007-11-01  Geoff Norton  <gnorton@novell.com>
188
189         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
190         members.
191
192 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
193
194         * mini.c, mini-x86.c: when getting back from unmanaged code
195         to managed via a marshaled delegate we also need to set the
196         right domain.
197
198 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
199
200         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
201         for amd64.
202
203 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
204
205         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
206         let the debugger or other external agents to tell the JIT when
207         a sw breakpoint has been inserted in the code that the JIT needs
208         to be able to inspect.
209
210 2007-10-31  Martin Baulig  <martin@ximian.com>
211
212         * debug-debugger.h
213         (MonoDebuggerInfo): Remove `runtime_class_init'.
214
215 2007-10-30  Martin Baulig  <martin@ximian.com>
216
217         * debug-mini.h
218         (mono_debugger_thread_created): Added `MonoThread *' argument.
219         (mono_debugger_extended_notification): New public method.
220         (mono_debugger_trampoline_compiled): New public method.
221
222         * debug-mini.c
223         (MonoDebuggerThreadInfo): Added `thread' and
224         `extended_notifications' fields.
225
226         * debug-debugger.c
227         (debugger_executable_code_buffer): New static variable.
228
229         * debug-debugger.h
230         (MonoDebuggerInfo): Added `executable_code_buffer',
231         `executable_code_buffer_size', `breakpoint_info_area',
232         `breakpoint_table' and `breakpoint_table_size'.
233
234 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
235
236         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
237         that IP  either is an unused value or the vtable pointer. IMT 
238         calls use vtable + offset now. Reduced by almost half the size
239         of IMT entries.
240
241 2007-10-26  Jonathan Chambers <joncham@gmail.com>
242
243         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
244         defines to access param registers. Replace long usage with
245         gsize as sizeof(long) != sizeof(void*) on Win64.
246
247         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
248         on Win64. Fix intrinsic, use _AddressOfReturnAddress
249         instead of non-existant _GetAddressOfReturnAddress.
250
251         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
252         param registers. Save/restore %rdi and %rsi in MonoLMF.
253
254         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
255         param registers. Modify (throw_exception) signature to take 
256         %rdi and %rsi on Win64. 
257
258         Code is contributed under MIT/X11 license.
259
260 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
261
262         * helpers.c: unlink debugging output files.
263
264 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
265
266         * mini.c: Move mono_create_ftnptr () to object.c.
267
268 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
269
270         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
271         optional. This function can now be used to disassemble code generated
272         outside the JIT such as trampolines and IMT thunks.
273
274         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
275
276         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
277         vtable pointer from a ldr instruction.
278
279         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
280         new IMT call sequence.
281
282         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
283         call sequence for interface invocations.
284
285         * mini-arm.c (mono_arch_emit_imt_argument): added, required
286         for imt support. This function is empty since IMT on ARM requires no
287         special handling on the IR side.
288
289         * mini-arm.c (mono_arch_find_imt_method): added, required for
290         imt support.
291
292         * mini-arm.c (mono_arch_find_this_argument): added, required
293         for imt support.
294
295         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
296         a ldr instruction to load a value stored in the code stream.
297
298         * mini-arm.c (mono_arch_build_imt_thunk):added, required
299         for imt support.
300
301
302 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
303
304         * mini.c (mini_init): Install the jump trampoline callback.
305
306 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
307
308         * mini-trampolines.c: handle synchronized methods with the common
309         vtable trampoline (bug #335601).
310
311 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
312
313         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
314
315         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
316         64 bit platforms.
317
318         * mini-ia64.h mini-ia64.c: Add support for IMT.
319
320         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
321         prolog. Fixes #331958.
322
323 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
324
325         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
326
327 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
328
329         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
330         trampoline.
331
332 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
333
334         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
335         trampoline.
336
337 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
338
339         * mini-x86.c, mini-x86.h: x86 support for the common vtable
340         trampoline.
341
342 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
343
344         * mini-trampolines.c: changed the magic rampoline to understand
345         the common vtable trampoline method: the method to invoke is
346         determined by the vtable displacement of the call.
347
348 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
349
350         * mini.c, mini.h: register the common vtable trampoline if the
351         architecture supports it.
352
353 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
354
355         * cpu-amd64.md: use the correct max length for tls_get.
356
357 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
358
359         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
360         CEE_STELEM_ANY. Fixes #333696.
361
362 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
363
364         * exceptions-x86.c: provide more graceful handling of the case where
365         we followed a bogus function pointer from managed code (bug #332866).
366
367 2007-10-11  Mark Probst  <mark.probst@gmail.com>
368
369         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
370         replaces the generic_shared flag and will carry more information
371         in the future.
372
373         * generic-sharing.c: Added mini_type_stack_size() which allows
374         allows open types if given a generic sharing context.
375         mini_get_basic_type_from_generic() takes a
376         MonoGenericSharingContext* instead of a MonoCompile* now.
377
378         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
379         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
380         mini-sparc.c, mini-x86.c: Trivial changes required by the two
381         changes above.  Just passing arguments through to the right
382         places.
383
384 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
385
386         * mini-arm.c: unify the call emission to emit_code_seq().
387
388 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
389
390         * tramp-arm.c: reduced the trampoline size.
391
392 2007-10-10  Mark Probst  <mark.probst@gmail.com>
393
394         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
395         variable handling out of arch-specific code.
396
397 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
398
399         * mini-arm.c: implemented fast delegate dispatch.
400
401 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
402
403         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
404         that fp elimination is turned off if the space required by locals is too
405         big. Fixes #331958.
406
407 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
408
409         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
410         ARM to the new style trampoline.
411
412 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
413
414         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
415
416         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
417
418 2007-10-09  Martin Baulig  <martin@ximian.com>
419
420         * debug-debugger.h
421         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
422         `field_info_offset_offset'.     
423
424 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
425
426         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
427         removed more internal usage of the r11 register and made it available
428         to the register allocator.
429
430 2007-10-08  Mark Probst  <mark.probst@gmail.com>
431
432         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
433         when sharing generics and treat type variables as references.
434
435 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
436
437         * mini-ppc.c: started removing the internal uses of register r11
438         to eventually allow the register allocator to manage it as an
439         additional available register.
440
441 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
442
443         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
444
445 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
446
447         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
448         specific trampolines as they are not performance critical as a jump
449         target (maybe align as before only for AOT code?). This saves about
450         200 KB of native code on x86 for monodevelop startup.
451
452 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
453
454         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
455         monodevelop startup.
456
457 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
458
459         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
460
461         * mini-sparc.h mini-sparc.c: Implement IMT support.
462
463         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
464         its smaller and doesn't clobber sparc_g1.
465
466         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
467
468 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
469
470         * mini-ppc.c: optimized the size of the IMT thunks a bit.
471
472 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
473
474         * mini-ppc.c: implemented fast delegate invocation.
475
476 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
477
478         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
479
480 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
481
482         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
483         code to the new style trampoline in preparation for IMT support.
484
485 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
486
487         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
488         systems already. This also reduces the specific trampiline sizes and
489         prepares for the use of r12 as the IMT identifier register.
490
491 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
492
493         * mini-mips.h: endianess fix (simplified from a patch by
494         Thomas Kunze <thommy@tabao.de>, bug #323737).
495
496 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
497
498         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
499         to access ucontext fields and enable netbsd support
500         (partially from Magnus Henoch <mange@freemail.hu>).
501
502 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
503
504         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
505         use the preprocessor from the CPP env var if it is set.
506
507 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
508
509         * mini-trampolines.c: fixed an assertion and moved it earlier in the
510         code, before interface_offset gets used.
511
512 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
513
514         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
515         mono_class_setup_vtable () before accessing klass->vtable.
516
517 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
518
519         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
520         hackish.
521
522 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
523
524         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
525         IMT slots (this saves hundreds of KB of memory in programs like
526         IronPython and Monodevelop).
527
528 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
529
530         * mini.c: print the delegate counter.
531
532 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
533
534         * mini-x86.c: make it easier to enable the debugging code for IMT
535         slots.
536
537 2007-09-28  Martin Baulig  <martin@ximian.com>
538
539         * debug-debugger.h
540         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
541         `mono_method_klass_offset' and `mono_method_token_offset'.
542
543 2007-09-20  Mark Probst  <mark.probst@gmail.com>
544
545         * mini.c: First generics sharing implementation.  Can only share
546         in very simple cases.  If sharing doesn't work it falls back to
547         dedicated compilation.
548
549         * mini.h: Flag in MonoCompile to specify whether generic
550         compilation is shared.  Flags enum for marking which generic inst
551         of a context is used.  Prototypes for helper functions.
552
553         * generic-sharing.c: Helper functions for generic method sharing.
554
555         * optflags-def.h: Optimization flag (gshared) for enabling generic
556         method sharing added.
557
558         * Makefile.am: generic-sharing.c added.
559
560 2007-09-19 Daniel Nauck <dna@mono-project.de>
561
562         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
563
564 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
565         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
566         fixes bug 325507.
567
568 2007-09-19  Martin Baulig  <martin@ximian.com>
569
570         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
571         mono_debug_cleanup() is now part of mono_cleanup().
572
573 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
574
575         * driver.c (mono_main): Fix a warning.
576
577 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
578
579         * aot-compiler.c: Optimize various parts when processing large assemblies.
580         Fixes ##325568.
581
582         * mini.c (mono_patch_info_hash): Improve hash function.
583
584 2007-09-14  Jonathan Chambers <joncham@gmail.com>
585
586         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
587         
588         Code is contributed under MIT/X11 license.
589
590 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
591
592         * mini.c (mini_init): Fix a leak.
593
594         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
595
596 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
597
598         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
599
600 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
601
602         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
603
604 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
605
606         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
607         variance tests.
608
609         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
610
611         * mini.c (handle_alloc): Enable managed allocators in AOT code.
612
613         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
614
615         * aot-runtime.c (decode_patch_info): Ditto.
616
617 2007-09-12  Jonathan Chambers <joncham@gmail.com>
618
619         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
620         static case. Cache delegates in architecture specific code, 
621         based on number of parameters.
622         
623         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
624         in architecture specific code, based on number of parameters.
625         
626         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
627         caching happen in architecture specific code now.
628         
629         Code is contributed under MIT/X11 license.
630
631 2007-09-12  Jonathan Chambers <joncham@gmail.com>
632
633         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
634         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
635         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
636
637         Code is contributed under MIT/X11 license.
638
639 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
640         * mini.c: (mono_thread_abort) Fixed bug #82416.
641
642 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
643
644         * mini.: hook the new managed GC allocation feature into the JIT.
645
646 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
647
648         * mini.c: implementation for the new runtime tls opcode.
649
650 2007-09-11  Martin Baulig  <martin@ximian.com>
651
652         * debug-debugger.h
653         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
654         `mono_method_inflated_offset'.
655
656 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
657
658         * driver.c mini.h mini.c: Add a new devel command line option for injecting
659         async exceptions into a method.
660
661         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
662         purpose of testing whenever the unwinder works at every instruction.
663
664 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
665
666         * mini.c: check accessibility of method used in ldftn (fixes
667         bug #82635).
668
669 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
670
671         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
672
673         * inssel.brg: Fix a warning.
674
675 2007-09-03  Martin Baulig  <martin@ximian.com>
676
677         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
678         now takes the `main_method' as argument.
679
680 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
681
682         * cpu-sparc.md (endfilter): Add missing src1:i argument.
683
684 2007-08-30  Jonathan Chambers <joncham@gmail.com>
685
686         * driver.c: include the cil-coff.h header on Windows.
687         
688         Code is contributed under MIT/X11 license.
689
690 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
691
692         * mini.c, driver.c: don't include the cil-coff.h header.
693
694 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
695
696         * mini.c: flag places that needs fixes fo soft-float support.
697
698 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
699
700         * mini.h, inssel-float.brg: fix soft-float constant loads on big
701         endian systems (partially from Dean Jenkins, bug #81924).
702
703 2007-08-28  Mark Probst  <mark.probst@gmail.com>
704
705         * mini.c (check_linkdemand): Remove embedded reference object in
706         call to LinkDemandSecurityException.
707         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
708         with an IntPtr instead of a reference object.
709
710 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
711
712         * mini.c (handle_initobj): Handle alignment properly.
713
714         * inssel.brg (mini_emit_memset): Ditto. 
715
716         * inssel.brg (mini_emit_memcpy): Ditto. 
717
718         * inssel-sparc.brg: Ditto.              
719
720         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
721
722 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
723
724         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
725         exceptions raised in unmanaged code. Fixes part of #82594.
726
727 2007-08-24  Mark Probst  <mark.probst@gmail.com>
728
729         * mini.c (mono_method_to_ir), declsec.c
730         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
731
732 2007-08-22  Martin Baulig  <martin@ximian.com>
733
734         * debug-mini.h
735         (MonoDebuggerThreadInfo): New typedef.
736         (mono_debugger_thread_table): New global variable.
737         (mono_debugger_thread_created): New public function.
738         (mono_debugger_thread_cleanup): New public function.
739
740         * debug-debugger.h
741         (MonoDebuggerInfo):
742         - removed `get_current_thread' and `lookup_assembly'.
743         - removed `data_table'.
744         - added `thread_table'.
745
746         * mini.c
747         (mono_thread_start_cb): Call mono_debugger_thread_created().
748         (mono_thread_attach_cb): Likewise.
749         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
750         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
751         initial domain.
752
753         * driver.c (mono_main): Move mono_debug_init() up, before calling
754         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
755
756 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
757
758         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
759         together when passing several arguments of type double (gives a small
760         speedup and saves a few bytes of generated code).
761
762 2007-08-20  Jb Evain  <jbevain@novell.com>
763
764         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
765
766 2007-08-20  Jb Evain  <jbevain@novell.com>
767
768         * mini.c (mono_method_to_ir): throw MethodAccessException
769         and FieldAccessException instead of InvalidProgramException.
770
771 2007-08-20  Mark Probst  <mark.probst@gmail.com>
772
773         * mini.c: CoreCLR security checks.
774
775         * mini.h: Removed MonoSecurityMode (moved to
776         metadata/security-manager.h) and mono_security_mode global var
777         (replaced by set/get functions in security-manager.h).
778
779         * driver.c: Added "core-clr-test" security mode for testing.  Used
780         set-function for setting security mode.
781
782 2007-08-17  Mark Probst  <mark.probst@gmail.com>
783
784         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
785         the new jit_info_table.
786
787         * driver.c: Test code for the new jit_info_table (enabled by the
788         define MONO_JIT_INFO_TABLE_TEST).
789
790 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
791
792         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
793         detection of call <REG> instruction sequence. Fixes build on freebsd.
794
795 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
796
797         * mini-exceptions.c: Fix a warning.
798
799 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
800
801         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
802         stack overflow handling code on amd64 too.
803
804         * mini-exceptions.c (mono_setup_altstack): Make this use 
805         mono_thread_get_stack_bounds ().
806
807         * mini-x86.h: Disable sigaltstack on solaris x86.
808
809 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
810
811         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
812
813 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
814
815         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
816
817 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
818
819         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
820
821         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
822
823 2007-08-03  Neale Ferguson <neale@sinenomine.net>
824
825         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
826         due to alignment.
827
828 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
829
830         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
831         to be emitted (bug #82281).
832
833 2007-08-01  Martin Baulig  <martin@ximian.com>
834
835         Merged the `debugger-dublin' branch.
836
837         * debug-debugger.h (MonoDebuggerInfo):
838         Removed the `old_*' compatibility entries.
839         Added `debugger_version' and `data_table'.
840         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
841         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
842
843         * debug-mini.c
844         (MiniDebugMethodBreakpointInfo): Add `address_list'.
845         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
846         instead of a `gconstpointer'.
847         (mono_debugger_insert_method_breakpoint): Return a
848         `MonoDebugMethodAddressList *'.
849
850 2007-06-28  Martin Baulig  <martin@ximian.com>
851
852         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
853
854 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
855
856         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
857         __builtin_frame_address () since it is broken on older gcc versions.
858
859 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
860
861         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
862         on the stack overflow handling and made the managed stack overflows
863         catchable in most cases using soft guard pages.
864         * exceptions-x86.c: added code to restore the protection in the soft
865         guard pages at the end of exception handling.
866
867 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
868
869         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
870
871 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
872
873         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
874         exception handling.
875
876 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
877
878         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
879         signal handling support until it has been ported to the new mechanism.
880         * mini.c: fixed stack overflow detection and use the new
881         architecture code  to handle signals on the altstack.
882
883 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
884
885         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
886         stack overflows on the alt stack.
887
888 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
889
890         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
891         stack overflows on the alt stack.
892
893 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
894
895         * exceptions-ppc.c: cleanup preparing for altstack support.
896
897 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
898
899         * exceptions-arm.c: cleanup preparing for altstack support.
900
901 2007-07-27  Mark Probst  <mark.probst@gmail.com>
902
903         * mini.c (print_jit_stats): Output hazard pointer stats.
904
905 2007-07-26  Mark Probst  <mark.probst@gmail.com>
906
907         * driver.c, mini.c: Replaced security mode flags with a single
908         enum variable.
909
910 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
911
912         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
913
914 2007-07-25  Mark Probst  <mark.probst@gmail.com>
915
916         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
917         (which doesn't do anything yet) for activating Core CLR
918         (Silverlight) security.
919
920 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
921
922         * mini-codegen.c: work around a possible gcc bug on arm.
923
924 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
925
926         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
927         message for platforms that don't support AOT compilation.
928
929 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
930
931         * mini.h, mini.c, driver.c: temporary smcs hack.
932
933 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
934
935         * mini-arm.h, mini-arm.c: arm EABI fixes.
936
937 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
938
939         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
940         case.
941
942         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
943         trampolines taking a method argument.
944
945         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
946
947         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
948         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
949
950         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
951         JIT compilation throws an exception. Fixes #82050.
952
953 2007-07-19  Mark Probst  <mark.probst@gmail.com>
954
955         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
956         with the MONO_EXCEPTION_ defines.
957
958 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
959
960         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
961         #82117.
962         
963         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
964         the cause of an assertion.
965
966 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
967
968         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
969         removed.
970
971 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
972
973         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
974         assert. Should fix #82103.
975
976 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
977
978         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
979         here too. Fixes #82095.
980
981         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
982         addresses.
983
984         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
985
986         * mini-amd64.h: Enable IMT for amd64.
987         
988         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
989
990 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
991
992         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
993
994 2007-07-12  Mark Probst  <mark.probst@gmail.com>
995
996         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
997         as soon as check_linkdemand sets an exception_type.
998
999 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
1000
1001         * mini-x86.c: fixed offsets for IMT call sequence.
1002         * mini-x86.h: enable IMT again.
1003
1004 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
1005
1006         * trace.c (mono_trace_enter_method): Decode MonoType too.
1007
1008         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
1009
1010         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
1011
1012         * mini-amd64.c: Add preliminary IMT implementation.
1013         
1014 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
1015
1016         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
1017         understand the new IMT-base interface invocation (thanks to
1018         Daniel Nauck for the report and the remote debugging session).
1019
1020 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
1021
1022         * mini-x86.c: size and speed optimizations for the IMT bsearch.
1023
1024 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
1025
1026         * Makefile.am (aotcheck): Make this actually use the AOTed code.
1027
1028 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
1029
1030         * mini-trampolines.c: implement AOT IMT support.
1031         * mini-x86.h: enable IMT support for wider testing.
1032
1033 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * inssel.brg (emit_imt_argument): Add aot support here.
1036
1037         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
1038
1039 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
1040
1041         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
1042         of the IMT implementation, partially from massi, with my
1043         implementation of the bsearch sequence. Disabled by default until
1044         the AOT code is implemented.
1045
1046 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
1047
1048         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
1049
1050         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
1051
1052 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
1053
1054         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
1055         arch-independent IMT JIT code from Massimiliano
1056         Mantione (massi@ximian.com) with small cleanups from me.
1057
1058 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
1059
1060         * Makefile.am: fix svn invocation to get the svn revision to be
1061         independent of the local language (build fix).
1062
1063 2007-07-09  Mark Probst  <mark.probst@gmail.com>
1064
1065         * mini.c (inline_method): Reset cfg->exception_type if the
1066         inlining is aborted.  Fixes: 82049.
1067
1068 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
1069
1070         * mini.c: remove assert from exception handling code when exception_ptr
1071         is not set.
1072
1073 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * mini.c (mono_codegen): Add an assert.
1076
1077         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
1078         enter and leave code.
1079         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
1080
1081 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
1082
1083         * mini-ppc.c: fixed memory corruption for localloc(0)
1084         (bug #81852).
1085
1086 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
1087         
1088         * mini.c: Fix warnings.
1089
1090 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
1091
1092         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
1093         to emit better double->int conversions.
1094
1095 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
1096
1097         * mini.c: the provided Min/Max optimizations are valid for unisgned
1098         ints.
1099
1100 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
1101
1102         * 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
1103
1104 2007-06-28  Miguel de Icaza  <miguel@novell.com>
1105
1106         * mini.c (mono_running_on_valgrind): Add support for reporting the
1107         method and  its boundaries to valgrind.
1108
1109 2007-06-28  Martin Baulig  <martin@ximian.com>
1110
1111         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
1112
1113 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
1114
1115         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
1116
1117         * generic.2.cs: Add new test case.
1118
1119 2007-06-25  Martin Baulig  <martin@ximian.com>
1120
1121         Merged the `debugger-dublin' branch.
1122
1123         * debug-mini.c
1124         (mono_debugger_insert_method_breakpoint): New public method.
1125         (mono_debugger_remove_method_breakpoint): Likewise.
1126         (mono_debugger_check_breakpoints): New static method.
1127         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
1128
1129         * debug-debugger.h (MonoDebuggerInfo):
1130         Renamed (to keep backward compatibility in the vtable):
1131         `insert_breakpoint' -> `old_insert_breakpoint'.
1132         `remove_breakpoint' -> `old_remove_breakpoint'.
1133         `create_string' -> `old_create_string'.
1134         `lookup_class' -> `old_lookup_class'.
1135         `lookup_type' -> removed; changed into a dummy field.
1136         `lookup_assembly' -> `old_lookup_assembly'.
1137         Added (same functionality, but different signature):
1138         `create_string', `lookup_class', `lookup_assembly'
1139         Added new:
1140         `get_method_addr_or_bpt', `remove_method_breakpoint',
1141         `runtime_class_init'.
1142
1143         * debug-debugger.c: Merged the `debugger-dublin' branch.
1144
1145 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
1146
1147         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
1148         well.
1149         (peephole_pass): Likewise.
1150
1151 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
1152
1153         * driver.c: hopefully make setaffinity work also for ancient
1154         versions of linux.
1155
1156 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
1157
1158         * driver.c : win32 build fix.
1159
1160 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
1161
1162         * driver.c: check for the MONO_NO_SMP env var and bind to a single
1163         processor if it is set.
1164
1165 2007-06-21  Martin Baulig  <martin@ximian.com>
1166
1167         * debug-mini.h: New file.
1168
1169         * debug-mini.c
1170         (mono_debugger_insert_breakpoint_full): Moved here from
1171         ../metadata/mono-debug-debugger.c.
1172         (mono_debugger_remove_breakpoint): Likewise.
1173         (mono_debugger_breakpoint_callback): Likewise.
1174
1175 2007-06-15  Raja R Harinath  <rharinath@novell.com>
1176
1177         * jit-icalls.c (mono_helper_compile_generic_method): Update to
1178         changes in MonoGenericClass.
1179
1180 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
1181
1182         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
1183
1184 2007-06-14  Raja R Harinath  <rharinath@novell.com>
1185
1186         * jit-icalls.c (mono_helper_compile_generic_method): Update to
1187         removal of MonoGenericMethod.
1188
1189 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
1190
1191         * mini-exceptions.c: hooks for the exception events profiling API.
1192
1193 2007-06-14  Randolph Chung  <tausq@debian.org>
1194
1195         * Makefile.ma: Add hppa target.
1196         * mini-arch.h: Include mini-hppa.h
1197         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
1198         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
1199         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1200
1201 2007-06-14  Randolph Chung  <tausq@debian.org>
1202
1203         * inssel.brg: Add rules for "chained" compare-branch operations so that
1204         a single compare op can affect multiple branches.  Adjust cost for
1205         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
1206         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
1207         cost for some rules so that they can more easily be overridden by
1208         per-arch rules (with fixes from lupus).
1209         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1210
1211 2007-06-13  Randolph Chung  <tausq@debian.org>
1212
1213         * mini-ops.h: Reorder branch ops so that they match the order of the
1214         corresponding CEE_* ops.  The code expects them this way.
1215         Add new ops for HPPA target.
1216         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1217
1218 2007-06-13  Randolph Chung  <tausq@debian.org>
1219
1220         * mini-exceptions.c: Handle cases where the stack grows towards
1221         larger addresses.
1222         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1223
1224 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
1225
1226         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
1227         counter.
1228         * driver.c: explain where a non-matching corlib is found.
1229
1230 2007-06-13  Mark Probst  <mark.probst@gmail.com>
1231
1232         * mini.c (print_jit_stats): Output dynamic code allocation stats.
1233
1234 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
1235
1236         * mini-exceptions.c: Generate a method profile leave event during
1237         an exception to ensure that the profiler gets notified.
1238
1239 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
1242         branch.
1243
1244         * cpu-amd64.md: Add long_and/or/xor opcodes.
1245
1246 2007-06-06  Wade Berrier  <wberrier@novell.com>
1247
1248         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
1249         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
1250         length of instruction shr_imm (expected 8, got 10)
1251
1252 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
1253
1254         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
1255
1256 2007-06-06  Mark Probst  <mark.probst@gmail.com>
1257
1258         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
1259         MonoInternalHashTable again (fixed bug in the internal hash table
1260         code).
1261
1262 2007-06-06  Mark Probst  <mark.probst@gmail.com>
1263
1264         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
1265         Have to figure out what makes it crash the SWF regression.
1266
1267 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
1268
1269         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
1270
1271 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
1272
1273         * mini.c: optimize out the type check when storing null in a
1274         reference array.
1275
1276 2007-06-04  Mark Probst  <mark.probst@gmail.com>
1277
1278         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
1279         MonoInternalHashTable.
1280
1281 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
1282
1283         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
1284         signed integer methods.
1285
1286 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
1287
1288         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
1289         permanently since the current approach doesn't work.
1290
1291 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
1292
1293         * inssel.brg (stmt): Only call delegate->invoke_impl if 
1294         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
1295
1296 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
1297
1298         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
1299         the sreg2==rdx case.
1300         
1301         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
1302         account if it contains a rex prefix.
1303         (peephole_pass): Handle OP_FMOVE as well.
1304
1305 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
1306
1307         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
1308         as it causes regressions.
1309
1310 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
1311
1312         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
1313         static case as well.
1314
1315         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
1316
1317         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
1318         (mono_arch_get_this_arg_from_call): Ditto.
1319
1320         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
1321
1322         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
1323         invoke_impl field.
1324
1325         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
1326         (mono_arch_get_this_arg_from_call): Ditto.
1327
1328         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
1329         
1330         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
1331         try to create optimized invoke code and use that for further invocations. 
1332         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
1333
1334         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
1335
1336 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
1337
1338         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
1339         sealed classes or methods.
1340         *devirtualization.cs: tests for the new optimization
1341
1342 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
1343
1344         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
1345         by the update_volatile () function.
1346
1347 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
1348
1349         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
1350         require it.
1351
1352         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
1353
1354 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
1355
1356         * mini.c: Add configure checks for header files.
1357         * mini-x86.c: Add configure checks for header files.
1358         * trace.c: Add configure checks for header files.
1359         * aot-runtime.c: Add configure checks for header files.
1360         * aot-compiler.c: Add configure checks for header files.
1361         * driver.c: Add configure checks for header files.
1362         * mini-codegen.c: Add configure checks for header files.
1363         
1364         Code is contributed under MIT/X11 license.
1365
1366 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
1369         icompare_imm -128 + op_iclt. Fixes #81703.
1370
1371 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
1372
1373         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
1374
1375 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
1376
1377         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
1378         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
1379         so that all isinst checks now use "interface_bitmap".
1380
1381 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
1382
1383         * cpu-amd64.md (jmp): Fix a warning.
1384
1385         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
1386
1387         * basic.cs: Add new regression test.
1388
1389         * basic.cs: Remove test which is now in basic-long.cs.
1390
1391         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
1392
1393         * basic-long.cs: Add new test.
1394         
1395 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
1396
1397         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
1398
1399 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
1400
1401         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
1402
1403         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
1404         places.
1405         
1406         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
1407         throwing code a bit.
1408
1409         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
1410         the exception throwing code a bit.
1411
1412         * mini-x86.c (get_call_info): Allocate result from a mempool.
1413
1414 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
1415
1416         * aot-compiler.c (find_typespec_for_class): Fix the assert.
1417
1418         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
1419
1420         * mini.h (MonoCompile): Add 'token_info_hash' field.
1421
1422         * mini.c: Save token->method associations during compilation so the AOT 
1423         compiler can use it.
1424         
1425         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
1426         which reference generic classes and methods.
1427
1428 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
1431
1432         * aot-compiler.c (compile_method): Fix a typo in a comment.
1433
1434         * aot-runtime.c (decode_cached_class_info): Skip generic types.
1435
1436         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
1437         everything generic.
1438
1439         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
1440
1441 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
1442
1443         * mini.h (MonoCompile): Add 'args' field.
1444
1445         * mini.c (mono_compile_create_vars): Store variables representing the arguments
1446         into cfg->args.
1447
1448         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
1449
1450 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * mini.c (mono_compile_get_interface_var): Remove this unused function.
1453
1454         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
1455
1456         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
1457         opcodes for some opcodes.
1458
1459         * mini.h *.brg *.c: Use the new opcodes.
1460
1461 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
1462
1463         * mini.h: Bumped aot revision.
1464
1465         * inssel.brg: modified code generation of type checks for interfaces
1466         to use the new "MonoClass.interface_bitmap" instead of the old
1467         "MonoClass.interface_offsets".
1468
1469 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
1470
1471         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
1472
1473 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
1474
1475         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
1476         64 bit platforms.
1477
1478 2007-04-27  Neale Ferguson <neale@sinenomine.net>
1479
1480         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
1481
1482 2007-04-27  Wade Berrier  <wberrier@novell.com>
1483
1484         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
1485         mini.h) to fix build.
1486
1487 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
1488
1489         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
1490         
1491         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
1492         causes the corlib unit tests to fail.
1493
1494 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
1495
1496         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
1497
1498         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
1499
1500         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
1501         opcodes to the comparison relations.
1502
1503         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
1504         opcodes to their types.
1505         
1506         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
1507
1508         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
1509         it in cfg->arch.cinfo.
1510
1511         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
1512
1513         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
1514         cfg->cil_offset_to_bb.
1515
1516 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
1517
1518         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
1519         created becase of initlocals.
1520
1521 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
1522
1523         * mini-alpha.c cpu-alpha.md: More alpha port work from 
1524         Sergey Tikhonov <tsv@solvo.ru>.
1525
1526 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
1527
1528         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
1529
1530 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
1531
1532         * cpu-s390.md (break): Correct the length of break instruction.
1533
1534 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
1535
1536         * mini.c: fix a couple of soft-float issues and comments.
1537
1538 2007-04-15  Miguel de Icaza  <miguel@novell.com>
1539
1540         * trace.c (is_filenamechar): - is also a filename char.
1541
1542 2007-04-15  Neale Ferguson <neale@sinenomine.net>
1543
1544         * mini-s390.c: Correct checking for enum type in return value processing.
1545
1546 2007-04-14  Raja R Harinath  <rharinath@novell.com>
1547
1548         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
1549         (version.h): Makefile is in the build directory.
1550
1551 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
1552
1553         * mini-amd64.h: fix for assertion failure on Solaris/amd64
1554
1555 2007-04-11  Martin Baulig  <martin@ximian.com>
1556
1557         * mini.c (can_access_member): Fix handling of generic classes;
1558         fixes #81259.
1559
1560 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
1561
1562         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
1563
1564 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
1565
1566         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
1567
1568 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
1569
1570         * mini-codegen.c: make sure the right spill amount is
1571         used for fp or integer registers (fixes the float_sub_spill() on ppc).
1572
1573 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
1574
1575         * mini-ppc.c: fixes for the fp_branch_nan test.
1576
1577 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
1578
1579         * basic.cs: Comment out new test which still fails on ia64.
1580
1581 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
1582
1583         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
1584
1585 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
1586
1587         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
1588
1589 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
1590
1591         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
1592         on 64 bit machines. Fixes part of #80738.
1593
1594         * basic.cs: Add regression test.
1595
1596 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
1597
1598         * inssel.brg basic.cs: Revert previous change to fix build.
1599
1600         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
1601         platforms.
1602         
1603         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
1604
1605         * basic.cs: Add new regression test.
1606
1607 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
1608
1609         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
1610         many arguments.
1611
1612 2007-03-16  Neale Ferguson <neale@sinenomine.net>
1613
1614         * cpu-s390x.md: Correct length of break instruction.
1615
1616 2007-03-16  Neale Ferguson <neale@sinenomine.net>
1617
1618         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
1619         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
1620
1621 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
1622
1623         * *.c: Begin WIN64 port.
1624         * mini.c:  Use correct register in profiler.
1625         * mini-amd64.c: No inline assembly on Win64.
1626         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
1627         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
1628         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
1629         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
1630         mono_arch_ip_from_context for Win64.
1631         
1632         Contributed under MIT/X11 license.
1633
1634 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
1635
1636         * exceptions-amd64.c (seh_handler): Ditto.
1637
1638         * exceptions-x86.c (seh_handler): Fix a memory leak.
1639
1640 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
1641
1642         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
1643         mini-s390x.c: fixed peephole optimizations to deal
1644         correctly with 1 and 2 byte reload avoidance.
1645
1646 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
1647
1648         * cpu-s390.md, cpu-s390x.md: update localloc length.
1649
1650 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
1651
1652         * cpu-g4.md: added missing descriptions.
1653
1654 2007-03-14  Miguel de Icaza  <miguel@novell.com>
1655
1656         *  Makefile.am: Add support so the tail tests are not executed on
1657         PowerPC as that is a known limitation of the PowerPC port.
1658
1659 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
1660
1661         * runmdesc.bat:  Move to msvc directory.
1662         
1663 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
1664
1665         * runmdesc.bat:  Run executable that was produced by the current
1666         target and sent via an argument.
1667         
1668 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
1669
1670         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
1671         #81102.
1672
1673         * generics.2.cs: Add regression test.
1674
1675 2007-03-09  Wade berrier  <wberrier@novell.com>
1676
1677         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
1678
1679 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
1680
1681         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
1682         AOT code depends on this.
1683
1684 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
1685
1686         * mini.c: more precise tracking of types in the eval stack
1687         (part of fix for bug #81044).
1688
1689 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
1690
1691         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
1692
1693         * aot-compiler.c (encode_patch): Remove an obsolete comment.
1694
1695 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
1696
1697         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
1698
1699         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
1700
1701 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
1702
1703         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
1704         a pointer on 64 bit systems. Fixes #80190.
1705
1706         * iltests.il: Add new regression test.
1707
1708 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
1709
1710         * mini.c: inline a constant for Environment.IsRunningOnWindows.
1711
1712 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
1713
1714         * trace.c: Remove an erroneous alignemnt check when tracing.
1715           Fixes --trace on OSX86.
1716
1717 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
1718
1719         * mini-$(arch).h: initialize SP in context for all the archs.
1720
1721 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
1722
1723         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
1724         regressions in the thread tests.
1725
1726 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
1727
1728         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
1729         - fixed implementation of LOCALLOC opcode
1730         - implemented non-un compare for floats
1731         - code cleanup
1732         - implementation of FDIV and CKFINITE opcodes
1733         - fixes for latest mono updates
1734         - additional arch opcodes
1735
1736 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
1737
1738         * Makefile.am: simplify and merge rules for cross-compilation.
1739
1740 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
1741
1742         * local-propagation.c: Actually *apply* the fix for bug 80591...
1743
1744 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
1745
1746         * mini-exceptions.c: backuot part of the last change
1747         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
1748
1749 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
1750         * inssel.brg: Fix bug 59286.
1751
1752
1753 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
1754
1755         * mini-exceptions.c: patch from Zoltan to correctly check for
1756         stack boundaries (using the stack register, not the frame register),
1757         fixes bugs #80724, #79717.
1758
1759 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
1762         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
1763
1764         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
1765         presence of frame pointer elimination.
1766
1767 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
1768         
1769         * mini-x86.h: NetBSD UCONTEX_REG defines.
1770
1771 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
1772
1773         * inssel-amd64.brg: Fix amd64 build.
1774
1775 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
1776
1777         * mini.h: remove extern to workaround what looks likes gcc bug 26905
1778         on amd64.
1779
1780 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
1781
1782         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
1783         ends.
1784
1785         * mini-<ARCH>.c: Use mono_is_regsize_var ().
1786
1787 2007-01-30 Mark Mason <mason@broadcom.com>
1788
1789            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
1790            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
1791            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
1792            beginning support for CEE_JMP [not quite working yet]
1793            * tramp-mips.c: LMF handling now works
1794         
1795 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
1796
1797         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
1798
1799         * mini.h (NULLIFY_INS): New macro.
1800
1801 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
1802
1803         * mini.c: statistical profiler fix for windows, patch
1804         from Tor Lillqvist (tml@novell.com).
1805
1806 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
1807         * local-propagation.c: Fix bug 80591.
1808
1809 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
1810
1811         * Makefile.am: put back the --export-dynamic option as with
1812         the previous gmodule flags (thanks to Robert Jordan).
1813
1814 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
1815
1816         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
1817
1818         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
1819         simplify and speed up the local register allocator. Also rename some fields
1820         like iassign->vassign.
1821         
1822         * regalloc.c: Remove some functions which are no longer used since their
1823         inlined version is in mini-codegen.c.
1824         
1825         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
1826
1827         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
1828
1829 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
1830
1831         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
1832         narrowing. Fixes #80622.
1833
1834         * iltests.il: Add new regresssion test. 
1835
1836 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
1837
1838         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
1839         debug-debugger.c, debug-debugger.h: warning fixes.
1840         * driver.c: updated copyright year and made it fit in one line.
1841
1842 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
1843
1844         * aot-runtime.c: updated to use mono-dl instead of gmodule.
1845
1846 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
1847
1848         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
1849
1850         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
1851
1852         * iltests.il: Add new test for bug #80507.
1853
1854 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
1855
1856         * mini-arm.h: use soft-float also on vfp for now.
1857
1858 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
1859
1860         * mini.c: fix some more soft-float issues.
1861
1862 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
1863
1864         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
1865
1866 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
1867         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
1868         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
1869         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
1870
1871 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
1872
1873         * mini-arm.c: typo fix.
1874
1875 2007-01-23  Neale Ferguson <neale@sinenomine.net>
1876
1877         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
1878
1879 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
1880
1881         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
1882         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
1883
1884         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
1885
1886         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
1887
1888         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
1889         
1890         * inssel.brg: Fix a warning.
1891
1892         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
1893
1894         * abcremoval.c ssa.c ssapre.c: Update after this change.
1895         
1896         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
1897
1898         * dominators.c (df_set): Use mono_bitset_union_fast.    
1899
1900 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
1901
1902         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
1903         mini-codegen.c: reduce relocations and memory usage for the cpu
1904         description.
1905
1906 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
1907
1908         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
1909
1910         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
1911         to reduce their size.
1912
1913 2007-01-19 Mark Mason <mason@broadcom.com>
1914
1915         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
1916         * mini-mips.c: more configuration macros, support long conditional branches, additional
1917         asserts, fix epilog instrumentation.
1918         * mini-mips.h: use standard stack walk
1919         * cpu-mips.md: increase size of div, rem and conditional branches
1920         
1921 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
1922
1923         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
1924         to cpu spec data.
1925
1926 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
1927
1928         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
1929         (compile_method): Ditto.
1930
1931         * aot-runtime.c (decode_klass_info): Ditto.
1932
1933         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
1934         needed by the code generated by inssel.brg. Also fix a warning.
1935
1936 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
1937
1938         * mini.c: deal with enums that become genericinsts by
1939         being nested in a generic class (bug #79956).
1940
1941 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
1942
1943         * mini.c: match the generic definition to check for
1944         private access with generic types (bug #78431).
1945
1946 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
1947
1948         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
1949         to make life easier for people cross-compiling that insist on not
1950         using scratchbox.
1951
1952 2007-01-17 Mark Mason <mason@broadcom.com>
1953
1954         * inssel-long.brg: patch to deal with mips missing flags
1955         * inssel-long32-mips.brg: implement overflow checks
1956         * insset-mips.brg: implement overflow checks
1957         * mini-mips.h: implement conditional exception handling
1958         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
1959           Remove unused code, minor cleanups.
1960         * exceptions-mips.c: minor cleanups
1961         * mini-ops.h: add mips conditional exception ops
1962         * cpu-mips.md: add mips conditional exception ops
1963
1964         
1965 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
1966
1967         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
1968         to deal with mips missing of flags.
1969
1970 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
1971
1972         * exceptions-ppc.c: execute fault handlers.
1973
1974 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
1975
1976         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
1977
1978 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
1979
1980         * mini.c: handle also floating point values in initialize_array.
1981
1982 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
1983
1984         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
1985         array initialization and make it conditional on the intrins option.
1986
1987 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
1988
1989         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
1990         relocations and put the patch info names close to the enum definition.
1991
1992 2007-01-15 Mark Mason <mason@broadcom.com>
1993
1994         * basic.cs, exceptions.cs: break up large tests to increase debugability.
1995
1996 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
1997
1998         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
1999
2000 2007-01-12  Raja R Harinath  <rharinath@novell.com>
2001
2002         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
2003
2004 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
2005
2006         * Makefile.am: distribute the mips sources.
2007
2008 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
2009
2010         * mini-codegen.h: handle bug #80489 here, by excluding ecx
2011         directly.
2012
2013 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
2014
2015         * cpu-x86.md: back out for now as this triggers other regressions.
2016
2017 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
2018
2019         * cpu-x86.md: force src1 and dest regpair for long shift instructions
2020         to eax:edx, so ecx can't get allocated to them (bug #80489).
2021
2022 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
2023
2024         * mini.c, mini-exceptions.c: enabled running fault handlers
2025         (bug #80469).
2026
2027 2007-01-03  Miguel de Icaza  <miguel@novell.com>
2028
2029         * driver.c: If nothing fail, do not use the string "failed",
2030         because it makes it very annoying to view test result logs on the
2031         web. 
2032
2033 2006-12-30  Miguel de Icaza  <miguel@novell.com>
2034
2035         * debug-debugger.c (mono_debugger_main): Rename "main" to
2036         "main_method" to prevent a warning.
2037
2038         Remove a warning for unused field.
2039
2040 2006-12-28  Martin Baulig  <martin@ximian.com>
2041
2042         * debug-debugger.c
2043         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
2044
2045 2006-12-22  Martin Baulig  <martin@ximian.com>
2046
2047         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
2048         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
2049         seperate `.mdb_debug_info' section, so we can access it from the
2050         debugger even if the binary is stripped.
2051
2052         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
2053         from the `.mdb_debug_info' here to prevent the linker from
2054         removing that section.
2055
2056         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
2057         mdb-debug-info64.s.
2058
2059 2006-12-19  Robert Jordan  <robertj@gmx.net>
2060
2061         * mini-x86: enable the code to return small structures in
2062         registers for FreeBSD as well. Fixes bug #80278.
2063         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
2064
2065 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
2066
2067         * mini-x86.c: align the stack when calling the profiler
2068         function instrumenting the prolog (on OSX).
2069
2070 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
2071
2072         * mini.c: emit a break opcode where Debugger.Break () is called.
2073
2074 2006-12-13  Miguel de Icaza  <miguel@novell.com>
2075
2076         * mini.c (mono_method_to_ir): Provide useful information on this
2077         assert, to prevent others from debugging like I did.
2078
2079 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
2080
2081         * mini.c: enable code which was incorrectly commented
2082         (bug #80235).
2083
2084 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
2085
2086         * mini-x86.c: enable on OSX, too, the code to return small
2087         structures in registers.
2088
2089 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
2090
2091         * mini-x86.c: remove the use of the dynamic code manager here, too.
2092
2093 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
2094
2095         * mini.h, debug-debugger.c, tramp-*.c: fixed 
2096         mono_debugger_create_notification_function() to use
2097         mono_global_codeman_reserve () instead of a dynamic code manager.
2098
2099 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
2100
2101         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
2102         ves_array_element_address() jit icall and use a generated
2103         managed method instead (which is about 4 times faster for a rank 3
2104         array access).
2105
2106 2006-11-29  Mark Mason  <mason@broadcom.com>
2107
2108         * basic-calls.cs: additional tests for passing
2109         structures as function arguments.
2110
2111 2006-11-29  Mark Mason  <mason@broadcom.com>
2112
2113         * mini-mips.h: disable custom exception handling
2114         * mini-mips.c: throw/rethrow should use jalr to call
2115         exception stubs.  Fixed bug with passing structures
2116         by value. More support for tracing floating point
2117         functions.
2118
2119 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
2120
2121         * mini.c: fixed typo in the soft-float ldind.r4 handling
2122         (bug #80086).
2123
2124 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
2125
2126         * mini.c, mini.h, driver.c: added --runtime command line
2127         option to select a different runtime than the autodetected one.
2128         * jit.h: added API for embedders to initialize with a specific
2129         runtime version.
2130
2131 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
2132
2133         * mini.c: handle also boxing of r4 values (bug #80024).
2134
2135 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
2136
2137         * mini-ppc.c: force indirect calls until we reserve
2138         enough address space for all the generated code.
2139
2140 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
2141
2142         * exceptions-arm.c: workaround bugs in the libc definition
2143         of struct ucontext.
2144
2145 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
2146
2147         * inssel.brg: fixes from me and Mark Mason.
2148
2149 2006-11-23  Dick Porter  <dick@ximian.com>
2150
2151         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
2152         semaphore display now we've fixed the initial value
2153
2154 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
2155
2156         * inssel.brg: partially revert the last change to fix the build.
2157
2158 2006-11-21  Mark Mason  <mason@broadcom.com>
2159
2160         * inssel.brg: Add and use compare-and-branch macros to support
2161         architectures that do not have condition code registers (ie. MIPS).
2162         * *-mips.{c,brg,md}: Fix copyright statements
2163
2164 2006-11-20  Mark Mason  <mason@broadcom.com>
2165
2166         * Makefile.am: remove mini-codegen.c from list of MIPS sources
2167         * mini.c: Allow GET_CONTEXT to be specified by the arch port
2168         * mini.h: Added declaration for mono_print_ins()
2169         * mini-codegen.c: added ins_spec initializer for MIPS
2170         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
2171         vreg to be virtual and hreg to be non-virtual.
2172         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
2173         is not yet working/implemented correctly.
2174         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
2175         non-static, fixup calls to print_ins() from other parts in the file.
2176
2177 2006-11-20  Mark Mason  <mason@broadcom.com>
2178
2179         * basic-calls.cs: added tests for passing structures as arguments
2180         to calls.
2181
2182 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
2183
2184         * inssel-long32.brg: optimize signed division by power of two.
2185
2186 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
2187
2188         * mini-arm.c: added support for interworking with thumb code
2189         (mono must be still be built using the ARM instruction encoding).
2190
2191 2006-11-19  Miguel de Icaza  <miguel@novell.com>
2192
2193         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
2194         verifier has different rules for it.   Fixes a few verifier issues
2195         in the test suite.
2196
2197         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
2198         at the end, so people know what happened.
2199
2200 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
2201
2202         * brach-opts.c: in optimize_exception_target() make sure we
2203         are in a catch clause (fixes bug #79871).
2204
2205 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
2206
2207         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
2208         more soft-float support fixes.
2209
2210 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
2211
2212         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
2213         that are passed half on the stack and half in registers.
2214
2215 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
2216
2217         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
2218         more mips integration work from Mark E Mason 
2219         <mark.e.mason@broadcom.com>.
2220
2221 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
2222
2223         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
2224         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
2225         tramp-mips.c: added sources for the mips port, not
2226         integrated in the build yet. Contributed by
2227         Mark E Mason <mark.e.mason@broadcom.com>.
2228
2229 2006-11-14  Neale Ferguson <neale@sinenomine.net>
2230
2231         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
2232
2233 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
2234
2235         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
2236         put the soft-float rules in its own file since it seems to
2237         break s390 compilation.
2238
2239 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
2240
2241         * mini-arm.c: fixed wrnings.
2242
2243 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
2244
2245         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
2246         inssel-arm.brg: ARM support for soft-float.
2247
2248 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
2249
2250         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
2251         loads and stores of 32 bit fp values.
2252
2253 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
2254
2255         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
2256
2257         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
2258         works. Fixes #79852 and #79463.
2259
2260 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
2261
2262         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
2263         more soft-float support WIP and fixes.
2264
2265 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
2266
2267         * mini-arm.c: some VFP updates.
2268
2269 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
2270
2271         * mini-exceptions.c: 0 is a valid local var offset in some
2272         architectures, don't assert (bug #78508).
2273
2274 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
2275
2276         * exceptions-arm.c: fixed off by one error in stack walk code.
2277
2278 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
2279
2280         * mini.h, mini.c: more precise tracking of type load exceptions.
2281
2282 2006-11-03  Robert Jordan  <robertj@gmx.net>
2283
2284         * Makefile.am: [WIN32] Add monow.exe target.
2285         * driver.c: [WIN32] Don't detach the console when debugging.
2286         Fixes bug #79797.
2287         
2288 2006-10-30  Miguel de Icaza  <miguel@novell.com>
2289
2290         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
2291
2292 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
2293
2294         * aot-compiler.c (emit_method_info): Add a case missed earlier.
2295
2296         * driver.c (mini_regression): Fix --regression with AOT.
2297
2298         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
2299
2300 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
2301
2302         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
2303
2304         * mini-sparc.h: Don't use sigaction on sparc/linux.
2305
2306         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
2307
2308         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
2309
2310         * mini-exceptions.c: Add proper include files for getpid ().
2311
2312 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
2313
2314         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
2315         address instead of a MonoJitInfo* to avoid decoding the exception info for the
2316         method.
2317
2318         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
2319         name cache to reduce its size.
2320
2321         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2322
2323 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
2324
2325         * mini-x86.c: Save/restore the current LMF structure more efficiently using
2326         the mono_lmf TLS variable.
2327
2328         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
2329         trampoline lmf frames.  
2330
2331         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
2332
2333 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
2334
2335         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
2336         the mono_lmf TLS variable.
2337
2338         * mini-exceptions.c: Access the LMF structure through accessors.
2339
2340         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
2341         variable instead of in jit_tls->lmf.
2342
2343         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
2344         
2345         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
2346         trampoline lmf frames.
2347
2348         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
2349
2350 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
2351
2352        * mini.c trace.c mini-x86.c: Revert these too.
2353         
2354        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
2355        signature change.
2356
2357 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
2358
2359         * genmdesc.c: removed now dead code.
2360
2361 2006-10-09  Robert Jordan <robertj@gmx.net>
2362
2363         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
2364
2365 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
2366
2367         * mini.h: do not leave gaps in the opcode values.
2368
2369 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
2370
2371         * jit-icalls.h: flag functions as internal here, too.
2372
2373 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
2374
2375         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
2376         functions with the internal attribute.
2377
2378 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
2379
2380         * aot-compiler.c: fclose the file descriptor in the profile read loop.
2381
2382 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
2383
2384         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
2385         for soft-float.
2386
2387 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
2390         tail calls as on other platforms.
2391
2392         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
2393
2394         * iltests.il: Add a few tailcall tests.
2395
2396 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
2397
2398         * driver.c: fix loop for old compilers (bug #79521).
2399
2400 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
2401
2402         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
2403
2404         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
2405
2406         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
2407         metadata without any code.
2408
2409         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
2410         more precise debugging information using gdb.
2411
2412 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
2413
2414         * inssel-ia64.brg: Make the helper methods static.
2415
2416 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
2417
2418         * inssel-x86.brg: make the helper methods static.
2419
2420 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
2421
2422         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
2423
2424 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
2425
2426         * mini.c: updates for monoburg changes.
2427         * inssel.brg: make a few helper functions static as they should.
2428
2429 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
2430
2431         * Makefile.am: Move mini-codegen.c to common_sources.
2432
2433 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
2434
2435         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
2436         instructions.
2437         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
2438         mini-ppc.h: port to use the common local register allocator.
2439
2440 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
2441
2442         * mini.h: Remove the comment too then.
2443
2444 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
2445
2446         * mini.h: put back backend.data which is to be used shortly and
2447         doesn't increase the size of MonoInst. If any 64 bit arch aligned
2448         pointers on 4 byte boundaries it'd have much bigger issues running
2449         and you can ifdef it out anyway.
2450
2451 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
2452
2453         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
2454         MonoInst size by 4 bytes on 64 bit machines.
2455
2456 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
2457
2458         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
2459         replacement with more meaningful field names. Arch maintainers, please
2460         check the assigned names are good enough for your arch.
2461
2462 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
2463
2464         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
2465         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
2466
2467 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
2468
2469         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
2470         relocations and memory requirements, put the optimization flags
2471         definitions in their own file.
2472
2473 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
2474
2475         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
2476
2477         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
2478
2479 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
2480
2481         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
2482
2483 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
2484
2485         * inssel.brg: use the correct function to get the size of an item
2486         in an array, given an element class.
2487         * aot-compiler.c: do not access class->class_size directly.
2488
2489 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
2490
2491         * mini.h, debug-mini.c: added a debugging function to print
2492         info about local variables and arguments in a jitted method.
2493
2494 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
2495
2496         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
2497
2498         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
2499
2500 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
2501
2502         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
2503         inner and outer loops when passing vtypes.
2504
2505 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
2506
2507         * mini-ppc.c: take into account the cpu errata for cache flushing
2508         which caused some random errors (bug #79381).
2509
2510 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
2511
2512         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
2513         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
2514
2515 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
2516
2517         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
2518         loaded.
2519
2520         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
2521         freebsd ports tree.
2522
2523         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
2524         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
2525
2526         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
2527         displacement.
2528
2529 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
2530
2531         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
2532
2533 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
2534
2535         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
2536         macro does not have to be changed during debugging.
2537
2538         * 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>.
2539
2540         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
2541
2542         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
2543         
2544         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
2545         MONO_ARCH_NO_EMULATE_MUL is defined.
2546
2547         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
2548
2549         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
2550
2551         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
2552
2553         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
2554         
2555 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
2556
2557         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
2558         stuff to mini-exceptions.c where it is used.
2559
2560         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
2561         setup code, the real one is in mini-exceptions.c.
2562
2563         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
2564         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
2565         some changes from the freebsd ports tree.
2566
2567         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
2568         constants.
2569         
2570         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
2571
2572 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
2573
2574         * mini.c: on Linux, check for /proc to be mounted
2575         (bug# 79351, novell bug#201204).
2576
2577 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
2578
2579         * mini.c: handle cases where pthread_attr_getstack() behaves
2580         incorrectly (bug #78096).
2581
2582 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
2583
2584         * mini-arm.c: support larger stack frames (bug #79272).
2585
2586 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
2587
2588         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
2589
2590         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
2591         tokens.
2592
2593         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
2594         mono_class_from_name () to find a class from its name.
2595
2596         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
2597
2598 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
2599
2600         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
2601
2602 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
2603
2604         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
2605
2606 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
2607
2608         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
2609         callinfo->trampoline.
2610
2611         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
2612         fixes #79271.
2613         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
2614         future.
2615
2616 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
2617
2618         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
2619
2620 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
2621
2622         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
2623         stats.method_trampolines, it is already done by the generic trampoline code.
2624
2625         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
2626         
2627 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
2628
2629         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
2630
2631         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
2632
2633         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
2634
2635         * mini.c (print_jit_stats): Print mscorlib mempool size too.
2636         
2637         * mini.c (print_jit_stats): Print new stats.
2638
2639         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
2640
2641 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
2642
2643         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
2644         Address on two dimensional arrays. Fixes #78729.
2645
2646         * mini.h (MonoCompile): Add a 'skip_visibility' field.
2647
2648         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
2649         a method.
2650
2651         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
2652
2653         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
2654         #79130.
2655         
2656         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
2657         a race condition.
2658         (mini_get_ldelema_ins): Ditto.
2659
2660 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
2663         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
2664         Fixes #79213.
2665
2666 2006-08-29 Neale Ferguson <neale@sinenomine.net>
2667
2668         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
2669         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
2670
2671         * exceptions-s390x.c: Cosmetic change.
2672
2673         * tramp-s390.c: Fix warning.
2674
2675         * cpu-s390.md: Correct length of mul_imm.
2676
2677 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
2678
2679         * aot-compiler.c: added binary writer with ELF backend
2680         implementation (only on Linux/x86 for now).
2681
2682 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
2683
2684         * Makefile.am: Don't run net 2.0 AOT tests.
2685
2686         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
2687         (mono_compile_assembly): Skip net 2.0 assemblies as well.
2688
2689         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
2690
2691 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
2692
2693         * aot-compiler.c: simplified and refactored the asm-writing code
2694         to allow different backends.
2695
2696 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
2697
2698         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
2699
2700         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
2701         little. Share patches of type TYPE_FROM_HANDLE as well.
2702
2703         * mini.c (mono_patch_info_equal): New helper function.
2704         (mono_patch_info_hash): Ditto.
2705
2706         * aot-compiler.c (emit_method_code): Fix s390 build.
2707
2708         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
2709         is not handled because it is stored as a flag and not as a type ctor. Fixes
2710         #79016.
2711
2712 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
2713
2714         * aot-compiler.c: Fix computation of GOT slot statistics.
2715         
2716         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
2717         Also remove support for not PIC AOT.
2718
2719         * mini.h: Bump AOT file format version.
2720
2721         * objects.cs: Add a test for #78990.
2722
2723         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
2724         (peter.dettman@iinet.net.au). Fixes #79087.
2725
2726         * basic-long.cs: Add a test for the above.
2727
2728 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
2729
2730         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
2731         
2732         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
2733         code somewhat.
2734
2735 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
2736
2737         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
2738         exceptions.
2739
2740 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
2741
2742         * mini.c: Don't verify COM proxy invoke calls
2743         
2744
2745 2006-08-10  Dick Porter  <dick@ximian.com>
2746
2747         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
2748         which process is holding semaphores locked.
2749
2750 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
2751
2752         * mini-ia64.c mini-amd64.c: Fix #79027.
2753
2754         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
2755
2756         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
2757
2758         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
2759         implicit arguments in a vararg call. Fixes #79027.
2760
2761 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
2762
2763         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
2764         (mono_get_array_new_va_signature): Ditto.
2765
2766 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
2767
2768         * aot-runtime.c: Call init_plt lazily.
2769
2770         * inssel-long.brg: Fix unsigned long->int conversion.
2771
2772         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
2773
2774         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
2775         that most data is now in the .rss/.data section.
2776
2777 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
2778
2779         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
2780
2781         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
2782
2783         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
2784
2785         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
2786
2787         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
2788         virtual call. Fixes #79010.
2789
2790         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
2791         and use the result as the this argument in the real call.
2792
2793         * generics.2.cs: Add a new test for #79010.
2794         
2795 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
2796
2797         * mini-x86.c: Fix a warning.
2798
2799         * aot-compiler.c: Add a bunch of statistics.
2800
2801         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
2802
2803 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
2804
2805         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
2806
2807 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
2808
2809         * 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>.
2810
2811 2006-07-13  Miguel de Icaza  <miguel@novell.com>
2812
2813         * mini.c (mono_method_to_ir): Obtain the original method in the
2814         CIL stream and use this to perform validation.
2815
2816         Fixed: #78816
2817
2818 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
2819
2820         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
2821         (mono_arch_call_opcode): Ditto.
2822
2823         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
2824         #78826.
2825
2826         * mini.c (mono_patch_info_dup_mp): New helper function.
2827         
2828         * aot-compiler.c (compile_method): Fix some of the memory allocated during
2829         compilation. Fixes #78827.
2830
2831 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
2832
2833         * declsec.c: Use original security informations for
2834           MONO_WRAPPER_MANAGED_TO_MANAGED.
2835
2836 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
2837
2838         * mini.c: Allow Com Interop methods/classes and
2839         don't verify COM wrapper calls
2840         
2841
2842 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
2843
2844         * inssel-long32.brg: Fix long->i4 checked conversion.
2845
2846         * exceptions.cs: Add a test for the above.
2847
2848 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
2849
2850         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
2851
2852         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
2853         leaks.
2854
2855         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
2856         #78775.
2857
2858 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
2859
2860         * mini.c: Fix solaris/x86 exception handling.
2861
2862         * Makefile.am: Get rid of $(ICU_LIBS).
2863
2864 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
2865
2866         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
2867         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
2868         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
2869
2870         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
2871
2872         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
2873         this function causes a SIGSEGV.
2874
2875 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
2876
2877         * mini.c: Remove unused solaris/x86 includes.
2878
2879 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
2880
2881         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
2882
2883 2006-06-20  Jb Evain  <jbevain@gmail.com>
2884
2885         * cpu-g4.md: fix max length of start_handler instruction.
2886
2887 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
2888         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
2889
2890 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
2891         * ssa.c: Fixed bug 78653 for SSA based deadce.
2892         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
2893         MonoInst.flags, used in SSA based deadce.
2894         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
2895         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
2896
2897 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
2898
2899         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
2900         it can end up using non executable memory on ppc64 systems
2901         running ppc32 userspace (fix from Johannes Berg).
2902
2903 2006-06-14  Dick Porter  <dick@ximian.com>
2904
2905         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
2906         4.1.1
2907
2908 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
2909         * mini.c: Made so that inline is locally disabled if it would
2910         trigger a .cctor, because too many apps depend on this behavior
2911         (which seems to be also the one of the MS CLR).
2912
2913 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
2914
2915         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
2916         No idea why this worked before.
2917
2918         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
2919         which branch to outer exception clauses since they could skip the
2920         inner finally clauses. Fixes #78633.
2921
2922         * exceptions.cs: Add a test for the above.
2923
2924         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
2925         Fixes #78629.
2926
2927         * iltests.il: Add a test for the above.
2928
2929 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
2930
2931         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
2932         after the end of a try bblock, to prevent asserts in mini_method_compile ().
2933
2934         * iltests.il: Add a test for the above.
2935
2936 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
2937
2938         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
2939         
2940         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
2941         methods as instrinsics.
2942
2943 2006-06-09  Wade Berrier <wberrier@novell.com>
2944
2945         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
2946         (simple-cee-ops.h ssapre-mini-ops.h)
2947
2948 2006-06-09  Neale Ferguson <neale@sinenomine.net>
2949
2950         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
2951         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
2952         instruction).
2953         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
2954         * cpu-s390x.md: Fix max. length values for a couple of instructions.
2955
2956 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
2957
2958         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
2959
2960 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
2961
2962         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
2963         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
2964         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
2965         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
2966         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
2967         of opcodes, so that bug 78549 should not happen again.
2968         * ssapre.c: Updated to use the renamed files.
2969
2970 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
2971
2972         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
2973         in OP_ATOMIC_EXCHANGE_I4.
2974
2975 2006-06-07  Wade Berrier <wberrier@novell.com>
2976
2977         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
2978         in mono_debugger_create_notification_function)
2979
2980 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
2981
2982         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
2983         
2984         * mini.c (type_from_stack_type): Disable some changes which do not
2985         seem to work.
2986
2987         * driver.c: Reenable opts.
2988
2989         * mini.h (MonoStackSlot): New structure to keep track of the verification state
2990         of the evaluation stack.
2991         
2992         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
2993         evaluation stack trace at entry to the bblock.
2994
2995         * mini.c (merge_stacks): New function to perform verification of stack merges.
2996         Turned off by default.
2997
2998         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
2999         STACK_MP.
3000         
3001 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
3002
3003         * local-propagation.c: Fixed bug 78549.
3004
3005 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
3006
3007         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
3008
3009 2006-06-02  Miguel de Icaza  <miguel@novell.com>
3010
3011         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
3012         tramp-arm.c, tramp-ia64.c
3013         (mono_debugger_create_notification_function): Update signature to
3014         new signature and use new protocol for creating the notification
3015         function.  
3016
3017         Should fix the build.
3018
3019 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
3020
3021         * exceptions-ppc.c (mono_jit_walk_stack)
3022         (ves_icall_get_frame_info): Fix the build
3023
3024 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
3025
3026         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
3027
3028 2006-05-31  Raja R Harinath  <rharinath@novell.com>
3029
3030         * il2tests.2.il: New file for generics CIL tests.  Add test for
3031         #78019.
3032         * Makefile.am: Update.
3033
3034         Fix #78019
3035         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
3036         to nullable types.
3037
3038 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
3039
3040         * aliasing.c: Fixed bug 78311.
3041
3042 2006-05-29  Martin Baulig  <martin@ximian.com>
3043
3044         * mini-exceptions.c (mono_find_jit_info): When computing the
3045         native offset, check whether we're actually inside the method's
3046         code; call mono_debug_print_stack_frame() to format the frame.
3047         (ves_icall_System_Exception_get_trace): Call
3048         mono_debug_print_stack_frame() to format the stack frame.
3049         (ves_icall_get_trace): Update to the new debugging API.
3050         (mono_jit_walk_stack_from_ctx): Likewise.
3051         (ves_icall_get_frame_info): Likewise.
3052
3053         * mini.c (get_method_from_ip): Use the new debugging API.
3054         (mono_print_method_from_ip): Likewise.
3055
3056         * exceptions-ppc.c
3057         (mono_jit_walk_stack): Use the new debugging API.
3058         (ves_icall_get_frame_info): Likewise.   
3059
3060 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
3061
3062         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
3063
3064 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
3065
3066         * mini.c: Added "limitator" to inline for debugging.
3067
3068 2006-05-24  Martin Baulig  <martin@ximian.com>
3069
3070         * debug-debugger.c (mono_debugger_init): Create a private,
3071         malloc()-based code manager for the notification function and
3072         intentionally leak it on exit.  This fixes the crash-on-exit race
3073         condition.
3074
3075         * tramp-amd64.c
3076         (mono_debugger_create_notification_function): Added
3077         `MonoCodeManager *' argument.
3078
3079         * tramp-x86.c
3080         (mono_debugger_create_notification_function): Added
3081         `MonoCodeManager *' argument.
3082
3083 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
3084
3085         * aliasing.c: Fixed 64 bit issue.
3086         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
3087         default since all known bugs are fixed (one more time!).
3088
3089 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
3090
3091         * mini.c: write barrier support.
3092
3093 2006-05-23  Martin Baulig  <martin@ximian.com>
3094
3095         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
3096         check at the top of the file.
3097
3098 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
3099
3100         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
3101         reverting changes without reason and without changelog entries.
3102
3103 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
3104
3105         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
3106         to a few opcodes. Fixes #78439.
3107
3108         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
3109         consistency with other archs.
3110
3111         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
3112
3113 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
3114
3115         * debug-debugger.c: fix the build.
3116
3117 2006-05-17  Martin Baulig  <martin@ximian.com>
3118
3119         * debug-debugger.c
3120         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
3121         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
3122         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
3123         (debugger_attach): Call GC_mono_debugger_add_all_threads().
3124
3125 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
3126
3127         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
3128
3129 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
3130
3131         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
3132         MONO_TYPE_GENERICINST.
3133         
3134         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
3135         MONO_TYPE_GENERICINST.
3136
3137 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
3138
3139         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
3140         #78325.
3141
3142 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
3143
3144         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
3145         mempool.
3146         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
3147
3148 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
3149
3150         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
3151         mono_trace_cleanup ().
3152
3153         * iltests.il: Fix problem with the newly added test.
3154
3155         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
3156         due to register constraints, free up the previous hreg. Fixes #78314.
3157
3158         * iltests.il: Add new test for #78314.  
3159
3160         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
3161         Interlocked.Add. Fixes #78312.
3162
3163         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
3164         
3165 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
3166
3167         * inssel.brg (mini_emit_virtual_call): Fix a warning.
3168
3169 2006-05-05  Martin Baulig  <martin@ximian.com>
3170
3171         * debug-mini.c (mono_debug_open_block): New method.
3172
3173         * mini-amd64.c
3174         (mono_arch_output_basic_block): Call mono_debug_open_block() at
3175         the beginning of each basic block.
3176
3177         * mini-x86.c
3178         (mono_arch_output_basic_block): Call mono_debug_open_block() at
3179         the beginning of each basic block.
3180
3181 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
3182
3183         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
3184         default until I understand why they break the build on amd64.
3185
3186 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
3187
3188         * mini.c (mini_cleanup): Call mono_cleanup ().
3189
3190         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
3191         errors.
3192
3193 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
3194
3195         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
3196         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
3197         default since all known bugs are fixed, and I cannot reproduce bug
3198         77944... I'm asking Matt Hargett to test again after this commit.
3199
3200 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
3201
3202         * mini-codegen.c: Fixed typo that thrashed inline.
3203
3204 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
3205
3206         * dominators.c (compute_dominators): Avoid using a worklist since
3207         it is not correct in some cases. Instead, iterate over all bblocks as
3208         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
3209
3210 2006-04-28  Miguel de Icaza  <miguel@novell.com>
3211
3212         * mini.c (mono_jit_compile_method_inner): Use
3213         mono_prepare_exception_from_error that resets the value
3214         internally.
3215
3216 2006-04-27  Miguel de Icaza  <miguel@novell.com>
3217
3218         * mini.c: Move the mini_loader_error_to_exception to metadata. 
3219         
3220 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
3221
3222         * aliasing.c: Fixed bug 78210.
3223
3224 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
3225
3226         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
3227         default until all their problems (or the ones they trigger) are fixed.
3228
3229 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
3230
3231         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
3232         
3233         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
3234         as loaded only after resolving patches since that could invoke the same method.
3235
3236         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
3237
3238         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
3239         functions.
3240
3241         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
3242         AOT loader.
3243
3244         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
3245         stack.
3246
3247         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
3248         made from AOT code through the PLT table.
3249
3250         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
3251         holding the plt offset when a call is made to the aot plt trampoline.
3252         
3253 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
3254
3255         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
3256         amd64 AOT support.
3257
3258         * Makefile.am (common_sources): Fix build breakage.
3259
3260         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
3261         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
3262         intra-assembly calls if possible.
3263         
3264         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
3265
3266         * mini-trampolines.c: Handle PLT entries.
3267
3268         * mini.c: Avoid creating a GOT var for calls.
3269
3270         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
3271         from mscorlib code.
3272
3273         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
3274         from mscorlib code.
3275
3276         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
3277         AOT code.       
3278
3279         * mini.h: Bump AOT file format version.
3280         
3281         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
3282         covers more cases.
3283
3284 2006-04-25  Martin Baulig  <martin@ximian.com>
3285
3286         * driver.c: Disable copyprop, consprop and inline when running
3287         inside the debugger.
3288
3289 2006-04-25  Martin Baulig  <martin@ximian.com>
3290
3291         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
3292         with `get_current_thread' and added `detach'.
3293         (MonoDebuggerMetadataInfo): Added `thread_size',
3294         `thread_tid_offset', `thread_stack_ptr_offset' and
3295         `thread_end_stack_offset'.
3296
3297 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
3298
3299         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
3300         aot-runtime.c.
3301
3302         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
3303         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
3304
3305         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
3306
3307         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
3308
3309         * aot.c: Add support for ADJUSTED_IID.  
3310
3311 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
3312
3313         * aot.c (emit_method_order): Don't align method_order_end.
3314
3315         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
3316         the interface ID changes.
3317
3318 2006-04-21  Dick Porter  <dick@ximian.com>
3319
3320         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
3321         cleaning up a thread.  Fixes the new part of bug 77470.
3322
3323 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
3324
3325         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
3326         to managed wrapper.
3327                      
3328 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
3329
3330         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
3331         
3332         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
3333         SIGSEGV. Fixes #78072.
3334
3335         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
3336         unregister our SIGABRT handler.
3337
3338 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
3339
3340         * mini.c: Disabled inline where it can alter the call stack in a
3341         way visible from managed code.
3342         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
3343         default.
3344
3345 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
3346
3347         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
3348         on other platforms. Fixes #78089.
3349
3350 2006-04-13  Martin Baulig  <martin@ximian.com>
3351
3352         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
3353         determine whether we're inside the debugger.
3354
3355         * debug-debugger.h
3356         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
3357
3358 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
3359
3360         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
3361         handler clauses. Fixes #78024.
3362
3363         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
3364         in the CALL_MEMBASE opcodes. Fixes #78088.
3365         (mono_arch_get_vcall_slot_addr): Ditto.
3366
3367 2006-04-10  Martin Baulig  <martin@ximian.com>
3368
3369         * debug-debugger.c: The thread handling code has now been moved
3370         into ../metadata/threads.c.
3371
3372 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
3373
3374         * driver.c (mono_main): Fix --with-gc=none build.
3375
3376         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
3377         (mono_spillvar_offset_float): Ditto.
3378         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
3379         hreg, not when its !global, since on ia64, there is a third category: stacked
3380         registers.      
3381
3382 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
3383
3384         * mini.c: set MonoInst->klass for load field address and a few other
3385         places.
3386
3387 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
3388
3389         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
3390
3391 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
3392
3393         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
3394         the branch opt changes.
3395
3396 2006-04-06  Dick Porter  <dick@ximian.com>
3397
3398         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
3399         
3400         * wapihandles.c (mini_wapi_seminfo): 
3401         * driver.c (mono_main): Add semaphore info option
3402
3403 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
3404
3405         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
3406         branch optimization changes. Fixes #78009.
3407
3408 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
3409
3410         * mini.c: ignore accessibility of methods in managed->native wrappers.
3411
3412 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
3413
3414         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
3415         
3416         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
3417
3418 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * mini.c: Modify the branch optimizations to preserve the invariant that
3421         the entries inside the in_bb and out_bb arrays are unique.
3422         (mono_unlink_bblock): Avoid creation of new arrays.
3423
3424 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
3425
3426         * mini.c (mono_unlink_bblock): Fix regression caused by previous
3427         change (#77992).
3428
3429 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
3430
3431         * mini.c (optimize_branches): Remove the "optimizations" in
3432         the cbranch1/cbranch2 -> branch cases which were causing several
3433         problems in the past. Fixes #77986.
3434
3435 2006-03-31  Chris Toshok  <toshok@ximian.com>
3436
3437         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
3438         default optimizations :(
3439
3440 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
3441
3442         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
3443         branch.
3444
3445 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
3446
3447         * local-propagation.c: Added comments to structs and removed
3448         "Mono" prefixes from local tree mover types.
3449
3450 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
3451
3452         * Makefile.am (arch_sources): Define this for each architecture so 
3453         libmono_la_SOURCES is defined in one place.
3454
3455 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
3456
3457         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
3458         from handles/.
3459
3460 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
3461
3462         * driver.c: print the GC name supplied by configure.
3463
3464 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
3465
3466         * local-propagation.c: Added tree mover, and moved here all the
3467         local propagation code from mini.c
3468         * mini.c: Added support for treeprop, and moved all the local
3469         propagation code to local-propagation.c
3470         * mini.h: Added support for treeprop
3471         * driver.c: Added support for treeprop, enabled consprop, copyprop,
3472         treeprop, inline and deadce by default
3473         * Makefile.am: Added local-propagation.c
3474
3475 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
3476
3477         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
3478
3479 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
3480
3481         * debug-debugger.c: make it compile without the Boehm GC.
3482
3483 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
3484
3485         * mini.c: fixed issue with mismatch when an icall is registered
3486         with multiple names but same address.
3487
3488 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
3489
3490         * declsec.c, mini-exceptions.c: use write barrier to set reference
3491         fields of managed objects.
3492
3493 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
3494
3495         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
3496         (can_access_internals): Fix a warning.
3497
3498         * mini.c (print_method_from_ip): Rename this to 
3499         mono_print_method_from_ip so it gets exported.
3500
3501         * trace.c: Deal with strings inside StringBuilder's containing garbage
3502         and fix memory leaks. Fixes #77848.
3503
3504 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
3505
3506         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
3507         fixes #77787.
3508
3509 2006-03-16 Neale Ferguson <neale@sinenomine.net>
3510         
3511         * mini-s390.c: Remove OP_X86_TEST_NULL.
3512
3513 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
3514
3515         * mini.c: use the correct GetHashCode() for the moving collector.
3516
3517 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
3518
3519         * liveness.c: Regalloc spill cost tuning.
3520
3521 2006-03-15 Neale Ferguson <neale@sinenomine.net>
3522         
3523         * mini-s390x.h: Correct S390_LONG macro.
3524
3525         * mini-s390x.c: Cleanup unused code.
3526
3527 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
3528
3529         * jit-icalls.h: New file.
3530
3531         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
3532         icalls and include that instead of including jit-icalls.c.
3533
3534         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
3535         OP_X86 opcodes.
3536
3537 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
3538
3539         * mini.c: when checking for member accessibility, also check for
3540         friend assemblies and for explicit interface implementations.
3541
3542 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
3543
3544         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
3545
3546         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
3547
3548         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
3549         common cases are done first.    
3550
3551         * mini-ops.h: Only define platform specific opcodes on the given platform.
3552
3553         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
3554         branch.
3555         
3556 2006-03-14  Martin Baulig  <martin@ximian.com>
3557
3558         Revert Paolo's change from r57348:
3559
3560         * mini.h: don't use gboolean for bitfields.
3561         * mini.c: verifier changes for fields and methods accessibility.
3562
3563 2006-03-13  Neale Ferguson <neale@sinenomine.net>
3564
3565         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
3566
3567         * mini-s390x.c: Fix conv_r_un.
3568
3569         * cpu-s390, cpu-s390x.md: Fix lengths.
3570
3571 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
3572
3573         * mini.c: nested types have access to all the nesting
3574         levels, not just the enclosing types.
3575
3576 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
3577
3578         * mini.c: added a few more verification checks.
3579
3580 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
3581
3582         * liveness.c: Merge optimizations from the linear-il branch.
3583
3584 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
3585
3586         * mini-ia64.c (emit_call): Add a comment.
3587
3588         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
3589
3590         * tramp-ia64.c: Fix some warnings.
3591
3592 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
3593
3594         * mini.h: don't use gboolean for bitfields.
3595         * mini.c: verifier changes for fields and methods accessibility.
3596
3597 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
3598
3599         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
3600         lazy icall wrapper changes.
3601
3602         * dominators.c: Replace all the dominator algorithms with faster
3603         ones from the linear-il branch.
3604
3605         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
3606         the mempool.
3607
3608         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
3609         common cases are done first.
3610
3611         * mini-amd64.c: Fix some warnings.
3612
3613         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
3614         from the mempool.
3615
3616         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
3617         added code.
3618
3619         * mini.h: Add a missing prototype.
3620
3621 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
3622
3623         * mini.c: Compile icall wrappers lazily.
3624
3625         * mini-codegen.c: Use printf instead of g_print since its much faster.
3626
3627         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
3628         function.
3629
3630         * mini.c (optimize_branches): Cache the negative result from 
3631         remove_block_if_useless ().
3632
3633         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
3634         Also fix some bblock linking issues.
3635
3636         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
3637         assembly files.
3638
3639         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
3640
3641         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
3642         accessed fields first, for better cache behavior.
3643         
3644 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
3645
3646         * mini.c: speedup IList<T> array accesses.
3647
3648 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
3649
3650         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
3651         inline_costs counter. Fixes #77190.
3652
3653 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
3654
3655         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
3656         trace messages. Fixes #77706.
3657
3658 2006-03-04  Martin Baulig  <martin@ximian.com>
3659
3660         * tramp-amd64.c, tramp-x86.c
3661         (mono_debugger_create_notification_function): Use
3662         mono_global_codeman_reserve() to allocate a buffer at runtime and
3663         return it.
3664
3665         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
3666
3667         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
3668         notification function at runtime and then call `initialize' in the
3669         `MONO_DEBUGGER__debugger_info' vtable.
3670
3671 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
3672
3673         * iltests.il: Fix a visibility problem.
3674
3675 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
3676
3677         * driver.c, mini.c: add hooks for the counters API.
3678
3679 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
3680
3681         * driver.c: show disabled options.
3682
3683 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
3684
3685         * linear-scan.c: always use cost-driven selection.
3686
3687 2006-02-28  Raja R Harinath  <rharinath@novell.com>
3688
3689         * jit-icalls.c (helper_compile_generic_method): Revert change from
3690         2006-02-24.
3691
3692 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
3693
3694         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
3695
3696 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
3697
3698         * inssel.brg: style fixes, mostly to force the updated monoburg
3699         to run for people using svn.
3700
3701 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
3702
3703         * mini.c: match monoburg changes.
3704
3705 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
3706
3707         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
3708         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
3709         declaration in the header file.
3710
3711 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
3712
3713         * helpers.c: reduce relocations and mem usage.
3714
3715 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
3716
3717         * mini.h, mini-codegen.c: disable logging features if
3718         requested by configure.
3719
3720 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
3721
3722         * mini.c: tiny verifier changes.
3723
3724 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
3725
3726         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
3727         cpu-pentium.md: stack alignment changes for osx/x86,
3728         partially from Geoff Norton <gnorton@customerdna.com>.
3729
3730 2006-02-24  Raja R Harinath  <harinath@gmail.com>
3731
3732         * jit-icalls.c (helper_compile_generic_method): Update to changes
3733         in metadata/class.c.
3734
3735 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
3736         
3737         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
3738         
3739         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
3740         interface calls with large offsets.
3741
3742 2006-02-23  Raja R Harinath  <rharinath@novell.com>
3743
3744         * jit-icalls.c (helper_compile_generic_method): Document the
3745         special-case we depend on so that we can inflate the method twice
3746         with the same context with no bad side-effects.
3747
3748 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
3749
3750         * mini-x86.c, mini-amd64.c: fix for case when xen support
3751         is disabled.
3752
3753 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
3754
3755         * mini-x86.c, mini-amd64.c: generate code to access tls items
3756         in a faster way for Xen systems.
3757
3758 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
3759
3760         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
3761         updates and compilation fixes for the OSX/x86 port, mostly from
3762         Geoff Norton <gnorton@customerdna.com>.
3763
3764 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
3765
3766         * inssel.brg: faster interface call implementation
3767         to sync with the interface_offsets MonoVTable changes.
3768
3769 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
3770
3771         * mini.c: more verification checks.
3772
3773 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
3774
3775         * mini.c: added a few more verification checks.
3776
3777 2006-02-17      Neale Ferguson <neale@sinenomine.net>
3778
3779         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
3780         facility on the processor and use it if available.
3781
3782 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
3783
3784         * driver.c, aot.c, mini.c: throw exception if the IL code is
3785         invalid or unverifiable.
3786
3787 2006-02-17  Raja R Harinath  <rharinath@novell.com>
3788
3789         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
3790         m.StructField.
3791
3792 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
3793
3794         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
3795
3796 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
3797
3798         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
3799         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
3800         handling of instantiated generic valuetypes.
3801
3802 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
3803
3804         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
3805         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
3806         instead.
3807
3808         * generics.2.cs: Revert the nullable reftypes tests.
3809
3810 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
3811
3812         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
3813         using __builtin_frame_address (1) as it doesn't work in the presence
3814         of optimizations. Hopefully fixes #77273.
3815
3816         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
3817         -> generics.cs change as it doesn't work with some automake versions.
3818
3819 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
3820
3821         * mini.c: handle systems that sue a different way to
3822         retrieve the stack address of the current thread.
3823
3824 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
3825
3826         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
3827         it specially in the makefile.
3828
3829         * generics.2.cs: Add tests for nullable reference types.
3830
3831 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
3832
3833         * mini.c: always handle the case when mono_jit_init()
3834         is called in a thread different from the main thread,
3835         confusing libgc (bug #77309).
3836
3837 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
3838
3839         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
3840
3841 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
3842
3843         * mini.c: change optimize_branches () to use a single loop
3844         and introduce a new optimization to simplify some range checks.
3845
3846 2006-02-03  Martin Baulig  <martin@ximian.com>
3847
3848         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
3849         and merged with debugger_thread_manager_add_thread().
3850         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
3851         inform the debugger about the main thread.
3852
3853 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
3854
3855         * basic.cs: Add test for div.un/rem.un constant folding.
3856
3857 2006-02-03  Neale Ferguson <neale@sinenomine.net>
3858
3859         * cpu-s390x.md: correct int_xor_imm length
3860
3861 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
3862
3863         * generics.2.cs: New test for #77442.
3864
3865         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
3866         #77442.
3867
3868 2006-02-02  Martin Baulig  <martin@ximian.com>
3869
3870         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
3871         <mono/metadata/mono-debug-debugger.h>   
3872
3873         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
3874
3875 2006-02-02  Martin Baulig  <martin@ximian.com>
3876
3877         * debug-debugger.h: New header file for debug-debugger.c.
3878
3879         * debug-debugger.c: Big API cleanup; don't run the managed Main()
3880         function is a separate thread anymore; add support for attaching.
3881
3882 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
3883
3884         * tramp-x86.c: Fix a warning.
3885
3886 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
3887
3888         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
3889         on very large methods.
3890
3891         * aot.c (load_patch_info): Fix a warning.
3892
3893 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
3894
3895         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
3896         mini-ops.h: alu membase optimizations.
3897
3898 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
3899
3900         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
3901         to speedup StringBuilder.
3902
3903 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
3904
3905         * dominators.c (mono_compute_natural_loops): Fix detection of
3906         loop body start blocks.
3907
3908         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
3909
3910 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
3911
3912         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
3913         #75145.
3914
3915 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
3916
3917         * aliasing.c: Fixed aliasing issue on 64 bit archs.
3918
3919 2006-01-25  Martin Baulig  <martin@ximian.com>
3920
3921         * debug-debugger.c: Moved the `MonoDebuggerManager' and
3922         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
3923         started to cleanup this file a little bit.
3924
3925 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
3926
3927         * mini.c: optimize a codepath frequently happening in generics code.
3928
3929 2006-01-23  Martin Baulig  <martin@ximian.com>
3930
3931         * Makefile.am: Only compile debug-debugger.c on supported platforms.
3932
3933         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
3934         functions directly.
3935
3936         * driver.c: debug-debugger.c is only available if
3937         `MONO_DEBUGGER_SUPPORTED' is defined.   
3938
3939 2006-01-23  Martin Baulig  <martin@ximian.com>
3940
3941         * debug-debugger.c: Only enable this on platforms where the Mono
3942         Debugger is working (x86 and x86_64).
3943
3944 2006-01-21  Martin Baulig  <martin@ximian.com>
3945
3946         The Mono Debugger is now using the normal `mono' instead of the
3947         `mono-debugger-mini-wrapper' when executing managed code.
3948
3949         * debug-debugger.c: New file; previously known as
3950         debugger/wrapper/wrapper.c.
3951
3952         * debug-mini.c (mono_init_debugger): Removed.
3953
3954         * driver.c (mono_main): Added new `--inside-mdb' command line
3955         argument which is used when running inside the debugger.
3956
3957 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
3958
3959         * liveness.c (mono_analyze_liveness): Remove some unused data
3960         structures.
3961
3962 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
3963
3964         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
3965
3966 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
3967
3968         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
3969         depends on implementation details of monobitset.
3970
3971         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
3972         Fixes #77271.
3973
3974 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
3975
3976         * liveness.c: Update after monobitset changes.
3977
3978 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
3979
3980         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
3981
3982 2006-01-11 Neale Ferguson <neale@sinenomine.net>
3983
3984         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
3985
3986         * mini-s390x.c: Remove warning messages.
3987
3988 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
3989
3990         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
3991
3992 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
3993
3994         * generics.2.cs: Add ldelem/stelem_any test.
3995
3996 2006-01-10 Neale Ferguson <neale@sinenomine.net>
3997
3998         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
3999
4000 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
4001
4002         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
4003         
4004 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
4005
4006         * generics.2.cs: Reenable vtype tests.
4007
4008         * inssel-x86.brg: Remove an icorrect valuetype rule.
4009
4010 2006-01-06 Neale Ferguson <neale@sinenomine.net>
4011
4012         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
4013         initial support for OP_ABS.
4014
4015 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4016
4017         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
4018
4019 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4020
4021         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
4022         conversion and implement LADD/LSUB.
4023
4024         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
4025         architectures.
4026
4027 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4028
4029         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
4030
4031         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
4032         architectures.
4033
4034 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4035
4036         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
4037         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
4038         (stack walk problem).
4039
4040 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
4041
4042         * aot.c (mono_aot_load_method): Fix a warning.
4043
4044 2006-01-03  Neale Ferguson <neale@sinenomine.net>
4045
4046         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
4047
4048 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
4049
4050         * iltests.il: Add test for #77148.
4051
4052         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
4053         #77148.
4054
4055 2006-01-03  Neale Ferguson <neale@sinenomine.net>
4056
4057         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
4058
4059 2006-01-03  Neale Ferguson <neale@sinenomine.net>
4060
4061         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
4062         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
4063
4064         * basic-long.cs: Add lconv-to-r4/r8 tests.
4065
4066 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
4067
4068         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
4069
4070         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
4071         here as on other archs.
4072
4073 2005-12-29 Neale Ferguson <neale@sinenomine.net>
4074
4075         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
4076
4077 2005-12-29 Neale Ferguson <neale@sinenomine.net>
4078
4079         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
4080         
4081         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
4082
4083         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
4084         instrument_prolog; Add memory_barrier instruction.
4085
4086 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
4087
4088         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
4089
4090 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
4091
4092         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
4093
4094         * aliasing.c inssel.brg: Fix warnings.
4095
4096         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
4097         could skip initialization of some parts of memory.
4098
4099         * mini.c mini-ia64.c: Fix warnings.
4100
4101         * inssel-sparc.brg: Add an implementation of lneg which actually works.
4102
4103 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
4104
4105         * aliasing.c (mono_build_aliasing_information): Add a workaround for
4106         a crash seen on sparc.
4107
4108         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
4109         
4110         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
4111
4112 2005-12-21 Neale Ferguson <neale@sinenomine.net>
4113
4114         * mini-ops.h: Add s390_backchain instruction
4115
4116         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
4117
4118         * cpu-s390.md: Add s390_backchain instruction
4119
4120         * mini-s390.c: Significant ABI changes
4121
4122         * mini-s390.h: Cater for zero length structures
4123
4124 2005-12-20 Neale Ferguson <neale@sinenomine.net>
4125
4126         * mini-s390.c: ABI fixes
4127
4128         * inssel-s390.brg: Remove debug statements
4129
4130         * cpu-s390.md: Fix length of ATOMIC_xx operations
4131
4132 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
4133
4134         * basic-float.cs: Add float<->long conversion tests.
4135
4136 2005-12-16 Neale Ferguson <neale@sinenomine.net>
4137
4138         * mini-s390.c: Fix LOCALLOC processing.
4139
4140         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
4141
4142 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
4143
4144         * iltests.il: Add tests for some opcodes not covered by the other
4145         tests.
4146
4147 2005-12-15 Neale Ferguson <neale@sinenomine.net>
4148
4149         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
4150         register loading for Tail processing; Correct trace output.
4151
4152         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
4153
4154         * cpu-s390.md: Correct size of jmp instruction. 
4155
4156 2005-12-13 Neale Ferguson <neale@sinenomine.net>
4157
4158         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
4159
4160 2005-12-13 Neale Ferguson <neale@sinenomine.net>
4161
4162         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
4163           Bring s390 up to current level.
4164
4165 2005-12-12  Zltan Varga  <vargaz@gmail.com>
4166
4167         * generics.2.cs: Disable the newly added tests as they do not work yet.
4168         
4169         * generics.2.cs: Add valuetype tests.
4170
4171 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
4172
4173         * basic-long.cs: Add i4->u8 test.
4174
4175         * objects.cs: Add tests for JIT intrinsic.
4176
4177         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
4178         optimizations lost by a mistake.
4179
4180 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
4181
4182         * basic-long.cs: Remove a test moved to objects.cs.
4183
4184         * arrays.cs: Add more array tests.
4185
4186 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
4187
4188         * arrays.cs: Add new tests for multi-dimensional arrays.
4189
4190 2005-12-06  Raja R Harinath  <rharinath@novell.com>
4191
4192         * Makefile.am (test_sources2): Add generics.2.cs.
4193         (EXTRA_DIST): Add test_sources2.
4194
4195 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
4196
4197         Support for boxing and unboxing nullable types as well as the
4198         isinst operation on nullables, per the CLI ammendment.
4199
4200         * inssel.brg (CEE_ISINST): Special case for nullable
4201
4202         * mini.c (handle_unbox_nullable): new method
4203         (handle_box): Special case for nullable types
4204         (mono_method_to_ir): Call handle_unbox_nullable in correct
4205         places.
4206
4207         * generics.2.cs: New test suite
4208
4209         * Makefile.am: Support for regression tests with generics.
4210
4211 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
4212
4213         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
4214         allocated to registers. Fixes #76800.
4215
4216 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
4217
4218         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
4219
4220 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
4221
4222         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
4223         of platforms.
4224
4225 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
4226
4227         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
4228         objects.cs.
4229
4230         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
4231         
4232         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
4233 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
4234
4235         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
4236         single precision before storing to a single precision location.
4237
4238 2005-11-28  Raja R Harinath  <rharinath@novell.com>
4239
4240         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
4241
4242 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
4243
4244         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
4245         correct files.
4246
4247         * basic.cs: Remove test_0_byte_compares test which was moved to
4248         objects.cs a long time ago.
4249
4250 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
4251
4252         * aliasing.c: Fixed aliasing issue on 64 bit archs.
4253
4254 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
4255
4256         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
4257         handlers are called.
4258
4259         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
4260         throwing code.
4261
4262          * mini-ia64.c: Add support for the throw->branch exception 
4263         optimization.   
4264
4265         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
4266
4267 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
4268
4269         * mini.c: Enabled "fastpath" deadce :-)
4270         
4271 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
4272
4273         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
4274         alias analysis pass to support it.
4275         * mini.h: Likewise.
4276         * ssa.c: Likewise.
4277         * liveness.c: Likewise (liveness computation can use aliasing
4278         information to be more accurate).
4279         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
4280         moreover made so that "--compile-all" uses the given optimization
4281         flags and not the default ones.
4282         * aliasing.c: Alias analysis (new file).
4283         * aliasing.h: Likewise.
4284         * Makefile.am: added "aliasing.c" and "aliasing.h".
4285         
4286 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
4287
4288         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
4289         OP_L opcodes.
4290
4291 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
4292
4293         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
4294         fp >= end_of_stack exit condition, as it is not needed, and it might
4295         become true for fp eliminated frames.
4296
4297 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
4298
4299         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
4300         coded offsets.
4301
4302 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
4303
4304         * mini-arm.c: fixed alignment of doubles/longs to match
4305         the C ABI (bug #76635).
4306
4307 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
4308
4309         * aot.c: fix compilation with --enable-minimal=aot.
4310
4311 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
4312
4313         * mini-arm.c: fixed compatibility with the new
4314         floating point emulator package for compares.
4315
4316 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
4317
4318         * mini.c : reverted sig->pinvoke changes (r51396-51397).
4319
4320 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
4321
4322         * mini-exceptions.c (print_stack_frame): Output to stderr.
4323         (mono_handle_native_sigsegv): Ditto.
4324
4325 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
4326
4327         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
4328         OP_LCONV_TO_OVF_I implementation.
4329
4330         * mini-amd64.c: Add support for the throw->branch exception 
4331         optimization.
4332
4333         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
4334         when the catch clause catches a more general exception, i.e. Object.
4335
4336 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
4337
4338         * cpu-ia64.md: Remove unused opcodes.
4339
4340         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
4341         specific defines for architectures defining USE_SIGACTION.
4342
4343         * mini-ia64.c: Fix some warnings.
4344
4345         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
4346         version seemed to skip a frame.
4347
4348 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
4349
4350         * mini.c: Clean up the usage of sig->pinvoke flag. Now
4351         only calls which are made to native code use this flag.
4352
4353 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
4354
4355         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
4356         varargs methods as well.
4357         
4358         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
4359         which have save_lmf set. Reorganize methods prologs a bit.
4360
4361         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
4362         debugger to the proper place.
4363
4364 2005-10-29  Martin Baulig  <martin@ximian.com>
4365
4366         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
4367         when running inside the debugger until the debugger has support
4368         for it.
4369
4370 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
4371
4372         * mini.h: Fix a warning.
4373
4374 2005-10-24  Miguel de Icaza  <miguel@novell.com>
4375
4376         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
4377         we expose publicly, this returns the string.
4378
4379 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
4380
4381         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
4382         with fp elimination.
4383
4384 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
4385
4386         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
4387         native stacktrace using the glibc 'backtrace' function if available.
4388
4389 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
4390
4391         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
4392
4393         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
4394         handle SIGSEGVs received while in native code.
4395
4396         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
4397         code, call mono_handle_native_sigsegv which will abort the runtime
4398         after printing some diagnostics, instead of converting it into a
4399         confusing NullReferenceException.
4400
4401 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
4402
4403         * cpu-pentium.md: Remove unused opcodes.
4404
4405 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
4406
4407         * mini-amd64.h (MonoLMF): Add rsp field.
4408
4409         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
4410         the lmf too.
4411
4412 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
4413
4414         * mini-codegen.c (get_register_spilling): Fix some warnings.
4415
4416 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
4417
4418         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
4419         elimination during exception handling. Enable fp elimination by
4420         default.
4421
4422         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
4423         elimination.
4424
4425 2005-10-16  Martin Baulig  <martin@ximian.com>
4426
4427         * mini-exceptions.c
4428         (mono_debugger_run_finally): New public method for the debugger.
4429
4430 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
4431
4432         * debug-mini.c (mono_debug_init_method): Fix warning.
4433
4434         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
4435         the 'exname' parameter const to fix some warnings.
4436
4437 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
4438
4439         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
4440         introduced by the previous patch.
4441
4442 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * basic-float.cs: Add test for precision of float arithmetic.
4445
4446         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
4447         when loading/storing single values from/to memory.
4448
4449         * mini.c (mono_jit_compile_method_with_opt): Create the function
4450         pointers in the correct domain.
4451
4452 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
4453
4454         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
4455         introduced by previous patch.
4456         
4457         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
4458         when out_filter_idx is NULL.
4459
4460         * mini-exceptions.c: Don't run filter clauses twice during exception
4461         handling. Fixes #75755.
4462
4463 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
4464
4465         * aot.c: Add support for ldflda wrappers.
4466
4467         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
4468         #75902.
4469
4470 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
4471
4472         * mini.c, mini.h: do not consider exception handlers blocks when
4473         setting up interface variables.
4474
4475 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
4476
4477         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
4478
4479 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
4480
4481         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
4482         causes a regression.
4483
4484         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
4485
4486 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
4487
4488         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
4489         of the OP_P definitions.
4490
4491         * TODO: Add a proposal for dealing with the CEE/OP mess.
4492
4493         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
4494         optimizations from the x86 port.
4495
4496         * cpu-amd64.md: Ditto.
4497
4498         * basic.cs basic-long.cs: Add tests.
4499
4500 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
4501
4502         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
4503         Patrik Torstensson's implementation of my exception-handling
4504         optimization idea, when the exception object is not used
4505         (bug #62150).
4506
4507 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
4508
4509         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
4510         of the mul_imm optimizations from the old jit.
4511
4512 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
4513
4514         * mini.c, liveness.c: patch by Patrik Torstensson and
4515         Zoltan Varga to improve performance in methods with
4516         exception clauses.
4517
4518 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
4519
4520         * driver.c: Remove 'Globalization' entry from --version.
4521
4522 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
4523
4524         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
4525         there is a profiler interested in JIT events.
4526
4527         * aot.c: Load profile files produced by the AOT profiling module, and
4528         reorder methods based on the profiling info. Add a 'method_order' table
4529         to the AOT file to make mono_aot_find_jit_info work with the reordered
4530         methods.
4531
4532         * mini.h: Bump AOT file version info.
4533
4534 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
4535
4536         * mini-arm.h: work around what looks like a gcc bug when optimizations
4537         are enabled.
4538
4539 2005-09-28  Raja R Harinath  <rharinath@novell.com>
4540
4541         * Makefile.am (AM_CFLAGS): Don't use += to append inside
4542         conditionals.  Use ...
4543         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
4544
4545 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
4546
4547         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
4548         to determine the amount of memory to copy when passing valuetypes.
4549
4550         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
4551         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
4552
4553 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
4554
4555         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
4556         information about aot.
4557
4558 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
4559
4560         * *.c: Replace the use of {Enter,Leave}CriticalSection with
4561         macros. This will allow a deadlock debugger to easily be plugged
4562         in.
4563
4564 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
4565
4566         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
4567
4568 2005-09-27  Raja R Harinath  <rharinath@novell.com>
4569
4570         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
4571         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
4572         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
4573         ($(arch_built)) [CROSS_COMPILING]: Error out.
4574
4575 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
4576
4577         * aot.c: Add support for the no_special_static flag for classes.
4578
4579 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
4580
4581         * Reapply reverted patches.
4582
4583         * *: Revert r50174 as well.
4584
4585         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
4586
4587 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
4588
4589         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
4590
4591 2005-09-23  Miguel de Icaza  <miguel@novell.com>
4592
4593         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
4594         part of the SIG_HANDLER_SIGNATURE.  
4595
4596 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
4597
4598         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
4599         statistics.
4600
4601         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
4602         introduced by previous patch.
4603
4604 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
4605
4606         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
4607         saved registers too.
4608
4609         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
4610         upon the information returned by get_call_info ().
4611         
4612         * mini-x86.c (add_float): Fix stack size calculation.
4613         (mono_arch_call_opcode): Rewrite this so it works based up the
4614         information returned by get_call_info ().
4615         (mono_arch_get_this_vret_args): Ditto.
4616
4617 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
4618
4619         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
4620         in cinfo to determine the registers which need to be used.
4621
4622 2005-09-20  Miguel de Icaza  <miguel@novell.com>
4623
4624         * driver.c (mono_main): Add --server and --desktop flags. 
4625
4626 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
4627
4628         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
4629         registers as global registers.
4630
4631         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
4632         longer needed with the new register allocator.
4633
4634         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
4635
4636         * cpu-ia64.md: Remove unused opcodes.
4637         
4638         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
4639         
4640 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
4641
4642         * cpu-amd64.md: Remove unused opcodes.
4643
4644         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
4645         needed with the new register allocator.
4646
4647         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
4648         reg-reg moves.
4649
4650 2005-09-16  Raja R Harinath  <rharinath@novell.com>
4651
4652         * Makefile.am (check-local): Don't invoke semdel-wrapper.
4653
4654 2005-09-16  Martin Baulig  <martin@ximian.com>
4655
4656         * exceptions-amd64.c
4657         (throw_exception): Don't call mono_debugger_throw_exception() if
4658         we're a rethrow - see the FIXME in the code.
4659
4660 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
4661
4662         * mini.c (mono_init_exceptions): This only works on some architectures.
4663         
4664 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
4665
4666         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
4667         on ia64.
4668
4669         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
4670
4671         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
4672         now in mini-exceptions.c.
4673
4674 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
4675
4676         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
4677         now in mini-exceptions.c.
4678
4679 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
4680
4681         * exceptions-x86.c: Applied patch from Patrik Torstensson 
4682         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
4683
4684         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
4685         code into mini-exceptions.c. Add some assertions to it.
4686
4687 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
4688
4689         * aot.c (emit_section_change): Applied patch from "The Software Team" 
4690         (<software@solmersa.com>). Fix as errors on windows.
4691
4692 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
4693
4694         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
4695         method info into the LMF.
4696
4697 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
4698         
4699         * mini-ia64.c: Add proper unwind info for method epilogs.
4700
4701         * exceptions-ia64.c: Add some code to help debugging.
4702         
4703         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
4704
4705         * mini-exceptions.c: Fix warning.
4706
4707 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
4708
4709         * mini.c: Really fix build.
4710
4711         * mini-x86.c mini-amd64.c: Fix build.
4712
4713 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
4714
4715         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
4716
4717         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
4718         some Interlocked methods as intrinsics.
4719
4720         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
4721         for Thread methods as well.
4722
4723         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
4724
4725         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
4726
4727         * mini-ia64.c mini-x86.c mini-amd64.c 
4728         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
4729         OP_MEMORY_BARRIER.
4730         
4731         * mini.c (mono_init_exceptions): Fix build breakage.
4732
4733 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
4734
4735         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
4736         of instructions. Use the new ia64_unw_op macros for emitting unwind
4737         info.
4738
4739         * mini.c (mono_init_exceptions): Initialize exception handling
4740         related trampolines at startup.
4741
4742 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
4743
4744         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
4745
4746 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
4747
4748         * mini.c: Handle type loading errors gracefully during compilation and
4749         throw the appropriate exception.
4750
4751 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
4752
4753         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
4754         for the mono binary.
4755
4756 2005-09-09  Martin Baulig  <martin@ximian.com>
4757
4758         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
4759         the release.
4760
4761 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
4762
4763         * mini-arm.h: use emulation for conv.r.un for the release.
4764
4765 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
4766
4767         * mini-arm.c, objects.cs: more fixes and tests for them.
4768
4769 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
4770
4771         * mini-arm.c: align structures to at least 4 bytes to be able
4772         to keep our current optimized memcpy.
4773
4774 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
4775
4776         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
4777
4778 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4779
4780         * mini.c: ignore SIGPIPE.
4781
4782 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
4783
4784         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
4785
4786         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
4787
4788 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
4789
4790         * mini.h: Add prototype for mono_allocate_stack_slots_full.
4791
4792 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
4793
4794         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
4795         exception handling support.
4796         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
4797         patch by Brian Koropoff <briank@marakicorp.com>).
4798
4799 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
4800
4801         * mini.c: revert another 'optimization' which breaks when
4802         items on the eval stack need to be saved at a basic block end
4803         (bug #75940).
4804
4805 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
4806
4807         * jit-icalls.c: for arrays, ensure we always provide
4808         lower bounds.
4809
4810 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
4811
4812         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
4813         
4814         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
4815
4816 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
4817
4818         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
4819         arguments in their original register.
4820
4821 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
4822
4823         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
4824         memset/memcpy.
4825
4826         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
4827         when ssapre is enabled.
4828
4829         * inssel-long.brg: Fix bug in previous patch.
4830
4831         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
4832         multiplication by a constant.
4833
4834 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
4835
4836         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
4837         icc.
4838
4839         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
4840         saving registers.
4841
4842 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
4843
4844         * inssel-arm.brg: apply changes tested by Brian Koropoff
4845         <briank@marakicorp.com>.
4846
4847 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
4848
4849         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
4850         
4851 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
4852
4853         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
4854         to the same register if dreg is just a base register.
4855         (print_ins): Improve printing of membase opcodes.
4856
4857         * inssel-x86.brg: Add optimized ldind(reg) rules.
4858
4859         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
4860
4861 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
4862
4863         * mini.c: when running under valgrind, set the stack bottom for
4864         the GC at the actual approximate stack for the app (fixes running
4865         mono with valgrind).
4866
4867 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
4868
4869         * mini.c: do no break at the first valuetype to init found
4870         (fixes bug #75791).
4871
4872 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
4873
4874         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
4875
4876 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
4877
4878         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
4879
4880 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
4881
4882         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
4883
4884 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
4885
4886         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
4887
4888         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
4889         code.
4890
4891         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
4892         code.
4893
4894         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
4895         methods.
4896
4897 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
4898
4899         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
4900
4901 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
4902
4903         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
4904         in the tail recursion optimization.
4905
4906         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
4907         debug info into the assembly file.
4908
4909         * iltests.il: Add test for filter regions.
4910
4911         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
4912         initial stack of filter regions. Fixes #75755.
4913
4914 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
4915
4916         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
4917         stack requirements.
4918
4919 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
4920
4921         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
4922         the check for an already compiled method on non-ia64 platforms.
4923         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
4924         proper domain.
4925
4926         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
4927
4928         * inssel-x86.brg: Add some optimized call rules.
4929
4930 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
4931
4932         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
4933         method here.
4934
4935         * mini.h mini-trampolines.c: Pass the trampoline argument to 
4936         mono_arch_patch_delegate_trampoline.
4937
4938         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
4939
4940         * mini-trampolines.c: Fix build.
4941
4942         * mini-amd64.h: Add delegate trampolines.
4943
4944         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
4945
4946         * inssel-amd64.brg: Add optimized call rules.
4947         
4948         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
4949
4950         * inssel-ia64.brg: Add optimized ldind(reg) rules.
4951
4952 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
4953
4954         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
4955         change.
4956
4957         * mini-ia64.c: Remove LMF fixmes.
4958
4959         * mini-ia64.h: Remove most fields from LMF.
4960
4961         * inssel-ia64.brg (stmt): Fix unaligned access errors.
4962
4963         * mini-trampolines.c: Add support for IA64 function descriptors.
4964
4965         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
4966         for IA64 function descriptors.
4967
4968 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
4969
4970         * tramp-arm.c: patch the vtable for virtual calls. Added
4971         support code to register/unregister the LMF.
4972         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
4973         more LMF work.
4974
4975 2005-08-19  Dick Porter  <dick@ximian.com>
4976
4977         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
4978         bit value if needed.
4979
4980 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
4981
4982         * mini.c (mini_get_method): Move handling of wrapper data here.
4983
4984         * mini.c (mono_method_to_ir): Add support for dynamic methods.
4985
4986         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
4987         virtual.
4988
4989         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
4990         bblock->code does not remain empty.
4991
4992 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
4993
4994         * arrays.cs: Add regression test for #75832.
4995
4996         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
4997         rules. Fixes #75832.
4998
4999         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
5000         instruction scheduling.
5001
5002 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
5003
5004         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
5005
5006 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
5007
5008         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
5009
5010         * mini-codegen.c: Fix VC build.
5011
5012         * cpu-pentium.md: Increase length of atomic_exhange_i4.
5013
5014 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5015
5016         * mini.h: fix signature for mono_register_opcode_emulation.
5017
5018 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
5019
5020         * mini.c: Get rid of most of the helper_sig_... constants using
5021         mono_create_icall_signature ().
5022
5023 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
5024
5025         * jit-icalls.c (helper_ldstr): New helper function.
5026
5027         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
5028
5029         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
5030         throw, load the string using a helper call instead of creating a string object.
5031
5032         * aot.c: Update after LDSTR changes.
5033
5034         * mini.h: Bump AOT file version.
5035         
5036         * aot.c: Save class size info into the AOT file. Print more statistics during
5037         compilation.
5038
5039         * mini.h: Bump AOT file version.
5040
5041         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
5042         ordering of disasm cases. Fixes #74957.
5043
5044 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
5045
5046         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
5047         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
5048         the generic code needed for the ARM port.
5049
5050 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
5051
5052         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
5053         inssel-arm.brg: more ARM features and fixes.
5054
5055 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
5056
5057         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
5058         ARM port work in progress.
5059
5060 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
5061
5062         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
5063
5064         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
5065
5066         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
5067
5068         * inssel.brg (mini_emit_memset): Add support for unaligned access.
5069
5070         * *-ia64.*: Ongoing IA64 work.
5071         
5072         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
5073
5074 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
5075
5076         * TODO: Remove out-of-data todo stuff.
5077
5078         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
5079         dead code.
5080
5081         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
5082
5083         * mini.h: Bump corlib version.
5084
5085 2005-07-27  Martin Baulig  <martin@ximian.com>
5086
5087         * mini-codegen.c
5088         (create_copy_ins): Added `const unsigned char *ip' argument; set
5089         `copy->cil_code' from it.
5090
5091 2005-07-27  Martin Baulig  <martin@ximian.com>
5092
5093         * mini-exceptions.c (mono_handle_exception): Don't call
5094         mono_debugger_handle_exception() for filters.
5095
5096 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
5097
5098         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
5099         as well.
5100
5101 2005-07-26  Martin Baulig  <martin@ximian.com>
5102
5103         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
5104
5105         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
5106         helper_compile_generic_method() if the method is actually virtual
5107         and non-final.
5108
5109 2005-07-26  Martin Baulig  <martin@ximian.com>
5110
5111         * mini.c
5112         (trampoline_code): Renamed to `mono_trampoline_code' and made it
5113         public; this is now accessed directly by the debugger.
5114         (mono_generic_trampoline_code): Removed.
5115
5116         * debug-mini.c
5117         (mono_debug_init_method): Also add interncalls and wrappers.
5118
5119 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
5120
5121         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
5122
5123 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
5124
5125         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
5126
5127 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
5128
5129         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
5130
5131 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
5132
5133         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
5134         getting TLS offsets on AMD64 too.
5135
5136 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
5137
5138         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
5139
5140 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
5141
5142         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
5143         inssel-arm.brg, mini-arm.h: ARM port work in progress.
5144
5145 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
5146
5147         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
5148
5149         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
5150         to mini.c.
5151
5152         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
5153         mono_sparc_is_virtual_call ().
5154         
5155         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
5156
5157         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
5158         trampoline parameters.
5159
5160         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
5161         
5162         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
5163         to mono_arch_get_vcall_slot_addr.
5164
5165         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
5166         trampoline code.
5167
5168         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
5169
5170 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
5171
5172         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
5173
5174 2005-07-19  Martin Baulig  <martin@ximian.com>
5175
5176         * exceptions-amd64.c (throw_exception): Call
5177         mono_debugger_throw_exception() here like we're doing it on i386.
5178
5179 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
5180
5181         * mini-ia64.c: Add optimized TLS access support.
5182
5183 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
5184
5185         * mini-exceptions.c: Ongoing IA64 work.
5186
5187         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
5188
5189         * mini.c: Use the default optimization set when embedding. Fixes
5190         #75194.
5191
5192 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
5193
5194         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
5195         of trampolines to a separate file.
5196
5197         * mini-trampolines.c: New file.
5198
5199         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
5200         separate file.
5201         
5202         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
5203         amd64/ia64 code.
5204
5205         * mini-codegen.c: Fix cygwin build.
5206
5207 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
5208
5209         * mini.c: Add some minor changes needed by the IA64 port.
5210
5211         * *-ia64.*: Ongoing IA64 work.
5212
5213 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
5214
5215         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
5216         trampolines into arch-independent and arch-dependent parts.
5217
5218         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
5219
5220 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
5221
5222         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
5223
5224         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
5225         the xp-regalloc-branch for amd64.
5226
5227         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
5228         xp-regalloc-branch for x86.
5229
5230 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
5231
5232         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
5233
5234 2005-07-06  Martin Baulig  <martin@ximian.com>
5235
5236         * mini.c
5237         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
5238         (mono_jit_runtime_invoke): Likewise.
5239
5240 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
5241
5242         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
5243         on x86 too.
5244         
5245         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
5246         without loading their metadata. Reorganize the file format so exception handling+
5247         debug info is kept separate from normal method info. Create MonoJitInfo 
5248         structures for methods lazily.
5249
5250         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
5251         loading metadata.
5252         (x86_class_init_trampoline): Patch AOT class init trampolines too.
5253
5254         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
5255
5256         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
5257         in AOT code.
5258
5259         * mini.h: Bump AOT file version.
5260
5261 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
5262
5263         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
5264
5265 2005-07-01  Raja R Harinath  <rharinath@novell.com>
5266
5267         * Makefile.am (check-local): Call semdel-wrapper.
5268
5269 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
5270
5271         * mini-x86.c: Revert the last change as it seems to break the build..
5272
5273 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
5274
5275         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
5276         
5277         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
5278
5279 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
5280
5281         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
5282         outside of the macro, so strange stuff doesn't happen with gcc4
5283         (NEW_AOTCONST_TOKEN): Likewise.
5284
5285 2005-06-28  Martin Baulig  <martin@ximian.com>
5286
5287         * mini.c (mini_class_is_system_array): New static method; use this
5288         instead of `klass->parent == mono_defaults.array_class' everywhere
5289         since this also works for the new generic array class.
5290
5291 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
5292
5293         * inssel.brg: Remove warnings.
5294
5295 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
5296
5297         * mini-ia64.c: Ongoing IA64 work.
5298
5299         * basic-float.cs: Add float->i1 conversion test.
5300
5301         * iltests.il: Add conv.u4 test.
5302
5303 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
5304
5305         * inssel-long.brg: Fix bug caused by last change.
5306
5307 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
5308
5309         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
5310         BSDs.  Allows the x86 JIT to work on OSX86
5311
5312 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
5313
5314         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
5315         u4->i8 conversion.
5316
5317         * mini-ia64.c: Ongoing IA64 work.
5318
5319 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
5320
5321         * mini-ia64.c: Ongoing IA64 work.
5322
5323         * driver.c: Clean up jit_code_hash as well when using --regression.
5324
5325         * inssel-long.brg: Fix long->i4/u4 conversion rules.
5326
5327         * basic-long.cs: Add tests for long->u4 conversion.
5328
5329 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
5330
5331         * mini.c: Take mono_get_domainvar out of macros. This makes sure
5332         that we do not depend on undefined C behavior: the order stuff
5333         gets evaluated within an expression. Fixes mono when compiled on
5334         GCC 4.
5335
5336 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
5337
5338         * *-ia64.*: Ongoing IA64 work.
5339
5340         * aot.c: Lower memory usage while loading AOT methods.
5341
5342         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
5343
5344         * mini.h: Bump AOT file format version.
5345
5346 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
5347
5348         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
5349
5350 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
5351
5352         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
5353         not on callee assembly). Fixed some comments.
5354
5355 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
5356
5357         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
5358         it gets proper disassembly.
5359         (emit_method_info): Remove some dead code.
5360
5361         * mini.c (mini_method_compile): Allways allocate the GOT var in
5362         mono_method_to_ir for emulating opcodes.
5363
5364 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
5365
5366         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
5367         before freeing the code memory. Fixes #74990.
5368
5369         * objects.cs: Add regression test for #74992.
5370
5371         * liveness.c: Extend live ranges of arguments to the beginning of the
5372         method. Fixes #74992.
5373
5374         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
5375         so it points into the faulting instruction.
5376
5377 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
5378
5379         * jit-icalls.c (mono_imul_ovf): Add exception handling.
5380
5381         * *-ia64.*: Ongoing IA64 work.
5382
5383         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
5384
5385 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
5386
5387         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
5388
5389         * *-ia64.*: Ongoing IA64 work.
5390
5391 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
5392
5393         * basic-long.cs: Add tests for add/sub.ovf.
5394
5395         * basic.cs: Add tests for sub.ovf.
5396
5397         * *-ia64.*: Ongoing IA64 work.
5398
5399 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
5400
5401         * *-ia64.*: Ongoing IA64 work.
5402
5403         * basic.cs: Add conv.ovf.i4.un test.
5404
5405 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
5406
5407         * mini.c: (remove_block_if_useless) Fixed bug 75061.
5408         
5409 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5410
5411         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
5412
5413 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
5414
5415         * *-ia64.*: Ongoing IA64 work.
5416
5417 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5418
5419         * trace.[ch]:
5420         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
5421
5422 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
5423
5424         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
5425
5426 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
5427
5428         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
5429
5430         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
5431         of a call is callable by a near call.
5432
5433 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
5434
5435         * mini-ia64.c: Ongoing IA64 work.
5436
5437 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
5438
5439         * genmdesc.c: Make the generated array non-static.
5440
5441         * inssel-long.brg: Fix LSHR_IMM rule.
5442
5443         * *-ia64.*: Ongoing IA64 work.
5444
5445         * *-ia64.*: Ongoing IA64 work.
5446
5447 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
5448
5449         * *-ia64.*: Ongoing IA64 work.
5450
5451         * *-ia64.*: Ongoing IA64 work.
5452         
5453         * mini-ia64.c: Ongoing IA64 work.
5454
5455         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
5456
5457 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
5458
5459         * objects.cs basic-calls.cs: Move some tests to objects.cs.
5460         
5461         * objects.cs basic-long.cs: Move some tests to objects.cs.
5462
5463 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
5464
5465         * *-ia64.*: Ongoing IA64 work.
5466
5467         * iltests.il: Add a new test.
5468
5469         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
5470         newobj. Fixes #75042.
5471
5472 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
5473
5474         * *-ia64.*: Ongoing IA64 work.
5475         
5476         * *-ia64.*: Ongoing IA64 work.
5477         
5478         * *-ia64.*: Ongoing IA64 work.
5479
5480         * basic.cs objects.cs: Move tests accessing static variables as well.
5481
5482         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
5483
5484 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
5485
5486         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
5487
5488         * driver.c: Always print failed tests.
5489
5490         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
5491         frame pointer.
5492
5493         * *ia64*: Ongoing IA64 work.
5494
5495 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
5496
5497         * basic.cs: Add tests for add.ovf. Fix warnings.
5498
5499 2005-05-18  Miguel de Icaza  <miguel@novell.com>
5500
5501         * driver.c (mono_main): Avoid crash if no argument is passed to
5502         --break;  Do not use g_error, but f_printf.   And fix all other
5503         ocurrences of the same crash.
5504
5505 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
5506
5507         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
5508         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
5509         Fixes #74742.
5510
5511 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
5512
5513         * *-ia64.*: Add beginnings of IA64 backend.
5514
5515         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
5516
5517 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
5518
5519         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
5520         Fixes #74925.
5521
5522         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
5523
5524         * mini-amd64.c: Fix a warning.
5525
5526 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
5527
5528         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
5529         in float_neg. Fixes #74897.
5530
5531         * mini-amd64.c (emit_call): Fix another near call bug.
5532
5533 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
5534
5535         * declsec.c: Keep the appdomain information in the structure. Added a 
5536         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
5537         value gets overwritten).
5538         * declsec.h: Set the default MonoArray for the the stack to 6. Added
5539         an MonoAppDomain member to MonoSecurityFrame.
5540         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
5541         used in the stack walk. Now use a MonoArray which grow (double) when
5542         it gets full.
5543
5544 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
5545
5546         * mini.c: Re-enabled runtime cleanup, since running threads should
5547         now properly stop when exiting.
5548
5549 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
5550
5551         * mini-codegen.c: New file contaning the arch-independent local
5552         register allocator. Not used by any architectures yet.
5553
5554         * mini.h linear-scan.c: Merge some changes from the 
5555         mini-xp-local-regalloc branch.
5556
5557 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
5558
5559         * mini-amd64.c (emit_call): Fix calls to native functions when the
5560         runtime is compiled as a shared library. Fixes #74756.
5561
5562         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
5563         on a literal field. Fixes #74751.
5564
5565 2005-04-25  Raja R Harinath  <rharinath@novell.com>
5566
5567         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
5568
5569 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
5570
5571         * objects.cs: Add missing null casting test.
5572
5573 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
5574
5575         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
5576         in wrapper methods. Also rename 'address' variable to 'offset'.
5577
5578 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
5579
5580         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
5581         warnings.
5582         
5583         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
5584
5585         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
5586         work on windows.
5587
5588 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
5589
5590         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
5591
5592 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
5593
5594         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
5595         just the last bytes.
5596
5597 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
5598
5599         * aot.c (mono_compile_assembly): Fix warning.
5600
5601         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
5602         by the _MSC_VER stuff.
5603
5604 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
5605
5606         * inssel-long.brg: Fix #74588.
5607
5608         * cpu-amd64.md: Fix #74591.
5609
5610         * iltests.il: Add new regression tests.
5611
5612 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
5613
5614         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
5615         valuetype.
5616
5617 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
5618
5619         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
5620
5621         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
5622         from Bill Middleton <flashdict@gmail.com>.
5623
5624 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
5625
5626         * arrays.cs: Add new regression test. Fix warnings.
5627
5628 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
5629
5630         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
5631         and leakage in CKFINITE.
5632
5633         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
5634         this to a null op since it is called on amd64 too.
5635
5636         * exceptions-amd64.c (get_throw_trampoline): Align stack.
5637
5638         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
5639         body since this is not used on amd64.
5640         
5641         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
5642
5643         * mini-amd64.c: Remove obsolete fixmes.
5644
5645         * mini.c (print_method_from_ip): Fix debugging support.
5646
5647 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
5648
5649         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
5650         so that expressions that don't give much gain are not reduced.
5651         * ssapre.h: Likewise.
5652
5653 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
5654
5655         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
5656
5657         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
5658
5659         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
5660
5661 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
5662
5663         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
5664
5665         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
5666
5667 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
5668
5669         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
5670         stack touching.
5671
5672         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
5673
5674         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
5675
5676         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
5677
5678         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
5679         MONO_ARCH_USE_SIGACTION. Fixes #74252.
5680
5681         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
5682
5683         * mini-x86.c: Fix up stack overflow handling.   
5684
5685         * exceptions.cs: Add new regression test.
5686
5687 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
5688
5689         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
5690         mono_jit_thread_attach.
5691
5692         * mini.c (mono_method_to_ir): Verify called method is not abstract.
5693
5694 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
5695
5696         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
5697         avoid calling constructors using callvirt.
5698
5699         * inssel.brg: Fix #74073.
5700
5701 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
5702
5703         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
5704         compilation with non-GCC compilers.
5705         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
5706         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
5707
5708 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
5709
5710         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
5711         klass->interface_offsets (will likely fix bug#74073).
5712
5713 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
5714
5715         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
5716
5717 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
5718
5719         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
5720         to amd64_div_reg_size ().
5721         
5722         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
5723
5724 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
5725
5726         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
5727
5728 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
5729
5730         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
5731
5732 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
5733
5734         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
5735         
5736         * mini.c (mono_precompile_assembly): Load and precompile referenced
5737         assemblies as well. Fixes #74015.
5738
5739 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
5740
5741         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
5742
5743 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
5744
5745         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
5746         a lot of checks and (anyway) permissions cannot work until corlib is 
5747         loaded.
5748
5749 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
5750
5751         * mini-ppc.c: fixed ABI issue on sysv/ppc.
5752
5753 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
5754
5755         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
5756         calls (fixes bug#72824).
5757
5758 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
5759
5760         * mini.c: fix tail recursion elimination (see test in bug#73936).
5761
5762 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
5763
5764         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
5765         some fp functions in sse2 mode.
5766
5767 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
5768
5769         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
5770
5771 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
5772
5773         * mini.h mini.c: Add mono_get_jit_tls_key ().
5774
5775         * mini-x86.c: Enable fast TLS support on windows.
5776
5777 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5778
5779         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
5780         * mini.c: Check for p/invoke method when generating code. If a
5781         p/invoke method, or it's class, isn't decorated with [Suppress
5782         UnmanagedCodeSecurity] then generate code to call System.Security.
5783         UnmanagedDemand (only if the security manager is active).
5784
5785 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
5786
5787         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
5788         last change as it seems to cause strange crashes.
5789         
5790 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
5791
5792         * *.c: handle unsafe function pointers where needed.
5793
5794 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
5795
5796         * mini.c (mono_jit_free_method): Remove the fixme too.
5797
5798 2005-03-15  Miguel de Icaza  <miguel@novell.com>
5799
5800         * mini.c: As discussed, make the code actually free the delegate
5801         thunk now, to enable the debugging of delegate problems, use
5802         MONO_DEBUG=1 when running Mono. 
5803
5804         This takes also care of parts of the leaks as seen by Joe.
5805
5806 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
5807
5808         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
5809         thread_tls_offset calculation.
5810
5811 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
5812
5813         * declsec.c: Reworked linkdemand checks for icall. The previous code
5814         was using the declaration code (untrusted) and didn't work as expected
5815         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
5816         specific case.
5817
5818 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
5819
5820         * iltests.il: Add new localloc test.
5821
5822         * mini-amd64.c: Handle large stack allocations the same way as on
5823         windows if stack overflow handling is working.
5824         
5825         * mini-amd64.c: Allocate the signal stack using mmap.
5826
5827         * mini.c (sigsegv_signal_handler): Fix reading of context.
5828
5829         * mini-exceptions.c: Fix up stack overflow handling.
5830
5831         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
5832
5833         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
5834
5835         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
5836
5837         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
5838
5839         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
5840         tramp_init functions as they are no longer needed.
5841
5842 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
5843
5844         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
5845         
5846         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
5847
5848         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
5849         
5850         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
5851         support that now.
5852
5853         * mini-ops.h: Add OP_LMUL_IMM.
5854
5855         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
5856         long mul/div opcodes as intrinsic.
5857
5858         * mini-amd64.c (emit_call): Handle the case when the callee might be
5859         an AOT method.
5860
5861 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
5862
5863         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
5864         extra safe.
5865         
5866         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
5867
5868         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
5869
5870 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
5871
5872         * mini.c (mono_codegen): Don't leak here, to help people running
5873         monogrind.
5874
5875 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
5876
5877         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
5878         conversions in sse2 mode.
5879
5880         * basic-float.cs: Add regression test.
5881         
5882         * mini-amd64.c: Reenable sse2.
5883
5884 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
5885
5886         * mini-amd64.c: Disable sse2 until some regressions are fixed.
5887
5888 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
5889
5890         * driver.c: Copyright text should include 2005.
5891         
5892 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
5893
5894         * cpu-amd64.md (load_membase): Fix more max lengths.
5895
5896 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
5897
5898         * cpu-amd64.md (load_membase): Fix max length.
5899
5900         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
5901
5902         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
5903
5904         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
5905         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
5906
5907         * basic-float.cs: Add rounding regression test.
5908
5909         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
5910
5911 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
5912
5913         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
5914         structures in registers for pinvoke wrappers.
5915
5916 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
5917
5918         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
5919
5920 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
5921
5922         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
5923         wrapper to mono_jit_thread_attach.
5924
5925         * mini.c (mini_jit_thread_attach): New jit icall.
5926
5927         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
5928         native->managed wrappers.
5929
5930         * exceptions.cs: Add new regression test.
5931
5932         * mini.c (optimize_branches): Check regions in the cbranch to throw
5933         block case as well. Fixes #73242.
5934
5935 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
5936
5937         * mini.c: thread safety fixes.
5938
5939 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
5940
5941         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
5942         patching stuff, since delegates use jump trampolines so there is
5943         no caller.
5944
5945         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
5946         jump trampolines.
5947         
5948         * tramp-amd64.c: Fix build.
5949
5950         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
5951         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
5952
5953         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
5954         Rename this to mono_arch....
5955         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
5956
5957         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
5958
5959         * mini-amd64.c (emit_call): If both the caller and the callee is
5960         guaranteed to have 32 bit addresses, emit a normal call.
5961
5962         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
5963
5964         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
5965         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
5966         method_ptr inside delegates.
5967
5968 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
5969
5970         * mini.c (mono_jit_free_method): Free the method info even if the native code is
5971         invalidated. Fixes #73001.
5972
5973         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
5974
5975         * mini-x86.c: Only use stdcall for pinvokes on windows.
5976
5977 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
5978
5979         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
5980         * mini-x86.c: remove unreliable __thread var offset detection,
5981         use the correct accessors and enable by default.
5982
5983 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
5984
5985         * mini.c (mono_jit_free_method): Fix memory leak.
5986
5987 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
5988
5989         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
5990
5991 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
5992
5993         * cpu-amd64.md: Fix lengths of atomic opcodes.
5994
5995 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
5996
5997         * driver.c: try to not imply using ICU is any good.
5998
5999 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
6000
6001         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
6002         functions as inline ops.
6003
6004         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
6005         some Interlocked functions as inline ops.
6006
6007         * mini.c (move_basic_block_to_end): Fix bug in last patch.
6008
6009         * mini.h (MonoBasicBlock): Reorganize fields a bit.
6010
6011         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
6012
6013         * mini.c: Add support for OP_NOT_TAKEN.
6014
6015         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
6016         structures in registers for pinvoke wrappers.
6017
6018         * mini-amd64.c: Fix warnings.
6019
6020 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
6021
6022         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
6023
6024         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
6025
6026         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
6027         address instead of loading the address from it.
6028
6029         * mini-x86.c: Add support for returning small structs in registers
6030         on Win32. Fixes part of #70864.
6031         
6032 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
6033
6034         * trace.c (get_token): Improve error checking.
6035
6036 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
6037
6038         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
6039
6040 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
6041  
6042         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
6043         it can be reused for MonoClass.
6044         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
6045         _LINKDEMAND.
6046
6047 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
6048
6049         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
6050         instead of a MonoReflectionMethod. The method information wasn't used
6051         when displaying SecurityException details (but will be now).
6052
6053 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
6054
6055         * Makefile.am : windows build fix.
6056
6057 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
6058
6059         * iltests.il: Add new regression test.
6060
6061         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
6062         #72522.
6063
6064 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
6065  
6066         * mini.c: Moved linkdemand check into helper function check_linkdemand
6067         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
6068         LDFTN, LDVIRTFTN).
6069
6070 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
6071
6072         * declsec.c: Added statistics counter for different kinds of 
6073         LinkDemands.
6074         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
6075         (and commented) declaration.
6076         * mini.c: Added statistics counter for security Demand code 
6077         generation. Added display of security statistics.
6078
6079 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
6080
6081         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
6082         Fix compilation errors under gcc-2.95.
6083
6084 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
6085
6086         * mini.c, driver.c: Use the new jit trampoline hashtable
6087
6088 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
6089
6090         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
6091
6092 2005-02-11  Martin Baulig  <martin@ximian.com>
6093
6094         * debug-mini.c (mono_debug_close_method): Free the line number array.
6095
6096 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
6097
6098         * aot.c: Break up large methods into smaller ones. Share GOT slots for
6099         icalls.
6100
6101         * mini.h: Bump AOT file format version. 
6102
6103 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
6104
6105         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
6106         APTC and P/Invoke.
6107         * declsec.h: Added macros to get/set lazyly initialized security 
6108         informations about assemblies. Added new enum for different type of
6109         possible LinkDemand violation. Added function to check LinkDemands.
6110         * mini.h: Added a field to MonoCompile to hold any security violation
6111         detected when JITting a method (so it can be thrown later).
6112         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
6113         and CEE_CALLVIRT. Added code to throw exception at the end of
6114         mini_method_compile (note: the exception is unhandled right now).
6115
6116 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
6117
6118         * mini.c, jit-icalls.c: use the managed implementation of
6119         memset for initobj and memset, to avoid managed <-> unmanaged
6120         transitions.
6121
6122 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
6123
6124         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
6125         optimization if it would need a GOT var.
6126
6127         * basic.cs: Add tests for constant propagation and switch statements.
6128
6129         * ssa.c: Fix out-of-range constant propagation and switch statements.
6130
6131 2005-02-09    <vargaz@freemail.hu>
6132
6133         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
6134
6135 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
6136
6137         * cpu-amd64.md (load_membase): Fix max length of load_membase.
6138
6139 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
6140
6141         * mini.c: update to new signature of mono_class_get_allocation_ftn().
6142
6143 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
6144
6145         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
6146         arithmetic operations.
6147
6148 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
6149
6150         * mini-ppc.c: add a workaround for broken user code that
6151         DllImports vararg functions with non-vararg signatures.
6152
6153 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
6154
6155         * mini.c (mono_jit_compile_method_inner): Add detection and a 
6156         meaningfull error message for assemblies written in Managed C++.
6157
6158         * tramp-amd64.c mini-amd64.h: Add support for 
6159         create_trampoline_from_token ().
6160
6161         * aot.c mini-x86.c abcremoval.c: Applied patch from
6162         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
6163
6164 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
6165
6166         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
6167         which takes a MonoImage/token as parameter instead of a MonoMethod.
6168
6169         * aot.c: Use the new trampoline for initializing vtables.
6170
6171         * aot.c: Add support for ldfld/stfld_remote wrappers.
6172
6173         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
6174         rules for compare <MEM>, IMM.
6175
6176         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
6177
6178         * aot.c: Handle inherited finalizers correctly.
6179
6180 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
6181
6182         * inssel.brg (stmt): Add a missing _setup_... ().
6183
6184         * aot.c: Save some parts of the class state to the AOT file and use it
6185         to recompute that state when a class is initialized.
6186
6187         * mini.c: Install AOT hooks into the runtime.
6188
6189         * mini.h: Bump AOT file format version.
6190         
6191         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
6192         Fixes #72148.
6193
6194         * iltests.il: Add new test.
6195
6196 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
6197
6198         * mini.c: fix typo.
6199
6200 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
6201
6202         * mini.c: setup the statistical profiler in the thread attach
6203         callback to cope with the new single thread code.
6204
6205 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
6206
6207         * mini-ppc.c: ensure we have enough room for the profiler
6208         calls (fixed bug#72084).
6209
6210 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
6211
6212         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
6213         it.
6214
6215 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
6216
6217         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
6218
6219 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
6220
6221         * ssapre.c: Fixed an issue with down safety (this allows IronPython
6222         to succesfully execute parrotbench).
6223         * ssapre.h: Likewise.
6224
6225 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
6226
6227         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
6228         variable for stores to method arguments (fixes a SSAPRE issue).
6229
6230 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
6231
6232         * mini.c: handle value types in dup, fixes gen-112.cs.
6233
6234 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
6235
6236         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
6237         sequence for calls in dynamic methods to avoid thunks.
6238
6239 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
6240
6241         * mini.c: correctly remove dynamic methods from the hashtable.
6242
6243 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
6244
6245         * driver.c: Disabled SSAPRE until fix the bug that appears
6246         in IronPython's parrotbench.
6247
6248 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
6249
6250         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
6251
6252         * mini.c (mono_method_to_ir): Revert the previous change.
6253         
6254         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
6255         when AOT compiling.
6256
6257         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
6258         mono_jit_info_table_find () etc. when running under valgrind.
6259
6260         * inssel.brg: Fix warnings.
6261
6262         * mini-exceptions.c: Fix warnings.
6263
6264 2005-01-31  Martin Baulig  <martin@ximian.com>
6265
6266         * driver.c (compile_all_methods_thread_main): Don't try to compile
6267         generic methods or anything which has type parameters.
6268
6269 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
6270
6271         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
6272
6273         * TestDriver.cs: Add --verbose flags.
6274
6275         * graph.c ssa.c: Fix 64 bit warnings.
6276         
6277         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
6278         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
6279         Fix 64 bit warnings.
6280
6281         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
6282         variable not spotted by gcc.
6283         
6284         * mini-amd64.c inssel-amd64.brg: Applied patch from  
6285         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
6286         X86_COMPARE_MEMBASE opcodes.
6287
6288         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
6289
6290 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
6291
6292         * *: MonoMethod->signature might be NULL now. You *MUST* use
6293         mono_method_signature.
6294
6295 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
6296
6297         * driver.c (compile_all_methods_thread_main): Compile the methods
6298         without invoking cctors.
6299
6300 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
6301
6302         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
6303         * basic-calls.cs: test for the above.
6304
6305 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
6306
6307         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
6308         MonoJitInfo changes.
6309
6310 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
6311
6312         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
6313         eagerly if it contains dynamic methods.
6314         
6315         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
6316
6317         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
6318         trace, it is now computed by an icall from trace_ips.
6319         
6320         * mini-exceptions.c: Fix a warning.
6321
6322 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
6323
6324         * mini-exceptions.c: don't bother getting stack trace info if
6325         it's not going to be used.
6326
6327 2005-01-27  Raja R Harinath  <rharinath@novell.com>
6328
6329         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
6330         ssapre-mini-ops.h.
6331
6332 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
6333
6334         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
6335
6336         * aot.c: Avoid calling mono_method_get_header () if not needed.
6337
6338         * mini.h: Bump AOT file format version.
6339         
6340         * mini.c (mono_emit_native_call): Allocate a GOT var here.
6341
6342         * mini.c (mono_print_tree): Print more info for calls.
6343
6344 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
6345
6346         * declsec.h: Remove warning by adding missing include for marshal.h
6347
6348 2005-01-26  Martin Baulig  <martin@ximian.com>
6349
6350         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
6351         `ip' twice.
6352
6353 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
6354
6355         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
6356         flags.
6357
6358         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
6359
6360         * aot.c (mono_compile_assembly): Fix a warning.
6361
6362 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
6363
6364         * declsec.c: Look for security attributes on the original MonoMethod 
6365         (and not the wrapped one). This fix permissions on icalls.
6366
6367 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
6368
6369         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
6370
6371         * mini.c (mono_allocate_stack_slots): Add a fixme.
6372
6373         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
6374
6375 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
6376
6377         * inssel.brg: optimize casts of sealed types (more
6378         optimizations waiting for fixes in remoting).
6379
6380 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
6381
6382         * inssel.brg (stmt): Add another dummy rule.
6383
6384         * driver.c: Fix warnings.
6385
6386         * driver.c (mono_main): If running under valgrind, instruct glib to use
6387         the system allocation functions so valgrind can track the memory
6388         allocated by the g_... functions.
6389
6390         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
6391
6392         * mini-ops.h: Add OP_DUMMY_STORE opcode.
6393
6394         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
6395
6396         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
6397         variables in try regions.
6398
6399         * mini.c (mini_method_compile): Don't disable optimizations on large
6400         methods when AOT compiling.
6401
6402         * mini.c (mono_allocate_stack_slots): New arch independent method to 
6403         allocate stack slots. Not yet used.
6404
6405 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
6406
6407         * debug-mini.c (mono_debug_close_method): Plug some leaks.
6408
6409 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
6410
6411         * mini-ppc.c: make the branch info relative as the code
6412         buffer can be reallocated.
6413
6414 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
6415
6416         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
6417         * driver.c: Removed the AOT/security restriction. Now initialize the
6418         security manager (in metadata) if --security is used.
6419         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
6420         rather than the pointer to declarative security, when AOT is used.
6421
6422 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
6423
6424         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
6425         basic blocks, reduced intrinsic exception throwing code size.
6426
6427 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
6428
6429         * driver.c (mini_usage): Reorder the usage screen.
6430
6431 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
6432
6433         * mini.c (mono_resolve_patch_target): Fix warning.
6434
6435 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
6436
6437         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
6438         previous patch.
6439
6440         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
6441
6442         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
6443         breaks the amd64 build.
6444
6445         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
6446         register allocation. Fixes #71454.
6447
6448         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
6449
6450         * arrays.cs: Add new regression test.   
6451
6452 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
6453
6454         * ssapre.c: Turned usage of snprintf to GString.
6455         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
6456         (I left it on by mistake in my previous commit).
6457
6458 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
6459
6460         * mini.c, cfold.c, basic-calls.cs: preserve side effects
6461         on cond branch optimization (fixes bug# 71515).
6462
6463 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
6464
6465         * abcremoval.c: Fixed bug 71062.
6466         * abcremoval.h: Likewise.
6467
6468 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
6469
6470         * mini.c: Added a new functionality to optimize_branches, the removal
6471         of useless basic blocks, and fixed some problem in the removal of
6472         critical edges; some utility functions added for both purposes.
6473         * ssapre.c: Added complex expression support, and fixed bug 70637.
6474         * ssapre.h: Likewise.
6475         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
6476         enabled in SSAPRE.
6477         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
6478         * driver.c: Re-enabled SSAPRE.
6479
6480 2005-01-19  Martin Baulig  <martin@ximian.com>
6481
6482         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
6483         the result of mono_get_method_constrained().
6484
6485 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
6486
6487         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
6488         manager.
6489
6490 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
6491
6492         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
6493         be detected.  Fixes #59296.
6494
6495 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
6496
6497         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
6498         which can happen. Fixes #71361.
6499
6500 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
6501
6502         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
6503         manager.
6504
6505 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
6506
6507         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
6508         appdomain-unload.exe to fail.
6509         
6510         * mini.c: Fix some memory leaks.
6511
6512 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
6513
6514         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
6515         Fixed bug and sped up some codepaths.
6516
6517 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
6518
6519         * mini.c: Fix some memory leaks.
6520
6521         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
6522         conversion.
6523
6524         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
6525
6526         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
6527         #71320.
6528
6529         * iltests.il: Add regression test for #71320.
6530
6531 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
6532
6533         * mini.c (mono_codegen): Fix installation of profiler hooks.
6534
6535         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
6536
6537 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
6538
6539         * mini.h, mini.c, cfold.c: optimize access to enum
6540         readonly fields, too. Eval conditional branches if possible
6541         to perform unreachable code removal in more cases.
6542
6543 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
6544
6545         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
6546
6547         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
6548         code manager.
6549
6550         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
6551         WinXP DEP. Fixes #71244.
6552
6553 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
6554
6555         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
6556
6557 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
6558
6559         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
6560
6561 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
6562
6563         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
6564         changes.
6565
6566         * mini.h: Bump AOT version.
6567
6568         * mini.h (MonoCompile): Change exvar to a hash table.
6569
6570         * mini.c: Allocate a separate exvar for each handler block.
6571
6572         * mini.c: Get rid of the computation of filter_lengths, its not needed.
6573
6574         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
6575         ex var with the pending exception and only throw if the two are equal.
6576         Fixes #68552.
6577         
6578         * exceptions.cs: Add tests for rethrow and nested catch clauses.
6579
6580         * mini-x86.c: Fix warnings.
6581
6582         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
6583         used by all the ports now.
6584
6585         * aot.c: Add write-symbols and save-temps options.
6586
6587 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
6588
6589         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
6590
6591 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
6592
6593         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
6594         operations.
6595
6596         * tramp-s390.c: Check vtable slot belongs to the domain.
6597
6598         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
6599         as per other platforms.
6600
6601         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
6602
6603 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
6604
6605         * driver.c: we don't run the Main() code in a subthread anymore.
6606
6607 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
6608
6609         * mini.c: added experimental rtc support in the statistical
6610         profiler: if the user has the permission, more accurate statistics
6611         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
6612         The MONO_RTC value must be restricted to what the linux rtc allows:
6613         power of two from 64 to 8192 Hz.
6614
6615 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
6616
6617         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
6618
6619 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
6620
6621         * mini-ppc.c: better icache flush for smp.
6622
6623 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
6624
6625         * mini-amd64.c (emit_move_return_value): Fix memory leak.
6626
6627         * mini-x86.c (get_call_info): Add the get_call_info () code from the
6628         amd64 port, not yet used.
6629
6630 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
6631
6632         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
6633         a struct type.
6634
6635 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
6636
6637         * driver.c: Added --security option to activate the security manager.
6638         Right now this will allow code generation for declarative demands and
6639         is disabled when AOT is specified.
6640         * mini.c: Add code generation for declarative security demands.
6641         * mini.h: Add mono_use_security_manager as an extern gboolean.
6642
6643 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
6644
6645         * aot.c (mono_compile_assembly): Speed up compilation a bit by
6646         emitting more dense assembly code.
6647
6648         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
6649         exception throwing stuff.
6650
6651 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
6652
6653         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
6654         dead code.
6655
6656         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
6657         left in by mistake.
6658
6659         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
6660         fixed.
6661
6662         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
6663
6664         * tramp-*.c: Only patch vtable slots if the object is in the current
6665         domain. Fixes appdomain-unload.exe.
6666
6667         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
6668         
6669         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
6670         x86 branch.
6671
6672 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
6673
6674         * mini.c (reverse_branch_op): New helper function.
6675
6676         * mini.c (optimize_branches): Run the new optimization only on 
6677         platforms which support it. Also reverse all kinds of branches.
6678
6679         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
6680
6681         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
6682         a throw statement.
6683
6684         * mini.c (optimize_branches): Reverse not-equals branches if the false
6685         bblock is a throw. This happens a lot of time with argument checking in
6686         corlib.
6687
6688         * mini.c (mono_codegen): Add support for placing basic blocks after
6689         the function epilogue.
6690
6691         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
6692         function epilogue.
6693         
6694 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
6695
6696         * mini.c (setup_stat_profiler): Only set this up if the platform
6697         supports ITIMER_PROF.
6698
6699 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
6700
6701         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
6702         previous patch.
6703
6704         * inssel.brg: Fix a warning.
6705
6706 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
6707
6708         * mini.c: added support for statistical profiler 
6709         (run with: --profile=default:stat).
6710
6711 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
6712
6713         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
6714
6715         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
6716
6717         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
6718         related to global registers from the amd64 port.
6719
6720 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
6721
6722         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
6723
6724         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
6725         with global registers.
6726         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
6727
6728         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
6729
6730 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
6731
6732         * debug-mini.c (encode_value): Fix off-by-one.
6733
6734         * aot.c (encode_value): Likewise.
6735
6736         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
6737
6738 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
6739
6740         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
6741         AOT.
6742
6743         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
6744         
6745         * aot.c (emit_method_info): Increase size of temp buffer.
6746
6747         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
6748         the AOT case.
6749
6750 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
6751
6752         * aot.c (emit_method_info): Fix build.
6753         
6754         * aot.c: Further rework of the AOT file format to reduce the size of
6755         the method info data.
6756
6757         * mini.h: Bump AOT file format version.
6758
6759 2004-12-27  Martin Baulig  <martin@ximian.com>
6760
6761         * mini.c (mini_get_method): New static method; call
6762         mono_get_method_full() and mono_get_inflated_method().
6763         (mono_method_to_ir): Use mini_get_method() instead of
6764         mono_get_method_full(). 
6765
6766 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
6767
6768         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
6769
6770 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
6771
6772         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
6773
6774         * inssel-amd64.brg: Add some optimization rules.
6775
6776 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
6777
6778         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
6779         standard not GC'd stuff is fine.
6780
6781 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
6782
6783         * aot.c: Rework the AOT file format to get rid of most of the global
6784         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
6785
6786         * mini.h: Bump AOT file format version.
6787         
6788 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
6789
6790         * mini.h: Bump AOT file format version.
6791
6792         * aot.c (mono_aot_is_got_entry): New function to determine if an 
6793         address is inside a GOT.
6794
6795         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
6796
6797         * cpu-pentium.md: Increase the maximum size of some instructions which
6798         might involve a got access.
6799         
6800         * mini.c (get_method_from_ip): Another debug helper function.
6801
6802         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
6803         when got var accesses are created during the decompose phase.
6804
6805         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
6806
6807         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
6808         argument mini_compile_method and to MonoCompile, and use this to
6809         determine whenever a given method is compiled for AOT. This allows the
6810         other methods compiled during AOT compilation to be free of AOT stuff,
6811         so the backends does not need to add special support for them by
6812         creating a fake GOT etc.
6813
6814         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
6815         longer needed.
6816
6817 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
6818
6819         * mini.c (mono_method_to_ir): It turns out that some of the
6820         x-appdomain wrappers are lax with types, so just ignore this for
6821         all wrappers.
6822
6823         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
6824         at the vtable->klass. If it is non-shared code we can just use the
6825         vtable.
6826
6827 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
6828
6829         * mini-ppc.c: access MonoDomain from tls, too.
6830
6831 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
6832
6833         * declsec.c: Removed unused variable (and related warning ;-)
6834
6835 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
6836
6837         * iltests.il: New test for LDELEMA on an array of ref types.
6838
6839         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
6840         all ldelema's on reftypes.
6841         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
6842         it was the wrong place to put it.
6843
6844         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
6845         register to pop to make this cleaner, at the request of Paolo.
6846
6847 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
6848
6849         * mini-ops.h (OP_GETHASHCODE): New op.
6850
6851         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
6852
6853         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
6854         operation.
6855
6856         For a microbenchmark, this reduces the cost of Hashtable.get_Item
6857         by 25%.
6858         
6859         * mini-x86.c (mono_arch_output_basic_block): Rather than
6860
6861         add ebp, 4
6862
6863         Emit
6864
6865         pop edx
6866
6867         The first is 3 bytes while the second is 1. This saves 36 kb on
6868         mscorlib, quite a big saving. When bootstraping mcs, I was able to
6869         see a small boost because of icache locality.
6870
6871         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
6872
6873 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
6874
6875         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
6876         started code sharing with the generic code.
6877
6878 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
6879
6880         * mini-ppc.c, cpu-g4.md: added code for direct access to
6881         tls data slots.
6882
6883 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
6884
6885         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
6886          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
6887         to OP_TLS_GET.
6888
6889 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
6890
6891         * declsec.c|h: Added functions to cache the declarative stack modifiers
6892         in MonoJitInfo and to create a security frame from a MonoJitInfo 
6893         structure.
6894         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
6895         created. Register internal calls for System.Security.SecurityFrame::
6896         _GetSecurityFrame and _GetSecurityStack.
6897         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
6898         the definitions for the new stack walk/callback mechanism.
6899         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
6900         first security frame for LinkDemands and InheritanceDemands) and
6901         GetSecurityStack for Demands. Both use the new mono_walk_stack code
6902         from lupus.
6903         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
6904         walk initialization (lupus).
6905
6906 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
6907
6908         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
6909         idiom.
6910         (handle_loaded_temps): Do not create a temporary variable for
6911         things that we know are temps. They will never be modified.
6912         (mono_spill_call): Set MONO_INST_IS_TEMP
6913         (mono_emulate_opcode): ditto
6914         (emit_tree): ditto
6915         (mono_method_to_ir.CEE_DUP): ditto
6916
6917 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
6918
6919         * mini.c (type_to_eval_stack_type): Make this handle the void type
6920         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
6921         (emit_tree): use ip_in_bb to special case some common idioms
6922         Update all callers to pass in the IP.
6923         (mono_method_to_ir): Make CEE_CALL* do the above as well.
6924
6925         This gives us a nice 2% speedup in mcs bootstrap.
6926
6927         * mini-x86.c (peephole_pass): Peephole pass to make
6928         mov  [foo], eax
6929         push [foo]
6930
6931         into
6932
6933         mov [foo], eax
6934         push eax
6935
6936         * mini.c (ip_in_bb): new method.
6937         (mono_method_to_ir): use this method rather than doing the hash
6938         lookup ourselves.
6939
6940         * linear-scan.c (mono_linear_scan): When expiring actives, you
6941         don't need to keep around variables that expire on this
6942         instruction. This makes it so that:
6943              a = b + 1
6944         will turn into:
6945              store (ebx add (ebx, 1))
6946         which will become
6947              add ebx, 1
6948
6949 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
6950
6951         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
6952         combination to avoid doing two copies. Fix up problems with previous
6953         patch.
6954
6955         * mini.c: Fix 64 bit warnings.
6956
6957         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
6958
6959 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
6960
6961         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
6962         changes from the x86 code.
6963
6964         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
6965
6966 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
6967
6968         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
6969         throwing code to reduce its size, unify the AOT and non-aot code and 
6970         get rid of relocations in the AOT case.
6971
6972         * mini-x86.h mini.c exceptions-x86.c 
6973         (mono_arch_get_throw_corlib_exception): New arch specific function to 
6974         raise corlib exceptions which doesn't require relocations in the 
6975         caller.
6976
6977         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
6978
6979 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
6980
6981         * mini.c (mono_emit_method_call): Only allocate the got var when it is
6982         needed.
6983
6984         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
6985         in the AOT case.
6986
6987 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
6988
6989         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
6990         with add function when used from Inc/dec atomic 
6991         functions. Re-enabled optimization on x86.
6992         * mini-ops.h: renamed atomic_add functions to
6993         allow _add to match the Interlocked::Add and
6994         _add_next to match Interlocked::Inc/Dec.
6995
6996 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
6997
6998         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
6999         linking of BBs to the end BB, and enabled SSAPRE also with
7000         consprop and copyprop (which was prevented by that bug).
7001
7002 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
7003
7004         * mini-x86.c: disabling the Interlocked optimizing code. 
7005
7006 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
7007
7008         * aot.c (load_aot_module): Move reading of got_addr after the AOT
7009         file version check.
7010         
7011 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
7012
7013         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
7014         interlocked optimization due lack of support on x86, rewrote 
7015         exchange to take into account that base may be in eax.
7016         
7017         xsp works again; activated Interlocked optimizing code.
7018         
7019 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
7020
7021         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
7022
7023 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
7024
7025         * mini-ops.h: Add new opcodes.
7026
7027         * mini.h: Add new patch types. Add got_var to MonoCompile.
7028
7029         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
7030         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
7031         make it work with all kinds of patchable code.
7032
7033         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
7034         address of the GOT, and referencing entries in the GOT.
7035
7036         * mini.c: Add code to load the GOT address if needed by an opcode.
7037
7038         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
7039         independent AOT code on the x86 using an elf-style Global Offset Table.
7040
7041 2004-12-14  Raja R Harinath  <rharinath@novell.com>
7042
7043         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
7044
7045 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7046
7047         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
7048         when running xsp.
7049
7050 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
7051
7052         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
7053         of Interlocked:Increment/Decrement/Add as inline ops.
7054         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
7055
7056 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
7057
7058         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
7059         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
7060
7061 2004-12-12  Duncan Mak  <duncan@ximian.com>
7062
7063         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
7064         again. `patch_info->table_size' is no longer valid after Zoltan's
7065         commit #37636.
7066
7067 2004-12-12  Martin Baulig  <martin@ximian.com>
7068
7069         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
7070         if we are the "real" method, ie. not an inlined method inside it.
7071
7072 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
7073
7074         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
7075         before we look in the special fields table. This fixes
7076         ../tests/thread-static-init.cs.
7077
7078 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7079
7080         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
7081         for Array get_Rank and get_Length. Fixes bug #70465.
7082
7083 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
7084
7085         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
7086         separate structure to reduce the size of MonoJumpInfo.
7087
7088 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
7089
7090         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
7091
7092 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
7093
7094         * mini.c (mini_get_inst_for_method): Changed to allow ports
7095         to return a MonoInst instead of opcode 
7096         (renamed mini_get_opcode_for_method to better reflect the new functionality)
7097         
7098         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
7099         Allow ports to return a created MonoInst instead of op-code, will enable
7100         new optimizations.
7101         (renamed mini_get_opcode_for_method to better reflected the functionality)
7102
7103 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
7104
7105         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
7106
7107 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
7108
7109         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
7110         Fixes #69985.
7111
7112 2004-12-08  Martin Baulig  <martin@ximian.com>
7113
7114         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
7115         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
7116
7117 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
7118
7119         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
7120         correctly.
7121
7122         * exceptions.cs: Disable some tests which depend on properties of x86 fp
7123         arithmetic.
7124
7125 2004-12-08  Raja R Harinath  <rharinath@novell.com>
7126
7127         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
7128
7129 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
7130
7131         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
7132         bug introduced by the previous patch.
7133
7134 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
7135
7136         * mini-ppc.c, objectc.cs: handle large structs passed by value
7137         (fixes bug #69972).
7138
7139 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
7140
7141         * mini-ppc.c: OP_ARGLIST implementation from
7142         Geoff Norton  <gnorton@customerdna.com>.
7143
7144 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
7145
7146         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
7147         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
7148
7149 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
7150
7151         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
7152
7153 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7154
7155         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
7156         support.
7157
7158 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
7159
7160         * mini-sparc.c: Zero out localled-ed memory.
7161
7162         * iltests.il: Add tests for zeroing out localloc-ed memory.
7163
7164 2004-12-04  Martin Baulig  <martin@ximian.com>
7165
7166         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
7167         mono_method_get_signature_full().       
7168
7169 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
7170
7171         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
7172         and some utility functions (always for SSAPRE), integrated SSAPRE.
7173         * mini.h: Likewise.
7174         * driver.c: Added ssapre option.
7175         * ssa.c: Small fix on OP_ARG handling.
7176         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
7177         * Makefile.am: Likewise.
7178
7179 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
7180
7181         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
7182         now in the xp code.
7183
7184         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
7185         icall.
7186
7187 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7188
7189         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
7190         
7191         * cpu-s390.md : Increase instruction length of oparglist.
7192
7193         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
7194
7195 2004-11-30  Martin Baulig  <martin@ximian.com>
7196
7197         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
7198         virtual generic methods.  We call a special helper_compile_generic_method()
7199         icall to retrieve the method from the vtable, inflate and compile
7200         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
7201
7202         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
7203
7204 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
7205
7206         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
7207
7208 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
7209
7210         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
7211         Fixes #69929.
7212
7213 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
7214
7215         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
7216         platforms with PIC aot.
7217
7218 2004-11-28  Martin Baulig  <martin@ximian.com>
7219
7220         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
7221         Fixes gen-112.cs.
7222
7223 2004-11-28  Martin Baulig  <martin@ximian.com>
7224
7225         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
7226         the result of mono_type_get_underlying_type() to check whether
7227         we're byref.
7228
7229 2004-11-26  Martin Baulig  <martin@ximian.com>
7230
7231         * mini.c
7232         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
7233         in the g_assert().
7234
7235 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
7236
7237         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
7238         the same way as the other arguments so they won't get clobbered.
7239
7240         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
7241         calls through R11 since it is clobbered by the trampoline code.
7242
7243 2004-11-26  Raja R Harinath  <rharinath@novell.com>
7244
7245         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
7246         pick up in-tree mscorlib.dll.
7247
7248 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
7249
7250         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
7251
7252         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
7253         runtime data/code are now stored in a table similar to the GOT in ELF. 
7254         This allows the code itself to be position independent.
7255
7256         * aot.c: Fix loading of referenced assemblies after the lazy assembly
7257         loading changes.
7258
7259         * aot.c: Attach ELF type (object/function) directives to all global
7260         symbols.
7261
7262         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
7263
7264         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
7265
7266         * mini-amd64.h: Turn on PIC AOT code.
7267
7268         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
7269         returning the offset within an OP_AOTCONST instruction where the GOT
7270         offset needs to be added.
7271
7272         * mini.h: Bump AOT file format version.
7273
7274 2004-11-25  Martin Baulig  <martin@ximian.com>
7275
7276         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
7277         uninflated generic methods.
7278
7279 2004-11-25  Martin Baulig  <martin@ximian.com>
7280
7281         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
7282
7283 2004-11-24  Martin Baulig  <martin@ximian.com>
7284
7285         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
7286         original klass (this only applies for generic instances).
7287
7288 2004-11-24  Martin Baulig  <martin@ximian.com>
7289
7290         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
7291         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
7292         that array).
7293
7294 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
7295
7296         * mini.c (mono_method_to_ir): Disable inlining for methods containing
7297         localloc. Fixes #69678.
7298
7299         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
7300         
7301 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
7302
7303         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
7304         used SSE registers on pinvoke calls. Fixes #69774.
7305
7306 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
7307
7308         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
7309         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
7310
7311 2004-11-23  Raja R Harinath  <rharinath@novell.com>
7312
7313         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
7314         Refer directly to the mcs/ tree.
7315
7316 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7317
7318         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
7319         Check if a trampoline for a synchronized method is required. 
7320
7321 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
7322
7323         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
7324         with localloc if needed. Throe arithmetric exception in
7325         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
7326         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
7327
7328 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
7329
7330         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
7331         types before switching on type.  Fixes #69622.
7332
7333 2004-11-19  Raja R Harinath  <rharinath@novell.com>
7334
7335         * Makefile.am (check-local): New.  Integrate into 'make check'.
7336         (MCS,RUNTIME): Define using in-tree mono and mcs.
7337         (ILASM): New.
7338         (%.exe): Use $(ILASM).
7339
7340 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
7341
7342         * mini-ppc.c: adjust initial prolog size (bug #69691).
7343
7344 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
7345
7346         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
7347         #69664.
7348
7349 2004-11-17  Raja R Harinath  <rharinath@novell.com>
7350
7351         * Makefile.am (clean-local): Rename from 'clean'.
7352
7353 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7354
7355         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
7356         to mono_arch_is_int_overflow. 
7357         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
7358         SIGFPE events.
7359
7360 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
7361
7362         * declsec.c|h: New files to support declarative security attributes.
7363         Added function to check if a method has (applicable) security.
7364         * mini.c|h: Add check for declarative security attributes in
7365         mono_method_check_inlining.
7366         * Makefile.am: Added declsec.c and declsec.h to the build.
7367
7368 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
7369
7370         * mini.c, mini.h: update to keep dynamic code info per-domain.
7371
7372 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
7373
7374         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
7375         (mini_init): Get rid of it from here too.
7376
7377 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
7378
7379         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
7380         implemented OP_RETHROW (patch by Geoff Norton
7381         <gnorton@customerdna.com>).
7382
7383 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
7384
7385         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
7386         between appdomains.  Fixes appdomain-unload on PPC.
7387
7388 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
7389
7390         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
7391         mini-exceptions.c: handle the new wrapper types.
7392         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
7393         token value as a MonoClass* when compiling a wrapper.
7394         mono_jit_create_remoting_trampoline now takes an additional
7395         MonoRemotingTarget parameter.
7396         
7397 2004-11-10  Martin Baulig  <martin@localhost>
7398
7399         * mini.c (mono_method_to_ir): Use `generic_container->context'
7400         rather than creating a new one.
7401
7402 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7403
7404         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
7405
7406         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
7407
7408 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
7409
7410         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
7411         the experimental aot cache stuff.
7412
7413 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
7414
7415         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
7416         mini-exceptions.c: update to exception clause structure changes.
7417
7418 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
7419
7420         * exceptions-x86.c (throw_exception): Fix warnings.
7421
7422         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
7423         for OP_RETHROW.
7424
7425 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
7426
7427         * exceptions-sparc.c (get_throw_exception): Really fix this.
7428
7429 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
7430
7431         * tramp-*.c: we no longer support icalls without wrappers, so
7432         a bit of code can be removed here
7433
7434 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
7435
7436         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
7437         patch.
7438
7439         * cpu-sparc.md: Add op_rethrow.
7440
7441         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
7442
7443         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
7444
7445         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
7446         * mini-ops.h: Add OP_RETHROW.
7447
7448         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
7449
7450         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
7451
7452 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
7453         
7454         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
7455         Makes the output much easier to read
7456
7457 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
7458
7459         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
7460         prevents another huge leak when compiling with ssa. Secondly, the
7461         performance of doing this rather than freeing the lists is much
7462         better. GList does a lock every time you allocate a list link,
7463         so that it can use a memory pool. So, it is better to just use
7464         a memory pool of our own.
7465         
7466         * ssa.c, linear-scan.c: replace g_list_remove_link with
7467         g_list_delete.  The remove one does not free the GList, so we were
7468         leaking memory. On -O=all --compile-all with corlib, this cut down
7469         3 MB of allocations.
7470
7471 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
7472
7473         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
7474
7475         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
7476
7477         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
7478         into a new function mono_create_jit_trampoline ().
7479
7480 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
7481
7482         * trace.c (get_spec): Allow tracing of classes without a namespace.
7483
7484 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
7485
7486         * mini.c: Fix pointer overwrite in mini_method_compile.
7487
7488 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
7489
7490         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
7491         The darwin ABI needs some special handling for 1 and 2 byte structs
7492         Lets use lbz/lhz instead of lwz everywhere.
7493         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
7494         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
7495         Use stb/sth for the former, and put the latter always on stack instead of in
7496         argument registers.
7497
7498 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
7499
7500         * trace.c (is_filenamechar): Add '_'.
7501
7502 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
7503
7504         * mini-s390.c: Fix prolog length to allow for large trace requirements.
7505
7506         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
7507
7508 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
7509
7510         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
7511         depends on libmonogc. Fixes #68805.
7512
7513 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
7514
7515         * mini.c (mono_jit_free_method): Provide extra information for
7516         this error.  Currently this leaks, but will be turned into a
7517         developer option in the future.
7518
7519 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
7520
7521         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
7522
7523 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
7524
7525         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
7526         boundary. Fixes reading of PATCH_INFO_R4 and R8.
7527         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
7528
7529 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
7530
7531         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
7532         trampolines for AOT code.
7533
7534 2004-10-22    <vargaz@freemail.hu>
7535
7536         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
7537         constructed types. Fixes #68136.
7538
7539 2004-10-21  Martin Baulig  <martin@ximian.com>
7540
7541         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
7542         if it returns true, unwind the stack to the call instruction.
7543
7544 2004-10-21    <vargaz@freemail.hu>
7545
7546         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
7547
7548         * mini.h: Bump AOT version number.
7549
7550         * objects.cs: Add another test for unbox trampolines.
7551
7552         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
7553         valuetype methods.
7554
7555 2004-10-20    <vargaz@freemail.hu>
7556
7557         * driver.c: Add SHARED to the set of optimizations tested.
7558
7559         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
7560
7561         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
7562         used by CEE_NEWARR.
7563
7564         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
7565
7566 2004-10-20  Martin Baulig  <martin@ximian.com>
7567
7568         * mini-exceptions.c (mono_handle_exception): Call
7569         mono_debugger_handle_exception() to tell the debugger about
7570         catch/finally clauses.
7571
7572 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
7573
7574         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
7575
7576         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
7577         #68447.
7578
7579 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
7580
7581         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
7582         methods as their native size, fixed bug #57543, #57545.
7583         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
7584         This saves a temporary register and mullw call down into 1 (minor perf
7585         increase for cases like sum = sum * 5;  This use to translate into:
7586             li r11,5
7587             mullw r28,r28,r11
7588         It now translates to
7589             mulli r28,r28,5
7590
7591 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
7592
7593         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
7594         #68388.
7595
7596 2004-10-11  Martin Baulig  <martin@ximian.com>
7597
7598         * mini.c (mono_method_to_ir): If we're a generic method, get the
7599         MonoGenericContainer from our MonoMethodNormal and create a
7600         MonoGenericContext from it.
7601
7602 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
7603
7604         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
7605
7606         * basic-long.cs: Add test for checked i8->i2 cast.
7607
7608 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7609
7610         * inssel-ppc.brg: added a couple of speedup rules.
7611
7612 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
7613
7614         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
7615         to speed up rebuilds.
7616
7617 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7618
7619         * mini-s390.c: Minor fix to OP_OR_IMM.
7620
7621 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
7622
7623         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
7624         better. Fixes appdomain-unload.exe on sparc.
7625
7626 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
7627
7628         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
7629         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
7630         see bug 67324.
7631
7632 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
7633
7634         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
7635
7636 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
7637
7638         * mini.c: Always generate a field read/write wrapper for members
7639         of the class MarshalByRefObject since the actual instance could
7640         be a CBO.
7641
7642 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
7643
7644         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
7645
7646 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
7647
7648         * driver.c mini.h trace.c: Move the setting of the main assembly into
7649         a separate function called mono_trace_set_assembly () and call it after
7650         actually loading the main assembly. Fixes #66872.
7651
7652 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
7653
7654         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
7655         using the code manager.
7656
7657 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
7658
7659         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
7660
7661 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
7662
7663         * cpu-amd64.md: Fix bug in previous patch.
7664         
7665         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
7666         #66650.
7667
7668 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
7669
7670         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
7671         mini-exceptions.c: updates for changed stack walk interface.
7672
7673 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7674
7675         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
7676
7677 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
7678
7679         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
7680
7681 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
7682
7683         * driver.c (mini_regression_list): Do not call mono_assembly_close 
7684         since assemblies can't be unloaded.
7685         
7686 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
7687
7688         * cpu-amd64.md: Fix more instruction lengths.
7689
7690         * cpu-amd64.md: Fix lengths of some instructions.
7691
7692 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
7693
7694         * inssel.brg: Make the array ldelema check aot friendly.
7695
7696 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
7697
7698         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
7699
7700         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
7701
7702 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
7703
7704         * mini-x86.c: Fix build.
7705
7706         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
7707         mono_type_get_underlying_type () helper function to simplify code.
7708         
7709 2004-09-09  Martin Baulig  <martin@ximian.com>
7710
7711         * mini-amd64.c: Don't access `type->data.klass' directly, call
7712         mono_class_from_mono_type() instead since the type may be a
7713         generic instance.
7714
7715 2004-09-09  Martin Baulig  <martin@ximian.com>
7716
7717         * mini-amd64.c (get_call_info): Fix support for generic instances.
7718         (add_valuetype): Use mono_class_from_mono_type() to get the class
7719         since we can be a generic instance.
7720
7721 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
7722
7723         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
7724
7725 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
7726
7727         * liveness.c: reset spill costs on each scan: bug 62107
7728
7729 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
7730
7731         * exceptions-sparc.c (mono_arch_find_jit_info): remove
7732         unnecessary line that doesn't compile
7733
7734 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
7735
7736         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
7737         trampolines, make them call an error function so people can fix their
7738         code.
7739
7740 2004-09-06  Martin Baulig  <martin@ximian.com>
7741
7742         * mini.c (mono_method_to_ir): When initializing locals, handle a
7743         generic instances like a valuetype if it's a valuetype and like a
7744         class if it's a class.
7745
7746 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
7747
7748         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
7749         stack. Fixes #64674.
7750
7751         * exceptions.cs: Add test for unwinding of call arguments.
7752
7753 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
7754
7755         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
7756         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
7757         set the carry/borrow flag). The sparc and s390 implementations
7758         can now use optimized versions (and simplify the code). ppc bugfixes.
7759
7760 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
7761
7762         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
7763
7764 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
7765
7766         * inssel-amd64.brg: Remove leftover 32 bit rule.
7767
7768         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
7769
7770 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
7771
7772         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
7773         mono_arch_find_jit_info functions into a new function. Fix a memory
7774         leak.
7775
7776         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
7777         refactored code.
7778         
7779 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
7780
7781         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
7782         as well.
7783         
7784         * exceptions.cs: Add array size tests.
7785
7786         * mini.c: Allocate a separate icall wrapper for each arity of 
7787         mono_array_new_va. Fixes #59509.
7788
7789         * exceptions.cs: Add testcase for 64578.
7790
7791         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
7792
7793         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
7794         
7795 2004-09-02  Martin Baulig  <martin@ximian.com>
7796
7797         * mini.c (mono_method_to_ir): When initializing the locals, call
7798         handle_initobj() on the generic instance itself, not its
7799         underlying type.
7800
7801 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
7802
7803         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
7804         MonoJitInfo for dynamic methods.
7805
7806         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
7807
7808         * mini.c: Add support for freeing JIT data for dynamic methods.
7809         
7810 2004-09-01  Martin Baulig  <martin@ximian.com>
7811
7812         * mini-x86.c (is_regsize_var): Added support for generic
7813         instances.
7814         (mono_arch_emit_prolog): Make this compile again, use
7815         `x86_push_imm_template (code)'.
7816
7817 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
7818
7819         * mini-x86.c: make all push_imm instructions that get
7820         patched always emit the long form
7821
7822 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
7823
7824         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
7825         in a per-domain hash.
7826
7827         * mini-amd64.c (merge_argument_class_from_type): Handle generic
7828         types.
7829
7830 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
7831
7832         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
7833         work.
7834         
7835         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
7836         work.
7837
7838         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
7839         Beginnings of SSE2 support.
7840
7841         * exceptions.cs: Add more tests for checked int<->uint casts.
7842
7843 2004-08-28  Martin Baulig  <martin@ximian.com>
7844
7845         * mini-x86.c (mono_arch_instrument_epilog): Added support for
7846         generic instances.
7847
7848         * mini.c
7849         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
7850         Handle generic instances recursively.
7851
7852 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
7853
7854         * iltests.il: test for conv.u8 on a constant
7855
7856 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
7857
7858         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
7859         LCONV_x4 (shrun_32 (membase)).
7860
7861 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
7862
7863         * inssel-x86.brg: c&p rules for push/setret of long
7864
7865 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
7866
7867         * inssel-x86.brg: c&p rules for compare (base, regvar) and
7868         compare (regvar, base)
7869
7870         * inssel-x86.brg: more burg love
7871
7872         * inssel.brg: more cleanup
7873
7874         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
7875
7876 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
7877
7878         * basic-long.cs, basic-calls.cs: new tests for optimization.
7879
7880 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
7881
7882         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
7883         patch.
7884
7885 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
7886
7887         * mini-amd64.c (read_tls_offset_from_method): Add another case.
7888         
7889 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
7890
7891         * inssel.brg (mini_emit_memcpy): use 
7892         NO_UNALIGNED_ACCESS to disable memcpy optimization
7893
7894 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
7895
7896         * mini-amd64.c: Handle generic types in various places.
7897
7898         * mini.c (mono_method_to_ir): Handle generic types in init locals.
7899
7900 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
7901
7902         * mini.c (handle_box): Fix warning.
7903
7904         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
7905
7906         * mini-amd64.h: Enable the emit_state optimization.
7907
7908         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
7909
7910         * mini-amd64.c: Add some new 64 bit peephole opts.
7911
7912         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
7913
7914         * cpu-amd64.md: sreg1 of div instructions must be %rax.
7915
7916         * mini-amd64.c: Register allocator fixes.
7917
7918         * mini.c: Add an optimization to emit_state to avoid allocation of new
7919         registers on some platforms.
7920
7921 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
7922
7923         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
7924
7925         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
7926         allocation. Fixes #63085.
7927
7928         * basic-long.cs: Add new regression test.
7929
7930         * mini-amd64.c: Register allocator improvements.
7931
7932 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
7933
7934         * mini-amd64.c (read_tls_offset_from_method): Add another code
7935         sequence.
7936
7937         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
7938         instruction sequence for nullifying class init trampolines.
7939
7940         * objects.cs: Add new regalloc test.
7941
7942         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
7943
7944 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
7945
7946         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
7947         
7948         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
7949         arguments.
7950
7951         * driver.c: Fix profiling after TLS changes.
7952         
7953         * driver.c (mono_main): Set mono_stats.enabled if needed.
7954
7955         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
7956         CEE_BOX.
7957
7958 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
7959
7960         * mini-x86.c: use a 1 op rather than a 2 op tls access
7961         instruction -> faster.
7962
7963 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
7964
7965         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
7966         x86 backend.
7967
7968 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
7969
7970         * exceptions-sparc.c (throw_exception): fix typo
7971
7972 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
7973
7974         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
7975         set tree->dreg correctly with tls. Allow any
7976         register to be used.
7977
7978         * mini-x86.c (read_tls_offset_from_method): add new code
7979         generation pattern seen with GCC.
7980
7981
7982 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
7983
7984         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
7985         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
7986         exceptions-sparc.c: fix some performance issues in exception
7987         handling and setting of the stack trace for exceptions that were
7988         already thrown.
7989
7990 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
7991
7992         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
7993         x86 backend.
7994         
7995         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
7996         registers.
7997
7998 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
7999
8000         This patch inlines tls access, when possible.
8001         
8002         * mini.h: new arch functions for TLS intrinsics.
8003         All platforms updated with a stub.
8004
8005         * mini.c: use the new intrinsics
8006
8007         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
8008         arch specific intrinsic for tls variables
8009
8010 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
8011
8012         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
8013         under windows.
8014
8015 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
8016
8017         * mini.c: thread local allocation
8018
8019 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
8020
8021         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
8022
8023         * Makefile.am: Link against the static version of libmonogc.
8024         
8025         * Makefile.am: Link the static versions of the convenience libraries
8026         into the mono executable.
8027
8028         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
8029
8030 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
8031
8032         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
8033         on integer overflow.
8034
8035         * mini-amd64.c: Reorganize function call code.
8036
8037         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
8038
8039 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
8040
8041         * inssel-x86.brg: use xor eax,eax.
8042         
8043         * basic.cs: new tests
8044
8045 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
8046
8047         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
8048         in exception throwing code.
8049         
8050 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
8051
8052         * inssel-x86.brg: use xor esi,esi.
8053
8054 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
8055
8056         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
8057         can trace methods compiled during mini_init () too.
8058
8059         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
8060         CEE_CONV_U4.
8061
8062 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
8063
8064         * Makefile.am: static link on x86 (r=zoltan)
8065
8066 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
8067
8068         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
8069         code since it causes some programs to fail.
8070
8071 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
8072
8073         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
8074
8075 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
8076
8077         * mini.c: ovfops_op_map - add STACK_OBJ case for
8078         CONV_I 
8079         * basic.cs: add test_0_pin_string as test
8080         case for above.
8081
8082 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
8083
8084         * Makefile.am: build C# if srcdir != builddir
8085
8086 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
8087
8088         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
8089         fall-through blocks.
8090
8091 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
8092
8093         * driver.c: enable loop by default again and include abcrem in -O=all.
8094
8095 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
8096
8097         * iltests.il: Add some localloc tests.
8098
8099         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
8100
8101         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
8102         Fixes #62574.
8103
8104         * inssel-amd64.brg: Add some optimizations.
8105
8106         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
8107         for gcc-3.4.
8108
8109         * Makefile.am: Statically link mono against libmono on AMD64.
8110         
8111         * mini-amd64.c inssel-amd64.brg: Optimizations.
8112
8113 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
8114
8115         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
8116
8117         * tramp-amd64.c: Patch calling code in trampolines.
8118
8119 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
8120
8121         * mini-amd64.c: pinvoke struct passing fixes.
8122
8123 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
8124
8125         * mini-sparc.c: redo change, make mono_arch_cpu_init call
8126         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
8127
8128 2004-08-05  Duncan Mak  <duncan@ximian.com>
8129
8130         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
8131         CEE_LDELEM_ANY.
8132
8133 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
8134
8135         * mini-amd64.c (emit_move_return_value): Move return value for normal
8136         calls too.
8137
8138 2004-08-05  Martin Baulig  <martin@ximian.com>
8139
8140         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
8141         `type->type'; just modify `type' itself when dealing with enums
8142         and generic instances.
8143         (check_call_signature): Make `simple_type' a `MonoType *'.
8144
8145 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
8146
8147         * mini.c: Use OP_PADD to add offsets to addresses.
8148
8149         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
8150
8151 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
8152
8153         * mini-sparc.c (mono_arch_emit_epilog): fix check
8154         for folding last op into restore instruction
8155
8156 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
8157
8158         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
8159         helper methods using the code manager.
8160         
8161         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
8162
8163         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
8164
8165 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
8166         
8167         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
8168           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
8169
8170         * mini-s390.c: fix tail processing
8171
8172 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
8173
8174         * mini-ppc.c: mul.ovf.un exception name fix.
8175
8176 2004-08-03  Martin Baulig  <martin@ximian.com>
8177
8178         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
8179         instances; before jumping to `handle_enum', also modify `ptype'.
8180
8181 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
8182
8183         * cpu-sparc.md: fcall maximal length too small.
8184
8185 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
8186
8187         * mini-amd64.c mini.h: Add initial support for passing/returning 
8188         structures to/from pinvoked methods.
8189
8190 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
8191
8192         * mini-ppc.c: reg allocator fix.
8193
8194 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
8195
8196         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
8197
8198         * inssel.brg: Optimize memset on 64 bit machines.
8199
8200         * mini-amd64.c: Fix some vararg cases.
8201
8202 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
8203
8204         * mini-s390.c: Corrected macro in emit_float_to_int
8205
8206         * s390-abi.cs: Tests to exercise the s390 ABI
8207
8208 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
8209
8210         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
8211         caller saved regs.
8212
8213         * basic.cs: Add a test for add.ovf.un.
8214
8215 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
8216
8217         * mini-sparc.c: add case for OP_IDIV_UN
8218
8219 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
8220
8221         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
8222         
8223         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
8224
8225 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
8226
8227         * basic.cs: regression tests.
8228
8229         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
8230         regressions.
8231
8232 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
8233
8234         * basic.cs: Add a new test.
8235
8236         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
8237         and AOT. Various fixes and optimizations.
8238
8239         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
8240
8241 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
8242
8243         * mini-ppc.c: make sure temp regs are not used for global reg
8244         allocation.
8245
8246 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
8247
8248         * cpu-sparc.md: conv_i8 fix for 64bits
8249
8250         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
8251
8252 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
8253         
8254         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
8255         add opcode for cmp BYTE PTR [eax], imm.
8256
8257         * inssel.brg: Make memcpy and memset takes bases.
8258
8259 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
8260
8261         * *-amd64.*: More AMD64 work.
8262         
8263 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
8264
8265         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
8266         add a compare-not-equal opcode.
8267         
8268 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
8269
8270         * mini.c: Use mono_init_from_assembly instead of mono_init.
8271         
8272 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
8273
8274         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
8275
8276         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
8277
8278         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
8279
8280         * inssel.brg: 64 bit fixes.
8281
8282         * mini.h (MonoCallInst): Add some AMD64 specific data.
8283
8284         * mini.h: Add some OP_P opcodes.
8285
8286 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
8287
8288         * basic.cs: tests for 61797 and 61740
8289
8290 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
8291
8292         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
8293         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
8294
8295 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
8296
8297         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
8298
8299         * *-amd64*.*: Ongoing AMD64 work.
8300
8301 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
8302
8303         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
8304
8305         * *-amd64*: Ongoing AMD64 work.
8306
8307         * mini-arch.h: Add AMD64 support.
8308
8309         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
8310
8311         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
8312
8313         * mini-ops.h: Add new opcodes.
8314
8315         * Makefile.am: Add AMD64 support.
8316
8317         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
8318         rules into the inssel-long*.brg files.
8319
8320         * *-amd64.*: Add beginnings of AMD64 backend.
8321
8322 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
8323
8324         * mini.c (print_dfn): commenting out the code that prints
8325         the cil. With -O=deadce, this makes -v -v crash.
8326         
8327         * cpu-pentium.md: make checkthis have a length of 2
8328
8329 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
8330
8331         * mini-sparc.h: fix implementations of __builtin
8332         functions for Sun compiler for V9.
8333
8334 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
8335
8336         * mini.c: use the new stelem.ref wrapper
8337         * exceptions.cs, arrays.cs: new stelem.ref tests
8338
8339 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
8340
8341         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
8342         new XSP should work with these changes).
8343
8344 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
8345         
8346         * inssel-{long32,x86,}.brg: trivial optimizations.
8347         
8348 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
8349
8350         * mini.c: load value when emitting box operation in
8351         constrained calls.
8352
8353 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
8354
8355         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
8356         is one byte shorter than cmp DWORD PTR [eax], 0.
8357
8358 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
8359
8360         * inssel-ppc.brg: arguments on the stack are always
8361         relative to the stack pointer (spotted by Neale Ferguson).
8362
8363 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8364
8365         * exceptions-x86.c: delay appending the method name to the trace until
8366         after mono_jit_info_table_find is called, as this gets the real
8367         MonoMethod.
8368
8369 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
8370
8371         * aot.c: register roots
8372
8373 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
8374
8375         * aot.c : I could just use PLATFORM_WIN32 flag.
8376
8377 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
8378
8379         * aot.c : Reverting the previous fix. This time it broke linux build.
8380
8381 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
8382
8383         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
8384
8385 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
8386
8387         * mini.c (handle_stack_args): Remove some more debugging code.
8388         
8389         * mini.c (handle_stack_args): Remove debug output left in by mistake.
8390
8391         * driver.c mini.h aot.c: Allow additional options to be specified with
8392         --aot and pass them to mono_compile_assembly.
8393
8394         * aot.c: Add experimental code to AOT compile all loaded assemblies
8395         on demand and save the code into a cache in the filesystem.
8396
8397         * aot.c: Add support for more wrapper methods.
8398         
8399         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
8400         58863.
8401
8402         * cpu-*.md: Remove removed opcodes.
8403
8404         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
8405         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
8406         related icalls to marshal.c.
8407
8408 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
8409
8410         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
8411
8412         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
8413
8414         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
8415
8416 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
8417         * liveness.c: If liveness is recomputated we need to reset the information
8418         for each variable. This way, if the liveness range has been narrowed
8419         by optimizations that happened after the last computation, we can return
8420         a smaller range.
8421         
8422         For example, if you have
8423         
8424         {
8425                 int i = 0;
8426                 
8427                 // Tons of code that does not affect i
8428                 
8429                 i = foo ();
8430                 ...
8431         }
8432         
8433         i = 0 is dead code and will be removed by SSA. However, when
8434         linear scan gets to the code, i will still appear to be live
8435         throughout the entire block. This prevents good register allocation.
8436
8437 2004-07-06  Martin Baulig  <martin@ximian.com>
8438
8439         * debug-mini.c (mono_debug_init_method): Allow
8440         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
8441         (mono_debug_add_icall_wrapper): New method.
8442
8443         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
8444
8445 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
8446
8447         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
8448         optimization.
8449
8450 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
8451
8452         * aot.c (mono_aot_load_method): Fix loading of debug info.
8453
8454 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
8455
8456         * aot.c: Add logging support.
8457
8458 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
8459
8460         * mini.h: Add prototype for mono_print_method_from_ip.
8461
8462         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
8463
8464         * inssel.brg: 64 bit fixes.
8465
8466         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
8467         inssel-long32.brg.
8468
8469         * Makefile.am: Add SPARC64 support.
8470
8471 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
8472
8473         * aot.c: Fix alignment problems on 32 bit platforms.
8474
8475 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
8476
8477         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
8478         SPARC64.
8479
8480         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
8481         problems.
8482
8483         * mini.h: Bump AOT file version. Some 64 bit fixes.
8484
8485 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
8486
8487         * inssel-sparc.brg: Add new rule to avoid register moves.
8488
8489         * inssel.brg: Add ldind_to_load_membase helper function.
8490
8491 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
8492
8493         * mini.c: OffsetToStringData intrinsic.
8494         
8495 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
8496
8497         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
8498
8499         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
8500         regression tests.
8501
8502         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
8503 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
8504
8505         * mini.c: reinstated mono_compile_get_interface_var()
8506         on x86, too, since the change breaks the Gtk# build there as well.
8507
8508 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8509
8510         * driver.c: remove loop from the default optimizations: it seems to
8511         interact badly with some of the other options (see bug #60613).
8512
8513 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
8514
8515         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
8516         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
8517
8518 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
8519
8520         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
8521         vararg-using methods.
8522
8523 2004-06-21  Martin Baulig  <martin@ximian.com>
8524
8525         * mini/mini-exceptions.c
8526         (mono_handle_exception): Added `gpointer original_ip' argument.
8527         After calling mono_unhandled_exception(), call
8528         mono_debugger_unhandled_exception() and if that returns true,
8529         restore the context and return.
8530
8531 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
8532
8533         * mini-ppc.c: prefer the use of relative branches so
8534         they won't need to be patched in aot code (patch from Patrick Beard).
8535
8536 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
8537
8538         * aot.c: patch from Patrick Beard to make the output assembly
8539         more correct for the MacOSX assembler. Small tweak to
8540         generate sane images on Linux/PPC, too.
8541
8542 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8543
8544         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
8545         case until bug #59509 is fixed (shows up in #60332).
8546
8547 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
8548
8549         * mini.c: make sure the needed wrappers are compiled, too, with
8550         precomp.
8551
8552 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
8553
8554         * driver.c: remove NPTL reference in --version output.
8555
8556 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8557
8558         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
8559         generate valid assembly for the Mach-O assembler.
8560
8561 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
8562
8563         * driver.c: don't include abcrem in the all optimization specifier
8564         since it slows down jit compilation too much for now.
8565
8566 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
8567
8568         * mini.c: use BIGMUL only if both operands have the same signage.
8569         * iltests.il: Test for bug 60056. (errors related to signage in
8570         BIGMUL).
8571
8572         r=lupus.
8573
8574 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
8575
8576         * mini.c, aot.c: memory leak fixes.
8577
8578 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
8579
8580         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
8581
8582 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
8583
8584         * Makefile.am: remove the -static hack completely, it links in
8585         statically glib as well.
8586
8587 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
8588
8589         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
8590         * exceptions.cs: make it compile with new mcs/csc.
8591
8592 2004-06-03 Massimiliano Mantione <massi@ximian.com>
8593         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
8594         and added relevant test case.
8595
8596 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
8597
8598         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
8599         regressions in gtk-sharp.
8600
8601 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
8602
8603         * exceptions.cs: New regression tests.
8604
8605         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
8606
8607 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
8608
8609         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
8610
8611 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
8612
8613         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
8614
8615         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
8616
8617 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
8618
8619         * mini.c (mono_jit_runtime_invoke): Init class in this
8620         method instead of trusting mono_jit_compile_method to
8621         do the work (because wrappers can be in object class)
8622
8623 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
8624
8625         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
8626
8627         * basic-long.cs: New regression test.
8628
8629 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
8630
8631         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
8632         and div/rem checks.
8633
8634 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
8635
8636         * Makefile.am: fix miguel's change to build mono statically against
8637         libmono (track build dependencies).
8638
8639 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
8640
8641         * cfold.c: Some glib versions do not have G_MININT32.
8642
8643 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
8644
8645         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
8646         with precision of tan, atan, sin and cos, and implemented related
8647         regressions tests (fixes bug 54467, but one new problem appeared and
8648         is not fixed yet).
8649
8650 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
8651
8652         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
8653
8654         * exceptions.cs: Add test for constant folding && division by zero.
8655
8656         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
8657         since driver.c is in libmono too, so the optimization was useless.
8658
8659         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
8660         variable to driver.c so the compiler can emit more efficient code to
8661         access them.
8662
8663 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8664
8665         * Makefile.am: don't distribute generated inssel.[ch] files.
8666
8667 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
8668
8669         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
8670         into the default appdomain. Fixes #58707.
8671
8672         * jit-icalls.c: Remove the broken approximation for truncl, doing
8673         no conversion is better.
8674
8675         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
8676         Fixes #58863.
8677
8678 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
8679
8680         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
8681         of the mcrxr instruction which is not available on some processors
8682         even if it's documented to be. Implement add and sub overflow correctly
8683         (still not complete for long unsigned). Speed up icalls a bit.
8684
8685 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
8686
8687         * mini.c (mono_jit_compile_method_with_opt): Make sure that
8688         we run .cctor in the current domain instead of target_domain.
8689         
8690         Fixes bug #58558, .cctor not being called in -O=shared.
8691
8692 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
8693
8694         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
8695
8696 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
8697
8698         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
8699         which can be done with an imm8, do it that way.
8700         (mono_arch_output_basic_block): ditto for a jmp
8701         (mono_arch_emit_prolog): Computate maximum offset of a label.
8702
8703 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
8704
8705         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
8706         now tries to allocate prefered physical reg's for virtual
8707         regs. This reduces the number of emited spills/loads with
8708         20-30% on our core assemblies.
8709
8710 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
8711
8712         * jit-icalls.c: truncl() is not needed and trunc() is
8713         the correct thing to do anyway (bug #58287).
8714
8715 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
8716
8717         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
8718         if available.
8719
8720 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
8721
8722         * driver.c: enable loop optimizations by default.
8723
8724 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
8725
8726         * mini-x86.c: fix calc of max loop size when aligning loops start.
8727
8728 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
8729
8730         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
8731         the stack.
8732
8733 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
8734
8735         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
8736         should set carry.
8737
8738         * basic-long.cs: Add tests for add/subtract of immediates with carry.
8739
8740         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
8741         
8742         * mini.c (inline_method): Allways inline some wrappers even if the cost
8743         is too large. Fixes #58785.
8744
8745         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
8746         
8747 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
8748
8749         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
8750         (crichton@gimp.org). Beginning of support for sparc/linux.
8751
8752         * mini-sparc.c: Optimize retrieval of LMF address.
8753
8754 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
8755
8756         * exceptions-ppc.c:  handle alloca in methods with clauses.
8757
8758 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
8759
8760         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
8761
8762 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
8763
8764         * mini.c: Delegate most of the abort signal work to 
8765           mono_thread_request_interruption, which also handles Stop and Suspend
8766           states.
8767
8768 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
8769
8770         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
8771         supports the save/restore lmf opcodes.
8772
8773 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
8774
8775         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
8776         by gcc-3.4 as well.
8777
8778         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
8779
8780 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
8781
8782         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
8783         methods which contain array accesses.
8784
8785         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
8786         boundaries. Fixes #58537.
8787
8788         * iltests.il: Add regression test for #58537.
8789
8790 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
8791
8792         * mini-x86.c (mono_arch_local_regalloc): Last part of
8793         fix for bug #58633 (releasing register to early).
8794
8795 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
8796
8797         * basic-long.cs: Add new regression test.
8798
8799 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
8800
8801         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
8802         register too early on the chain.
8803
8804 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
8805
8806         * mini.c (create_helper_signature): Use a helper function to reduce
8807         the code which needs to be written. Also set the calling convention of
8808         icalls on windows. Fixes #57840.
8809
8810 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
8811
8812         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
8813         exceptions-ppc.c: added helper function to get the instruction address
8814         from a signal handler context.
8815
8816 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
8817
8818         * helpers.c: use g_get_tmp_dir. Invokes happyness 
8819         from gonzalo.
8820
8821 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
8822
8823         * helpers.c: Add new env variable to pass args to objdump.
8824         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
8825
8826 2004-05-17  Radek Doulik  <rodo@ximian.com>
8827
8828         * Makefile.am (common_sources): added abcremoval.h so it get
8829         disted and daily mono packages on go-mono.com will build again
8830
8831 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
8832
8833         * abcremoval.c: Fixed coding style, added copyright header.
8834
8835         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
8836
8837         * mini.h: Added prototype for abc removal main function.
8838
8839         * build_relations_propagation_table.pl: Added copyright header.
8840
8841 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
8842
8843         * basic-long.cs: reg test for complex ceq_long bug.
8844
8845 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
8846
8847         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
8848         reg in long and clob case (bug #58343). Fixed/added comments.
8849
8850 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
8851
8852         * mini.c (mono_jit_runtime_invoke): Follow new convention
8853         of calling the invoke method with an function pointer.
8854
8855 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
8856
8857         * ChangeLog: Fix author of memory leak patch.
8858
8859 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
8860
8861         * Makefile.am: fix make dist as well...
8862
8863
8864 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
8865
8866         * cfold.c: Made so that conversions from pointer to int4 are no-ops
8867         on archs where pointers are 4 bytes long.
8868
8869         * Makefile.am: Added abcremoval.c source file.
8870
8871         * abcremoval.c: Added abcremoval.c.
8872
8873         * abcremoval.h: Added abcremoval.h.
8874
8875         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
8876
8877         * inssel.brg: Enabled bounds check removal.
8878
8879         * mini.c: Added support for abcrem optimization.
8880
8881         * mini.h: Added abcrem optimization label.
8882
8883         * driver.c: Added support for abcrem optimization.
8884
8885         * propagated_relations_table.def: Added propagated_relations_table.def.
8886
8887 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
8888
8889         * mini.c, cfold.c: fix style.
8890
8891 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
8892
8893         * mini.c: handle issue with the low-level implementation of
8894         some long opcodes (bug #54209).
8895
8896 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
8897
8898         * basic.cs: test for my new cmov stuff.
8899
8900 2004-05-13      Patrik Torstensson
8901
8902         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
8903         opt and added peephole documentation.
8904
8905 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
8906
8907         * tramp-ppc.c: rewrote the generic trampoline code.
8908
8909 2004-05-11      Patrik Torstensson
8910
8911         * mini-x86.c: optimize long shl/shr asm code (one less branch)
8912
8913 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
8914
8915         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
8916
8917         * mini.h mini.c dominators.c: Applied patch from Derek Woo
8918         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
8919
8920         * mini.c: Add new icalls for AsAny marshalling.
8921
8922 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
8923
8924         * tramp-ppc.c, mini-ppc.c: more cleanups.
8925
8926 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8927
8928         * mini.c: no warnings.
8929
8930 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8931
8932         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
8933
8934 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
8935
8936         * mini.c: In the thread abort signal handler, if the thread is in the
8937         process of being stoped, don't throw the Abort exception, just stop the
8938         thread.
8939
8940 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
8941
8942         * tramp-ppc.c: removed old code.
8943
8944 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8945
8946         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
8947         do some simple speed optimizations on ppc.
8948
8949 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
8950
8951         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
8952         and large offsets in load/store.
8953
8954 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
8955
8956         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
8957         it causes regressions.
8958
8959 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
8960
8961         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
8962         support.
8963
8964 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
8965
8966         * jit-icalls.c: remove warnings.
8967         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
8968         speedups for unsafe code.
8969
8970 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
8971
8972         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
8973
8974 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
8975
8976         * basic-calls.cs: Add new regression test.
8977
8978         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
8979         more portable.
8980
8981         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
8982
8983         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
8984         is no longer used.
8985
8986 2004-05-06      Patrik Torstensson
8987
8988         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
8989         long reg allocation in any reg (not only eax:edx) and implemented 
8990         long shl/shr ops in asm instead of helpers.
8991
8992 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
8993
8994         * mini-sparc.h: Fix warnings.
8995
8996         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
8997         stack.
8998
8999         * mini-exceptions.c (mono_handle_exception): Call the filter in a
9000         separate statement for clarity.
9001
9002         * mini-sparc.c: Update status.
9003
9004 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
9005
9006         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
9007         here.
9008
9009 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
9010
9011         * inssel-ppc.brg: another small pre-release workaround:
9012         we don't do overflow detection for long_sub_un.
9013
9014 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
9015
9016         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
9017         (also works around a weird ppc bug: 57957).
9018
9019 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
9020
9021         * tramp-ppc.c: trampoline fixes.
9022
9023 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
9024
9025         * mini-ppc.c: fixed typos.
9026
9027 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
9028
9029         * mini-ppc.c, exceptions-ppc.c: more code saves registers
9030         at the top of the stack. Fixed typos. Use a frame registers
9031         for all the methods with exception clauses.
9032
9033 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
9034
9035         * exceptions-ppc.c: restore fp registers.
9036
9037 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
9038
9039         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
9040         order from the stack top (moved the stack room to save the
9041         return value for trace after the param area). Fixed corruption
9042         in restoring registers on unwind.
9043
9044 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
9045
9046         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
9047
9048 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
9049
9050         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
9051         and prolog/epilog for methods that use it. Allow
9052         enough param area room for varargs methods. Fix miguel's
9053         breakage in exception handling.
9054
9055 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
9056
9057         * Makefile.am: run genmdesc only on current arch.
9058
9059 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9060
9061         * exceptions-x86.c:
9062         * mini-x86.h: fix the build on windows.
9063
9064 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
9065
9066         * 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.
9067
9068         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
9069
9070         * mini-exceptions.c: New file.
9071         
9072         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
9073         Move some parts of the x86 exception handling code to an 
9074         arch-independent file so it can be shared with other ports.
9075
9076 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
9077
9078         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
9079
9080 2004-04-26  David Waite  <mass@akuma.org>
9081
9082         * driver.c: remove comma from end of enumeration declaration
9083
9084 2004-04-26  Jackson Harper  <jackson@ximian.com>
9085
9086         * driver.c: parse config file before loading first assembly. This
9087         allows the user gac to be enabled/disabled. 
9088         
9089 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
9090
9091         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
9092         simpler mechanism: we do not care what is encoded initially
9093         (branch absolute or relative), we care about the code and its
9094         target.  I kept the old code for reference for now.
9095
9096         The new code tries first to determine if the jump is anywhere in
9097         the -/+32 absolute meg range, if it succeeds, it encodes using the
9098         absolute branch;  If not, it tried to find something in the
9099         relative range, if not, it uses the handle_thunk code. 
9100
9101 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
9102
9103         * exceptions-ppc.c: use the correct ip register on macosx.
9104
9105 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
9106
9107         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
9108
9109 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
9110
9111         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
9112         Raise exception on integer divide by zero by hand since the hw
9113         doesn't support it. Handle NaNs in FP compares.
9114
9115 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
9116
9117         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
9118         code reducing duplication between the platforms and enabled
9119         signal exception handling (on linux for now).
9120
9121 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
9122
9123         * exceptions-ppc.c: more macosx support.
9124
9125 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
9126
9127         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
9128
9129 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
9130
9131         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
9132
9133 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
9134
9135         * iltests.il: more tests.
9136
9137 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
9138
9139         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
9140         vars as well.
9141
9142 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
9143
9144         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
9145
9146 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
9147
9148         * liveness.c: Mark variables as volatile in all basic blocks reachable
9149         from exception clauses.
9150
9151 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
9152
9153         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
9154         inlining.
9155
9156 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
9157
9158         * iltests.il, basic.cs: more tests for regalloc.
9159
9160 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
9161
9162         * iltests.il: Some tests for register allocation modifications
9163         I have locally.
9164
9165 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
9166
9167         * exceptions.cs: Add regression test for bug #56782.
9168
9169         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
9170         original stack trace if an exception is rethrown. Fixes #56782. Oh,
9171         the beauty of fixing the same thing in 5 different files...
9172
9173 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
9174
9175         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
9176         methods.
9177
9178 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
9179
9180         * mini.c: Add support for STRWLPARRAY marshalling convention.
9181
9182 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
9183
9184         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
9185         to init the context to setup the regs pointer).
9186
9187 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
9188
9189         * exceptions-ppc.c: more exceptions work.
9190
9191 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
9192
9193         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
9194         not allowed.
9195
9196 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
9197
9198         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
9199         can use the memory directly.
9200
9201         * cpu-pentium.md: Update documentation from a post from Zoltan. 
9202
9203         add x86_add_membase, x86_sub_membase, x86_mul_membase
9204
9205 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
9206
9207         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
9208         GENERAL_REGS they were also hardcoded for all PPC ports.
9209
9210         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
9211
9212         Remove hard-coded limit for floating point registers, use
9213         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
9214
9215         Notice that in MacOS X calling conventions you can fit a lot more
9216         floating point values in registers, so I should update the PInvoke
9217         test to excercise the passing of floating point values on the
9218         stack (currently broken).
9219         
9220 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
9221
9222         * tramp-ppc.c (create_trampoline_code): Added
9223         JUMP_TRAMPOLINE_SIZE. 
9224         (ppc_magic_trampoline): Follow the pattern from
9225         x86_magic_trampoline: if code is set to zero, return. 
9226         (create_trampoline_code): Always pass MonoMethod to the jump
9227         trampoline, before it was passing a null.
9228         (mono_arch_create_jump_trampoline): Implement the jump stub, could
9229         share the code with mono_arch_create_jit_trampoline. 
9230
9231         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
9232         implemented.
9233         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
9234         implemented.  
9235
9236         * cpu-g4.md: Added length for jmp instruction, the worst case
9237         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
9238         for save_lmf).
9239
9240 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
9241
9242         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
9243
9244 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
9245
9246         * mini.c: Only set bblock->real_offset when adding a new bblock, and
9247         before each IL instruction.
9248
9249         * mini.c (CEE_BOX): Fix warnings.
9250
9251 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9252
9253         * mini.c: removed a few unused vars and extra whitespace.
9254
9255 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
9256
9257         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
9258         checks.
9259         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
9260         index.
9261         (OP_GETCHR): use the above
9262         (CEE_LDELEMA): use the above.
9263
9264         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
9265         version of the generic impl.
9266         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
9267         (CEE_LDELEMA): use the above.
9268
9269 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
9270
9271         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
9272         Fixes #56317.
9273
9274         * iltests.il: Added new regression test for #56317.
9275
9276 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
9277
9278         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
9279         under NetBSD. Fixes #56450.
9280
9281         * liveness.c (update_gen_kill_set): Fix previous patch.
9282
9283 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9284
9285         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
9286
9287 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
9288
9289         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
9290         ldsfld and ldsflda.
9291
9292         * inssel-sparc.brg: Add more optimizations.
9293
9294         * mini-sparc.c: Replace multiply/divide with shifts if possible.
9295
9296 2004-04-01  Martin Baulig  <martin@ximian.com>
9297
9298         * mini.c (handle_box): New static function; moved the
9299         implementation of CEE_BOX here.
9300         (mono_method_to_ir): Added `constrained_call' variable.
9301         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
9302         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
9303         mono_method_get_constrained() to get the method.
9304
9305 2004-04-01  Martin Baulig  <martin@ximian.com>
9306
9307         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
9308         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
9309         (mono_method_to_ir): We don't need these macros anymore since
9310         mono_class_get_full() already takes care of it. 
9311
9312 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9313
9314         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
9315         use @function (as doesn't accept #function here) and check the return
9316         value of system and stop if fails.
9317
9318 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9319
9320         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
9321
9322 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
9323
9324         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
9325
9326         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
9327
9328         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
9329         #56223.
9330
9331         * basic-long.cs: Add test for negation of Int64.MinValue.
9332
9333 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
9334
9335         * mini-sparc.c: Update status.
9336
9337         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
9338
9339         * exceptions-sparc.c: Fix return value in filters.
9340
9341         * inssel-sparc.brg: Fix register allocation in some rules.
9342
9343 2004-03-28  Martin Baulig  <martin@ximian.com>
9344
9345         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
9346         if neccessary.  
9347
9348 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
9349
9350         * mini-x86.c (mono_arch_patch_code): Fix warnings.
9351         
9352         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
9353         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
9354         remove unused conv_u4 opcode.
9355
9356         * mini-x86.c: Remove valgrind workaround since it slows down things
9357         even when mono is not run under valgrind.
9358
9359 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
9360
9361         * mini-sparc.c: Update status.
9362
9363         * inssel-sparc.brg: Add some optimizations.
9364
9365         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
9366         future delay slot filling. Add support for varargs, tail calls and JMP.
9367
9368         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
9369         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
9370
9371         * inssel.brg: Fix register allocation in OP_ARGLIST.
9372
9373         * inssel.brg: Fix warnings.
9374
9375 2004-03-25  Martin Baulig  <martin@ximian.com>
9376
9377         * mini.c (inflate_generic_field): Removed.
9378         (mini_get_method): Removed, use mono_get_method_full(),
9379         (mini_get_class): Removed, use mono_class_get_full().
9380         (mono_method_to_ir): Pass our generic context to
9381         mono_field_from_token().        
9382
9383 2004-03-25  Martin Baulig  <martin@ximian.com>
9384
9385         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
9386         of a `MonoMethod *'.
9387         (mini_get_method): Take a `MonoGenericContext *' instead
9388         of a `MonoMethod *'.
9389         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
9390         a new local variable called `generic_context' which holds the
9391         current `MonoGenericContext *'; use it to lookup things.
9392
9393 2004-03-24  Martin Baulig  <martin@ximian.com>
9394
9395         * mini.c (mini_get_class): New static method; if we're inside a
9396         generic instance, inflate the class if neccessary.
9397         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
9398
9399 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
9400
9401         * iltests.il: New regression test for #55976.
9402
9403         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
9404         #55976.
9405
9406 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
9407
9408         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
9409         output.
9410
9411 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
9412
9413         * liveness.c: Consider SSA stores as well as loads when making vars
9414         volatile.
9415
9416         * exceptions.cs: New regression tests for register allocation.
9417         
9418 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
9419
9420         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
9421         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
9422           domain lock only to protect puntual access to data structures.
9423           Added access lock for sighash, jit_icall_hash_name, 
9424           jit_icall_hash_addr and domain->code_mp.
9425
9426 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
9427
9428         * driver.c: Print SIGSEGV handling method.
9429
9430         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
9431
9432         * mini.c (setup_jit_tls_data): Handle case when this is called
9433         multiple times for a thread.
9434
9435         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
9436         is different from fbxx_un. Fixes #54303. Also use constants instead of
9437         magic numbers in a lot of places.
9438
9439 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
9440
9441         * exceptions.cs: Fix cctor test when --regression is used.
9442
9443 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
9444
9445         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
9446         for Linux/ppc.
9447
9448 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
9449
9450         * inssel-ppc.brg: fixed register assignments for some rules.
9451
9452 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
9453
9454         * exceptions.cs: Add test for exceptions in static constructors.
9455
9456         * mini.c (mono_jit_compile_method_with_out): Move the calling of
9457         static constructors outside the domain lock. Fixes #55720.
9458
9459 2004-03-17  Martin Baulig  <martin@ximian.com>
9460
9461         * mini.c (get_generic_field_inst): Removed, this'll never happen.
9462         (inflate_generic_field): Take the `MonoMethod *' instead of the
9463         `MonoClass *' and added support for generic method.
9464         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
9465         have a `field->parent->gen_params', only inflate the field if it's
9466         an open constructed type.
9467
9468 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
9469
9470         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
9471         exception object instead of the preconstructed ones.
9472
9473 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9474
9475         * mini.c: reverted changed to sigsegv_signal_handler commited
9476         accidentally in the previous patch.
9477
9478 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9479
9480         * mini.c:
9481         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
9482         running --aot with an old assembly.
9483
9484 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
9485
9486         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
9487         point values.
9488
9489         * mini-sparc.c: Add support for v9 branches with prediction.
9490
9491 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
9492
9493         * mini.c (mini_init): #warning is GNUC only
9494
9495         * mini-sparc.h: implement __builtin_frame_address
9496         and __builtin_return_address for Sun C compiler
9497
9498 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
9499
9500         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
9501
9502 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
9503
9504         * basic-calls.cs: Add test for unaligned byref long argument passing.
9505
9506         * mini-ops.h: Add sparcv9 compare and branch instructions.
9507
9508         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
9509         v9 instructions if we have a v9 cpu.
9510
9511         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
9512         registers for global allocation.
9513
9514         * exceptions-sparc.c: Fixes.
9515         
9516 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
9517
9518         * liveness.c (mono_analyze_liveness): Optimized version.
9519
9520         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
9521
9522         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
9523         sparc work.
9524
9525         * basic-float.cs basic-calls.cs: New regression tests.
9526
9527 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
9528
9529         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
9530         sigaltstack implementation.
9531
9532         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
9533         
9534         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
9535         stuff if SIGSEGV_ON_ALTSTACK is not defined.
9536
9537 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
9538
9539         * mini.c: Fix warnings.
9540         
9541         * mini.c (mono_resolve_patch_target): New function which contains the
9542         arch independent part of the patching process.
9543
9544         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
9545         patching code to a separate function.
9546
9547 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
9548
9549         * mini.c (add_signal_handler): ifdef out on Windows
9550
9551 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
9552
9553         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
9554         cpu-sparc.md: Add exception handling support + other fixes.
9555
9556         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
9557         typed GC detection in --version.
9558
9559         * basic.cs exceptions.cs: New regression tests.
9560
9561         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
9562         the arch specific code can store data during a compilation.
9563
9564         * mini-ops.h: Add OP_SETFRET.
9565
9566         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
9567         function, register a separate icall for each arity, so the icalls can
9568         get a wrapper.
9569         
9570         * mini.c (mono_print_tree): Print negative offsets in a more readable
9571         form.
9572         
9573         * mini.c: Make signal handling work on sparc.
9574         
9575         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
9576
9577         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
9578
9579         * jit-icalls.c: Emulate truncl by aintl on solaris.
9580
9581         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
9582
9583 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
9584
9585         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
9586
9587 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
9588
9589         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
9590         a MarshalByRef type, inline a method that performs the check, taking into
9591         account that the object can be a proxy. Also implemented tow new opcodes:
9592         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
9593         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
9594         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
9595
9596 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
9597
9598         * mini-ppc.c: if a relative branch displacement is too big
9599         but it points to and area reachable with an absolute branch, 
9600         avoid the thunks.
9601
9602 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
9603
9604         * mini.c: optimize small copies in cpblk.
9605
9606 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
9607
9608         * basic-calls.cs basic-float.cs: New regression tests.
9609
9610         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
9611         negative offsets from %fp. Implement localloc. Fix local register 
9612         allocation. Fix the case when the this argument needs to be saved to
9613         the stack. Implement some missing opcodes.
9614
9615 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
9616
9617         * mini.c (mini_method_compile): Reenable global regalloc in methods
9618         with exception handlers.
9619
9620         * linear-scan.c (mono_varlist_sort): Fix warning.
9621
9622         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
9623
9624         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
9625         regalloc costs.
9626
9627         * liveness.c: Make all variables uses in exception clauses volatile, to
9628         prevent them from being allocated to registers. Fixes #42136.
9629
9630 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
9631
9632         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
9633         causes regressions.
9634
9635         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
9636         argument to mono_arch_regalloc_cost.
9637
9638         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
9639         precisely.
9640
9641 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
9642
9643         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
9644         Make the cost of allocating a variable to a register arch dependent.
9645
9646         * basic-calls.cs: Fix compilation of tests.
9647         
9648         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
9649         helper function to cut back on the number of #ifdefs needed.
9650
9651         * mini-ppc.c: Fix compilation.
9652
9653         * basic-calls.cs: New regression tests.
9654
9655         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
9656
9657         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
9658         of l0 since that is callee saved.
9659
9660         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
9661         to virtual calls.
9662
9663         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
9664         of delay instruction.
9665
9666         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
9667
9668         * mini.h (MonoCallInst): Add 'virtual' flag.
9669
9670         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
9671
9672 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
9673
9674         * *.cs: New regression tests.
9675
9676         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
9677         work.
9678
9679         * mini.c (mono_runtime_install_handlers): Fix build.
9680
9681         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
9682         'signal_stack_size' members.
9683
9684         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
9685         alternate signal stack.
9686
9687         * exceptions-x86.c: Add stack overflow handling.
9688
9689         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
9690         functions to arch independent code.
9691
9692         * mini.c (mono_print_tree): Print more detailed info for load_membase
9693         opcodes.
9694         
9695 2004-02-23  Martin Baulig  <martin@ximian.com>
9696
9697         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
9698
9699 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
9700
9701         * mini-x86.c: fixed reg allocation for div/rem.
9702
9703 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
9704
9705         * driver.c (mono_main): Report some configuratio options on --version.
9706
9707 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
9708
9709         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
9710         low in the address space. Correctly flush memory in thunks where we
9711         output native code.
9712
9713 2004-02-20  Martin Baulig  <martin@ximian.com>
9714
9715         * mini.c (mini_get_method): New static method; inflate all generic
9716         methods and methods in open generic instances.
9717         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
9718         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
9719
9720 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
9721
9722         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
9723
9724         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
9725
9726 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
9727
9728         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
9729
9730         * mini-sparc.c (flushi mono_arch_output_basic_block): make
9731         it compile using Sun's compiler.
9732
9733 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
9734
9735         * 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.
9736
9737         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
9738
9739 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
9740
9741         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
9742         code.
9743         * mini-ppc.c: handle calls outside of the allowed range with thunks
9744         allocated using the code manager.
9745         * tramp-ppc.c: use the code manager to hold generated native code.
9746         Fixed the magic trampoline to just patch vtable entries.
9747
9748 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
9749
9750         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
9751         independent file.
9752
9753 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
9754
9755         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
9756         PPC.
9757
9758         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
9759         if we have a working __thread implementation.
9760
9761         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
9762         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
9763
9764 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
9765
9766         * mini-x86.c: Fix compilation under gcc 2.
9767         
9768 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
9769
9770         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
9771         contains a call to the wrapped function.
9772
9773         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
9774         OP_<CALL>_IMM opcodes, and use them under X86.
9775         
9776         * mini.c (mono_jit_find_compiled_method): Fix warning.
9777
9778         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
9779
9780         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
9781
9782         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
9783         functionality to mini.c.
9784
9785         * mini.c (mono_create_jump_trampoline): New function to create a jump
9786         trampoline. Return a compiled method instead of a trampoline if it
9787         exists. Add a cache for jump trampolines.
9788
9789         * mini.c (mono_jit_find_compiled_method): New function to return a
9790         compiled method if it exists.
9791
9792         * mini-x86.c: Call mono_create_jump_trampoline instead of 
9793         mono_arch_create_jit_trampoline.
9794
9795         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
9796         a jump trampoline. Fixes #52092.
9797         
9798 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
9799
9800         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
9801         which is not up-to-date. Add check_corlib_version () instead.
9802
9803         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
9804         have to call it.
9805         
9806         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
9807         since newer valgrind versions do not need it.
9808
9809         * mini.c (mono_jit_compile_method_with_opt): New helper function to
9810         compile a method with a given set of optimizations.
9811
9812         * mini.c: Compile icall wrappers on-demand instead of at startup.
9813
9814         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
9815         wrapper for an icall.
9816
9817 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
9818
9819         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
9820         #54063.
9821
9822         * iltests.il: Add test for non-empty stack before switch instruction.
9823
9824 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
9825
9826         * mini.c: Add support for new stringbuilder marshalling conventions.
9827
9828         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
9829
9830 2004-02-01  Martin Baulig  <martin@ximian.com>
9831
9832         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
9833         in `ginst->mtype_argv'.
9834
9835 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
9836
9837         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
9838         facilitate grepping.
9839
9840 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
9841
9842         * mini.c: fixed buglet in initobj generic implementation for references.
9843
9844 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
9845
9846         * Makefile.am: make the version script conditional.
9847         * jit-icalls.c: handle missing truncl().
9848
9849 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
9850
9851         * exceptions.cs: Add more tests for double->int conversion.
9852
9853         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
9854         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
9855
9856 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
9857
9858         * driver.c: make --verbose --version emit an error
9859         if the loaded corlib doesn't match the runtime version.
9860
9861 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
9862
9863         * mini-ppc.h: export ppc_patch().
9864         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
9865         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
9866         on par or better than on MacOSX.
9867
9868 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
9869
9870         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
9871         mono_lookup_pinvoke_call.
9872
9873         * mini-x86.c: Under windows, the default pinvoke calling convention is
9874         stdcall. Fixes #52834.
9875
9876         * mini.c (optimize_branches): Add an upper bound to the number of
9877         iterations to prevent infinite loops on strange loops. Fixes #53003.
9878
9879 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
9880
9881         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
9882         and ISINST. Fixes #52093.
9883
9884         * objects.cs (test_0_vector_array_cast): New tests.
9885         
9886 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
9887
9888         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
9889         checking in Array.Set ().
9890
9891         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
9892         #52590.
9893
9894         * object.cs (test_0_multi_array_cast): New regression test.
9895
9896 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
9897
9898         * exceptions-ppc.c: fix build on Linux/PPC.
9899
9900 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
9901
9902         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
9903         running under valgrind.
9904         (x86_magic_trampoline): Fix build bustage.
9905
9906         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
9907         negative values as well. This is needed for the encoding of the line number
9908         info, since sometimes the line numbers are not in increasing order.
9909
9910 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
9911
9912         * cpu-pentium.md (localloc): Increase the size of the localloc 
9913         instruction since it is a loop under Win32.
9914
9915         * debug-mini.c (record_line_number): Get rid of unneccesary memory
9916         allocation.
9917
9918 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
9919
9920         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
9921         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
9922         Max Horn (max@quendi.de). Fix file names in comments.
9923
9924 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
9925
9926         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
9927         avoid stack overflow.
9928         (replace_usage): Avoid uninitialized variable warnings.
9929
9930         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
9931         and taking the address of valuetype variables.
9932
9933 2004-01-03  Patrik Torstensson
9934
9935         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
9936         for other purposes than FP later on.
9937
9938 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
9939
9940         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
9941         of tail calls.
9942
9943 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
9944
9945         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
9946
9947 2003-12-30  Patrik Torstensson <p@rxc.se>
9948
9949         * mini-x86.h: Decreased number of availiable fp regs.
9950         Solves corner cases with FP spilling.
9951
9952 2003-12-23  Patrik Torstensson <p@rxc.se>
9953
9954         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
9955         for floating point stack tracking / spilling on x86. 
9956         Fixes bug #49012.
9957         
9958         * basic-float.cs: added float mul overflow test.
9959
9960 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
9961
9962         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
9963
9964 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
9965
9966         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
9967         supports for cond branches that overflow the immediate
9968         overflow offset. mcs can compile simple programs.
9969
9970 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
9971
9972         * exceptions-ppc.c: exception handling support wip:
9973         finally handlers get run on exception.
9974
9975 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
9976
9977         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
9978         profiling.
9979
9980 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
9981
9982         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
9983         initial support for stack walking and unwinding.
9984
9985 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
9986
9987         * driver.c (mono_main): Make corlib-out-of-sync message more 
9988         descriptive. Also remove verify_corlib call.
9989
9990 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
9991
9992         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
9993         not overlap with other call's arguments, too.
9994
9995 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
9996
9997         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
9998         move to arch-specific code the choice of arch-specific
9999         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
10000         * mini.c: ensure emulation calls will not interleave
10001         with other calls.
10002
10003 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
10004
10005         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
10006         the magic trampoline stack frame is dropped before executing
10007         the new method.
10008
10009 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
10010
10011         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
10012         and integer to fp conversions. Added support for overflowing
10013         arguments on the stack. Reserve a couple more registers as temps.
10014         Added support for aot compilation (as output still needs to be
10015         tweaked, though).
10016
10017 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
10018
10019         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
10020         Don't overwrite return register in some corner cases.
10021
10022 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
10023
10024         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
10025         static constructors when AOT compiling.
10026
10027         * driver.c (mono_main): Call mono_check_corlib_version.
10028
10029 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
10030
10031         * cpu-g4.md, basic.cs: fixed div target register.
10032
10033 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
10034
10035         * mini-ppc.c, basic.cs: shl_imm fix with test.
10036
10037 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
10038
10039         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
10040         structures by value. Misc fixes.
10041         * objects.cs: more tests.
10042
10043 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
10044
10045         * mini-ppc.c: lconv.ovf.i implemented.
10046
10047 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10048
10049         * mini.c:
10050         (mini_init): don't error out if someone already called g_thread_init.
10051
10052 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
10053
10054         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
10055         to be any type per the spec. Fix abnormal memory usage when
10056         the same object is repeatedly thrown.
10057
10058 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
10059
10060         * mini.c: check for overruns in IL code.
10061
10062 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
10063
10064         * TODO: Add/remove some todo entries.
10065
10066 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
10067
10068         * driver.c (mono_main): Call mono_verify_corlib.
10069
10070 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
10071
10072         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
10073         This has been moved to mini.c
10074         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
10075         type being casted is marshalbyref it could be a proxy, so instead of
10076         emitting the type check code, emit a call to a runtime method that will
10077         perform the check by calling CanCastTo if needed.
10078
10079 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
10080
10081         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
10082         methods with large stack frames under Win32.
10083
10084 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
10085
10086         * Makefile.am: Distribute regression tests.
10087
10088         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
10089         at the end instead of inserting each variable into the sorted list.
10090
10091         * linear-scan.c (mono_varlist_sort): New helper function.
10092         
10093 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
10094
10095         * mini.c: ensure arguments and locals are within bounds.
10096
10097 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
10098
10099         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
10100         related fixes.
10101
10102 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
10103
10104         * mini.c (mono_cprop_copy_values): Fix crash.
10105
10106         * aot.c: Set verbosity back to 0.
10107         
10108 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
10109
10110         * regalloc.c: complete memory leak fix by Laurent Morichetti
10111         (l_m@pacbell.net).
10112
10113 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
10114
10115         * driver.c (main_thread_handler): Revert the previous patch.
10116
10117         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
10118         under valgrind.
10119
10120         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
10121         memory from the memory pool.
10122
10123         * driver.c (main_thread_handler): Turn on all optimizations when
10124         --aot is used.
10125
10126         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
10127         an array for better performance.
10128
10129         * regalloc.c (mono_regstate_assign): Fix memory leak.
10130
10131         * debug-mini.c (mono_debug_serialize_debug_info): New function to
10132         serialize the debug info.
10133
10134         * debug-mini.c (mono_debug_add_aot_method): New function to load the
10135         debug info from the serialized representation.
10136
10137         * aot.c: Save debug info into the generated file and load it when 
10138         loading a method.
10139
10140         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
10141
10142 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
10143
10144         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
10145         More FP-related fixes.
10146
10147 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
10148
10149         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
10150         and register allocation buglet. Hello world now runs.
10151
10152 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
10153
10154         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
10155         * tramp-ppc.c: fixed class init trampoline.
10156         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
10157
10158 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
10159
10160         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
10161         mini.c: more ppc changes/fixes.
10162
10163 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
10164
10165         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
10166         Also optimize the case when the arguments are the same in the caller 
10167         and in the callee.
10168
10169         * iltests.il: Add tests for tail calls with valuetype arguments.
10170
10171 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
10172
10173         * mini-ppc.c: fixes for struct return type.
10174
10175 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
10176
10177         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
10178         mono_spillvar_offset() to arch-specific code.
10179
10180 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
10181
10182         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
10183
10184 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
10185
10186         * exceptions-x86.c: Fix stack space leaks.
10187         
10188         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
10189         registers from the lmf if the method has save_lmf set.
10190
10191 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
10192
10193         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
10194         of icall wrappers into InvokeInDomain, since these are now per-domain.
10195
10196 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
10197
10198         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
10199         make some opcode emulation and intrinsic ops enabled/disabled 
10200         according to the architecture. More fixes.
10201
10202 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
10203
10204         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
10205
10206 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
10207
10208         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
10209         arch-specific handling for 'this' and struct return type to
10210         arch-specific code.
10211
10212 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10213
10214         * aot.c: prevent divide by zero error when reporting (it happened with
10215         Accessibility.dll).
10216
10217 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
10218
10219         * mini.h (inst_switch): Remove unused macro.
10220
10221 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10222
10223         * aot.c:
10224         (load_aot_module): free 'info->methods' and 'info' properly. No more
10225         "free(): invalid pointer blah" messages when you have an old aot
10226         compiled assembly.
10227
10228 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
10229
10230         * jit-icalls.c, mini.c: Added support for context static fields.
10231
10232 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
10233
10234         * mini.c (mono_method_blittable): Methods which set LastError are not 
10235         blittable either. Fixes #51108.
10236         
10237 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
10238
10239         * mini.c: flush icache.
10240         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
10241
10242 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
10243
10244         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
10245
10246 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
10247
10248         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
10249         safe on IA32.
10250
10251         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
10252         vararg calls.
10253
10254         * inssel.brg (CEE_MKREFANY): Fix AOT case.
10255
10256 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
10257
10258         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
10259         instruction when the result is discarded.
10260
10261         * iltests.il (test_0_div_regalloc): New regression test.
10262
10263         * arrays.cs: Fix compilation error.
10264
10265 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
10266
10267         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
10268         float rules to inssel-x86.brg: sane architectures with FP registers
10269         don't need to implement these rules.
10270
10271 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
10272
10273         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
10274
10275 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
10276
10277         * mini.h, inssel-long32.brg: fixed endianess issues in int64
10278         implementation of 32 bit systems.
10279
10280 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
10281
10282         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
10283         (Jeroen Zwartepoorte).
10284
10285 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
10286
10287         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
10288         the caller and the callee matches.
10289         
10290         * mini.c (mono_method_to_ir): Add comment.
10291
10292         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
10293         signbit is missing on some platforms.
10294
10295 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
10296
10297         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
10298
10299         * mini.c (setup_jit_tls_data): Call the new function.
10300         
10301         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
10302
10303         * mini-x86.c: Add experimental support for fast access to the lmf
10304         structure under NPTL/Linux 2.6.x.
10305
10306 2003-11-06  Martin Baulig  <martin@ximian.com>
10307
10308         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
10309         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
10310         the debugger.
10311
10312 2003-11-02  Martin Baulig  <martin@ximian.com>
10313
10314         * mini.c (inflate_generic_field): New static method.
10315         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
10316         generic instance and the field is declared in a generic type, call
10317         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
10318
10319 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
10320
10321         * mini.h mini.c (mono_method_same_domain): New function to return
10322         whenever the caller and the callee are in the same domain.
10323
10324         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
10325
10326 2003-10-30  Martin Baulig  <martin@ximian.com>
10327
10328         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
10329         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
10330         method parameters.
10331         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
10332         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
10333
10334 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
10335
10336         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
10337         propagation.
10338
10339         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
10340         object here, so it is in the correct appdomain etc.
10341
10342 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
10343
10344         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
10345         already done.
10346         (mono_method_to_ir): Avoid freeing the type created returned from
10347         mono_type_create_from_typespec, since it is put into an internal cache
10348         by the function. Fixes pointer.exe.
10349
10350         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
10351         trampolines for icalls and pinvokes as well. Fixes #33569.
10352
10353 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
10354
10355         * mini.c: Update after appdomain changes.
10356
10357         * mini.c (mono_jit_compile_method_inner): Allways compile native
10358         method wrappers in the root domain, since there can only be one
10359         instance of them, whose address is stored in method->info.
10360
10361 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
10362
10363         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
10364         environment variable. Instead detect automatically whenever running
10365         under valgrind using the magic macro RUNNING_ON_VALGRIND from
10366         valgrind.h.
10367
10368 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
10369
10370         * trace.c, trace.h: New files that implement the new trace option
10371         parsing. 
10372
10373         * driver.c: Document new --trace options.
10374
10375         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
10376         mini-x86.c: Apply:
10377
10378         -       if (mono_jit_trace_calls)
10379         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
10380
10381         * mini.h: prototypes.
10382         
10383 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
10384
10385         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
10386
10387         * mini.c inssel.brg: Implement typedefbyref opcodes.
10388
10389         * mini.c (mono_jit_compile_method): Remove unused local variable.
10390
10391         * mini.c (mono_jit_compile_method_inner): Ditto.
10392         
10393 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
10394
10395         * tramp-x86.c (x86_class_init_trampoline): Fix build.
10396         
10397         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
10398
10399 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
10400
10401         * mini.c (mono_no_aot): Remove unused global variable.
10402
10403         * mini.c: Thread safety fixes.
10404
10405 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
10406
10407         * mini.c (mono_create_class_init_trampoline): Add a lock around
10408         class_init_hash_addr.
10409
10410         * arrays.cs (test_0_newarr_emulation): Add new regression test for
10411         #30073.
10412
10413         * mini.c: Decompose the NEWARR instruction before decomposing its
10414         arguments. Fixes #30073.
10415
10416 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
10417
10418         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
10419         convention.
10420
10421 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
10422
10423         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
10424
10425         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
10426
10427         * driver.c: Add support for compiling icall wrappers to --compile.
10428
10429 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
10430
10431         * inssel.brg: The empty value in class->interface_offsets is -1, not
10432         0. Fixes #49287.
10433
10434 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
10435
10436         * objects.cs: New test for 'is' operator on an array of interfaces.
10437
10438 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
10439
10440         * tramp-ppc.c: update trampoline code to support jumps
10441         and class initialization.
10442
10443 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
10444
10445         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
10446
10447         * inssel.brg (OP_UNBOXCAST): Fix #46027.
10448
10449         * inssel.brg (OP_UNBOX): Remove unused rule.
10450
10451         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
10452         region instead of one for each method. Fixes #47813.
10453
10454 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
10455
10456         * exceptions.cs (test_0_nested_finally): New regression test for
10457         nested exception handlers.
10458
10459         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
10460
10461         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
10462
10463         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
10464         inlining.
10465
10466         * mini.c (mono_method_check_inlining): Make the inlining limit 
10467         configurable by an environment variable.
10468         
10469         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
10470
10471         * mini.h: Bump AOT file version.
10472
10473         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
10474         token, store the image along with the token, since the token might not 
10475         refer to the same image as the method containing the relocation, 
10476         because of inlining.
10477
10478 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
10479
10480         * mini.c (mono_precompile_assemblies): New function to compile
10481         all methods in all loaded assemblies.
10482
10483         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
10484
10485         * regalloc.h regalloc.c (MonoRegState): Change the type of 
10486         iassign and fassign to int*, since they can contain large negative
10487         values if the register is spilled. Also added some comments. Fixes
10488         #45817.
10489
10490         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
10491         under Win32. Fixes #42964.
10492
10493 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
10494
10495         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
10496
10497         * aot.c: Added support for AOT compiling methods which contain calls
10498         to wrappers. Currently, only remoting-invoke-with-check wrappers are
10499         handled.
10500         
10501         * driver.c (compile_all_methods): Run the compilation in a thread
10502         managed by mono. Fixes #44023.
10503
10504         * mini.c (mono_codegen): Print full method name in verbose output.
10505
10506         * mini-x86.c (mono_arch_patch_code): Fix warning.
10507         
10508         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
10509         jumps, since the method we are jumping to might be domain-specific.
10510
10511         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
10512
10513 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
10514
10515         * inssel.brg: string chars are unsigned.
10516
10517 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
10518
10519         * TODO: New todo item.
10520
10521         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
10522         which calls mono_runtime_class_init and patches the call site to
10523         avoid further calls.
10524         (mono_arch_create_class_init_trampoline): New arch specific function 
10525         to create a class init trampoline.
10526         (create_trampoline_code): Generalized so it can create
10527         class init trampolines as well.
10528
10529         * mini.c (helper_sig_class_init_trampoline): New helper variable.
10530         (mono_create_class_init_trampoline): New function to create and cache
10531         class init trampolines.
10532         (mono_find_class_init_trampoline_by_addr): New function to lookup the
10533         vtable given the address of a class init trampoline. Used by the
10534         patching process.
10535         (mono_codegen): Generate a call to a trampoline instead of
10536         mono_runtime_class_init in LDSFLD[A].
10537         (mono_codegen): Add relocations for the new trampoline.
10538         
10539         * mini.h mini-x86.c aot.c: Added a new relocation type: 
10540         MONO_PATCH_INFO_CLASS_INIT.
10541
10542         * mini.h: Bump AOT version number.
10543
10544         * aot.c: Create a copy of the loaded code instead of using the original
10545         so methods which call each other will be close in memory, improving
10546         cache behaviour.
10547         
10548         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
10549         patch since it breaks the regression tests.
10550         
10551         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
10552         for the register saving instruction sequence since the 
10553         frame_state_for function in glibc 2.3.2 don't seem to detect it.
10554
10555 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
10556
10557         * TODO: Fix todo item && remove another.
10558
10559 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
10560
10561         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
10562         previous checkin.
10563
10564         * aot.c: Moved the check for MONO_LASTAOT into the initialization
10565         function of the module.
10566
10567         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
10568         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
10569         --no-aot command line option.
10570
10571 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
10572
10573         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
10574         by Bernie Solomon (bernard@ugsolutions.com).
10575
10576         * inssel.brg: Refactor the interface offset table related code into
10577         its separate functions and add support for the AOT case.
10578
10579 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
10580
10581         * aot.c (mono_aot_get_method_inner): Fix memory leak.
10582         
10583         * aot.c: Added mono_aot_verbose variable and made all debugging
10584         output depend on the value of this variable.
10585
10586         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
10587         method_label and info_label.
10588
10589         * mini.h mini-x86.c aot.c: Added a new relocation type 
10590         MONO_PATCH_INFO_IID for klass->interface_id.
10591
10592         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
10593         the MonoJitInfo structure.
10594
10595         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
10596         a non-root appdomain in shared mode.
10597
10598 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
10599
10600         * aot.c: make aot loader less verbose. Remove free of unused variable.
10601
10602 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
10603
10604         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
10605
10606         * .cvsignore: Added *.dll.
10607
10608         * mini.c (mono_print_tree_nl): New function callable while debugging.
10609
10610         * mini.c (mono_print_code): Export this.
10611
10612         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
10613         patched code.
10614
10615 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
10616
10617         * mini.h (MonoCompile): Added 'jit_info' field.
10618
10619         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
10620         the cfg structure, since it is needed by the AOT compiler.
10621
10622         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
10623
10624         * aot.c: A major rewrite. Changes include:
10625         - save exception tables for methods which have them.
10626         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
10627         to g_module_symbol.
10628         - reworked the file format so it is now much smaller and needs
10629         fewer relocation entries.
10630         
10631 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
10632
10633         * aot.c (load_aot_module): Fix build bustage on platforms without
10634         Boehm GC.
10635
10636 2003-09-04  Martin Baulig  <martin@ximian.com>
10637
10638         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
10639
10640 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
10641
10642         * TODO: Some new optimization ideas.
10643
10644         * aot.c: Move AOT module loading logic here from mono_assembly_open.
10645
10646         * aot.c: Save the optimization flags used to compile the code into
10647         the AOT module.
10648
10649         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
10650         support emitting domain specific code.
10651         
10652         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
10653         no longer domain neutral. It can be made domain neutral by compiling 
10654         with --optimize=shared.
10655
10656         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
10657         between appdomains.
10658
10659         * driver.c mini.h mini.c: New --no-aot debugging option which disables
10660         loading of AOT code.
10661
10662         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
10663         
10664         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
10665         if there is no domain neutrality information.
10666
10667 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
10668
10669         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
10670         format version into the generated library.
10671
10672         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
10673         callee method into the caller since one of them could be shared.
10674
10675         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
10676         system exceptions from AOT code now works.
10677
10678         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
10679         method if it is domain neutral and the callee is not.
10680
10681         * graph.c (cfg_emit_one_loop_level): Fix warning.
10682
10683 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
10684
10685         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
10686         last checkin.
10687
10688 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
10689
10690         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
10691         is needed  by code which is executed before mono_runtime_init ().
10692         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
10693         
10694         * mini.c (mono_thread_abort): Fix warning.
10695         (mono_jit_compile_method): Call static constructor in the AOT case too.
10696
10697         * aot.c (mono_compile_assembly): Fix warning.
10698
10699 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10700
10701         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
10702
10703 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
10704
10705         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
10706
10707         * cpu-pentium.md: Fix the length of call opcodes so they include the
10708         ESP restoring instruction. Fixes #47968.
10709
10710 2003-08-28  Martin Baulig  <martin@ximian.com>
10711
10712         * mini-x86.c (mono_arch_call_opcode): Added support for
10713         MONO_TYPE_GENERICINST.
10714
10715         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
10716
10717 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
10718
10719         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
10720         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
10721
10722         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
10723         metadata_section.
10724
10725 2003-08-26  Martin Baulig  <martin@ximian.com>
10726
10727         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
10728         when reporting an error, set this to the actual error location.
10729         (mono_method_to_ir): Report the correct error location if
10730         get_basic_blocks() returned an error.
10731
10732 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
10733
10734         * mini.c (mono_type_blittable): OBJECT is not blittable.
10735         (mono_method_blittable): Methods which have marshalling descriptors
10736         are not blittable either. Fixes #47842.
10737
10738 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
10739
10740         * driver.c mini.c: Use an environment variable instead of a global 
10741         variable. Also fix the build.
10742
10743         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
10744         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
10745         reporting this. 
10746
10747         * driver.c mini.c: Added --with-valgrind option to turn off some
10748         code which prevents mono from running under valgrind.
10749
10750         * mini.c (mono_emit_call_args): Fixed warning.
10751
10752         * mini.c (mono_emulate_opcode): Fixed warning.
10753
10754 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
10755
10756         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
10757         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
10758         regalloc.c, regalloc.h: specify available registers in arch-specific
10759         code and support floats in the regallocator (patch by Laurent Morichetti 
10760         <l_m@pacbell.net>)
10761
10762 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
10763
10764         * mini.c: mono_thread_current() can be called only after
10765         mono_runtime_init(): rearrange code to not call it early on.
10766
10767 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
10768
10769         * mini.c: allocate jump tables in the code mempools.
10770
10771 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
10772
10773         * mini.c, mini.h: make sure per-thread data allocated by the jit is
10774         freed.
10775
10776 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
10777
10778         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
10779         12 to 16.  This fixes bug #47453.
10780
10781
10782 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
10783
10784         * mini-ppc.c: fixed indexed load and unsigned compares.
10785
10786 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
10787
10788         * mini.c: reenabled installation of handler for
10789           thread abort signal.
10790
10791 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
10792
10793         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
10794         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
10795         until it's fixed and actually useful.
10796
10797 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
10798
10799         * inssel-long32.brg: couple more opcodes implemented.
10800
10801 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
10802         
10803         * mini-sparc.c: Even more opcodes implemeted.
10804
10805 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
10806
10807         * mini-sparc.c: More opcodes implemented.
10808
10809 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
10810
10811         * mini-sparc.c: More opcodes implemented.
10812
10813 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
10814
10815         * inssel-sparc.brg: Add some needed rules.  Direct
10816         copy from PPC.
10817         * Makefile.am: Use inssel-sparc.brg
10818         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
10819         an assert happy for now.
10820
10821 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
10822
10823         * mini-sparc.c: Fixed compile errors.
10824         * exceptions-sparc.c: Same.  We now produce a mono binary 
10825         on sparc-linux.  Yea.
10826
10827 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
10828
10829         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
10830         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
10831         They compile, but do not work.
10832
10833 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10834
10835         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
10836         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
10837         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
10838         (ct@gentoo.org).
10839
10840 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
10841
10842         * mini.c: more opcodes implemented and better support for generics.
10843
10844 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
10845
10846         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
10847         * mini.c, mini.h: first cut at generics support: some new instructions 
10848         added and changed the behaviour of some of the existing ones.
10849
10850 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
10851
10852         * mini.c: Removed definition of metadata_shared mutex here.
10853
10854 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
10855
10856         * mini-x86.c: make vararg calls work for instance methods.
10857
10858 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
10859
10860         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
10861         returns the arguments in a separte list, now.
10862
10863 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
10864
10865         * aot.c, mini.c: updates for array type representation changes.
10866
10867 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
10868
10869         * mini.c: register function to perform jit shutdown.
10870
10871 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10872
10873         * mini.c: use a faster allocator if possible.
10874
10875 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
10876
10877         * aot.c: some cleanups and portability changes.
10878
10879 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
10880
10881         * mini.c: use faster allocation for CEE_BOX if possible.
10882
10883 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
10884
10885         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
10886         Moved inlined mempcy code to its own function so that is can be
10887         reused. Added an inline memset function as well (optimized initobj).
10888         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
10889
10890 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
10891
10892         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
10893
10894 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
10895
10896         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
10897         arch code can setup the cpu for CLR execution, if needed.
10898         We use it on x86 to set the precision of FP operations.
10899
10900 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
10901
10902         * mini.c: disable some optimizations if we can guess they'll cost too
10903         much for a given method.
10904
10905 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
10906
10907         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
10908         
10909 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
10910         * mini.h mini.c mini-x86.c: Added instruction level coverage 
10911         info collection support.
10912
10913 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
10914
10915         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
10916         is now implemented in the profiling API. Get rid of a couple of
10917         unnecessary global variables.
10918
10919 2003-06-15  Nick Drochak <ndrochak@gol.com>
10920
10921         * basic-long.cs: tests for negative values for bigmul, and unsigned.
10922         * cpu-g4.md: add op_bigmul and op_bigmul_un
10923         * cpu_pentium.md: add op_bigmul_un
10924         * inssel-long32.brg: add rule for unsigned bigmul
10925         * mini-ops.h: define OP_BIGMUL_UN
10926         * mini-x86.c: THE BUG: handle (un)signed properly
10927         * mini.c: choose unsigned opcode if needed.
10928         This set of patches fixes bug #44291
10929
10930 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
10931
10932         * mini.c (optimize_branches): improved to handle all kinds of
10933         conditional branches.
10934
10935 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
10936
10937         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
10938         don't raise exceptions.
10939
10940 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
10941
10942         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
10943         to arch-specific files.
10944
10945 2003-06-09  Martin Baulig  <martin@ximian.com>
10946
10947         * Makefile.am (libs): Added $(LIBGC_LIBS).
10948
10949 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
10950
10951         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
10952         and OP_ATAN (fixes bug#44293).
10953
10954 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
10955
10956         * Makefile.am, mini-x86.c: rename cpu description array to
10957         pentium_desc, since some compilers define the 'pentium' preprocessor
10958         symbol.
10959
10960 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
10961
10962         * mini.c (mini_select_instructions): add explicit branch if the
10963         following block is not the false target of a conditional branch -
10964         we need this with any optimization that reorder or remove bblocks
10965
10966         * mini.c (optimize_branches): bug fixes
10967
10968 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
10969
10970         * mini.c (mono_method_to_ir): inline static readonly fields
10971
10972         * ssa.c (fold_tree): start cfold support for long (very simple
10973         cases only)
10974
10975         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
10976
10977 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
10978
10979         * inssel.brg: fixed memcpy (bug #44219).
10980
10981 2003-06-05  Dick Porter  <dick@ximian.com>
10982
10983         * driver.c: Set the glib log levels to not abort if g_message
10984         recurses.
10985
10986         g_set_prgname() has to happen before mini_init() so that the
10987         process handle gets the info.
10988         
10989 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
10990
10991         * driver.c: add intrins to the default optimizations to get wider
10992         exposure.
10993
10994 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
10995
10996         * mini.h: some large basic blocks will overflow a 16-bit
10997         integers for symbolic registers.
10998
10999 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
11000
11001         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
11002         (mono_arch_output_basic_block): fix bug 43499 
11003
11004 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
11005
11006         * mini.c: kill duplicated definition of mono_debug_format.
11007
11008 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
11009
11010         * mini-x86.c, arrays.cs: fixed register allocation bug.
11011
11012 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
11013
11014         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
11015
11016         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
11017
11018 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11019
11020         * mini.c:
11021         (print_method_from_ip): also print source location information if
11022         available.
11023
11024 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
11025
11026         * mini.c (mono_find_block_region): bug fix in region code
11027         (mini_method_compile): enable removing unreachable code again, but
11028         only in methods without exception clauses.
11029
11030 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
11031
11032         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
11033         Implemented arglist opcode and handling of TypedReference type.
11034         Fixed x86 call convention when a structure is returned.
11035         Minimal support for calling static vararg methods.
11036
11037 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
11038
11039         * mini.c (mini_method_compile):  always remove unreachable code,
11040         because the code in them may be inconsistent  (access to dead
11041         variables for example).
11042
11043 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
11044
11045         * driver.c, debug-mini.c: warning fixes.
11046
11047 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
11048
11049         * Makefile.am, jit.h, mini.h: install header for embedding mono.
11050
11051 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
11052
11053         * mini.c: thread-static fields are registered in mono_class_vtable(),
11054         so ensure the function is called before checking for them.
11055
11056 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
11057
11058         * mini.c (optimize_branches): fix for bug 43586
11059
11060         * jit-icalls.c (mono_llmult_ovf): added an additional check for
11061         overflow (fixes Bug #43639)
11062
11063 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11064
11065         * mini.c, objects.cs: allow the use of stobj for primitive types.
11066
11067 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11068
11069         * mini.c: be less strict about argument checking until we support
11070         running the verifier.
11071
11072 2003-05-27  Nick Drochak <ndrochak@gol.com>
11073
11074         * basic-long.cs: tests for (ulong)int * (ulong)int also
11075         * mini.c: use the same trick for (ulong)int * (ulong)int
11076
11077 2003-05-27  Nick Drochak <ndrochak@gol.com>
11078
11079         * basic-long.cs: add regression test for (long)int * (long)int
11080         * cpu-pentium.md: add op_bigmul specification
11081         * inssel-long32.brg: add OP_BIGMUL rule
11082         * mini-ops.h: add OP_BIGMUL
11083         * mini-x86.c: register allocator: handle case where src1 needs to be
11084         in EAX.
11085         * mini.c: substitute special BIGMUL opcode in the tree for 
11086         (long)int * (long)int
11087
11088 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
11089
11090         * jit-icalls.c: call the type ctor on field access if needed.
11091
11092 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
11093
11094         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
11095         to a method (including results of ldelema, bug#43207).
11096
11097 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
11098
11099         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
11100         colors to show exception handler blocks.
11101
11102         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
11103         (fix for pinvoke7.cs).
11104
11105 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11106
11107         * mini.h, mini.c: ensure correct initialization order for types that
11108         require it. Prepare for lazy compilation of jit icall wrappers.
11109         Provide a name for opcode emulation to reduce unneeded mallocing.
11110
11111 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
11112
11113         * mini-x86.c: better register restoring code and profiling
11114         support for tail calls.
11115
11116 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11117
11118         * mini.h, driver.c: prepare for leaf methods optimization.
11119
11120 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
11121
11122         * mini.c: get targets of branches before converting a method.
11123
11124 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
11125
11126         * mini.c (optimize_branches): added some experimental code (disbaled) 
11127
11128 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
11129
11130         * mini.c (optimize_branches): fix branch to branch optimization 
11131
11132         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
11133
11134         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
11135
11136         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
11137
11138         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
11139         if needed.
11140
11141 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
11142
11143         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
11144         enable use of interface variables again.
11145
11146         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
11147         I1 to registers because there is no simply way to sign extend 8bit
11148         quantities in caller saved registers on x86.
11149
11150         * inssel-float.brg: set costs of some rules to 2 so
11151         that monobure always select the arch. specific ones if supplied,
11152         regardless of the order we pass the files to monoburg.
11153
11154 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
11155
11156         * mini.c, mini-x86.c: since the magic trampoline for jumps
11157         can't patch the code directly, we do it as soon as the
11158         method gets compiled.
11159
11160 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
11161
11162         * mini-x86.c, mini.h: introduce a new patching method
11163         to support CEE_JMP and tail calls.
11164         * mini.c: obey tail.call. Don't precompile methods target
11165         of CEE_JMP.
11166         * tramp-x86.c: new trampoline code to handle methods
11167         reached through a jump.
11168
11169 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
11170
11171         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
11172         bit values to registers
11173
11174 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
11175
11176         * mini.c (mono_compile_get_interface_var): share interface
11177         variables if possible.
11178
11179 2003-05-16  Martin Baulig  <martin@ximian.com>
11180
11181         * debug-mini.c (mono_init_debugger): New function to initialize
11182         the debugger.  This is not in the debugger since it needs to
11183         access some of mini's internals.
11184
11185 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
11186
11187         * mini.c (mono_method_to_ir): inlining fixes/cleanups
11188
11189 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
11190
11191         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
11192         for value type handling.
11193
11194 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
11195
11196         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
11197         (mono_method_check_inlining): enable inlining of all kinds of wrappers
11198
11199 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
11200
11201         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
11202           the constructor through a proxy.
11203
11204 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
11205
11206         * jit-icalls.c, inssel.brg: fixes to array element address
11207         calculations.
11208
11209 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
11210
11211         * mini-x86.c (is_regsize_var): allocate pointer to registers
11212
11213 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
11214
11215         * driver.c: fixed typo, added intrins to the set of optimizations
11216         tested with regressions.
11217
11218 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
11219
11220         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
11221         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
11222         test case.
11223
11224 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
11225
11226         * inssel.brg: remove some common pop instructions without side effects
11227
11228 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
11229
11230         * inssel-x86.brg: fixed thinko in int to double conversions.
11231
11232 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
11233
11234         * mini.c, jit-icalls.c: added runtime thread-static variable support.
11235
11236 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
11237
11238         * inssel-long32.brg: two more missing instructions.
11239
11240 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
11241
11242         * mini.c (mono_emit_call_args): set the cil_code for all arguments
11243         if not already set.
11244
11245 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
11246
11247         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
11248         correctly.
11249
11250         * basic-float.cs: Added tests for negative zero.
11251
11252 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
11253
11254         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
11255         a couple of missing operations for long casts, with test cases.
11256
11257 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11258
11259         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
11260
11261 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
11262
11263         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
11264         code size estimation.
11265
11266 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
11267
11268         * mini.c (mono_jit_create_remoting_trampoline): make it work with
11269         abstract methods (fix bug 42542)
11270
11271         * aot.c: add ability to handle array types
11272         
11273 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
11274
11275         * mini.c: Call the _specific versions of the object allocation
11276         functions if possible.
11277
11278 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
11279
11280         * driver.c: call setlocale ().
11281
11282 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
11283
11284         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
11285         windows build.
11286
11287 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
11288
11289         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
11290
11291         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
11292         wrappers (fix bug 42122)
11293
11294 2003-05-04  Martin Baulig  <martin@ximian.com>
11295
11296         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
11297
11298         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
11299         s/mini_set_defaults/mono_set_defaults/g.
11300
11301 2003-05-04  Martin Baulig  <martin@ximian.com>
11302
11303         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
11304
11305 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
11306
11307         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
11308         (reported by Don Roberts).
11309
11310 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
11311
11312         * mini.c: temporarily work around two bugs for this release.
11313
11314 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
11315
11316         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
11317         that contains -export-dynamic and it makes using the ld script
11318         useless.
11319         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
11320
11321 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
11322
11323         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
11324         specific cpu.
11325
11326 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
11327
11328         * mini.c: make sure leave calls all the needed finally blocks,
11329         even when the target jumps out of multiple exception clauses.
11330
11331 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
11332
11333         * ldscript, Makefile.am: add linker script to reduce the number of
11334         exported symbols (should also fix the issues with libwine defining
11335         some of the same symbols in io-layer).
11336
11337 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
11338
11339         * driver.c (mini_main): Avoid assertion when no file name is given on 
11340         the command line.
11341
11342 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
11343
11344         * driver.c: added --version/-V command line option.
11345         Added the inline optimization in the regression tests.
11346
11347 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
11348
11349         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
11350         to the type in the method signature (fixes bug#42134).
11351
11352 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
11353
11354         * mini.c: when inlining, check this is not null only when needed (bug #42135).
11355
11356 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
11357
11358         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
11359
11360 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11361
11362         * driver.c: fixed bug #42100.
11363
11364 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
11365
11366         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
11367
11368 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
11369
11370         * mini.c: moved most of the code required to do inlining to its own
11371         function so it can be reused. Inline also ctors if appropriate.
11372
11373 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
11374
11375         * Makefile.am: Link with -export-dynamic so shared libs loaded by
11376         the runtime can call mono API functions.
11377
11378 2003-04-27  Martin Baulig  <martin@ximian.com>
11379
11380         * debug-mini.c (mono_debug_init_method): Added
11381         `guint32 breakpoint_id' argument; if the method has a breakpoint,
11382         send a notification to the debugger.
11383
11384         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
11385         running in the Mono Debugger, just pass the breakpoint number to
11386         mono_debug_init_method().
11387
11388         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
11389
11390 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
11391
11392         * mini.c: allow some more unsafe compares.
11393
11394 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
11395
11396         * mini-x86.c, Makefile.am: make distcheck works (partially from
11397         a patch by Richard Lee <r.h.lee@attbi.com>).
11398         * regset.c, regset.h: removed, they are unused.
11399
11400 2003-04-25  Dick Porter  <dick@ximian.com>
11401
11402         * driver.c: Usage reports the name as 'mono' not 'mini'
11403         * exceptions-x86.c: Build and run on freebsd
11404
11405 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
11406
11407         * Makefile.am: install the program with the 'mono' name and
11408         the library as libmono instead of mini and libmini.
11409
11410 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
11411
11412         * driver.c: provide the APIs for the embedding interface of the old jit.
11413
11414 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
11415
11416         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
11417
11418 2003-04-23  Martin Baulig  <martin@ximian.com>
11419
11420         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
11421
11422         * driver.c: Added `--debug' command line argument to enable
11423         debugging support.
11424
11425 2003-04-23  Martin Baulig  <martin@ximian.com>
11426
11427         * debug.[ch]: Removed.  The code is now in
11428         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
11429
11430         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
11431         last six months.
11432
11433 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
11434
11435         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
11436
11437 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11438
11439         * mini.c:
11440         (mini_cleanup): moved mono_runtime_cleanup call after the call to
11441         mono_domain_finalize.
11442         (mini_method_compile): use mono_method_profile* if the the option is
11443         enabled.
11444
11445 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
11446
11447         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
11448         methods with their wrapper.
11449
11450         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
11451         methods with their wrapper.
11452
11453         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
11454         their wrapper.
11455
11456         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
11457         wrapper.
11458
11459         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
11460         methods.
11461
11462 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
11463
11464         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
11465
11466 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
11467
11468         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
11469         of the mempool. This is slightly faster and uses less memory
11470
11471 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
11472
11473         * mini.c: avoid O(n) allocation for variables.
11474
11475 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
11476
11477         * mini.c: handle items on the stack after inlining methods.
11478
11479 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
11480
11481         * mini.c: make the method->opcode optimization dependent
11482         on MONO_OPT_INSTRINS and do it lazily.
11483
11484 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
11485
11486         * driver.c: print overall results at the end of regression run.
11487
11488 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
11489
11490         * inssel.brg: don't overwrite symbolic registers.
11491
11492 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
11493
11494         * inssel-x86.brg: fix conversion from long to float.
11495
11496 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
11497
11498         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
11499
11500 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
11501
11502         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
11503
11504         * driver.c: Added --print-vtable option as in the old JIT.
11505
11506 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
11507
11508         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
11509
11510 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
11511
11512         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
11513
11514 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
11515
11516         * mini.c regalloc.c regalloc.h: Fix memory leak.
11517
11518 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
11519
11520         * aot.c (mono_aot_get_method): register all used strings
11521
11522 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
11523
11524         * mini.c: always intern strings references with ldstr at compile time.
11525
11526 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
11527
11528         * Makefile.am: add BUILT_SOURCES.
11529
11530 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
11531
11532         * driver.c: give a better error message when the assembly to execute
11533         doesn't have an entry point.
11534
11535 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
11536
11537         * Makefile.am: added hack for automake
11538
11539         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
11540         correct sematics.
11541
11542         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
11543
11544 22003-04-07  Martin Baulig  <martin@ximian.com>
11545
11546         * Makefile.am: Added Makefile.am.
11547
11548         * debugger-main.c: Removed, this is now in the debugger where it
11549         belongs.
11550
11551         * mini.pc.in: Call this package `mini' for the moment.
11552
11553
11554
11555
11556
11557
11558
11559