2007-12-03 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
2
3         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
4         code stream.
5
6 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
7
8         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
9         
10         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
11
12         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
13
14         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
15
16         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
17         is created by the inlined delegate ctor.
18
19         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
20
21         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
22
23 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
24
25         * cpu-x86.md: Fix the length of ckfinite.
26
27 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
28
29         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
30         
31         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
32         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
33
34         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
35
36         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
37         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
38
39 2007-11-28  Martin Baulig  <martin@ximian.com>
40
41         * mini-x86.c
42         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
43         after creating the trampoline.
44
45 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
46
47         * aot-runtime.c (load_aot_module): Check runtime version if needed.
48
49         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
50         the same version.
51
52         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
53         instead of the calling method to help AOT.
54
55         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
56
57 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
58
59         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
60         is defined.
61
62 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
63
64         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
65         
66         * aot-compiler.c (compile_method): Correct check for generic method definitions.
67         (encode_method_ref): No need to handle generic method definitions specially.
68
69         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
70
71         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
72         decode_klass_info.
73
74         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
75         encode_klass_info.
76         (compile_method): Enable generic sharing.
77
78 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
79
80         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
81         (mini_method_compile): Add preliminary support for AOTing shared generic code.
82
83         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
84         generic code.
85
86         * mini-trampolines.c: Fix a warning.
87
88         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
89         NEW_PCONST.
90         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
91         (generic_class_is_reference_type): Remove unused function.
92
93         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
94         in the generic vtable trampoline case.
95
96         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
97         
98         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
99         return an AOT method based on a vtable slot.
100
101         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
102
103         * mini.c (mini_get_vtable_trampoline): Export this.
104
105 2007-11-22  Martin Baulig  <martin@ximian.com>
106
107         * debug-debugger.h
108         (MonoDebuggerInfo): Move `debugger_version' up.
109
110 2007-11-22  Martin Baulig  <martin@ximian.com>
111
112         * mini-amd64.c
113         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
114
115         * mini-trampolines.c
116         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
117         after compiling the method.
118
119 2007-11-20  Martin Baulig  <martin@ximian.com>
120
121         * debug-mini.c
122         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
123         (mono_debugger_remove_breakpoint): Likewise.
124         (mono_debugger_check_breakpoints): Likewise.
125
126         * debug-debugger.c: Implement the new breakpoint interface here.
127
128 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
129
130         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
131         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
132
133         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
134
135 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
136
137         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
138
139         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
140         mini.c.
141
142         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
143         mini.c.
144
145         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
146         returning a vtype in a register.
147
148         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
149         here from the arch specific code.
150
151         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
152         mini.c.
153
154         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
155         (mono_arch_emit_prolog): Increment maximum prolog size.
156
157         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
158         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
159
160         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
161         MonoGenericSharingContext.
162
163         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
164         MonoGenericSharingContext. Allocate memory from the cfg mempool.
165
166 2007-11-15  Mark Probst  <mark.probst@gmail.com>
167
168         * mini.c, mini.h, generic-sharing.c: Functions for producing code
169         which extract fields out of the runtime generic context.  Full
170         sharing of the NEWARR opcode.
171
172 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
173
174         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
175         --enable-minimal=ssa.
176
177 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
178
179         * mini-trampolines.c (mono_delegate_trampoline): Update after 
180         mono_marshal_get_delegate_invoke () signature change.
181
182 2007-11-13  Mark Probst  <mark.probst@gmail.com>
183
184         * mini.c: Removed the shared context in favor of the generic
185         sharing context.  Allocate the MonoJitInfo structure with room for
186         the generic sharing context if it's needed.
187
188         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
189         domain-internals.h now.
190
191         * mini-x86.c: Pass the generic sharing context to get_call_info ().
192
193         * generic-sharing.c: Several changes for working without a shared
194         context and instead operating on open types instead.
195
196 2007-11-12  David S. Miller  <davem@davemloft.net>
197
198        * inssel-sparc.brg: Fix double instruction emit.
199
200 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
201
202         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
203         Get/Set/Address methods.
204         
205         * mini.c debug-debugger.c mini-trampolines.c: Update after 
206         mono_marshal_get_delegate_invoke signature change.
207
208 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
209
210         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
211         This can happens with dynamic methods. Fixes the other bug in #322722.
212
213 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
214
215         * tramp-arm.c (mono_arch_patch_callsite): Support patching
216         BX call sequence.
217
218         * mini-arm.c (arm_patch): Implement patching of BX call
219         sequence. Fixes one of the bugs in #322722.
220
221 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
222
223        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
224        under Linux.  We only need to flush every 32-byte cache line.    
225
226 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
227
228         * mini.c:
229         move_basic_block_to_end: Add branches when needed, eventually creating
230         a new BB.
231         optimize_branches: added a parameter that tells if it's ok to create
232         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
233         and avoid calling move_basic_block_to_end when it's not ok.
234         Fixes bug 318677.
235
236 2007-11-07  Mark Probst  <mark.probst@gmail.com>
237
238         * mini.c: Abort inlining call to InitializeArray if something
239         looks wrong.  Let the icall handle it, which now has proper safety
240         checks.
241
242 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
243
244         * mini.c (mono_spill_call): add support for soft-float.
245
246         * mini.c (mono_method_to_ir): add support for soft-float
247         to inlined functions that return float.
248
249         * mini.c (mono_method_to_ir): add support for soft-float
250         to cee_stsfld opcode on float fields.
251
252 2007-11-05  Geoff Norton  <gnorton@novell.com>
253
254         * mini-x86.h: Fix the structure access for X86 Leopard.
255
256
257 2007-11-05  Martin Baulig  <martin@ximian.com>
258
259         * mini-trampolines.c
260         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
261         after compiling the method to notify the debugger.
262
263 2007-11-05  Martin Baulig  <martin@ximian.com>
264
265         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
266
267 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
268
269         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
270         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
271
272 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
273
274         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
275         native-to-managed wrappers.
276         
277 2007-11-01  Geoff Norton  <gnorton@novell.com>
278
279         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
280         members.
281
282 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
283
284         * mini.c, mini-x86.c: when getting back from unmanaged code
285         to managed via a marshaled delegate we also need to set the
286         right domain.
287
288 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
289
290         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
291         for amd64.
292
293 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
294
295         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
296         let the debugger or other external agents to tell the JIT when
297         a sw breakpoint has been inserted in the code that the JIT needs
298         to be able to inspect.
299
300 2007-10-31  Martin Baulig  <martin@ximian.com>
301
302         * debug-debugger.h
303         (MonoDebuggerInfo): Remove `runtime_class_init'.
304
305 2007-10-30  Martin Baulig  <martin@ximian.com>
306
307         * debug-mini.h
308         (mono_debugger_thread_created): Added `MonoThread *' argument.
309         (mono_debugger_extended_notification): New public method.
310         (mono_debugger_trampoline_compiled): New public method.
311
312         * debug-mini.c
313         (MonoDebuggerThreadInfo): Added `thread' and
314         `extended_notifications' fields.
315
316         * debug-debugger.c
317         (debugger_executable_code_buffer): New static variable.
318
319         * debug-debugger.h
320         (MonoDebuggerInfo): Added `executable_code_buffer',
321         `executable_code_buffer_size', `breakpoint_info_area',
322         `breakpoint_table' and `breakpoint_table_size'.
323
324 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
325
326         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
327         that IP  either is an unused value or the vtable pointer. IMT 
328         calls use vtable + offset now. Reduced by almost half the size
329         of IMT entries.
330
331 2007-10-26  Jonathan Chambers <joncham@gmail.com>
332
333         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
334         defines to access param registers. Replace long usage with
335         gsize as sizeof(long) != sizeof(void*) on Win64.
336
337         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
338         on Win64. Fix intrinsic, use _AddressOfReturnAddress
339         instead of non-existant _GetAddressOfReturnAddress.
340
341         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
342         param registers. Save/restore %rdi and %rsi in MonoLMF.
343
344         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
345         param registers. Modify (throw_exception) signature to take 
346         %rdi and %rsi on Win64. 
347
348         Code is contributed under MIT/X11 license.
349
350 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
351
352         * helpers.c: unlink debugging output files.
353
354 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
355
356         * mini.c: Move mono_create_ftnptr () to object.c.
357
358 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
359
360         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
361         optional. This function can now be used to disassemble code generated
362         outside the JIT such as trampolines and IMT thunks.
363
364         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
365
366         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
367         vtable pointer from a ldr instruction.
368
369         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
370         new IMT call sequence.
371
372         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
373         call sequence for interface invocations.
374
375         * mini-arm.c (mono_arch_emit_imt_argument): added, required
376         for imt support. This function is empty since IMT on ARM requires no
377         special handling on the IR side.
378
379         * mini-arm.c (mono_arch_find_imt_method): added, required for
380         imt support.
381
382         * mini-arm.c (mono_arch_find_this_argument): added, required
383         for imt support.
384
385         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
386         a ldr instruction to load a value stored in the code stream.
387
388         * mini-arm.c (mono_arch_build_imt_thunk):added, required
389         for imt support.
390
391
392 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
393
394         * mini.c (mini_init): Install the jump trampoline callback.
395
396 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
397
398         * mini-trampolines.c: handle synchronized methods with the common
399         vtable trampoline (bug #335601).
400
401 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
402
403         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
404
405         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
406         64 bit platforms.
407
408         * mini-ia64.h mini-ia64.c: Add support for IMT.
409
410         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
411         prolog. Fixes #331958.
412
413 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
414
415         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
416
417 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
418
419         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
420         trampoline.
421
422 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
423
424         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
425         trampoline.
426
427 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
428
429         * mini-x86.c, mini-x86.h: x86 support for the common vtable
430         trampoline.
431
432 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
433
434         * mini-trampolines.c: changed the magic rampoline to understand
435         the common vtable trampoline method: the method to invoke is
436         determined by the vtable displacement of the call.
437
438 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
439
440         * mini.c, mini.h: register the common vtable trampoline if the
441         architecture supports it.
442
443 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
444
445         * cpu-amd64.md: use the correct max length for tls_get.
446
447 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
448
449         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
450         CEE_STELEM_ANY. Fixes #333696.
451
452 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
453
454         * exceptions-x86.c: provide more graceful handling of the case where
455         we followed a bogus function pointer from managed code (bug #332866).
456
457 2007-10-11  Mark Probst  <mark.probst@gmail.com>
458
459         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
460         replaces the generic_shared flag and will carry more information
461         in the future.
462
463         * generic-sharing.c: Added mini_type_stack_size() which allows
464         allows open types if given a generic sharing context.
465         mini_get_basic_type_from_generic() takes a
466         MonoGenericSharingContext* instead of a MonoCompile* now.
467
468         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
469         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
470         mini-sparc.c, mini-x86.c: Trivial changes required by the two
471         changes above.  Just passing arguments through to the right
472         places.
473
474 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
475
476         * mini-arm.c: unify the call emission to emit_code_seq().
477
478 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
479
480         * tramp-arm.c: reduced the trampoline size.
481
482 2007-10-10  Mark Probst  <mark.probst@gmail.com>
483
484         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
485         variable handling out of arch-specific code.
486
487 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
488
489         * mini-arm.c: implemented fast delegate dispatch.
490
491 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
492
493         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
494         that fp elimination is turned off if the space required by locals is too
495         big. Fixes #331958.
496
497 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
498
499         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
500         ARM to the new style trampoline.
501
502 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
503
504         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
505
506         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
507
508 2007-10-09  Martin Baulig  <martin@ximian.com>
509
510         * debug-debugger.h
511         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
512         `field_info_offset_offset'.     
513
514 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
515
516         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
517         removed more internal usage of the r11 register and made it available
518         to the register allocator.
519
520 2007-10-08  Mark Probst  <mark.probst@gmail.com>
521
522         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
523         when sharing generics and treat type variables as references.
524
525 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
526
527         * mini-ppc.c: started removing the internal uses of register r11
528         to eventually allow the register allocator to manage it as an
529         additional available register.
530
531 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
532
533         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
534
535 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
536
537         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
538         specific trampolines as they are not performance critical as a jump
539         target (maybe align as before only for AOT code?). This saves about
540         200 KB of native code on x86 for monodevelop startup.
541
542 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
543
544         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
545         monodevelop startup.
546
547 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
548
549         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
550
551         * mini-sparc.h mini-sparc.c: Implement IMT support.
552
553         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
554         its smaller and doesn't clobber sparc_g1.
555
556         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
557
558 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
559
560         * mini-ppc.c: optimized the size of the IMT thunks a bit.
561
562 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
563
564         * mini-ppc.c: implemented fast delegate invocation.
565
566 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
567
568         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
569
570 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
571
572         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
573         code to the new style trampoline in preparation for IMT support.
574
575 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
576
577         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
578         systems already. This also reduces the specific trampiline sizes and
579         prepares for the use of r12 as the IMT identifier register.
580
581 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
582
583         * mini-mips.h: endianess fix (simplified from a patch by
584         Thomas Kunze <thommy@tabao.de>, bug #323737).
585
586 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
587
588         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
589         to access ucontext fields and enable netbsd support
590         (partially from Magnus Henoch <mange@freemail.hu>).
591
592 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
593
594         * genmdesc.pl: patch from Henryk Plötz <henryk@openmoko.org> to
595         use the preprocessor from the CPP env var if it is set.
596
597 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
598
599         * mini-trampolines.c: fixed an assertion and moved it earlier in the
600         code, before interface_offset gets used.
601
602 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
603
604         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
605         mono_class_setup_vtable () before accessing klass->vtable.
606
607 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
608
609         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
610         hackish.
611
612 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
613
614         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
615         IMT slots (this saves hundreds of KB of memory in programs like
616         IronPython and Monodevelop).
617
618 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
619
620         * mini.c: print the delegate counter.
621
622 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
623
624         * mini-x86.c: make it easier to enable the debugging code for IMT
625         slots.
626
627 2007-09-28  Martin Baulig  <martin@ximian.com>
628
629         * debug-debugger.h
630         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
631         `mono_method_klass_offset' and `mono_method_token_offset'.
632
633 2007-09-20  Mark Probst  <mark.probst@gmail.com>
634
635         * mini.c: First generics sharing implementation.  Can only share
636         in very simple cases.  If sharing doesn't work it falls back to
637         dedicated compilation.
638
639         * mini.h: Flag in MonoCompile to specify whether generic
640         compilation is shared.  Flags enum for marking which generic inst
641         of a context is used.  Prototypes for helper functions.
642
643         * generic-sharing.c: Helper functions for generic method sharing.
644
645         * optflags-def.h: Optimization flag (gshared) for enabling generic
646         method sharing added.
647
648         * Makefile.am: generic-sharing.c added.
649
650 2007-09-19 Daniel Nauck <dna@mono-project.de>
651
652         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
653
654 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
655         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
656         fixes bug 325507.
657
658 2007-09-19  Martin Baulig  <martin@ximian.com>
659
660         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
661         mono_debug_cleanup() is now part of mono_cleanup().
662
663 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
664
665         * driver.c (mono_main): Fix a warning.
666
667 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
668
669         * aot-compiler.c: Optimize various parts when processing large assemblies.
670         Fixes ##325568.
671
672         * mini.c (mono_patch_info_hash): Improve hash function.
673
674 2007-09-14  Jonathan Chambers <joncham@gmail.com>
675
676         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
677         
678         Code is contributed under MIT/X11 license.
679
680 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
681
682         * mini.c (mini_init): Fix a leak.
683
684         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
685
686 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
687
688         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
689
690 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
691
692         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
693
694 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
695
696         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
697         variance tests.
698
699         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
700
701         * mini.c (handle_alloc): Enable managed allocators in AOT code.
702
703         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
704
705         * aot-runtime.c (decode_patch_info): Ditto.
706
707 2007-09-12  Jonathan Chambers <joncham@gmail.com>
708
709         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
710         static case. Cache delegates in architecture specific code, 
711         based on number of parameters.
712         
713         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
714         in architecture specific code, based on number of parameters.
715         
716         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
717         caching happen in architecture specific code now.
718         
719         Code is contributed under MIT/X11 license.
720
721 2007-09-12  Jonathan Chambers <joncham@gmail.com>
722
723         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
724         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
725         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
726
727         Code is contributed under MIT/X11 license.
728
729 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
730         * mini.c: (mono_thread_abort) Fixed bug #82416.
731
732 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
733
734         * mini.: hook the new managed GC allocation feature into the JIT.
735
736 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
737
738         * mini.c: implementation for the new runtime tls opcode.
739
740 2007-09-11  Martin Baulig  <martin@ximian.com>
741
742         * debug-debugger.h
743         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
744         `mono_method_inflated_offset'.
745
746 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
747
748         * driver.c mini.h mini.c: Add a new devel command line option for injecting
749         async exceptions into a method.
750
751         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
752         purpose of testing whenever the unwinder works at every instruction.
753
754 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
755
756         * mini.c: check accessibility of method used in ldftn (fixes
757         bug #82635).
758
759 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
760
761         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
762
763         * inssel.brg: Fix a warning.
764
765 2007-09-03  Martin Baulig  <martin@ximian.com>
766
767         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
768         now takes the `main_method' as argument.
769
770 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
771
772         * cpu-sparc.md (endfilter): Add missing src1:i argument.
773
774 2007-08-30  Jonathan Chambers <joncham@gmail.com>
775
776         * driver.c: include the cil-coff.h header on Windows.
777         
778         Code is contributed under MIT/X11 license.
779
780 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
781
782         * mini.c, driver.c: don't include the cil-coff.h header.
783
784 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
785
786         * mini.c: flag places that needs fixes fo soft-float support.
787
788 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
789
790         * mini.h, inssel-float.brg: fix soft-float constant loads on big
791         endian systems (partially from Dean Jenkins, bug #81924).
792
793 2007-08-28  Mark Probst  <mark.probst@gmail.com>
794
795         * mini.c (check_linkdemand): Remove embedded reference object in
796         call to LinkDemandSecurityException.
797         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
798         with an IntPtr instead of a reference object.
799
800 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
801
802         * mini.c (handle_initobj): Handle alignment properly.
803
804         * inssel.brg (mini_emit_memset): Ditto. 
805
806         * inssel.brg (mini_emit_memcpy): Ditto. 
807
808         * inssel-sparc.brg: Ditto.              
809
810         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
811
812 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
813
814         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
815         exceptions raised in unmanaged code. Fixes part of #82594.
816
817 2007-08-24  Mark Probst  <mark.probst@gmail.com>
818
819         * mini.c (mono_method_to_ir), declsec.c
820         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
821
822 2007-08-22  Martin Baulig  <martin@ximian.com>
823
824         * debug-mini.h
825         (MonoDebuggerThreadInfo): New typedef.
826         (mono_debugger_thread_table): New global variable.
827         (mono_debugger_thread_created): New public function.
828         (mono_debugger_thread_cleanup): New public function.
829
830         * debug-debugger.h
831         (MonoDebuggerInfo):
832         - removed `get_current_thread' and `lookup_assembly'.
833         - removed `data_table'.
834         - added `thread_table'.
835
836         * mini.c
837         (mono_thread_start_cb): Call mono_debugger_thread_created().
838         (mono_thread_attach_cb): Likewise.
839         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
840         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
841         initial domain.
842
843         * driver.c (mono_main): Move mono_debug_init() up, before calling
844         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
845
846 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
847
848         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
849         together when passing several arguments of type double (gives a small
850         speedup and saves a few bytes of generated code).
851
852 2007-08-20  Jb Evain  <jbevain@novell.com>
853
854         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
855
856 2007-08-20  Jb Evain  <jbevain@novell.com>
857
858         * mini.c (mono_method_to_ir): throw MethodAccessException
859         and FieldAccessException instead of InvalidProgramException.
860
861 2007-08-20  Mark Probst  <mark.probst@gmail.com>
862
863         * mini.c: CoreCLR security checks.
864
865         * mini.h: Removed MonoSecurityMode (moved to
866         metadata/security-manager.h) and mono_security_mode global var
867         (replaced by set/get functions in security-manager.h).
868
869         * driver.c: Added "core-clr-test" security mode for testing.  Used
870         set-function for setting security mode.
871
872 2007-08-17  Mark Probst  <mark.probst@gmail.com>
873
874         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
875         the new jit_info_table.
876
877         * driver.c: Test code for the new jit_info_table (enabled by the
878         define MONO_JIT_INFO_TABLE_TEST).
879
880 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
881
882         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
883         detection of call <REG> instruction sequence. Fixes build on freebsd.
884
885 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
886
887         * mini-exceptions.c: Fix a warning.
888
889 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
890
891         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
892         stack overflow handling code on amd64 too.
893
894         * mini-exceptions.c (mono_setup_altstack): Make this use 
895         mono_thread_get_stack_bounds ().
896
897         * mini-x86.h: Disable sigaltstack on solaris x86.
898
899 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
900
901         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
902
903 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
904
905         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
906
907 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
908
909         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
910
911         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
912
913 2007-08-03  Neale Ferguson <neale@sinenomine.net>
914
915         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
916         due to alignment.
917
918 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
919
920         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
921         to be emitted (bug #82281).
922
923 2007-08-01  Martin Baulig  <martin@ximian.com>
924
925         Merged the `debugger-dublin' branch.
926
927         * debug-debugger.h (MonoDebuggerInfo):
928         Removed the `old_*' compatibility entries.
929         Added `debugger_version' and `data_table'.
930         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
931         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
932
933         * debug-mini.c
934         (MiniDebugMethodBreakpointInfo): Add `address_list'.
935         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
936         instead of a `gconstpointer'.
937         (mono_debugger_insert_method_breakpoint): Return a
938         `MonoDebugMethodAddressList *'.
939
940 2007-06-28  Martin Baulig  <martin@ximian.com>
941
942         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
943
944 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
945
946         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
947         __builtin_frame_address () since it is broken on older gcc versions.
948
949 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
950
951         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
952         on the stack overflow handling and made the managed stack overflows
953         catchable in most cases using soft guard pages.
954         * exceptions-x86.c: added code to restore the protection in the soft
955         guard pages at the end of exception handling.
956
957 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
958
959         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
960
961 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
962
963         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
964         exception handling.
965
966 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
967
968         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
969         signal handling support until it has been ported to the new mechanism.
970         * mini.c: fixed stack overflow detection and use the new
971         architecture code  to handle signals on the altstack.
972
973 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
974
975         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
976         stack overflows on the alt stack.
977
978 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
979
980         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
981         stack overflows on the alt stack.
982
983 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
984
985         * exceptions-ppc.c: cleanup preparing for altstack support.
986
987 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
988
989         * exceptions-arm.c: cleanup preparing for altstack support.
990
991 2007-07-27  Mark Probst  <mark.probst@gmail.com>
992
993         * mini.c (print_jit_stats): Output hazard pointer stats.
994
995 2007-07-26  Mark Probst  <mark.probst@gmail.com>
996
997         * driver.c, mini.c: Replaced security mode flags with a single
998         enum variable.
999
1000 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
1001
1002         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
1003
1004 2007-07-25  Mark Probst  <mark.probst@gmail.com>
1005
1006         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
1007         (which doesn't do anything yet) for activating Core CLR
1008         (Silverlight) security.
1009
1010 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
1011
1012         * mini-codegen.c: work around a possible gcc bug on arm.
1013
1014 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
1015
1016         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
1017         message for platforms that don't support AOT compilation.
1018
1019 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
1020
1021         * mini.h, mini.c, driver.c: temporary smcs hack.
1022
1023 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
1024
1025         * mini-arm.h, mini-arm.c: arm EABI fixes.
1026
1027 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
1028
1029         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
1030         case.
1031
1032         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
1033         trampolines taking a method argument.
1034
1035         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
1036
1037         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
1038         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
1039
1040         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
1041         JIT compilation throws an exception. Fixes #82050.
1042
1043 2007-07-19  Mark Probst  <mark.probst@gmail.com>
1044
1045         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
1046         with the MONO_EXCEPTION_ defines.
1047
1048 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
1049
1050         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
1051         #82117.
1052         
1053         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
1054         the cause of an assertion.
1055
1056 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
1057
1058         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
1059         removed.
1060
1061 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
1062
1063         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
1064         assert. Should fix #82103.
1065
1066 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
1067
1068         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
1069         here too. Fixes #82095.
1070
1071         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
1072         addresses.
1073
1074         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
1075
1076         * mini-amd64.h: Enable IMT for amd64.
1077         
1078         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
1079
1080 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
1081
1082         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
1083
1084 2007-07-12  Mark Probst  <mark.probst@gmail.com>
1085
1086         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
1087         as soon as check_linkdemand sets an exception_type.
1088
1089 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
1090
1091         * mini-x86.c: fixed offsets for IMT call sequence.
1092         * mini-x86.h: enable IMT again.
1093
1094 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * trace.c (mono_trace_enter_method): Decode MonoType too.
1097
1098         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
1099
1100         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
1101
1102         * mini-amd64.c: Add preliminary IMT implementation.
1103         
1104 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
1105
1106         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
1107         understand the new IMT-base interface invocation (thanks to
1108         Daniel Nauck for the report and the remote debugging session).
1109
1110 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
1111
1112         * mini-x86.c: size and speed optimizations for the IMT bsearch.
1113
1114 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
1115
1116         * Makefile.am (aotcheck): Make this actually use the AOTed code.
1117
1118 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
1119
1120         * mini-trampolines.c: implement AOT IMT support.
1121         * mini-x86.h: enable IMT support for wider testing.
1122
1123 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
1124
1125         * inssel.brg (emit_imt_argument): Add aot support here.
1126
1127         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
1128
1129 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
1130
1131         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
1132         of the IMT implementation, partially from massi, with my
1133         implementation of the bsearch sequence. Disabled by default until
1134         the AOT code is implemented.
1135
1136 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
1137
1138         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
1139
1140         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
1141
1142 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
1143
1144         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
1145         arch-independent IMT JIT code from Massimiliano
1146         Mantione (massi@ximian.com) with small cleanups from me.
1147
1148 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
1149
1150         * Makefile.am: fix svn invocation to get the svn revision to be
1151         independent of the local language (build fix).
1152
1153 2007-07-09  Mark Probst  <mark.probst@gmail.com>
1154
1155         * mini.c (inline_method): Reset cfg->exception_type if the
1156         inlining is aborted.  Fixes: 82049.
1157
1158 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
1159
1160         * mini.c: remove assert from exception handling code when exception_ptr
1161         is not set.
1162
1163 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
1164
1165         * mini.c (mono_codegen): Add an assert.
1166
1167         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
1168         enter and leave code.
1169         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
1170
1171 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
1172
1173         * mini-ppc.c: fixed memory corruption for localloc(0)
1174         (bug #81852).
1175
1176 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
1177         
1178         * mini.c: Fix warnings.
1179
1180 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
1181
1182         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
1183         to emit better double->int conversions.
1184
1185 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
1186
1187         * mini.c: the provided Min/Max optimizations are valid for unisgned
1188         ints.
1189
1190 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
1191
1192         * 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
1193
1194 2007-06-28  Miguel de Icaza  <miguel@novell.com>
1195
1196         * mini.c (mono_running_on_valgrind): Add support for reporting the
1197         method and  its boundaries to valgrind.
1198
1199 2007-06-28  Martin Baulig  <martin@ximian.com>
1200
1201         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
1202
1203 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
1204
1205         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
1206
1207         * generic.2.cs: Add new test case.
1208
1209 2007-06-25  Martin Baulig  <martin@ximian.com>
1210
1211         Merged the `debugger-dublin' branch.
1212
1213         * debug-mini.c
1214         (mono_debugger_insert_method_breakpoint): New public method.
1215         (mono_debugger_remove_method_breakpoint): Likewise.
1216         (mono_debugger_check_breakpoints): New static method.
1217         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
1218
1219         * debug-debugger.h (MonoDebuggerInfo):
1220         Renamed (to keep backward compatibility in the vtable):
1221         `insert_breakpoint' -> `old_insert_breakpoint'.
1222         `remove_breakpoint' -> `old_remove_breakpoint'.
1223         `create_string' -> `old_create_string'.
1224         `lookup_class' -> `old_lookup_class'.
1225         `lookup_type' -> removed; changed into a dummy field.
1226         `lookup_assembly' -> `old_lookup_assembly'.
1227         Added (same functionality, but different signature):
1228         `create_string', `lookup_class', `lookup_assembly'
1229         Added new:
1230         `get_method_addr_or_bpt', `remove_method_breakpoint',
1231         `runtime_class_init'.
1232
1233         * debug-debugger.c: Merged the `debugger-dublin' branch.
1234
1235 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
1236
1237         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
1238         well.
1239         (peephole_pass): Likewise.
1240
1241 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
1242
1243         * driver.c: hopefully make setaffinity work also for ancient
1244         versions of linux.
1245
1246 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
1247
1248         * driver.c : win32 build fix.
1249
1250 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
1251
1252         * driver.c: check for the MONO_NO_SMP env var and bind to a single
1253         processor if it is set.
1254
1255 2007-06-21  Martin Baulig  <martin@ximian.com>
1256
1257         * debug-mini.h: New file.
1258
1259         * debug-mini.c
1260         (mono_debugger_insert_breakpoint_full): Moved here from
1261         ../metadata/mono-debug-debugger.c.
1262         (mono_debugger_remove_breakpoint): Likewise.
1263         (mono_debugger_breakpoint_callback): Likewise.
1264
1265 2007-06-15  Raja R Harinath  <rharinath@novell.com>
1266
1267         * jit-icalls.c (mono_helper_compile_generic_method): Update to
1268         changes in MonoGenericClass.
1269
1270 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
1271
1272         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
1273
1274 2007-06-14  Raja R Harinath  <rharinath@novell.com>
1275
1276         * jit-icalls.c (mono_helper_compile_generic_method): Update to
1277         removal of MonoGenericMethod.
1278
1279 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
1280
1281         * mini-exceptions.c: hooks for the exception events profiling API.
1282
1283 2007-06-14  Randolph Chung  <tausq@debian.org>
1284
1285         * Makefile.ma: Add hppa target.
1286         * mini-arch.h: Include mini-hppa.h
1287         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
1288         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
1289         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1290
1291 2007-06-14  Randolph Chung  <tausq@debian.org>
1292
1293         * inssel.brg: Add rules for "chained" compare-branch operations so that
1294         a single compare op can affect multiple branches.  Adjust cost for
1295         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
1296         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
1297         cost for some rules so that they can more easily be overridden by
1298         per-arch rules (with fixes from lupus).
1299         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1300
1301 2007-06-13  Randolph Chung  <tausq@debian.org>
1302
1303         * mini-ops.h: Reorder branch ops so that they match the order of the
1304         corresponding CEE_* ops.  The code expects them this way.
1305         Add new ops for HPPA target.
1306         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1307
1308 2007-06-13  Randolph Chung  <tausq@debian.org>
1309
1310         * mini-exceptions.c: Handle cases where the stack grows towards
1311         larger addresses.
1312         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
1313
1314 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
1315
1316         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
1317         counter.
1318         * driver.c: explain where a non-matching corlib is found.
1319
1320 2007-06-13  Mark Probst  <mark.probst@gmail.com>
1321
1322         * mini.c (print_jit_stats): Output dynamic code allocation stats.
1323
1324 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
1325
1326         * mini-exceptions.c: Generate a method profile leave event during
1327         an exception to ensure that the profiler gets notified.
1328
1329 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
1330
1331         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
1332         branch.
1333
1334         * cpu-amd64.md: Add long_and/or/xor opcodes.
1335
1336 2007-06-06  Wade Berrier  <wberrier@novell.com>
1337
1338         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
1339         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
1340         length of instruction shr_imm (expected 8, got 10)
1341
1342 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
1343
1344         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
1345
1346 2007-06-06  Mark Probst  <mark.probst@gmail.com>
1347
1348         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
1349         MonoInternalHashTable again (fixed bug in the internal hash table
1350         code).
1351
1352 2007-06-06  Mark Probst  <mark.probst@gmail.com>
1353
1354         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
1355         Have to figure out what makes it crash the SWF regression.
1356
1357 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
1358
1359         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
1360
1361 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
1362
1363         * mini.c: optimize out the type check when storing null in a
1364         reference array.
1365
1366 2007-06-04  Mark Probst  <mark.probst@gmail.com>
1367
1368         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
1369         MonoInternalHashTable.
1370
1371 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
1372
1373         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
1374         signed integer methods.
1375
1376 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
1377
1378         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
1379         permanently since the current approach doesn't work.
1380
1381 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
1382
1383         * inssel.brg (stmt): Only call delegate->invoke_impl if 
1384         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
1385
1386 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
1387
1388         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
1389         the sreg2==rdx case.
1390         
1391         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
1392         account if it contains a rex prefix.
1393         (peephole_pass): Handle OP_FMOVE as well.
1394
1395 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
1396
1397         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
1398         as it causes regressions.
1399
1400 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
1401
1402         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
1403         static case as well.
1404
1405         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
1406
1407         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
1408         (mono_arch_get_this_arg_from_call): Ditto.
1409
1410         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
1411
1412         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
1413         invoke_impl field.
1414
1415         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
1416         (mono_arch_get_this_arg_from_call): Ditto.
1417
1418         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
1419         
1420         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
1421         try to create optimized invoke code and use that for further invocations. 
1422         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
1423
1424         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
1425
1426 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
1427
1428         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
1429         sealed classes or methods.
1430         *devirtualization.cs: tests for the new optimization
1431
1432 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
1433
1434         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
1435         by the update_volatile () function.
1436
1437 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
1438
1439         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
1440         require it.
1441
1442         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
1443
1444 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
1445
1446         * mini.c: Add configure checks for header files.
1447         * mini-x86.c: Add configure checks for header files.
1448         * trace.c: Add configure checks for header files.
1449         * aot-runtime.c: Add configure checks for header files.
1450         * aot-compiler.c: Add configure checks for header files.
1451         * driver.c: Add configure checks for header files.
1452         * mini-codegen.c: Add configure checks for header files.
1453         
1454         Code is contributed under MIT/X11 license.
1455
1456 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
1457
1458         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
1459         icompare_imm -128 + op_iclt. Fixes #81703.
1460
1461 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
1462
1463         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
1464
1465 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
1466
1467         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
1468         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
1469         so that all isinst checks now use "interface_bitmap".
1470
1471 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
1472
1473         * cpu-amd64.md (jmp): Fix a warning.
1474
1475         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
1476
1477         * basic.cs: Add new regression test.
1478
1479         * basic.cs: Remove test which is now in basic-long.cs.
1480
1481         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
1482
1483         * basic-long.cs: Add new test.
1484         
1485 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
1486
1487         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
1488
1489 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
1490
1491         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
1492
1493         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
1494         places.
1495         
1496         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
1497         throwing code a bit.
1498
1499         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
1500         the exception throwing code a bit.
1501
1502         * mini-x86.c (get_call_info): Allocate result from a mempool.
1503
1504 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
1505
1506         * aot-compiler.c (find_typespec_for_class): Fix the assert.
1507
1508         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
1509
1510         * mini.h (MonoCompile): Add 'token_info_hash' field.
1511
1512         * mini.c: Save token->method associations during compilation so the AOT 
1513         compiler can use it.
1514         
1515         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
1516         which reference generic classes and methods.
1517
1518 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
1519
1520         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
1521
1522         * aot-compiler.c (compile_method): Fix a typo in a comment.
1523
1524         * aot-runtime.c (decode_cached_class_info): Skip generic types.
1525
1526         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
1527         everything generic.
1528
1529         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
1530
1531 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
1532
1533         * mini.h (MonoCompile): Add 'args' field.
1534
1535         * mini.c (mono_compile_create_vars): Store variables representing the arguments
1536         into cfg->args.
1537
1538         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
1539
1540 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
1541
1542         * mini.c (mono_compile_get_interface_var): Remove this unused function.
1543
1544         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
1545
1546         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
1547         opcodes for some opcodes.
1548
1549         * mini.h *.brg *.c: Use the new opcodes.
1550
1551 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
1552
1553         * mini.h: Bumped aot revision.
1554
1555         * inssel.brg: modified code generation of type checks for interfaces
1556         to use the new "MonoClass.interface_bitmap" instead of the old
1557         "MonoClass.interface_offsets".
1558
1559 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
1560
1561         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
1562
1563 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
1564
1565         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
1566         64 bit platforms.
1567
1568 2007-04-27  Neale Ferguson <neale@sinenomine.net>
1569
1570         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
1571
1572 2007-04-27  Wade Berrier  <wberrier@novell.com>
1573
1574         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
1575         mini.h) to fix build.
1576
1577 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
1578
1579         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
1580         
1581         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
1582         causes the corlib unit tests to fail.
1583
1584 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
1585
1586         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
1587
1588         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
1589
1590         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
1591         opcodes to the comparison relations.
1592
1593         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
1594         opcodes to their types.
1595         
1596         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
1597
1598         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
1599         it in cfg->arch.cinfo.
1600
1601         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
1602
1603         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
1604         cfg->cil_offset_to_bb.
1605
1606 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
1607
1608         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
1609         created becase of initlocals.
1610
1611 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
1612
1613         * mini-alpha.c cpu-alpha.md: More alpha port work from 
1614         Sergey Tikhonov <tsv@solvo.ru>.
1615
1616 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
1617
1618         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
1619
1620 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * cpu-s390.md (break): Correct the length of break instruction.
1623
1624 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
1625
1626         * mini.c: fix a couple of soft-float issues and comments.
1627
1628 2007-04-15  Miguel de Icaza  <miguel@novell.com>
1629
1630         * trace.c (is_filenamechar): - is also a filename char.
1631
1632 2007-04-15  Neale Ferguson <neale@sinenomine.net>
1633
1634         * mini-s390.c: Correct checking for enum type in return value processing.
1635
1636 2007-04-14  Raja R Harinath  <rharinath@novell.com>
1637
1638         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
1639         (version.h): Makefile is in the build directory.
1640
1641 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
1642
1643         * mini-amd64.h: fix for assertion failure on Solaris/amd64
1644
1645 2007-04-11  Martin Baulig  <martin@ximian.com>
1646
1647         * mini.c (can_access_member): Fix handling of generic classes;
1648         fixes #81259.
1649
1650 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
1651
1652         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
1653
1654 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
1655
1656         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
1657
1658 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
1659
1660         * mini-codegen.c: make sure the right spill amount is
1661         used for fp or integer registers (fixes the float_sub_spill() on ppc).
1662
1663 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
1664
1665         * mini-ppc.c: fixes for the fp_branch_nan test.
1666
1667 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
1668
1669         * basic.cs: Comment out new test which still fails on ia64.
1670
1671 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
1672
1673         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
1674
1675 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
1676
1677         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
1678
1679 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
1680
1681         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
1682         on 64 bit machines. Fixes part of #80738.
1683
1684         * basic.cs: Add regression test.
1685
1686 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
1687
1688         * inssel.brg basic.cs: Revert previous change to fix build.
1689
1690         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
1691         platforms.
1692         
1693         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
1694
1695         * basic.cs: Add new regression test.
1696
1697 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
1698
1699         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
1700         many arguments.
1701
1702 2007-03-16  Neale Ferguson <neale@sinenomine.net>
1703
1704         * cpu-s390x.md: Correct length of break instruction.
1705
1706 2007-03-16  Neale Ferguson <neale@sinenomine.net>
1707
1708         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
1709         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
1710
1711 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
1712
1713         * *.c: Begin WIN64 port.
1714         * mini.c:  Use correct register in profiler.
1715         * mini-amd64.c: No inline assembly on Win64.
1716         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
1717         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
1718         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
1719         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
1720         mono_arch_ip_from_context for Win64.
1721         
1722         Contributed under MIT/X11 license.
1723
1724 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
1725
1726         * exceptions-amd64.c (seh_handler): Ditto.
1727
1728         * exceptions-x86.c (seh_handler): Fix a memory leak.
1729
1730 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
1731
1732         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
1733         mini-s390x.c: fixed peephole optimizations to deal
1734         correctly with 1 and 2 byte reload avoidance.
1735
1736 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
1737
1738         * cpu-s390.md, cpu-s390x.md: update localloc length.
1739
1740 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
1741
1742         * cpu-g4.md: added missing descriptions.
1743
1744 2007-03-14  Miguel de Icaza  <miguel@novell.com>
1745
1746         *  Makefile.am: Add support so the tail tests are not executed on
1747         PowerPC as that is a known limitation of the PowerPC port.
1748
1749 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
1750
1751         * runmdesc.bat:  Move to msvc directory.
1752         
1753 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
1754
1755         * runmdesc.bat:  Run executable that was produced by the current
1756         target and sent via an argument.
1757         
1758 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
1759
1760         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
1761         #81102.
1762
1763         * generics.2.cs: Add regression test.
1764
1765 2007-03-09  Wade berrier  <wberrier@novell.com>
1766
1767         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
1768
1769 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
1770
1771         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
1772         AOT code depends on this.
1773
1774 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
1775
1776         * mini.c: more precise tracking of types in the eval stack
1777         (part of fix for bug #81044).
1778
1779 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
1780
1781         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
1782
1783         * aot-compiler.c (encode_patch): Remove an obsolete comment.
1784
1785 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
1786
1787         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
1788
1789         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
1790
1791 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
1792
1793         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
1794         a pointer on 64 bit systems. Fixes #80190.
1795
1796         * iltests.il: Add new regression test.
1797
1798 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
1799
1800         * mini.c: inline a constant for Environment.IsRunningOnWindows.
1801
1802 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
1803
1804         * trace.c: Remove an erroneous alignemnt check when tracing.
1805           Fixes --trace on OSX86.
1806
1807 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
1808
1809         * mini-$(arch).h: initialize SP in context for all the archs.
1810
1811 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
1812
1813         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
1814         regressions in the thread tests.
1815
1816 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
1817
1818         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
1819         - fixed implementation of LOCALLOC opcode
1820         - implemented non-un compare for floats
1821         - code cleanup
1822         - implementation of FDIV and CKFINITE opcodes
1823         - fixes for latest mono updates
1824         - additional arch opcodes
1825
1826 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
1827
1828         * Makefile.am: simplify and merge rules for cross-compilation.
1829
1830 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
1831
1832         * local-propagation.c: Actually *apply* the fix for bug 80591...
1833
1834 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
1835
1836         * mini-exceptions.c: backuot part of the last change
1837         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
1838
1839 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
1840         * inssel.brg: Fix bug 59286.
1841
1842
1843 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
1844
1845         * mini-exceptions.c: patch from Zoltan to correctly check for
1846         stack boundaries (using the stack register, not the frame register),
1847         fixes bugs #80724, #79717.
1848
1849 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
1850
1851         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
1852         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
1853
1854         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
1855         presence of frame pointer elimination.
1856
1857 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
1858         
1859         * mini-x86.h: NetBSD UCONTEX_REG defines.
1860
1861 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
1862
1863         * inssel-amd64.brg: Fix amd64 build.
1864
1865 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
1866
1867         * mini.h: remove extern to workaround what looks likes gcc bug 26905
1868         on amd64.
1869
1870 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
1871
1872         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
1873         ends.
1874
1875         * mini-<ARCH>.c: Use mono_is_regsize_var ().
1876
1877 2007-01-30 Mark Mason <mason@broadcom.com>
1878
1879            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
1880            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
1881            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
1882            beginning support for CEE_JMP [not quite working yet]
1883            * tramp-mips.c: LMF handling now works
1884         
1885 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
1886
1887         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
1888
1889         * mini.h (NULLIFY_INS): New macro.
1890
1891 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
1892
1893         * mini.c: statistical profiler fix for windows, patch
1894         from Tor Lillqvist (tml@novell.com).
1895
1896 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
1897         * local-propagation.c: Fix bug 80591.
1898
1899 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
1900
1901         * Makefile.am: put back the --export-dynamic option as with
1902         the previous gmodule flags (thanks to Robert Jordan).
1903
1904 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
1905
1906         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
1907
1908         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
1909         simplify and speed up the local register allocator. Also rename some fields
1910         like iassign->vassign.
1911         
1912         * regalloc.c: Remove some functions which are no longer used since their
1913         inlined version is in mini-codegen.c.
1914         
1915         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
1916
1917         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
1918
1919 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
1920
1921         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
1922         narrowing. Fixes #80622.
1923
1924         * iltests.il: Add new regresssion test. 
1925
1926 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
1927
1928         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
1929         debug-debugger.c, debug-debugger.h: warning fixes.
1930         * driver.c: updated copyright year and made it fit in one line.
1931
1932 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
1933
1934         * aot-runtime.c: updated to use mono-dl instead of gmodule.
1935
1936 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
1937
1938         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
1939
1940         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
1941
1942         * iltests.il: Add new test for bug #80507.
1943
1944 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
1945
1946         * mini-arm.h: use soft-float also on vfp for now.
1947
1948 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
1949
1950         * mini.c: fix some more soft-float issues.
1951
1952 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
1953
1954         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
1955
1956 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
1957         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
1958         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
1959         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
1960
1961 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
1962
1963         * mini-arm.c: typo fix.
1964
1965 2007-01-23  Neale Ferguson <neale@sinenomine.net>
1966
1967         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
1968
1969 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
1970
1971         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
1972         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
1973
1974         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
1975
1976         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
1977
1978         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
1979         
1980         * inssel.brg: Fix a warning.
1981
1982         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
1983
1984         * abcremoval.c ssa.c ssapre.c: Update after this change.
1985         
1986         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
1987
1988         * dominators.c (df_set): Use mono_bitset_union_fast.    
1989
1990 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
1991
1992         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
1993         mini-codegen.c: reduce relocations and memory usage for the cpu
1994         description.
1995
1996 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
1997
1998         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
1999
2000         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
2001         to reduce their size.
2002
2003 2007-01-19 Mark Mason <mason@broadcom.com>
2004
2005         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
2006         * mini-mips.c: more configuration macros, support long conditional branches, additional
2007         asserts, fix epilog instrumentation.
2008         * mini-mips.h: use standard stack walk
2009         * cpu-mips.md: increase size of div, rem and conditional branches
2010         
2011 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
2012
2013         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
2014         to cpu spec data.
2015
2016 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
2017
2018         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
2019         (compile_method): Ditto.
2020
2021         * aot-runtime.c (decode_klass_info): Ditto.
2022
2023         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
2024         needed by the code generated by inssel.brg. Also fix a warning.
2025
2026 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
2027
2028         * mini.c: deal with enums that become genericinsts by
2029         being nested in a generic class (bug #79956).
2030
2031 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
2032
2033         * mini.c: match the generic definition to check for
2034         private access with generic types (bug #78431).
2035
2036 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
2037
2038         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
2039         to make life easier for people cross-compiling that insist on not
2040         using scratchbox.
2041
2042 2007-01-17 Mark Mason <mason@broadcom.com>
2043
2044         * inssel-long.brg: patch to deal with mips missing flags
2045         * inssel-long32-mips.brg: implement overflow checks
2046         * insset-mips.brg: implement overflow checks
2047         * mini-mips.h: implement conditional exception handling
2048         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
2049           Remove unused code, minor cleanups.
2050         * exceptions-mips.c: minor cleanups
2051         * mini-ops.h: add mips conditional exception ops
2052         * cpu-mips.md: add mips conditional exception ops
2053
2054         
2055 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
2056
2057         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
2058         to deal with mips missing of flags.
2059
2060 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
2061
2062         * exceptions-ppc.c: execute fault handlers.
2063
2064 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
2065
2066         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
2067
2068 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
2069
2070         * mini.c: handle also floating point values in initialize_array.
2071
2072 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
2073
2074         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
2075         array initialization and make it conditional on the intrins option.
2076
2077 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
2078
2079         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
2080         relocations and put the patch info names close to the enum definition.
2081
2082 2007-01-15 Mark Mason <mason@broadcom.com>
2083
2084         * basic.cs, exceptions.cs: break up large tests to increase debugability.
2085
2086 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
2087
2088         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
2089
2090 2007-01-12  Raja R Harinath  <rharinath@novell.com>
2091
2092         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
2093
2094 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
2095
2096         * Makefile.am: distribute the mips sources.
2097
2098 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
2099
2100         * mini-codegen.h: handle bug #80489 here, by excluding ecx
2101         directly.
2102
2103 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
2104
2105         * cpu-x86.md: back out for now as this triggers other regressions.
2106
2107 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
2108
2109         * cpu-x86.md: force src1 and dest regpair for long shift instructions
2110         to eax:edx, so ecx can't get allocated to them (bug #80489).
2111
2112 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
2113
2114         * mini.c, mini-exceptions.c: enabled running fault handlers
2115         (bug #80469).
2116
2117 2007-01-03  Miguel de Icaza  <miguel@novell.com>
2118
2119         * driver.c: If nothing fail, do not use the string "failed",
2120         because it makes it very annoying to view test result logs on the
2121         web. 
2122
2123 2006-12-30  Miguel de Icaza  <miguel@novell.com>
2124
2125         * debug-debugger.c (mono_debugger_main): Rename "main" to
2126         "main_method" to prevent a warning.
2127
2128         Remove a warning for unused field.
2129
2130 2006-12-28  Martin Baulig  <martin@ximian.com>
2131
2132         * debug-debugger.c
2133         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
2134
2135 2006-12-22  Martin Baulig  <martin@ximian.com>
2136
2137         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
2138         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
2139         seperate `.mdb_debug_info' section, so we can access it from the
2140         debugger even if the binary is stripped.
2141
2142         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
2143         from the `.mdb_debug_info' here to prevent the linker from
2144         removing that section.
2145
2146         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
2147         mdb-debug-info64.s.
2148
2149 2006-12-19  Robert Jordan  <robertj@gmx.net>
2150
2151         * mini-x86: enable the code to return small structures in
2152         registers for FreeBSD as well. Fixes bug #80278.
2153         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
2154
2155 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
2156
2157         * mini-x86.c: align the stack when calling the profiler
2158         function instrumenting the prolog (on OSX).
2159
2160 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
2161
2162         * mini.c: emit a break opcode where Debugger.Break () is called.
2163
2164 2006-12-13  Miguel de Icaza  <miguel@novell.com>
2165
2166         * mini.c (mono_method_to_ir): Provide useful information on this
2167         assert, to prevent others from debugging like I did.
2168
2169 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
2170
2171         * mini.c: enable code which was incorrectly commented
2172         (bug #80235).
2173
2174 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
2175
2176         * mini-x86.c: enable on OSX, too, the code to return small
2177         structures in registers.
2178
2179 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
2180
2181         * mini-x86.c: remove the use of the dynamic code manager here, too.
2182
2183 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
2184
2185         * mini.h, debug-debugger.c, tramp-*.c: fixed 
2186         mono_debugger_create_notification_function() to use
2187         mono_global_codeman_reserve () instead of a dynamic code manager.
2188
2189 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
2190
2191         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
2192         ves_array_element_address() jit icall and use a generated
2193         managed method instead (which is about 4 times faster for a rank 3
2194         array access).
2195
2196 2006-11-29  Mark Mason  <mason@broadcom.com>
2197
2198         * basic-calls.cs: additional tests for passing
2199         structures as function arguments.
2200
2201 2006-11-29  Mark Mason  <mason@broadcom.com>
2202
2203         * mini-mips.h: disable custom exception handling
2204         * mini-mips.c: throw/rethrow should use jalr to call
2205         exception stubs.  Fixed bug with passing structures
2206         by value. More support for tracing floating point
2207         functions.
2208
2209 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
2210
2211         * mini.c: fixed typo in the soft-float ldind.r4 handling
2212         (bug #80086).
2213
2214 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
2215
2216         * mini.c, mini.h, driver.c: added --runtime command line
2217         option to select a different runtime than the autodetected one.
2218         * jit.h: added API for embedders to initialize with a specific
2219         runtime version.
2220
2221 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
2222
2223         * mini.c: handle also boxing of r4 values (bug #80024).
2224
2225 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
2226
2227         * mini-ppc.c: force indirect calls until we reserve
2228         enough address space for all the generated code.
2229
2230 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
2231
2232         * exceptions-arm.c: workaround bugs in the libc definition
2233         of struct ucontext.
2234
2235 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
2236
2237         * inssel.brg: fixes from me and Mark Mason.
2238
2239 2006-11-23  Dick Porter  <dick@ximian.com>
2240
2241         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
2242         semaphore display now we've fixed the initial value
2243
2244 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
2245
2246         * inssel.brg: partially revert the last change to fix the build.
2247
2248 2006-11-21  Mark Mason  <mason@broadcom.com>
2249
2250         * inssel.brg: Add and use compare-and-branch macros to support
2251         architectures that do not have condition code registers (ie. MIPS).
2252         * *-mips.{c,brg,md}: Fix copyright statements
2253
2254 2006-11-20  Mark Mason  <mason@broadcom.com>
2255
2256         * Makefile.am: remove mini-codegen.c from list of MIPS sources
2257         * mini.c: Allow GET_CONTEXT to be specified by the arch port
2258         * mini.h: Added declaration for mono_print_ins()
2259         * mini-codegen.c: added ins_spec initializer for MIPS
2260         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
2261         vreg to be virtual and hreg to be non-virtual.
2262         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
2263         is not yet working/implemented correctly.
2264         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
2265         non-static, fixup calls to print_ins() from other parts in the file.
2266
2267 2006-11-20  Mark Mason  <mason@broadcom.com>
2268
2269         * basic-calls.cs: added tests for passing structures as arguments
2270         to calls.
2271
2272 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
2273
2274         * inssel-long32.brg: optimize signed division by power of two.
2275
2276 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
2277
2278         * mini-arm.c: added support for interworking with thumb code
2279         (mono must be still be built using the ARM instruction encoding).
2280
2281 2006-11-19  Miguel de Icaza  <miguel@novell.com>
2282
2283         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
2284         verifier has different rules for it.   Fixes a few verifier issues
2285         in the test suite.
2286
2287         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
2288         at the end, so people know what happened.
2289
2290 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
2291
2292         * brach-opts.c: in optimize_exception_target() make sure we
2293         are in a catch clause (fixes bug #79871).
2294
2295 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
2296
2297         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
2298         more soft-float support fixes.
2299
2300 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
2301
2302         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
2303         that are passed half on the stack and half in registers.
2304
2305 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
2306
2307         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
2308         more mips integration work from Mark E Mason 
2309         <mark.e.mason@broadcom.com>.
2310
2311 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
2312
2313         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
2314         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
2315         tramp-mips.c: added sources for the mips port, not
2316         integrated in the build yet. Contributed by
2317         Mark E Mason <mark.e.mason@broadcom.com>.
2318
2319 2006-11-14  Neale Ferguson <neale@sinenomine.net>
2320
2321         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
2322
2323 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
2324
2325         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
2326         put the soft-float rules in its own file since it seems to
2327         break s390 compilation.
2328
2329 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
2330
2331         * mini-arm.c: fixed wrnings.
2332
2333 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
2334
2335         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
2336         inssel-arm.brg: ARM support for soft-float.
2337
2338 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
2339
2340         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
2341         loads and stores of 32 bit fp values.
2342
2343 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
2344
2345         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
2346
2347         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
2348         works. Fixes #79852 and #79463.
2349
2350 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
2351
2352         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
2353         more soft-float support WIP and fixes.
2354
2355 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
2356
2357         * mini-arm.c: some VFP updates.
2358
2359 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
2360
2361         * mini-exceptions.c: 0 is a valid local var offset in some
2362         architectures, don't assert (bug #78508).
2363
2364 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
2365
2366         * exceptions-arm.c: fixed off by one error in stack walk code.
2367
2368 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
2369
2370         * mini.h, mini.c: more precise tracking of type load exceptions.
2371
2372 2006-11-03  Robert Jordan  <robertj@gmx.net>
2373
2374         * Makefile.am: [WIN32] Add monow.exe target.
2375         * driver.c: [WIN32] Don't detach the console when debugging.
2376         Fixes bug #79797.
2377         
2378 2006-10-30  Miguel de Icaza  <miguel@novell.com>
2379
2380         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
2381
2382 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
2383
2384         * aot-compiler.c (emit_method_info): Add a case missed earlier.
2385
2386         * driver.c (mini_regression): Fix --regression with AOT.
2387
2388         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
2389
2390 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
2391
2392         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
2393
2394         * mini-sparc.h: Don't use sigaction on sparc/linux.
2395
2396         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
2397
2398         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
2399
2400         * mini-exceptions.c: Add proper include files for getpid ().
2401
2402 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
2403
2404         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
2405         address instead of a MonoJitInfo* to avoid decoding the exception info for the
2406         method.
2407
2408         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
2409         name cache to reduce its size.
2410
2411         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
2412
2413 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
2414
2415         * mini-x86.c: Save/restore the current LMF structure more efficiently using
2416         the mono_lmf TLS variable.
2417
2418         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
2419         trampoline lmf frames.  
2420
2421         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
2422
2423 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
2424
2425         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
2426         the mono_lmf TLS variable.
2427
2428         * mini-exceptions.c: Access the LMF structure through accessors.
2429
2430         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
2431         variable instead of in jit_tls->lmf.
2432
2433         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
2434         
2435         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
2436         trampoline lmf frames.
2437
2438         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
2439
2440 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
2441
2442        * mini.c trace.c mini-x86.c: Revert these too.
2443         
2444        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
2445        signature change.
2446
2447 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
2448
2449         * genmdesc.c: removed now dead code.
2450
2451 2006-10-09  Robert Jordan <robertj@gmx.net>
2452
2453         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
2454
2455 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
2456
2457         * mini.h: do not leave gaps in the opcode values.
2458
2459 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
2460
2461         * jit-icalls.h: flag functions as internal here, too.
2462
2463 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
2464
2465         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
2466         functions with the internal attribute.
2467
2468 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
2469
2470         * aot-compiler.c: fclose the file descriptor in the profile read loop.
2471
2472 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
2473
2474         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
2475         for soft-float.
2476
2477 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
2478
2479         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
2480         tail calls as on other platforms.
2481
2482         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
2483
2484         * iltests.il: Add a few tailcall tests.
2485
2486 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
2487
2488         * driver.c: fix loop for old compilers (bug #79521).
2489
2490 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
2491
2492         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
2493
2494         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
2495
2496         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
2497         metadata without any code.
2498
2499         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
2500         more precise debugging information using gdb.
2501
2502 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
2503
2504         * inssel-ia64.brg: Make the helper methods static.
2505
2506 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
2507
2508         * inssel-x86.brg: make the helper methods static.
2509
2510 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
2511
2512         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
2513
2514 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
2515
2516         * mini.c: updates for monoburg changes.
2517         * inssel.brg: make a few helper functions static as they should.
2518
2519 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
2520
2521         * Makefile.am: Move mini-codegen.c to common_sources.
2522
2523 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
2524
2525         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
2526         instructions.
2527         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
2528         mini-ppc.h: port to use the common local register allocator.
2529
2530 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
2531
2532         * mini.h: Remove the comment too then.
2533
2534 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
2535
2536         * mini.h: put back backend.data which is to be used shortly and
2537         doesn't increase the size of MonoInst. If any 64 bit arch aligned
2538         pointers on 4 byte boundaries it'd have much bigger issues running
2539         and you can ifdef it out anyway.
2540
2541 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
2542
2543         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
2544         MonoInst size by 4 bytes on 64 bit machines.
2545
2546 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
2547
2548         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
2549         replacement with more meaningful field names. Arch maintainers, please
2550         check the assigned names are good enough for your arch.
2551
2552 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
2555         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
2556
2557 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
2558
2559         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
2560         relocations and memory requirements, put the optimization flags
2561         definitions in their own file.
2562
2563 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
2564
2565         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
2566
2567         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
2568
2569 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
2570
2571         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
2572
2573 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
2574
2575         * inssel.brg: use the correct function to get the size of an item
2576         in an array, given an element class.
2577         * aot-compiler.c: do not access class->class_size directly.
2578
2579 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
2580
2581         * mini.h, debug-mini.c: added a debugging function to print
2582         info about local variables and arguments in a jitted method.
2583
2584 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
2585
2586         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
2587
2588         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
2589
2590 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
2591
2592         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
2593         inner and outer loops when passing vtypes.
2594
2595 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
2596
2597         * mini-ppc.c: take into account the cpu errata for cache flushing
2598         which caused some random errors (bug #79381).
2599
2600 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
2601
2602         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
2603         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
2604
2605 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
2606
2607         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
2608         loaded.
2609
2610         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
2611         freebsd ports tree.
2612
2613         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
2614         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
2615
2616         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
2617         displacement.
2618
2619 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
2620
2621         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
2622
2623 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
2624
2625         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
2626         macro does not have to be changed during debugging.
2627
2628         * 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>.
2629
2630         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
2631
2632         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
2633         
2634         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
2635         MONO_ARCH_NO_EMULATE_MUL is defined.
2636
2637         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
2638
2639         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
2640
2641         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
2642
2643         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
2644         
2645 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
2646
2647         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
2648         stuff to mini-exceptions.c where it is used.
2649
2650         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
2651         setup code, the real one is in mini-exceptions.c.
2652
2653         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
2654         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
2655         some changes from the freebsd ports tree.
2656
2657         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
2658         constants.
2659         
2660         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
2661
2662 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
2663
2664         * mini.c: on Linux, check for /proc to be mounted
2665         (bug# 79351, novell bug#201204).
2666
2667 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
2668
2669         * mini.c: handle cases where pthread_attr_getstack() behaves
2670         incorrectly (bug #78096).
2671
2672 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
2673
2674         * mini-arm.c: support larger stack frames (bug #79272).
2675
2676 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
2679
2680         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
2681         tokens.
2682
2683         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
2684         mono_class_from_name () to find a class from its name.
2685
2686         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
2687
2688 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
2689
2690         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
2691
2692 2006-09-05  Kornél Pál  <kornelpal@gmail.com>
2693
2694         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
2695
2696 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
2697
2698         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
2699         callinfo->trampoline.
2700
2701         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
2702         fixes #79271.
2703         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
2704         future.
2705
2706 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
2707
2708         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
2709
2710 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
2711
2712         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
2713         stats.method_trampolines, it is already done by the generic trampoline code.
2714
2715         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
2716         
2717 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
2718
2719         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
2720
2721         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
2722
2723         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
2724
2725         * mini.c (print_jit_stats): Print mscorlib mempool size too.
2726         
2727         * mini.c (print_jit_stats): Print new stats.
2728
2729         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
2730
2731 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
2732
2733         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
2734         Address on two dimensional arrays. Fixes #78729.
2735
2736         * mini.h (MonoCompile): Add a 'skip_visibility' field.
2737
2738         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
2739         a method.
2740
2741         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
2742
2743         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
2744         #79130.
2745         
2746         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
2747         a race condition.
2748         (mini_get_ldelema_ins): Ditto.
2749
2750 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
2751
2752         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
2753         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
2754         Fixes #79213.
2755
2756 2006-08-29 Neale Ferguson <neale@sinenomine.net>
2757
2758         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
2759         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
2760
2761         * exceptions-s390x.c: Cosmetic change.
2762
2763         * tramp-s390.c: Fix warning.
2764
2765         * cpu-s390.md: Correct length of mul_imm.
2766
2767 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
2768
2769         * aot-compiler.c: added binary writer with ELF backend
2770         implementation (only on Linux/x86 for now).
2771
2772 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
2773
2774         * Makefile.am: Don't run net 2.0 AOT tests.
2775
2776         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
2777         (mono_compile_assembly): Skip net 2.0 assemblies as well.
2778
2779         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
2780
2781 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
2782
2783         * aot-compiler.c: simplified and refactored the asm-writing code
2784         to allow different backends.
2785
2786 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
2787
2788         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
2789
2790         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
2791         little. Share patches of type TYPE_FROM_HANDLE as well.
2792
2793         * mini.c (mono_patch_info_equal): New helper function.
2794         (mono_patch_info_hash): Ditto.
2795
2796         * aot-compiler.c (emit_method_code): Fix s390 build.
2797
2798         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
2799         is not handled because it is stored as a flag and not as a type ctor. Fixes
2800         #79016.
2801
2802 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
2803
2804         * aot-compiler.c: Fix computation of GOT slot statistics.
2805         
2806         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
2807         Also remove support for not PIC AOT.
2808
2809         * mini.h: Bump AOT file format version.
2810
2811         * objects.cs: Add a test for #78990.
2812
2813         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
2814         (peter.dettman@iinet.net.au). Fixes #79087.
2815
2816         * basic-long.cs: Add a test for the above.
2817
2818 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
2819
2820         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
2821         
2822         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
2823         code somewhat.
2824
2825 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
2826
2827         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
2828         exceptions.
2829
2830 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
2831
2832         * mini.c: Don't verify COM proxy invoke calls
2833         
2834
2835 2006-08-10  Dick Porter  <dick@ximian.com>
2836
2837         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
2838         which process is holding semaphores locked.
2839
2840 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
2841
2842         * mini-ia64.c mini-amd64.c: Fix #79027.
2843
2844         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
2845
2846         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
2847
2848         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
2849         implicit arguments in a vararg call. Fixes #79027.
2850
2851 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
2852
2853         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
2854         (mono_get_array_new_va_signature): Ditto.
2855
2856 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
2857
2858         * aot-runtime.c: Call init_plt lazily.
2859
2860         * inssel-long.brg: Fix unsigned long->int conversion.
2861
2862         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
2863
2864         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
2865         that most data is now in the .rss/.data section.
2866
2867 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
2868
2869         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
2870
2871         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
2872
2873         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
2874
2875         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
2876
2877         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
2878         virtual call. Fixes #79010.
2879
2880         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
2881         and use the result as the this argument in the real call.
2882
2883         * generics.2.cs: Add a new test for #79010.
2884         
2885 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * mini-x86.c: Fix a warning.
2888
2889         * aot-compiler.c: Add a bunch of statistics.
2890
2891         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
2892
2893 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
2894
2895         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
2896
2897 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * 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>.
2900
2901 2006-07-13  Miguel de Icaza  <miguel@novell.com>
2902
2903         * mini.c (mono_method_to_ir): Obtain the original method in the
2904         CIL stream and use this to perform validation.
2905
2906         Fixed: #78816
2907
2908 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
2909
2910         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
2911         (mono_arch_call_opcode): Ditto.
2912
2913         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
2914         #78826.
2915
2916         * mini.c (mono_patch_info_dup_mp): New helper function.
2917         
2918         * aot-compiler.c (compile_method): Fix some of the memory allocated during
2919         compilation. Fixes #78827.
2920
2921 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
2922
2923         * declsec.c: Use original security informations for
2924           MONO_WRAPPER_MANAGED_TO_MANAGED.
2925
2926 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
2927
2928         * mini.c: Allow Com Interop methods/classes and
2929         don't verify COM wrapper calls
2930         
2931
2932 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
2933
2934         * inssel-long32.brg: Fix long->i4 checked conversion.
2935
2936         * exceptions.cs: Add a test for the above.
2937
2938 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
2939
2940         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
2941
2942         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
2943         leaks.
2944
2945         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
2946         #78775.
2947
2948 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
2949
2950         * mini.c: Fix solaris/x86 exception handling.
2951
2952         * Makefile.am: Get rid of $(ICU_LIBS).
2953
2954 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
2955
2956         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
2957         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
2958         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
2959
2960         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
2961
2962         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
2963         this function causes a SIGSEGV.
2964
2965 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
2966
2967         * mini.c: Remove unused solaris/x86 includes.
2968
2969 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
2970
2971         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
2972
2973 2006-06-20  Jb Evain  <jbevain@gmail.com>
2974
2975         * cpu-g4.md: fix max length of start_handler instruction.
2976
2977 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
2978         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
2979
2980 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
2981         * ssa.c: Fixed bug 78653 for SSA based deadce.
2982         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
2983         MonoInst.flags, used in SSA based deadce.
2984         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
2985         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
2986
2987 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
2988
2989         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
2990         it can end up using non executable memory on ppc64 systems
2991         running ppc32 userspace (fix from Johannes Berg).
2992
2993 2006-06-14  Dick Porter  <dick@ximian.com>
2994
2995         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
2996         4.1.1
2997
2998 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
2999         * mini.c: Made so that inline is locally disabled if it would
3000         trigger a .cctor, because too many apps depend on this behavior
3001         (which seems to be also the one of the MS CLR).
3002
3003 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
3004
3005         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
3006         No idea why this worked before.
3007
3008         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
3009         which branch to outer exception clauses since they could skip the
3010         inner finally clauses. Fixes #78633.
3011
3012         * exceptions.cs: Add a test for the above.
3013
3014         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
3015         Fixes #78629.
3016
3017         * iltests.il: Add a test for the above.
3018
3019 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
3020
3021         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
3022         after the end of a try bblock, to prevent asserts in mini_method_compile ().
3023
3024         * iltests.il: Add a test for the above.
3025
3026 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
3027
3028         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
3029         
3030         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
3031         methods as instrinsics.
3032
3033 2006-06-09  Wade Berrier <wberrier@novell.com>
3034
3035         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
3036         (simple-cee-ops.h ssapre-mini-ops.h)
3037
3038 2006-06-09  Neale Ferguson <neale@sinenomine.net>
3039
3040         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
3041         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
3042         instruction).
3043         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
3044         * cpu-s390x.md: Fix max. length values for a couple of instructions.
3045
3046 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
3047
3048         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
3049
3050 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
3051
3052         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
3053         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
3054         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
3055         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
3056         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
3057         of opcodes, so that bug 78549 should not happen again.
3058         * ssapre.c: Updated to use the renamed files.
3059
3060 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
3061
3062         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
3063         in OP_ATOMIC_EXCHANGE_I4.
3064
3065 2006-06-07  Wade Berrier <wberrier@novell.com>
3066
3067         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
3068         in mono_debugger_create_notification_function)
3069
3070 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
3071
3072         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
3073         
3074         * mini.c (type_from_stack_type): Disable some changes which do not
3075         seem to work.
3076
3077         * driver.c: Reenable opts.
3078
3079         * mini.h (MonoStackSlot): New structure to keep track of the verification state
3080         of the evaluation stack.
3081         
3082         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
3083         evaluation stack trace at entry to the bblock.
3084
3085         * mini.c (merge_stacks): New function to perform verification of stack merges.
3086         Turned off by default.
3087
3088         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
3089         STACK_MP.
3090         
3091 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
3092
3093         * local-propagation.c: Fixed bug 78549.
3094
3095 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
3096
3097         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
3098
3099 2006-06-02  Miguel de Icaza  <miguel@novell.com>
3100
3101         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
3102         tramp-arm.c, tramp-ia64.c
3103         (mono_debugger_create_notification_function): Update signature to
3104         new signature and use new protocol for creating the notification
3105         function.  
3106
3107         Should fix the build.
3108
3109 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
3110
3111         * exceptions-ppc.c (mono_jit_walk_stack)
3112         (ves_icall_get_frame_info): Fix the build
3113
3114 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
3115
3116         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
3117
3118 2006-05-31  Raja R Harinath  <rharinath@novell.com>
3119
3120         * il2tests.2.il: New file for generics CIL tests.  Add test for
3121         #78019.
3122         * Makefile.am: Update.
3123
3124         Fix #78019
3125         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
3126         to nullable types.
3127
3128 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
3129
3130         * aliasing.c: Fixed bug 78311.
3131
3132 2006-05-29  Martin Baulig  <martin@ximian.com>
3133
3134         * mini-exceptions.c (mono_find_jit_info): When computing the
3135         native offset, check whether we're actually inside the method's
3136         code; call mono_debug_print_stack_frame() to format the frame.
3137         (ves_icall_System_Exception_get_trace): Call
3138         mono_debug_print_stack_frame() to format the stack frame.
3139         (ves_icall_get_trace): Update to the new debugging API.
3140         (mono_jit_walk_stack_from_ctx): Likewise.
3141         (ves_icall_get_frame_info): Likewise.
3142
3143         * mini.c (get_method_from_ip): Use the new debugging API.
3144         (mono_print_method_from_ip): Likewise.
3145
3146         * exceptions-ppc.c
3147         (mono_jit_walk_stack): Use the new debugging API.
3148         (ves_icall_get_frame_info): Likewise.   
3149
3150 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
3151
3152         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
3153
3154 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
3155
3156         * mini.c: Added "limitator" to inline for debugging.
3157
3158 2006-05-24  Martin Baulig  <martin@ximian.com>
3159
3160         * debug-debugger.c (mono_debugger_init): Create a private,
3161         malloc()-based code manager for the notification function and
3162         intentionally leak it on exit.  This fixes the crash-on-exit race
3163         condition.
3164
3165         * tramp-amd64.c
3166         (mono_debugger_create_notification_function): Added
3167         `MonoCodeManager *' argument.
3168
3169         * tramp-x86.c
3170         (mono_debugger_create_notification_function): Added
3171         `MonoCodeManager *' argument.
3172
3173 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
3174
3175         * aliasing.c: Fixed 64 bit issue.
3176         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
3177         default since all known bugs are fixed (one more time!).
3178
3179 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
3180
3181         * mini.c: write barrier support.
3182
3183 2006-05-23  Martin Baulig  <martin@ximian.com>
3184
3185         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
3186         check at the top of the file.
3187
3188 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
3189
3190         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
3191         reverting changes without reason and without changelog entries.
3192
3193 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
3194
3195         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
3196         to a few opcodes. Fixes #78439.
3197
3198         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
3199         consistency with other archs.
3200
3201         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
3202
3203 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
3204
3205         * debug-debugger.c: fix the build.
3206
3207 2006-05-17  Martin Baulig  <martin@ximian.com>
3208
3209         * debug-debugger.c
3210         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
3211         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
3212         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
3213         (debugger_attach): Call GC_mono_debugger_add_all_threads().
3214
3215 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
3216
3217         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
3218
3219 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
3220
3221         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
3222         MONO_TYPE_GENERICINST.
3223         
3224         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
3225         MONO_TYPE_GENERICINST.
3226
3227 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
3228
3229         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
3230         #78325.
3231
3232 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
3233
3234         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
3235         mempool.
3236         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
3237
3238 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
3239
3240         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
3241         mono_trace_cleanup ().
3242
3243         * iltests.il: Fix problem with the newly added test.
3244
3245         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
3246         due to register constraints, free up the previous hreg. Fixes #78314.
3247
3248         * iltests.il: Add new test for #78314.  
3249
3250         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
3251         Interlocked.Add. Fixes #78312.
3252
3253         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
3254         
3255 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
3256
3257         * inssel.brg (mini_emit_virtual_call): Fix a warning.
3258
3259 2006-05-05  Martin Baulig  <martin@ximian.com>
3260
3261         * debug-mini.c (mono_debug_open_block): New method.
3262
3263         * mini-amd64.c
3264         (mono_arch_output_basic_block): Call mono_debug_open_block() at
3265         the beginning of each basic block.
3266
3267         * mini-x86.c
3268         (mono_arch_output_basic_block): Call mono_debug_open_block() at
3269         the beginning of each basic block.
3270
3271 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
3272
3273         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
3274         default until I understand why they break the build on amd64.
3275
3276 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
3277
3278         * mini.c (mini_cleanup): Call mono_cleanup ().
3279
3280         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
3281         errors.
3282
3283 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
3284
3285         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
3286         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
3287         default since all known bugs are fixed, and I cannot reproduce bug
3288         77944... I'm asking Matt Hargett to test again after this commit.
3289
3290 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
3291
3292         * mini-codegen.c: Fixed typo that thrashed inline.
3293
3294 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
3295
3296         * dominators.c (compute_dominators): Avoid using a worklist since
3297         it is not correct in some cases. Instead, iterate over all bblocks as
3298         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
3299
3300 2006-04-28  Miguel de Icaza  <miguel@novell.com>
3301
3302         * mini.c (mono_jit_compile_method_inner): Use
3303         mono_prepare_exception_from_error that resets the value
3304         internally.
3305
3306 2006-04-27  Miguel de Icaza  <miguel@novell.com>
3307
3308         * mini.c: Move the mini_loader_error_to_exception to metadata. 
3309         
3310 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
3311
3312         * aliasing.c: Fixed bug 78210.
3313
3314 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
3315
3316         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
3317         default until all their problems (or the ones they trigger) are fixed.
3318
3319 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
3320
3321         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
3322         
3323         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
3324         as loaded only after resolving patches since that could invoke the same method.
3325
3326         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
3327
3328         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
3329         functions.
3330
3331         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
3332         AOT loader.
3333
3334         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
3335         stack.
3336
3337         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
3338         made from AOT code through the PLT table.
3339
3340         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
3341         holding the plt offset when a call is made to the aot plt trampoline.
3342         
3343 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
3344
3345         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
3346         amd64 AOT support.
3347
3348         * Makefile.am (common_sources): Fix build breakage.
3349
3350         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
3351         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
3352         intra-assembly calls if possible.
3353         
3354         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
3355
3356         * mini-trampolines.c: Handle PLT entries.
3357
3358         * mini.c: Avoid creating a GOT var for calls.
3359
3360         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
3361         from mscorlib code.
3362
3363         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
3364         from mscorlib code.
3365
3366         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
3367         AOT code.       
3368
3369         * mini.h: Bump AOT file format version.
3370         
3371         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
3372         covers more cases.
3373
3374 2006-04-25  Martin Baulig  <martin@ximian.com>
3375
3376         * driver.c: Disable copyprop, consprop and inline when running
3377         inside the debugger.
3378
3379 2006-04-25  Martin Baulig  <martin@ximian.com>
3380
3381         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
3382         with `get_current_thread' and added `detach'.
3383         (MonoDebuggerMetadataInfo): Added `thread_size',
3384         `thread_tid_offset', `thread_stack_ptr_offset' and
3385         `thread_end_stack_offset'.
3386
3387 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
3388
3389         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
3390         aot-runtime.c.
3391
3392         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
3393         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
3394
3395         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
3396
3397         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
3398
3399         * aot.c: Add support for ADJUSTED_IID.  
3400
3401 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
3402
3403         * aot.c (emit_method_order): Don't align method_order_end.
3404
3405         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
3406         the interface ID changes.
3407
3408 2006-04-21  Dick Porter  <dick@ximian.com>
3409
3410         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
3411         cleaning up a thread.  Fixes the new part of bug 77470.
3412
3413 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
3414
3415         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
3416         to managed wrapper.
3417                      
3418 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
3419
3420         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
3421         
3422         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
3423         SIGSEGV. Fixes #78072.
3424
3425         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
3426         unregister our SIGABRT handler.
3427
3428 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
3429
3430         * mini.c: Disabled inline where it can alter the call stack in a
3431         way visible from managed code.
3432         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
3433         default.
3434
3435 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
3436
3437         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
3438         on other platforms. Fixes #78089.
3439
3440 2006-04-13  Martin Baulig  <martin@ximian.com>
3441
3442         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
3443         determine whether we're inside the debugger.
3444
3445         * debug-debugger.h
3446         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
3447
3448 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
3449
3450         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
3451         handler clauses. Fixes #78024.
3452
3453         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
3454         in the CALL_MEMBASE opcodes. Fixes #78088.
3455         (mono_arch_get_vcall_slot_addr): Ditto.
3456
3457 2006-04-10  Martin Baulig  <martin@ximian.com>
3458
3459         * debug-debugger.c: The thread handling code has now been moved
3460         into ../metadata/threads.c.
3461
3462 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
3463
3464         * driver.c (mono_main): Fix --with-gc=none build.
3465
3466         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
3467         (mono_spillvar_offset_float): Ditto.
3468         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
3469         hreg, not when its !global, since on ia64, there is a third category: stacked
3470         registers.      
3471
3472 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
3473
3474         * mini.c: set MonoInst->klass for load field address and a few other
3475         places.
3476
3477 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
3478
3479         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
3480
3481 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
3482
3483         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
3484         the branch opt changes.
3485
3486 2006-04-06  Dick Porter  <dick@ximian.com>
3487
3488         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
3489         
3490         * wapihandles.c (mini_wapi_seminfo): 
3491         * driver.c (mono_main): Add semaphore info option
3492
3493 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
3494
3495         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
3496         branch optimization changes. Fixes #78009.
3497
3498 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
3499
3500         * mini.c: ignore accessibility of methods in managed->native wrappers.
3501
3502 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
3503
3504         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
3505         
3506         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
3507
3508 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
3509
3510         * mini.c: Modify the branch optimizations to preserve the invariant that
3511         the entries inside the in_bb and out_bb arrays are unique.
3512         (mono_unlink_bblock): Avoid creation of new arrays.
3513
3514 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
3515
3516         * mini.c (mono_unlink_bblock): Fix regression caused by previous
3517         change (#77992).
3518
3519 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
3520
3521         * mini.c (optimize_branches): Remove the "optimizations" in
3522         the cbranch1/cbranch2 -> branch cases which were causing several
3523         problems in the past. Fixes #77986.
3524
3525 2006-03-31  Chris Toshok  <toshok@ximian.com>
3526
3527         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
3528         default optimizations :(
3529
3530 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
3531
3532         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
3533         branch.
3534
3535 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
3536
3537         * local-propagation.c: Added comments to structs and removed
3538         "Mono" prefixes from local tree mover types.
3539
3540 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
3541
3542         * Makefile.am (arch_sources): Define this for each architecture so 
3543         libmono_la_SOURCES is defined in one place.
3544
3545 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
3546
3547         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
3548         from handles/.
3549
3550 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
3551
3552         * driver.c: print the GC name supplied by configure.
3553
3554 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
3555
3556         * local-propagation.c: Added tree mover, and moved here all the
3557         local propagation code from mini.c
3558         * mini.c: Added support for treeprop, and moved all the local
3559         propagation code to local-propagation.c
3560         * mini.h: Added support for treeprop
3561         * driver.c: Added support for treeprop, enabled consprop, copyprop,
3562         treeprop, inline and deadce by default
3563         * Makefile.am: Added local-propagation.c
3564
3565 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
3566
3567         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
3568
3569 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
3570
3571         * debug-debugger.c: make it compile without the Boehm GC.
3572
3573 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
3574
3575         * mini.c: fixed issue with mismatch when an icall is registered
3576         with multiple names but same address.
3577
3578 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
3579
3580         * declsec.c, mini-exceptions.c: use write barrier to set reference
3581         fields of managed objects.
3582
3583 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
3584
3585         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
3586         (can_access_internals): Fix a warning.
3587
3588         * mini.c (print_method_from_ip): Rename this to 
3589         mono_print_method_from_ip so it gets exported.
3590
3591         * trace.c: Deal with strings inside StringBuilder's containing garbage
3592         and fix memory leaks. Fixes #77848.
3593
3594 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
3595
3596         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
3597         fixes #77787.
3598
3599 2006-03-16 Neale Ferguson <neale@sinenomine.net>
3600         
3601         * mini-s390.c: Remove OP_X86_TEST_NULL.
3602
3603 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
3604
3605         * mini.c: use the correct GetHashCode() for the moving collector.
3606
3607 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
3608
3609         * liveness.c: Regalloc spill cost tuning.
3610
3611 2006-03-15 Neale Ferguson <neale@sinenomine.net>
3612         
3613         * mini-s390x.h: Correct S390_LONG macro.
3614
3615         * mini-s390x.c: Cleanup unused code.
3616
3617 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
3618
3619         * jit-icalls.h: New file.
3620
3621         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
3622         icalls and include that instead of including jit-icalls.c.
3623
3624         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
3625         OP_X86 opcodes.
3626
3627 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
3628
3629         * mini.c: when checking for member accessibility, also check for
3630         friend assemblies and for explicit interface implementations.
3631
3632 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
3633
3634         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
3635
3636         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
3637
3638         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
3639         common cases are done first.    
3640
3641         * mini-ops.h: Only define platform specific opcodes on the given platform.
3642
3643         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
3644         branch.
3645         
3646 2006-03-14  Martin Baulig  <martin@ximian.com>
3647
3648         Revert Paolo's change from r57348:
3649
3650         * mini.h: don't use gboolean for bitfields.
3651         * mini.c: verifier changes for fields and methods accessibility.
3652
3653 2006-03-13  Neale Ferguson <neale@sinenomine.net>
3654
3655         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
3656
3657         * mini-s390x.c: Fix conv_r_un.
3658
3659         * cpu-s390, cpu-s390x.md: Fix lengths.
3660
3661 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
3662
3663         * mini.c: nested types have access to all the nesting
3664         levels, not just the enclosing types.
3665
3666 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
3667
3668         * mini.c: added a few more verification checks.
3669
3670 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
3671
3672         * liveness.c: Merge optimizations from the linear-il branch.
3673
3674 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
3675
3676         * mini-ia64.c (emit_call): Add a comment.
3677
3678         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
3679
3680         * tramp-ia64.c: Fix some warnings.
3681
3682 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
3683
3684         * mini.h: don't use gboolean for bitfields.
3685         * mini.c: verifier changes for fields and methods accessibility.
3686
3687 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
3688
3689         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
3690         lazy icall wrapper changes.
3691
3692         * dominators.c: Replace all the dominator algorithms with faster
3693         ones from the linear-il branch.
3694
3695         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
3696         the mempool.
3697
3698         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
3699         common cases are done first.
3700
3701         * mini-amd64.c: Fix some warnings.
3702
3703         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
3704         from the mempool.
3705
3706         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
3707         added code.
3708
3709         * mini.h: Add a missing prototype.
3710
3711 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
3712
3713         * mini.c: Compile icall wrappers lazily.
3714
3715         * mini-codegen.c: Use printf instead of g_print since its much faster.
3716
3717         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
3718         function.
3719
3720         * mini.c (optimize_branches): Cache the negative result from 
3721         remove_block_if_useless ().
3722
3723         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
3724         Also fix some bblock linking issues.
3725
3726         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
3727         assembly files.
3728
3729         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
3730
3731         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
3732         accessed fields first, for better cache behavior.
3733         
3734 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
3735
3736         * mini.c: speedup IList<T> array accesses.
3737
3738 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
3739
3740         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
3741         inline_costs counter. Fixes #77190.
3742
3743 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
3744
3745         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
3746         trace messages. Fixes #77706.
3747
3748 2006-03-04  Martin Baulig  <martin@ximian.com>
3749
3750         * tramp-amd64.c, tramp-x86.c
3751         (mono_debugger_create_notification_function): Use
3752         mono_global_codeman_reserve() to allocate a buffer at runtime and
3753         return it.
3754
3755         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
3756
3757         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
3758         notification function at runtime and then call `initialize' in the
3759         `MONO_DEBUGGER__debugger_info' vtable.
3760
3761 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
3762
3763         * iltests.il: Fix a visibility problem.
3764
3765 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
3766
3767         * driver.c, mini.c: add hooks for the counters API.
3768
3769 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
3770
3771         * driver.c: show disabled options.
3772
3773 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
3774
3775         * linear-scan.c: always use cost-driven selection.
3776
3777 2006-02-28  Raja R Harinath  <rharinath@novell.com>
3778
3779         * jit-icalls.c (helper_compile_generic_method): Revert change from
3780         2006-02-24.
3781
3782 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
3783
3784         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
3785
3786 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
3787
3788         * inssel.brg: style fixes, mostly to force the updated monoburg
3789         to run for people using svn.
3790
3791 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
3792
3793         * mini.c: match monoburg changes.
3794
3795 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
3796
3797         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
3798         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
3799         declaration in the header file.
3800
3801 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
3802
3803         * helpers.c: reduce relocations and mem usage.
3804
3805 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
3806
3807         * mini.h, mini-codegen.c: disable logging features if
3808         requested by configure.
3809
3810 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
3811
3812         * mini.c: tiny verifier changes.
3813
3814 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
3815
3816         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
3817         cpu-pentium.md: stack alignment changes for osx/x86,
3818         partially from Geoff Norton <gnorton@customerdna.com>.
3819
3820 2006-02-24  Raja R Harinath  <harinath@gmail.com>
3821
3822         * jit-icalls.c (helper_compile_generic_method): Update to changes
3823         in metadata/class.c.
3824
3825 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
3826         
3827         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
3828         
3829         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
3830         interface calls with large offsets.
3831
3832 2006-02-23  Raja R Harinath  <rharinath@novell.com>
3833
3834         * jit-icalls.c (helper_compile_generic_method): Document the
3835         special-case we depend on so that we can inflate the method twice
3836         with the same context with no bad side-effects.
3837
3838 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
3839
3840         * mini-x86.c, mini-amd64.c: fix for case when xen support
3841         is disabled.
3842
3843 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
3844
3845         * mini-x86.c, mini-amd64.c: generate code to access tls items
3846         in a faster way for Xen systems.
3847
3848 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
3849
3850         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
3851         updates and compilation fixes for the OSX/x86 port, mostly from
3852         Geoff Norton <gnorton@customerdna.com>.
3853
3854 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
3855
3856         * inssel.brg: faster interface call implementation
3857         to sync with the interface_offsets MonoVTable changes.
3858
3859 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
3860
3861         * mini.c: more verification checks.
3862
3863 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
3864
3865         * mini.c: added a few more verification checks.
3866
3867 2006-02-17      Neale Ferguson <neale@sinenomine.net>
3868
3869         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
3870         facility on the processor and use it if available.
3871
3872 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
3873
3874         * driver.c, aot.c, mini.c: throw exception if the IL code is
3875         invalid or unverifiable.
3876
3877 2006-02-17  Raja R Harinath  <rharinath@novell.com>
3878
3879         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
3880         m.StructField.
3881
3882 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
3883
3884         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
3885
3886 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
3887
3888         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
3889         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
3890         handling of instantiated generic valuetypes.
3891
3892 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
3893
3894         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
3895         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
3896         instead.
3897
3898         * generics.2.cs: Revert the nullable reftypes tests.
3899
3900 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
3901
3902         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
3903         using __builtin_frame_address (1) as it doesn't work in the presence
3904         of optimizations. Hopefully fixes #77273.
3905
3906         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
3907         -> generics.cs change as it doesn't work with some automake versions.
3908
3909 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
3910
3911         * mini.c: handle systems that sue a different way to
3912         retrieve the stack address of the current thread.
3913
3914 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
3915
3916         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
3917         it specially in the makefile.
3918
3919         * generics.2.cs: Add tests for nullable reference types.
3920
3921 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
3922
3923         * mini.c: always handle the case when mono_jit_init()
3924         is called in a thread different from the main thread,
3925         confusing libgc (bug #77309).
3926
3927 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
3928
3929         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
3930
3931 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
3932
3933         * mini.c: change optimize_branches () to use a single loop
3934         and introduce a new optimization to simplify some range checks.
3935
3936 2006-02-03  Martin Baulig  <martin@ximian.com>
3937
3938         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
3939         and merged with debugger_thread_manager_add_thread().
3940         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
3941         inform the debugger about the main thread.
3942
3943 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
3944
3945         * basic.cs: Add test for div.un/rem.un constant folding.
3946
3947 2006-02-03  Neale Ferguson <neale@sinenomine.net>
3948
3949         * cpu-s390x.md: correct int_xor_imm length
3950
3951 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
3952
3953         * generics.2.cs: New test for #77442.
3954
3955         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
3956         #77442.
3957
3958 2006-02-02  Martin Baulig  <martin@ximian.com>
3959
3960         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
3961         <mono/metadata/mono-debug-debugger.h>   
3962
3963         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
3964
3965 2006-02-02  Martin Baulig  <martin@ximian.com>
3966
3967         * debug-debugger.h: New header file for debug-debugger.c.
3968
3969         * debug-debugger.c: Big API cleanup; don't run the managed Main()
3970         function is a separate thread anymore; add support for attaching.
3971
3972 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
3973
3974         * tramp-x86.c: Fix a warning.
3975
3976 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
3977
3978         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
3979         on very large methods.
3980
3981         * aot.c (load_patch_info): Fix a warning.
3982
3983 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
3984
3985         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
3986         mini-ops.h: alu membase optimizations.
3987
3988 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
3989
3990         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
3991         to speedup StringBuilder.
3992
3993 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
3994
3995         * dominators.c (mono_compute_natural_loops): Fix detection of
3996         loop body start blocks.
3997
3998         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
3999
4000 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
4001
4002         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
4003         #75145.
4004
4005 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
4006
4007         * aliasing.c: Fixed aliasing issue on 64 bit archs.
4008
4009 2006-01-25  Martin Baulig  <martin@ximian.com>
4010
4011         * debug-debugger.c: Moved the `MonoDebuggerManager' and
4012         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
4013         started to cleanup this file a little bit.
4014
4015 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
4016
4017         * mini.c: optimize a codepath frequently happening in generics code.
4018
4019 2006-01-23  Martin Baulig  <martin@ximian.com>
4020
4021         * Makefile.am: Only compile debug-debugger.c on supported platforms.
4022
4023         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
4024         functions directly.
4025
4026         * driver.c: debug-debugger.c is only available if
4027         `MONO_DEBUGGER_SUPPORTED' is defined.   
4028
4029 2006-01-23  Martin Baulig  <martin@ximian.com>
4030
4031         * debug-debugger.c: Only enable this on platforms where the Mono
4032         Debugger is working (x86 and x86_64).
4033
4034 2006-01-21  Martin Baulig  <martin@ximian.com>
4035
4036         The Mono Debugger is now using the normal `mono' instead of the
4037         `mono-debugger-mini-wrapper' when executing managed code.
4038
4039         * debug-debugger.c: New file; previously known as
4040         debugger/wrapper/wrapper.c.
4041
4042         * debug-mini.c (mono_init_debugger): Removed.
4043
4044         * driver.c (mono_main): Added new `--inside-mdb' command line
4045         argument which is used when running inside the debugger.
4046
4047 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
4048
4049         * liveness.c (mono_analyze_liveness): Remove some unused data
4050         structures.
4051
4052 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
4053
4054         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
4055
4056 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
4057
4058         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
4059         depends on implementation details of monobitset.
4060
4061         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
4062         Fixes #77271.
4063
4064 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
4065
4066         * liveness.c: Update after monobitset changes.
4067
4068 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
4069
4070         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
4071
4072 2006-01-11 Neale Ferguson <neale@sinenomine.net>
4073
4074         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
4075
4076         * mini-s390x.c: Remove warning messages.
4077
4078 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
4079
4080         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
4081
4082 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
4083
4084         * generics.2.cs: Add ldelem/stelem_any test.
4085
4086 2006-01-10 Neale Ferguson <neale@sinenomine.net>
4087
4088         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
4089
4090 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
4091
4092         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
4093         
4094 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
4095
4096         * generics.2.cs: Reenable vtype tests.
4097
4098         * inssel-x86.brg: Remove an icorrect valuetype rule.
4099
4100 2006-01-06 Neale Ferguson <neale@sinenomine.net>
4101
4102         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
4103         initial support for OP_ABS.
4104
4105 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4106
4107         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
4108
4109 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4110
4111         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
4112         conversion and implement LADD/LSUB.
4113
4114         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
4115         architectures.
4116
4117 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4118
4119         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
4120
4121         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
4122         architectures.
4123
4124 2006-01-05 Neale Ferguson <neale@sinenomine.net>
4125
4126         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
4127         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
4128         (stack walk problem).
4129
4130 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
4131
4132         * aot.c (mono_aot_load_method): Fix a warning.
4133
4134 2006-01-03  Neale Ferguson <neale@sinenomine.net>
4135
4136         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
4137
4138 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
4139
4140         * iltests.il: Add test for #77148.
4141
4142         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
4143         #77148.
4144
4145 2006-01-03  Neale Ferguson <neale@sinenomine.net>
4146
4147         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
4148
4149 2006-01-03  Neale Ferguson <neale@sinenomine.net>
4150
4151         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
4152         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
4153
4154         * basic-long.cs: Add lconv-to-r4/r8 tests.
4155
4156 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
4157
4158         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
4159
4160         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
4161         here as on other archs.
4162
4163 2005-12-29 Neale Ferguson <neale@sinenomine.net>
4164
4165         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
4166
4167 2005-12-29 Neale Ferguson <neale@sinenomine.net>
4168
4169         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
4170         
4171         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
4172
4173         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
4174         instrument_prolog; Add memory_barrier instruction.
4175
4176 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
4177
4178         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
4179
4180 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
4181
4182         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
4183
4184         * aliasing.c inssel.brg: Fix warnings.
4185
4186         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
4187         could skip initialization of some parts of memory.
4188
4189         * mini.c mini-ia64.c: Fix warnings.
4190
4191         * inssel-sparc.brg: Add an implementation of lneg which actually works.
4192
4193 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
4194
4195         * aliasing.c (mono_build_aliasing_information): Add a workaround for
4196         a crash seen on sparc.
4197
4198         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
4199         
4200         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
4201
4202 2005-12-21 Neale Ferguson <neale@sinenomine.net>
4203
4204         * mini-ops.h: Add s390_backchain instruction
4205
4206         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
4207
4208         * cpu-s390.md: Add s390_backchain instruction
4209
4210         * mini-s390.c: Significant ABI changes
4211
4212         * mini-s390.h: Cater for zero length structures
4213
4214 2005-12-20 Neale Ferguson <neale@sinenomine.net>
4215
4216         * mini-s390.c: ABI fixes
4217
4218         * inssel-s390.brg: Remove debug statements
4219
4220         * cpu-s390.md: Fix length of ATOMIC_xx operations
4221
4222 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
4223
4224         * basic-float.cs: Add float<->long conversion tests.
4225
4226 2005-12-16 Neale Ferguson <neale@sinenomine.net>
4227
4228         * mini-s390.c: Fix LOCALLOC processing.
4229
4230         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
4231
4232 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
4233
4234         * iltests.il: Add tests for some opcodes not covered by the other
4235         tests.
4236
4237 2005-12-15 Neale Ferguson <neale@sinenomine.net>
4238
4239         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
4240         register loading for Tail processing; Correct trace output.
4241
4242         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
4243
4244         * cpu-s390.md: Correct size of jmp instruction. 
4245
4246 2005-12-13 Neale Ferguson <neale@sinenomine.net>
4247
4248         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
4249
4250 2005-12-13 Neale Ferguson <neale@sinenomine.net>
4251
4252         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
4253           Bring s390 up to current level.
4254
4255 2005-12-12  Zltan Varga  <vargaz@gmail.com>
4256
4257         * generics.2.cs: Disable the newly added tests as they do not work yet.
4258         
4259         * generics.2.cs: Add valuetype tests.
4260
4261 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
4262
4263         * basic-long.cs: Add i4->u8 test.
4264
4265         * objects.cs: Add tests for JIT intrinsic.
4266
4267         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
4268         optimizations lost by a mistake.
4269
4270 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
4271
4272         * basic-long.cs: Remove a test moved to objects.cs.
4273
4274         * arrays.cs: Add more array tests.
4275
4276 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
4277
4278         * arrays.cs: Add new tests for multi-dimensional arrays.
4279
4280 2005-12-06  Raja R Harinath  <rharinath@novell.com>
4281
4282         * Makefile.am (test_sources2): Add generics.2.cs.
4283         (EXTRA_DIST): Add test_sources2.
4284
4285 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
4286
4287         Support for boxing and unboxing nullable types as well as the
4288         isinst operation on nullables, per the CLI ammendment.
4289
4290         * inssel.brg (CEE_ISINST): Special case for nullable
4291
4292         * mini.c (handle_unbox_nullable): new method
4293         (handle_box): Special case for nullable types
4294         (mono_method_to_ir): Call handle_unbox_nullable in correct
4295         places.
4296
4297         * generics.2.cs: New test suite
4298
4299         * Makefile.am: Support for regression tests with generics.
4300
4301 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
4302
4303         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
4304         allocated to registers. Fixes #76800.
4305
4306 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
4307
4308         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
4309
4310 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
4311
4312         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
4313         of platforms.
4314
4315 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
4316
4317         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
4318         objects.cs.
4319
4320         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
4321         
4322         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
4323 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
4324
4325         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
4326         single precision before storing to a single precision location.
4327
4328 2005-11-28  Raja R Harinath  <rharinath@novell.com>
4329
4330         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
4331
4332 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
4333
4334         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
4335         correct files.
4336
4337         * basic.cs: Remove test_0_byte_compares test which was moved to
4338         objects.cs a long time ago.
4339
4340 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
4341
4342         * aliasing.c: Fixed aliasing issue on 64 bit archs.
4343
4344 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
4345
4346         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
4347         handlers are called.
4348
4349         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
4350         throwing code.
4351
4352          * mini-ia64.c: Add support for the throw->branch exception 
4353         optimization.   
4354
4355         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
4356
4357 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
4358
4359         * mini.c: Enabled "fastpath" deadce :-)
4360         
4361 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
4362
4363         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
4364         alias analysis pass to support it.
4365         * mini.h: Likewise.
4366         * ssa.c: Likewise.
4367         * liveness.c: Likewise (liveness computation can use aliasing
4368         information to be more accurate).
4369         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
4370         moreover made so that "--compile-all" uses the given optimization
4371         flags and not the default ones.
4372         * aliasing.c: Alias analysis (new file).
4373         * aliasing.h: Likewise.
4374         * Makefile.am: added "aliasing.c" and "aliasing.h".
4375         
4376 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
4377
4378         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
4379         OP_L opcodes.
4380
4381 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
4382
4383         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
4384         fp >= end_of_stack exit condition, as it is not needed, and it might
4385         become true for fp eliminated frames.
4386
4387 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
4388
4389         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
4390         coded offsets.
4391
4392 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
4393
4394         * mini-arm.c: fixed alignment of doubles/longs to match
4395         the C ABI (bug #76635).
4396
4397 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
4398
4399         * aot.c: fix compilation with --enable-minimal=aot.
4400
4401 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
4402
4403         * mini-arm.c: fixed compatibility with the new
4404         floating point emulator package for compares.
4405
4406 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
4407
4408         * mini.c : reverted sig->pinvoke changes (r51396-51397).
4409
4410 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
4411
4412         * mini-exceptions.c (print_stack_frame): Output to stderr.
4413         (mono_handle_native_sigsegv): Ditto.
4414
4415 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
4416
4417         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
4418         OP_LCONV_TO_OVF_I implementation.
4419
4420         * mini-amd64.c: Add support for the throw->branch exception 
4421         optimization.
4422
4423         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
4424         when the catch clause catches a more general exception, i.e. Object.
4425
4426 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
4427
4428         * cpu-ia64.md: Remove unused opcodes.
4429
4430         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
4431         specific defines for architectures defining USE_SIGACTION.
4432
4433         * mini-ia64.c: Fix some warnings.
4434
4435         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
4436         version seemed to skip a frame.
4437
4438 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
4439
4440         * mini.c: Clean up the usage of sig->pinvoke flag. Now
4441         only calls which are made to native code use this flag.
4442
4443 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
4444
4445         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
4446         varargs methods as well.
4447         
4448         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
4449         which have save_lmf set. Reorganize methods prologs a bit.
4450
4451         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
4452         debugger to the proper place.
4453
4454 2005-10-29  Martin Baulig  <martin@ximian.com>
4455
4456         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
4457         when running inside the debugger until the debugger has support
4458         for it.
4459
4460 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
4461
4462         * mini.h: Fix a warning.
4463
4464 2005-10-24  Miguel de Icaza  <miguel@novell.com>
4465
4466         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
4467         we expose publicly, this returns the string.
4468
4469 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
4470
4471         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
4472         with fp elimination.
4473
4474 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
4475
4476         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
4477         native stacktrace using the glibc 'backtrace' function if available.
4478
4479 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
4480
4481         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
4482
4483         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
4484         handle SIGSEGVs received while in native code.
4485
4486         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
4487         code, call mono_handle_native_sigsegv which will abort the runtime
4488         after printing some diagnostics, instead of converting it into a
4489         confusing NullReferenceException.
4490
4491 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
4492
4493         * cpu-pentium.md: Remove unused opcodes.
4494
4495 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
4496
4497         * mini-amd64.h (MonoLMF): Add rsp field.
4498
4499         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
4500         the lmf too.
4501
4502 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
4503
4504         * mini-codegen.c (get_register_spilling): Fix some warnings.
4505
4506 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
4507
4508         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
4509         elimination during exception handling. Enable fp elimination by
4510         default.
4511
4512         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
4513         elimination.
4514
4515 2005-10-16  Martin Baulig  <martin@ximian.com>
4516
4517         * mini-exceptions.c
4518         (mono_debugger_run_finally): New public method for the debugger.
4519
4520 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
4521
4522         * debug-mini.c (mono_debug_init_method): Fix warning.
4523
4524         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
4525         the 'exname' parameter const to fix some warnings.
4526
4527 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
4528
4529         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
4530         introduced by the previous patch.
4531
4532 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
4533
4534         * basic-float.cs: Add test for precision of float arithmetic.
4535
4536         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
4537         when loading/storing single values from/to memory.
4538
4539         * mini.c (mono_jit_compile_method_with_opt): Create the function
4540         pointers in the correct domain.
4541
4542 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
4543
4544         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
4545         introduced by previous patch.
4546         
4547         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
4548         when out_filter_idx is NULL.
4549
4550         * mini-exceptions.c: Don't run filter clauses twice during exception
4551         handling. Fixes #75755.
4552
4553 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
4554
4555         * aot.c: Add support for ldflda wrappers.
4556
4557         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
4558         #75902.
4559
4560 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
4561
4562         * mini.c, mini.h: do not consider exception handlers blocks when
4563         setting up interface variables.
4564
4565 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
4566
4567         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
4568
4569 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
4570
4571         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
4572         causes a regression.
4573
4574         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
4575
4576 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
4577
4578         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
4579         of the OP_P definitions.
4580
4581         * TODO: Add a proposal for dealing with the CEE/OP mess.
4582
4583         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
4584         optimizations from the x86 port.
4585
4586         * cpu-amd64.md: Ditto.
4587
4588         * basic.cs basic-long.cs: Add tests.
4589
4590 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
4591
4592         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
4593         Patrik Torstensson's implementation of my exception-handling
4594         optimization idea, when the exception object is not used
4595         (bug #62150).
4596
4597 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
4598
4599         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
4600         of the mul_imm optimizations from the old jit.
4601
4602 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
4603
4604         * mini.c, liveness.c: patch by Patrik Torstensson and
4605         Zoltan Varga to improve performance in methods with
4606         exception clauses.
4607
4608 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * driver.c: Remove 'Globalization' entry from --version.
4611
4612 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
4613
4614         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
4615         there is a profiler interested in JIT events.
4616
4617         * aot.c: Load profile files produced by the AOT profiling module, and
4618         reorder methods based on the profiling info. Add a 'method_order' table
4619         to the AOT file to make mono_aot_find_jit_info work with the reordered
4620         methods.
4621
4622         * mini.h: Bump AOT file version info.
4623
4624 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
4625
4626         * mini-arm.h: work around what looks like a gcc bug when optimizations
4627         are enabled.
4628
4629 2005-09-28  Raja R Harinath  <rharinath@novell.com>
4630
4631         * Makefile.am (AM_CFLAGS): Don't use += to append inside
4632         conditionals.  Use ...
4633         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
4634
4635 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
4636
4637         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
4638         to determine the amount of memory to copy when passing valuetypes.
4639
4640         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
4641         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
4642
4643 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
4644
4645         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
4646         information about aot.
4647
4648 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
4649
4650         * *.c: Replace the use of {Enter,Leave}CriticalSection with
4651         macros. This will allow a deadlock debugger to easily be plugged
4652         in.
4653
4654 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
4655
4656         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
4657
4658 2005-09-27  Raja R Harinath  <rharinath@novell.com>
4659
4660         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
4661         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
4662         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
4663         ($(arch_built)) [CROSS_COMPILING]: Error out.
4664
4665 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
4666
4667         * aot.c: Add support for the no_special_static flag for classes.
4668
4669 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
4670
4671         * Reapply reverted patches.
4672
4673         * *: Revert r50174 as well.
4674
4675         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
4676
4677 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
4678
4679         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
4680
4681 2005-09-23  Miguel de Icaza  <miguel@novell.com>
4682
4683         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
4684         part of the SIG_HANDLER_SIGNATURE.  
4685
4686 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
4687
4688         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
4689         statistics.
4690
4691         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
4692         introduced by previous patch.
4693
4694 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
4695
4696         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
4697         saved registers too.
4698
4699         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
4700         upon the information returned by get_call_info ().
4701         
4702         * mini-x86.c (add_float): Fix stack size calculation.
4703         (mono_arch_call_opcode): Rewrite this so it works based up the
4704         information returned by get_call_info ().
4705         (mono_arch_get_this_vret_args): Ditto.
4706
4707 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
4708
4709         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
4710         in cinfo to determine the registers which need to be used.
4711
4712 2005-09-20  Miguel de Icaza  <miguel@novell.com>
4713
4714         * driver.c (mono_main): Add --server and --desktop flags. 
4715
4716 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
4717
4718         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
4719         registers as global registers.
4720
4721         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
4722         longer needed with the new register allocator.
4723
4724         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
4725
4726         * cpu-ia64.md: Remove unused opcodes.
4727         
4728         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
4729         
4730 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
4731
4732         * cpu-amd64.md: Remove unused opcodes.
4733
4734         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
4735         needed with the new register allocator.
4736
4737         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
4738         reg-reg moves.
4739
4740 2005-09-16  Raja R Harinath  <rharinath@novell.com>
4741
4742         * Makefile.am (check-local): Don't invoke semdel-wrapper.
4743
4744 2005-09-16  Martin Baulig  <martin@ximian.com>
4745
4746         * exceptions-amd64.c
4747         (throw_exception): Don't call mono_debugger_throw_exception() if
4748         we're a rethrow - see the FIXME in the code.
4749
4750 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
4751
4752         * mini.c (mono_init_exceptions): This only works on some architectures.
4753         
4754 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
4755
4756         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
4757         on ia64.
4758
4759         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
4760
4761         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
4762         now in mini-exceptions.c.
4763
4764 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
4765
4766         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
4767         now in mini-exceptions.c.
4768
4769 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
4770
4771         * exceptions-x86.c: Applied patch from Patrik Torstensson 
4772         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
4773
4774         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
4775         code into mini-exceptions.c. Add some assertions to it.
4776
4777 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
4778
4779         * aot.c (emit_section_change): Applied patch from "The Software Team" 
4780         (<software@solmersa.com>). Fix as errors on windows.
4781
4782 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
4783
4784         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
4785         method info into the LMF.
4786
4787 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
4788         
4789         * mini-ia64.c: Add proper unwind info for method epilogs.
4790
4791         * exceptions-ia64.c: Add some code to help debugging.
4792         
4793         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
4794
4795         * mini-exceptions.c: Fix warning.
4796
4797 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
4798
4799         * mini.c: Really fix build.
4800
4801         * mini-x86.c mini-amd64.c: Fix build.
4802
4803 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
4804
4805         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
4806
4807         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
4808         some Interlocked methods as intrinsics.
4809
4810         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
4811         for Thread methods as well.
4812
4813         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
4814
4815         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
4816
4817         * mini-ia64.c mini-x86.c mini-amd64.c 
4818         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
4819         OP_MEMORY_BARRIER.
4820         
4821         * mini.c (mono_init_exceptions): Fix build breakage.
4822
4823 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
4824
4825         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
4826         of instructions. Use the new ia64_unw_op macros for emitting unwind
4827         info.
4828
4829         * mini.c (mono_init_exceptions): Initialize exception handling
4830         related trampolines at startup.
4831
4832 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
4833
4834         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
4835
4836 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
4837
4838         * mini.c: Handle type loading errors gracefully during compilation and
4839         throw the appropriate exception.
4840
4841 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
4842
4843         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
4844         for the mono binary.
4845
4846 2005-09-09  Martin Baulig  <martin@ximian.com>
4847
4848         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
4849         the release.
4850
4851 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
4852
4853         * mini-arm.h: use emulation for conv.r.un for the release.
4854
4855 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
4856
4857         * mini-arm.c, objects.cs: more fixes and tests for them.
4858
4859 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
4860
4861         * mini-arm.c: align structures to at least 4 bytes to be able
4862         to keep our current optimized memcpy.
4863
4864 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
4865
4866         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
4867
4868 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
4869
4870         * mini.c: ignore SIGPIPE.
4871
4872 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
4873
4874         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
4875
4876         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
4877
4878 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
4879
4880         * mini.h: Add prototype for mono_allocate_stack_slots_full.
4881
4882 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
4883
4884         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
4885         exception handling support.
4886         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
4887         patch by Brian Koropoff <briank@marakicorp.com>).
4888
4889 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
4890
4891         * mini.c: revert another 'optimization' which breaks when
4892         items on the eval stack need to be saved at a basic block end
4893         (bug #75940).
4894
4895 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
4896
4897         * jit-icalls.c: for arrays, ensure we always provide
4898         lower bounds.
4899
4900 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
4901
4902         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
4903         
4904         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
4905
4906 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
4907
4908         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
4909         arguments in their original register.
4910
4911 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
4912
4913         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
4914         memset/memcpy.
4915
4916         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
4917         when ssapre is enabled.
4918
4919         * inssel-long.brg: Fix bug in previous patch.
4920
4921         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
4922         multiplication by a constant.
4923
4924 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
4925
4926         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
4927         icc.
4928
4929         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
4930         saving registers.
4931
4932 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
4933
4934         * inssel-arm.brg: apply changes tested by Brian Koropoff
4935         <briank@marakicorp.com>.
4936
4937 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
4938
4939         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
4940         
4941 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
4942
4943         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
4944         to the same register if dreg is just a base register.
4945         (print_ins): Improve printing of membase opcodes.
4946
4947         * inssel-x86.brg: Add optimized ldind(reg) rules.
4948
4949         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
4950
4951 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
4952
4953         * mini.c: when running under valgrind, set the stack bottom for
4954         the GC at the actual approximate stack for the app (fixes running
4955         mono with valgrind).
4956
4957 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
4958
4959         * mini.c: do no break at the first valuetype to init found
4960         (fixes bug #75791).
4961
4962 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
4963
4964         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
4965
4966 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
4967
4968         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
4969
4970 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
4971
4972         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
4973
4974 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
4975
4976         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
4977
4978         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
4979         code.
4980
4981         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
4982         code.
4983
4984         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
4985         methods.
4986
4987 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
4988
4989         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
4990
4991 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
4992
4993         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
4994         in the tail recursion optimization.
4995
4996         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
4997         debug info into the assembly file.
4998
4999         * iltests.il: Add test for filter regions.
5000
5001         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
5002         initial stack of filter regions. Fixes #75755.
5003
5004 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
5005
5006         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
5007         stack requirements.
5008
5009 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
5010
5011         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
5012         the check for an already compiled method on non-ia64 platforms.
5013         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
5014         proper domain.
5015
5016         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
5017
5018         * inssel-x86.brg: Add some optimized call rules.
5019
5020 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
5021
5022         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
5023         method here.
5024
5025         * mini.h mini-trampolines.c: Pass the trampoline argument to 
5026         mono_arch_patch_delegate_trampoline.
5027
5028         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
5029
5030         * mini-trampolines.c: Fix build.
5031
5032         * mini-amd64.h: Add delegate trampolines.
5033
5034         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
5035
5036         * inssel-amd64.brg: Add optimized call rules.
5037         
5038         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
5039
5040         * inssel-ia64.brg: Add optimized ldind(reg) rules.
5041
5042 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
5043
5044         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
5045         change.
5046
5047         * mini-ia64.c: Remove LMF fixmes.
5048
5049         * mini-ia64.h: Remove most fields from LMF.
5050
5051         * inssel-ia64.brg (stmt): Fix unaligned access errors.
5052
5053         * mini-trampolines.c: Add support for IA64 function descriptors.
5054
5055         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
5056         for IA64 function descriptors.
5057
5058 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
5059
5060         * tramp-arm.c: patch the vtable for virtual calls. Added
5061         support code to register/unregister the LMF.
5062         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
5063         more LMF work.
5064
5065 2005-08-19  Dick Porter  <dick@ximian.com>
5066
5067         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
5068         bit value if needed.
5069
5070 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
5071
5072         * mini.c (mini_get_method): Move handling of wrapper data here.
5073
5074         * mini.c (mono_method_to_ir): Add support for dynamic methods.
5075
5076         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
5077         virtual.
5078
5079         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
5080         bblock->code does not remain empty.
5081
5082 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
5083
5084         * arrays.cs: Add regression test for #75832.
5085
5086         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
5087         rules. Fixes #75832.
5088
5089         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
5090         instruction scheduling.
5091
5092 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
5093
5094         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
5095
5096 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
5097
5098         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
5099
5100         * mini-codegen.c: Fix VC build.
5101
5102         * cpu-pentium.md: Increase length of atomic_exhange_i4.
5103
5104 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5105
5106         * mini.h: fix signature for mono_register_opcode_emulation.
5107
5108 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
5109
5110         * mini.c: Get rid of most of the helper_sig_... constants using
5111         mono_create_icall_signature ().
5112
5113 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
5114
5115         * jit-icalls.c (helper_ldstr): New helper function.
5116
5117         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
5118
5119         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
5120         throw, load the string using a helper call instead of creating a string object.
5121
5122         * aot.c: Update after LDSTR changes.
5123
5124         * mini.h: Bump AOT file version.
5125         
5126         * aot.c: Save class size info into the AOT file. Print more statistics during
5127         compilation.
5128
5129         * mini.h: Bump AOT file version.
5130
5131         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
5132         ordering of disasm cases. Fixes #74957.
5133
5134 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
5135
5136         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
5137         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
5138         the generic code needed for the ARM port.
5139
5140 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
5141
5142         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
5143         inssel-arm.brg: more ARM features and fixes.
5144
5145 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
5146
5147         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
5148         ARM port work in progress.
5149
5150 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
5151
5152         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
5153
5154         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
5155
5156         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
5157
5158         * inssel.brg (mini_emit_memset): Add support for unaligned access.
5159
5160         * *-ia64.*: Ongoing IA64 work.
5161         
5162         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
5163
5164 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
5165
5166         * TODO: Remove out-of-data todo stuff.
5167
5168         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
5169         dead code.
5170
5171         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
5172
5173         * mini.h: Bump corlib version.
5174
5175 2005-07-27  Martin Baulig  <martin@ximian.com>
5176
5177         * mini-codegen.c
5178         (create_copy_ins): Added `const unsigned char *ip' argument; set
5179         `copy->cil_code' from it.
5180
5181 2005-07-27  Martin Baulig  <martin@ximian.com>
5182
5183         * mini-exceptions.c (mono_handle_exception): Don't call
5184         mono_debugger_handle_exception() for filters.
5185
5186 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
5187
5188         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
5189         as well.
5190
5191 2005-07-26  Martin Baulig  <martin@ximian.com>
5192
5193         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
5194
5195         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
5196         helper_compile_generic_method() if the method is actually virtual
5197         and non-final.
5198
5199 2005-07-26  Martin Baulig  <martin@ximian.com>
5200
5201         * mini.c
5202         (trampoline_code): Renamed to `mono_trampoline_code' and made it
5203         public; this is now accessed directly by the debugger.
5204         (mono_generic_trampoline_code): Removed.
5205
5206         * debug-mini.c
5207         (mono_debug_init_method): Also add interncalls and wrappers.
5208
5209 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
5210
5211         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
5212
5213 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
5214
5215         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
5216
5217 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
5218
5219         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
5220
5221 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
5222
5223         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
5224         getting TLS offsets on AMD64 too.
5225
5226 2005-07-20  Kornél Pál <kornelpal@hotmail.com>
5227
5228         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
5229
5230 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
5231
5232         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
5233         inssel-arm.brg, mini-arm.h: ARM port work in progress.
5234
5235 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
5236
5237         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
5238
5239         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
5240         to mini.c.
5241
5242         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
5243         mono_sparc_is_virtual_call ().
5244         
5245         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
5246
5247         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
5248         trampoline parameters.
5249
5250         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
5251         
5252         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
5253         to mono_arch_get_vcall_slot_addr.
5254
5255         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
5256         trampoline code.
5257
5258         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
5259
5260 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
5261
5262         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
5263
5264 2005-07-19  Martin Baulig  <martin@ximian.com>
5265
5266         * exceptions-amd64.c (throw_exception): Call
5267         mono_debugger_throw_exception() here like we're doing it on i386.
5268
5269 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
5270
5271         * mini-ia64.c: Add optimized TLS access support.
5272
5273 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
5274
5275         * mini-exceptions.c: Ongoing IA64 work.
5276
5277         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
5278
5279         * mini.c: Use the default optimization set when embedding. Fixes
5280         #75194.
5281
5282 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
5283
5284         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
5285         of trampolines to a separate file.
5286
5287         * mini-trampolines.c: New file.
5288
5289         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
5290         separate file.
5291         
5292         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
5293         amd64/ia64 code.
5294
5295         * mini-codegen.c: Fix cygwin build.
5296
5297 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
5298
5299         * mini.c: Add some minor changes needed by the IA64 port.
5300
5301         * *-ia64.*: Ongoing IA64 work.
5302
5303 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
5304
5305         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
5306         trampolines into arch-independent and arch-dependent parts.
5307
5308         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
5309
5310 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
5311
5312         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
5313
5314         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
5315         the xp-regalloc-branch for amd64.
5316
5317         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
5318         xp-regalloc-branch for x86.
5319
5320 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
5321
5322         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
5323
5324 2005-07-06  Martin Baulig  <martin@ximian.com>
5325
5326         * mini.c
5327         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
5328         (mono_jit_runtime_invoke): Likewise.
5329
5330 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
5331
5332         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
5333         on x86 too.
5334         
5335         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
5336         without loading their metadata. Reorganize the file format so exception handling+
5337         debug info is kept separate from normal method info. Create MonoJitInfo 
5338         structures for methods lazily.
5339
5340         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
5341         loading metadata.
5342         (x86_class_init_trampoline): Patch AOT class init trampolines too.
5343
5344         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
5345
5346         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
5347         in AOT code.
5348
5349         * mini.h: Bump AOT file version.
5350
5351 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
5352
5353         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
5354
5355 2005-07-01  Raja R Harinath  <rharinath@novell.com>
5356
5357         * Makefile.am (check-local): Call semdel-wrapper.
5358
5359 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
5360
5361         * mini-x86.c: Revert the last change as it seems to break the build..
5362
5363 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
5364
5365         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
5366         
5367         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
5368
5369 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
5370
5371         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
5372         outside of the macro, so strange stuff doesn't happen with gcc4
5373         (NEW_AOTCONST_TOKEN): Likewise.
5374
5375 2005-06-28  Martin Baulig  <martin@ximian.com>
5376
5377         * mini.c (mini_class_is_system_array): New static method; use this
5378         instead of `klass->parent == mono_defaults.array_class' everywhere
5379         since this also works for the new generic array class.
5380
5381 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
5382
5383         * inssel.brg: Remove warnings.
5384
5385 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
5386
5387         * mini-ia64.c: Ongoing IA64 work.
5388
5389         * basic-float.cs: Add float->i1 conversion test.
5390
5391         * iltests.il: Add conv.u4 test.
5392
5393 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
5394
5395         * inssel-long.brg: Fix bug caused by last change.
5396
5397 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
5398
5399         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
5400         BSDs.  Allows the x86 JIT to work on OSX86
5401
5402 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
5403
5404         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
5405         u4->i8 conversion.
5406
5407         * mini-ia64.c: Ongoing IA64 work.
5408
5409 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
5410
5411         * mini-ia64.c: Ongoing IA64 work.
5412
5413         * driver.c: Clean up jit_code_hash as well when using --regression.
5414
5415         * inssel-long.brg: Fix long->i4/u4 conversion rules.
5416
5417         * basic-long.cs: Add tests for long->u4 conversion.
5418
5419 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
5420
5421         * mini.c: Take mono_get_domainvar out of macros. This makes sure
5422         that we do not depend on undefined C behavior: the order stuff
5423         gets evaluated within an expression. Fixes mono when compiled on
5424         GCC 4.
5425
5426 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
5427
5428         * *-ia64.*: Ongoing IA64 work.
5429
5430         * aot.c: Lower memory usage while loading AOT methods.
5431
5432         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
5433
5434         * mini.h: Bump AOT file format version.
5435
5436 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
5437
5438         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
5439
5440 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
5441
5442         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
5443         not on callee assembly). Fixed some comments.
5444
5445 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
5446
5447         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
5448         it gets proper disassembly.
5449         (emit_method_info): Remove some dead code.
5450
5451         * mini.c (mini_method_compile): Allways allocate the GOT var in
5452         mono_method_to_ir for emulating opcodes.
5453
5454 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
5455
5456         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
5457         before freeing the code memory. Fixes #74990.
5458
5459         * objects.cs: Add regression test for #74992.
5460
5461         * liveness.c: Extend live ranges of arguments to the beginning of the
5462         method. Fixes #74992.
5463
5464         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
5465         so it points into the faulting instruction.
5466
5467 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
5468
5469         * jit-icalls.c (mono_imul_ovf): Add exception handling.
5470
5471         * *-ia64.*: Ongoing IA64 work.
5472
5473         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
5474
5475 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
5476
5477         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
5478
5479         * *-ia64.*: Ongoing IA64 work.
5480
5481 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
5482
5483         * basic-long.cs: Add tests for add/sub.ovf.
5484
5485         * basic.cs: Add tests for sub.ovf.
5486
5487         * *-ia64.*: Ongoing IA64 work.
5488
5489 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
5490
5491         * *-ia64.*: Ongoing IA64 work.
5492
5493         * basic.cs: Add conv.ovf.i4.un test.
5494
5495 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
5496
5497         * mini.c: (remove_block_if_useless) Fixed bug 75061.
5498         
5499 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5500
5501         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
5502
5503 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
5504
5505         * *-ia64.*: Ongoing IA64 work.
5506
5507 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
5508
5509         * trace.[ch]:
5510         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
5511
5512 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
5513
5514         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
5515
5516 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
5517
5518         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
5519
5520         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
5521         of a call is callable by a near call.
5522
5523 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
5524
5525         * mini-ia64.c: Ongoing IA64 work.
5526
5527 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
5528
5529         * genmdesc.c: Make the generated array non-static.
5530
5531         * inssel-long.brg: Fix LSHR_IMM rule.
5532
5533         * *-ia64.*: Ongoing IA64 work.
5534
5535         * *-ia64.*: Ongoing IA64 work.
5536
5537 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
5538
5539         * *-ia64.*: Ongoing IA64 work.
5540
5541         * *-ia64.*: Ongoing IA64 work.
5542         
5543         * mini-ia64.c: Ongoing IA64 work.
5544
5545         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
5546
5547 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
5548
5549         * objects.cs basic-calls.cs: Move some tests to objects.cs.
5550         
5551         * objects.cs basic-long.cs: Move some tests to objects.cs.
5552
5553 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
5554
5555         * *-ia64.*: Ongoing IA64 work.
5556
5557         * iltests.il: Add a new test.
5558
5559         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
5560         newobj. Fixes #75042.
5561
5562 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
5563
5564         * *-ia64.*: Ongoing IA64 work.
5565         
5566         * *-ia64.*: Ongoing IA64 work.
5567         
5568         * *-ia64.*: Ongoing IA64 work.
5569
5570         * basic.cs objects.cs: Move tests accessing static variables as well.
5571
5572         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
5573
5574 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
5575
5576         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
5577
5578         * driver.c: Always print failed tests.
5579
5580         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
5581         frame pointer.
5582
5583         * *ia64*: Ongoing IA64 work.
5584
5585 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
5586
5587         * basic.cs: Add tests for add.ovf. Fix warnings.
5588
5589 2005-05-18  Miguel de Icaza  <miguel@novell.com>
5590
5591         * driver.c (mono_main): Avoid crash if no argument is passed to
5592         --break;  Do not use g_error, but f_printf.   And fix all other
5593         ocurrences of the same crash.
5594
5595 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
5596
5597         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
5598         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
5599         Fixes #74742.
5600
5601 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
5602
5603         * *-ia64.*: Add beginnings of IA64 backend.
5604
5605         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
5606
5607 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
5608
5609         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
5610         Fixes #74925.
5611
5612         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
5613
5614         * mini-amd64.c: Fix a warning.
5615
5616 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
5617
5618         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
5619         in float_neg. Fixes #74897.
5620
5621         * mini-amd64.c (emit_call): Fix another near call bug.
5622
5623 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
5624
5625         * declsec.c: Keep the appdomain information in the structure. Added a 
5626         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
5627         value gets overwritten).
5628         * declsec.h: Set the default MonoArray for the the stack to 6. Added
5629         an MonoAppDomain member to MonoSecurityFrame.
5630         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
5631         used in the stack walk. Now use a MonoArray which grow (double) when
5632         it gets full.
5633
5634 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
5635
5636         * mini.c: Re-enabled runtime cleanup, since running threads should
5637         now properly stop when exiting.
5638
5639 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
5640
5641         * mini-codegen.c: New file contaning the arch-independent local
5642         register allocator. Not used by any architectures yet.
5643
5644         * mini.h linear-scan.c: Merge some changes from the 
5645         mini-xp-local-regalloc branch.
5646
5647 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
5648
5649         * mini-amd64.c (emit_call): Fix calls to native functions when the
5650         runtime is compiled as a shared library. Fixes #74756.
5651
5652         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
5653         on a literal field. Fixes #74751.
5654
5655 2005-04-25  Raja R Harinath  <rharinath@novell.com>
5656
5657         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
5658
5659 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
5660
5661         * objects.cs: Add missing null casting test.
5662
5663 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
5664
5665         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
5666         in wrapper methods. Also rename 'address' variable to 'offset'.
5667
5668 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
5669
5670         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
5671         warnings.
5672         
5673         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
5674
5675         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
5676         work on windows.
5677
5678 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
5679
5680         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
5681
5682 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
5683
5684         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
5685         just the last bytes.
5686
5687 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
5688
5689         * aot.c (mono_compile_assembly): Fix warning.
5690
5691         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
5692         by the _MSC_VER stuff.
5693
5694 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
5695
5696         * inssel-long.brg: Fix #74588.
5697
5698         * cpu-amd64.md: Fix #74591.
5699
5700         * iltests.il: Add new regression tests.
5701
5702 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
5703
5704         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
5705         valuetype.
5706
5707 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
5708
5709         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
5710
5711         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
5712         from Bill Middleton <flashdict@gmail.com>.
5713
5714 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
5715
5716         * arrays.cs: Add new regression test. Fix warnings.
5717
5718 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
5719
5720         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
5721         and leakage in CKFINITE.
5722
5723         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
5724         this to a null op since it is called on amd64 too.
5725
5726         * exceptions-amd64.c (get_throw_trampoline): Align stack.
5727
5728         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
5729         body since this is not used on amd64.
5730         
5731         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
5732
5733         * mini-amd64.c: Remove obsolete fixmes.
5734
5735         * mini.c (print_method_from_ip): Fix debugging support.
5736
5737 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
5738
5739         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
5740         so that expressions that don't give much gain are not reduced.
5741         * ssapre.h: Likewise.
5742
5743 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
5744
5745         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
5746
5747         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
5748
5749         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
5750
5751 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
5752
5753         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
5754
5755         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
5756
5757 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
5758
5759         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
5760         stack touching.
5761
5762         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
5763
5764         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
5765
5766         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
5767
5768         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
5769         MONO_ARCH_USE_SIGACTION. Fixes #74252.
5770
5771         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
5772
5773         * mini-x86.c: Fix up stack overflow handling.   
5774
5775         * exceptions.cs: Add new regression test.
5776
5777 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
5778
5779         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
5780         mono_jit_thread_attach.
5781
5782         * mini.c (mono_method_to_ir): Verify called method is not abstract.
5783
5784 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
5785
5786         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
5787         avoid calling constructors using callvirt.
5788
5789         * inssel.brg: Fix #74073.
5790
5791 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
5792
5793         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
5794         compilation with non-GCC compilers.
5795         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
5796         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
5797
5798 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
5799
5800         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
5801         klass->interface_offsets (will likely fix bug#74073).
5802
5803 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
5804
5805         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
5806
5807 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
5808
5809         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
5810         to amd64_div_reg_size ().
5811         
5812         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
5813
5814 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
5815
5816         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
5817
5818 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
5819
5820         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
5821
5822 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
5823
5824         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
5825         
5826         * mini.c (mono_precompile_assembly): Load and precompile referenced
5827         assemblies as well. Fixes #74015.
5828
5829 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
5830
5831         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
5832
5833 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
5834
5835         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
5836         a lot of checks and (anyway) permissions cannot work until corlib is 
5837         loaded.
5838
5839 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
5840
5841         * mini-ppc.c: fixed ABI issue on sysv/ppc.
5842
5843 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
5844
5845         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
5846         calls (fixes bug#72824).
5847
5848 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
5849
5850         * mini.c: fix tail recursion elimination (see test in bug#73936).
5851
5852 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
5853
5854         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
5855         some fp functions in sse2 mode.
5856
5857 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
5858
5859         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
5860
5861 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
5862
5863         * mini.h mini.c: Add mono_get_jit_tls_key ().
5864
5865         * mini-x86.c: Enable fast TLS support on windows.
5866
5867 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5868
5869         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
5870         * mini.c: Check for p/invoke method when generating code. If a
5871         p/invoke method, or it's class, isn't decorated with [Suppress
5872         UnmanagedCodeSecurity] then generate code to call System.Security.
5873         UnmanagedDemand (only if the security manager is active).
5874
5875 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
5876
5877         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
5878         last change as it seems to cause strange crashes.
5879         
5880 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
5881
5882         * *.c: handle unsafe function pointers where needed.
5883
5884 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
5885
5886         * mini.c (mono_jit_free_method): Remove the fixme too.
5887
5888 2005-03-15  Miguel de Icaza  <miguel@novell.com>
5889
5890         * mini.c: As discussed, make the code actually free the delegate
5891         thunk now, to enable the debugging of delegate problems, use
5892         MONO_DEBUG=1 when running Mono. 
5893
5894         This takes also care of parts of the leaks as seen by Joe.
5895
5896 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
5897
5898         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
5899         thread_tls_offset calculation.
5900
5901 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
5902
5903         * declsec.c: Reworked linkdemand checks for icall. The previous code
5904         was using the declaration code (untrusted) and didn't work as expected
5905         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
5906         specific case.
5907
5908 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
5909
5910         * iltests.il: Add new localloc test.
5911
5912         * mini-amd64.c: Handle large stack allocations the same way as on
5913         windows if stack overflow handling is working.
5914         
5915         * mini-amd64.c: Allocate the signal stack using mmap.
5916
5917         * mini.c (sigsegv_signal_handler): Fix reading of context.
5918
5919         * mini-exceptions.c: Fix up stack overflow handling.
5920
5921         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
5922
5923         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
5924
5925         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
5926
5927         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
5928
5929         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
5930         tramp_init functions as they are no longer needed.
5931
5932 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
5933
5934         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
5935         
5936         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
5937
5938         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
5939         
5940         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
5941         support that now.
5942
5943         * mini-ops.h: Add OP_LMUL_IMM.
5944
5945         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
5946         long mul/div opcodes as intrinsic.
5947
5948         * mini-amd64.c (emit_call): Handle the case when the callee might be
5949         an AOT method.
5950
5951 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
5952
5953         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
5954         extra safe.
5955         
5956         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
5957
5958         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
5959
5960 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
5961
5962         * mini.c (mono_codegen): Don't leak here, to help people running
5963         monogrind.
5964
5965 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
5966
5967         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
5968         conversions in sse2 mode.
5969
5970         * basic-float.cs: Add regression test.
5971         
5972         * mini-amd64.c: Reenable sse2.
5973
5974 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
5975
5976         * mini-amd64.c: Disable sse2 until some regressions are fixed.
5977
5978 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
5979
5980         * driver.c: Copyright text should include 2005.
5981         
5982 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
5983
5984         * cpu-amd64.md (load_membase): Fix more max lengths.
5985
5986 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
5987
5988         * cpu-amd64.md (load_membase): Fix max length.
5989
5990         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
5991
5992         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
5993
5994         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
5995         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
5996
5997         * basic-float.cs: Add rounding regression test.
5998
5999         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
6000
6001 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
6002
6003         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
6004         structures in registers for pinvoke wrappers.
6005
6006 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
6007
6008         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
6009
6010 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
6011
6012         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
6013         wrapper to mono_jit_thread_attach.
6014
6015         * mini.c (mini_jit_thread_attach): New jit icall.
6016
6017         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
6018         native->managed wrappers.
6019
6020         * exceptions.cs: Add new regression test.
6021
6022         * mini.c (optimize_branches): Check regions in the cbranch to throw
6023         block case as well. Fixes #73242.
6024
6025 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
6026
6027         * mini.c: thread safety fixes.
6028
6029 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
6030
6031         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
6032         patching stuff, since delegates use jump trampolines so there is
6033         no caller.
6034
6035         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
6036         jump trampolines.
6037         
6038         * tramp-amd64.c: Fix build.
6039
6040         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
6041         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
6042
6043         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
6044         Rename this to mono_arch....
6045         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
6046
6047         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
6048
6049         * mini-amd64.c (emit_call): If both the caller and the callee is
6050         guaranteed to have 32 bit addresses, emit a normal call.
6051
6052         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
6053
6054         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
6055         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
6056         method_ptr inside delegates.
6057
6058 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
6059
6060         * mini.c (mono_jit_free_method): Free the method info even if the native code is
6061         invalidated. Fixes #73001.
6062
6063         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
6064
6065         * mini-x86.c: Only use stdcall for pinvokes on windows.
6066
6067 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
6068
6069         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
6070         * mini-x86.c: remove unreliable __thread var offset detection,
6071         use the correct accessors and enable by default.
6072
6073 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
6074
6075         * mini.c (mono_jit_free_method): Fix memory leak.
6076
6077 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
6078
6079         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
6080
6081 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
6082
6083         * cpu-amd64.md: Fix lengths of atomic opcodes.
6084
6085 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
6086
6087         * driver.c: try to not imply using ICU is any good.
6088
6089 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
6090
6091         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
6092         functions as inline ops.
6093
6094         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
6095         some Interlocked functions as inline ops.
6096
6097         * mini.c (move_basic_block_to_end): Fix bug in last patch.
6098
6099         * mini.h (MonoBasicBlock): Reorganize fields a bit.
6100
6101         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
6102
6103         * mini.c: Add support for OP_NOT_TAKEN.
6104
6105         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
6106         structures in registers for pinvoke wrappers.
6107
6108         * mini-amd64.c: Fix warnings.
6109
6110 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
6111
6112         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
6113
6114         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
6115
6116         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
6117         address instead of loading the address from it.
6118
6119         * mini-x86.c: Add support for returning small structs in registers
6120         on Win32. Fixes part of #70864.
6121         
6122 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
6123
6124         * trace.c (get_token): Improve error checking.
6125
6126 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
6127
6128         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
6129
6130 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
6131  
6132         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
6133         it can be reused for MonoClass.
6134         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
6135         _LINKDEMAND.
6136
6137 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
6138
6139         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
6140         instead of a MonoReflectionMethod. The method information wasn't used
6141         when displaying SecurityException details (but will be now).
6142
6143 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
6144
6145         * Makefile.am : windows build fix.
6146
6147 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
6148
6149         * iltests.il: Add new regression test.
6150
6151         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
6152         #72522.
6153
6154 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
6155  
6156         * mini.c: Moved linkdemand check into helper function check_linkdemand
6157         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
6158         LDFTN, LDVIRTFTN).
6159
6160 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
6161
6162         * declsec.c: Added statistics counter for different kinds of 
6163         LinkDemands.
6164         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
6165         (and commented) declaration.
6166         * mini.c: Added statistics counter for security Demand code 
6167         generation. Added display of security statistics.
6168
6169 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
6170
6171         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
6172         Fix compilation errors under gcc-2.95.
6173
6174 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
6175
6176         * mini.c, driver.c: Use the new jit trampoline hashtable
6177
6178 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
6179
6180         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
6181
6182 2005-02-11  Martin Baulig  <martin@ximian.com>
6183
6184         * debug-mini.c (mono_debug_close_method): Free the line number array.
6185
6186 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
6187
6188         * aot.c: Break up large methods into smaller ones. Share GOT slots for
6189         icalls.
6190
6191         * mini.h: Bump AOT file format version. 
6192
6193 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
6194
6195         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
6196         APTC and P/Invoke.
6197         * declsec.h: Added macros to get/set lazyly initialized security 
6198         informations about assemblies. Added new enum for different type of
6199         possible LinkDemand violation. Added function to check LinkDemands.
6200         * mini.h: Added a field to MonoCompile to hold any security violation
6201         detected when JITting a method (so it can be thrown later).
6202         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
6203         and CEE_CALLVIRT. Added code to throw exception at the end of
6204         mini_method_compile (note: the exception is unhandled right now).
6205
6206 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
6207
6208         * mini.c, jit-icalls.c: use the managed implementation of
6209         memset for initobj and memset, to avoid managed <-> unmanaged
6210         transitions.
6211
6212 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
6213
6214         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
6215         optimization if it would need a GOT var.
6216
6217         * basic.cs: Add tests for constant propagation and switch statements.
6218
6219         * ssa.c: Fix out-of-range constant propagation and switch statements.
6220
6221 2005-02-09    <vargaz@freemail.hu>
6222
6223         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
6224
6225 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
6226
6227         * cpu-amd64.md (load_membase): Fix max length of load_membase.
6228
6229 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
6230
6231         * mini.c: update to new signature of mono_class_get_allocation_ftn().
6232
6233 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
6234
6235         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
6236         arithmetic operations.
6237
6238 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
6239
6240         * mini-ppc.c: add a workaround for broken user code that
6241         DllImports vararg functions with non-vararg signatures.
6242
6243 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
6244
6245         * mini.c (mono_jit_compile_method_inner): Add detection and a 
6246         meaningfull error message for assemblies written in Managed C++.
6247
6248         * tramp-amd64.c mini-amd64.h: Add support for 
6249         create_trampoline_from_token ().
6250
6251         * aot.c mini-x86.c abcremoval.c: Applied patch from
6252         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
6253
6254 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
6255
6256         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
6257         which takes a MonoImage/token as parameter instead of a MonoMethod.
6258
6259         * aot.c: Use the new trampoline for initializing vtables.
6260
6261         * aot.c: Add support for ldfld/stfld_remote wrappers.
6262
6263         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
6264         rules for compare <MEM>, IMM.
6265
6266         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
6267
6268         * aot.c: Handle inherited finalizers correctly.
6269
6270 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
6271
6272         * inssel.brg (stmt): Add a missing _setup_... ().
6273
6274         * aot.c: Save some parts of the class state to the AOT file and use it
6275         to recompute that state when a class is initialized.
6276
6277         * mini.c: Install AOT hooks into the runtime.
6278
6279         * mini.h: Bump AOT file format version.
6280         
6281         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
6282         Fixes #72148.
6283
6284         * iltests.il: Add new test.
6285
6286 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
6287
6288         * mini.c: fix typo.
6289
6290 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
6291
6292         * mini.c: setup the statistical profiler in the thread attach
6293         callback to cope with the new single thread code.
6294
6295 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
6296
6297         * mini-ppc.c: ensure we have enough room for the profiler
6298         calls (fixed bug#72084).
6299
6300 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
6301
6302         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
6303         it.
6304
6305 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
6306
6307         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
6308
6309 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
6310
6311         * ssapre.c: Fixed an issue with down safety (this allows IronPython
6312         to succesfully execute parrotbench).
6313         * ssapre.h: Likewise.
6314
6315 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
6316
6317         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
6318         variable for stores to method arguments (fixes a SSAPRE issue).
6319
6320 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
6321
6322         * mini.c: handle value types in dup, fixes gen-112.cs.
6323
6324 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
6325
6326         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
6327         sequence for calls in dynamic methods to avoid thunks.
6328
6329 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
6330
6331         * mini.c: correctly remove dynamic methods from the hashtable.
6332
6333 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
6334
6335         * driver.c: Disabled SSAPRE until fix the bug that appears
6336         in IronPython's parrotbench.
6337
6338 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
6339
6340         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
6341
6342         * mini.c (mono_method_to_ir): Revert the previous change.
6343         
6344         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
6345         when AOT compiling.
6346
6347         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
6348         mono_jit_info_table_find () etc. when running under valgrind.
6349
6350         * inssel.brg: Fix warnings.
6351
6352         * mini-exceptions.c: Fix warnings.
6353
6354 2005-01-31  Martin Baulig  <martin@ximian.com>
6355
6356         * driver.c (compile_all_methods_thread_main): Don't try to compile
6357         generic methods or anything which has type parameters.
6358
6359 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
6360
6361         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
6362
6363         * TestDriver.cs: Add --verbose flags.
6364
6365         * graph.c ssa.c: Fix 64 bit warnings.
6366         
6367         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
6368         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
6369         Fix 64 bit warnings.
6370
6371         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
6372         variable not spotted by gcc.
6373         
6374         * mini-amd64.c inssel-amd64.brg: Applied patch from  
6375         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
6376         X86_COMPARE_MEMBASE opcodes.
6377
6378         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
6379
6380 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
6381
6382         * *: MonoMethod->signature might be NULL now. You *MUST* use
6383         mono_method_signature.
6384
6385 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
6386
6387         * driver.c (compile_all_methods_thread_main): Compile the methods
6388         without invoking cctors.
6389
6390 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
6391
6392         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
6393         * basic-calls.cs: test for the above.
6394
6395 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
6396
6397         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
6398         MonoJitInfo changes.
6399
6400 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
6401
6402         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
6403         eagerly if it contains dynamic methods.
6404         
6405         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
6406
6407         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
6408         trace, it is now computed by an icall from trace_ips.
6409         
6410         * mini-exceptions.c: Fix a warning.
6411
6412 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
6413
6414         * mini-exceptions.c: don't bother getting stack trace info if
6415         it's not going to be used.
6416
6417 2005-01-27  Raja R Harinath  <rharinath@novell.com>
6418
6419         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
6420         ssapre-mini-ops.h.
6421
6422 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
6423
6424         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
6425
6426         * aot.c: Avoid calling mono_method_get_header () if not needed.
6427
6428         * mini.h: Bump AOT file format version.
6429         
6430         * mini.c (mono_emit_native_call): Allocate a GOT var here.
6431
6432         * mini.c (mono_print_tree): Print more info for calls.
6433
6434 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
6435
6436         * declsec.h: Remove warning by adding missing include for marshal.h
6437
6438 2005-01-26  Martin Baulig  <martin@ximian.com>
6439
6440         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
6441         `ip' twice.
6442
6443 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
6444
6445         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
6446         flags.
6447
6448         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
6449
6450         * aot.c (mono_compile_assembly): Fix a warning.
6451
6452 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
6453
6454         * declsec.c: Look for security attributes on the original MonoMethod 
6455         (and not the wrapped one). This fix permissions on icalls.
6456
6457 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
6458
6459         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
6460
6461         * mini.c (mono_allocate_stack_slots): Add a fixme.
6462
6463         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
6464
6465 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
6466
6467         * inssel.brg: optimize casts of sealed types (more
6468         optimizations waiting for fixes in remoting).
6469
6470 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
6471
6472         * inssel.brg (stmt): Add another dummy rule.
6473
6474         * driver.c: Fix warnings.
6475
6476         * driver.c (mono_main): If running under valgrind, instruct glib to use
6477         the system allocation functions so valgrind can track the memory
6478         allocated by the g_... functions.
6479
6480         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
6481
6482         * mini-ops.h: Add OP_DUMMY_STORE opcode.
6483
6484         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
6485
6486         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
6487         variables in try regions.
6488
6489         * mini.c (mini_method_compile): Don't disable optimizations on large
6490         methods when AOT compiling.
6491
6492         * mini.c (mono_allocate_stack_slots): New arch independent method to 
6493         allocate stack slots. Not yet used.
6494
6495 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
6496
6497         * debug-mini.c (mono_debug_close_method): Plug some leaks.
6498
6499 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
6500
6501         * mini-ppc.c: make the branch info relative as the code
6502         buffer can be reallocated.
6503
6504 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
6505
6506         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
6507         * driver.c: Removed the AOT/security restriction. Now initialize the
6508         security manager (in metadata) if --security is used.
6509         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
6510         rather than the pointer to declarative security, when AOT is used.
6511
6512 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
6513
6514         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
6515         basic blocks, reduced intrinsic exception throwing code size.
6516
6517 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
6518
6519         * driver.c (mini_usage): Reorder the usage screen.
6520
6521 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
6522
6523         * mini.c (mono_resolve_patch_target): Fix warning.
6524
6525 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
6526
6527         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
6528         previous patch.
6529
6530         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
6531
6532         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
6533         breaks the amd64 build.
6534
6535         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
6536         register allocation. Fixes #71454.
6537
6538         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
6539
6540         * arrays.cs: Add new regression test.   
6541
6542 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
6543
6544         * ssapre.c: Turned usage of snprintf to GString.
6545         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
6546         (I left it on by mistake in my previous commit).
6547
6548 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
6549
6550         * mini.c, cfold.c, basic-calls.cs: preserve side effects
6551         on cond branch optimization (fixes bug# 71515).
6552
6553 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
6554
6555         * abcremoval.c: Fixed bug 71062.
6556         * abcremoval.h: Likewise.
6557
6558 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
6559
6560         * mini.c: Added a new functionality to optimize_branches, the removal
6561         of useless basic blocks, and fixed some problem in the removal of
6562         critical edges; some utility functions added for both purposes.
6563         * ssapre.c: Added complex expression support, and fixed bug 70637.
6564         * ssapre.h: Likewise.
6565         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
6566         enabled in SSAPRE.
6567         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
6568         * driver.c: Re-enabled SSAPRE.
6569
6570 2005-01-19  Martin Baulig  <martin@ximian.com>
6571
6572         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
6573         the result of mono_get_method_constrained().
6574
6575 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
6576
6577         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
6578         manager.
6579
6580 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
6581
6582         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
6583         be detected.  Fixes #59296.
6584
6585 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
6586
6587         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
6588         which can happen. Fixes #71361.
6589
6590 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
6591
6592         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
6593         manager.
6594
6595 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
6596
6597         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
6598         appdomain-unload.exe to fail.
6599         
6600         * mini.c: Fix some memory leaks.
6601
6602 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
6603
6604         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
6605         Fixed bug and sped up some codepaths.
6606
6607 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
6608
6609         * mini.c: Fix some memory leaks.
6610
6611         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
6612         conversion.
6613
6614         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
6615
6616         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
6617         #71320.
6618
6619         * iltests.il: Add regression test for #71320.
6620
6621 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
6622
6623         * mini.c (mono_codegen): Fix installation of profiler hooks.
6624
6625         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
6626
6627 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
6628
6629         * mini.h, mini.c, cfold.c: optimize access to enum
6630         readonly fields, too. Eval conditional branches if possible
6631         to perform unreachable code removal in more cases.
6632
6633 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
6634
6635         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
6636
6637         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
6638         code manager.
6639
6640         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
6641         WinXP DEP. Fixes #71244.
6642
6643 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
6644
6645         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
6646
6647 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
6648
6649         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
6650
6651 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
6652
6653         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
6654         changes.
6655
6656         * mini.h: Bump AOT version.
6657
6658         * mini.h (MonoCompile): Change exvar to a hash table.
6659
6660         * mini.c: Allocate a separate exvar for each handler block.
6661
6662         * mini.c: Get rid of the computation of filter_lengths, its not needed.
6663
6664         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
6665         ex var with the pending exception and only throw if the two are equal.
6666         Fixes #68552.
6667         
6668         * exceptions.cs: Add tests for rethrow and nested catch clauses.
6669
6670         * mini-x86.c: Fix warnings.
6671
6672         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
6673         used by all the ports now.
6674
6675         * aot.c: Add write-symbols and save-temps options.
6676
6677 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
6678
6679         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
6680
6681 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
6682
6683         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
6684         operations.
6685
6686         * tramp-s390.c: Check vtable slot belongs to the domain.
6687
6688         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
6689         as per other platforms.
6690
6691         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
6692
6693 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
6694
6695         * driver.c: we don't run the Main() code in a subthread anymore.
6696
6697 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
6698
6699         * mini.c: added experimental rtc support in the statistical
6700         profiler: if the user has the permission, more accurate statistics
6701         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
6702         The MONO_RTC value must be restricted to what the linux rtc allows:
6703         power of two from 64 to 8192 Hz.
6704
6705 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
6706
6707         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
6708
6709 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
6710
6711         * mini-ppc.c: better icache flush for smp.
6712
6713 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
6714
6715         * mini-amd64.c (emit_move_return_value): Fix memory leak.
6716
6717         * mini-x86.c (get_call_info): Add the get_call_info () code from the
6718         amd64 port, not yet used.
6719
6720 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
6721
6722         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
6723         a struct type.
6724
6725 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
6726
6727         * driver.c: Added --security option to activate the security manager.
6728         Right now this will allow code generation for declarative demands and
6729         is disabled when AOT is specified.
6730         * mini.c: Add code generation for declarative security demands.
6731         * mini.h: Add mono_use_security_manager as an extern gboolean.
6732
6733 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
6734
6735         * aot.c (mono_compile_assembly): Speed up compilation a bit by
6736         emitting more dense assembly code.
6737
6738         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
6739         exception throwing stuff.
6740
6741 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
6742
6743         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
6744         dead code.
6745
6746         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
6747         left in by mistake.
6748
6749         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
6750         fixed.
6751
6752         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
6753
6754         * tramp-*.c: Only patch vtable slots if the object is in the current
6755         domain. Fixes appdomain-unload.exe.
6756
6757         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
6758         
6759         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
6760         x86 branch.
6761
6762 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
6763
6764         * mini.c (reverse_branch_op): New helper function.
6765
6766         * mini.c (optimize_branches): Run the new optimization only on 
6767         platforms which support it. Also reverse all kinds of branches.
6768
6769         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
6770
6771         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
6772         a throw statement.
6773
6774         * mini.c (optimize_branches): Reverse not-equals branches if the false
6775         bblock is a throw. This happens a lot of time with argument checking in
6776         corlib.
6777
6778         * mini.c (mono_codegen): Add support for placing basic blocks after
6779         the function epilogue.
6780
6781         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
6782         function epilogue.
6783         
6784 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
6785
6786         * mini.c (setup_stat_profiler): Only set this up if the platform
6787         supports ITIMER_PROF.
6788
6789 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
6790
6791         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
6792         previous patch.
6793
6794         * inssel.brg: Fix a warning.
6795
6796 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
6797
6798         * mini.c: added support for statistical profiler 
6799         (run with: --profile=default:stat).
6800
6801 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
6802
6803         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
6804
6805         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
6806
6807         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
6808         related to global registers from the amd64 port.
6809
6810 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
6811
6812         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
6813
6814         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
6815         with global registers.
6816         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
6817
6818         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
6819
6820 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
6821
6822         * debug-mini.c (encode_value): Fix off-by-one.
6823
6824         * aot.c (encode_value): Likewise.
6825
6826         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
6827
6828 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
6829
6830         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
6831         AOT.
6832
6833         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
6834         
6835         * aot.c (emit_method_info): Increase size of temp buffer.
6836
6837         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
6838         the AOT case.
6839
6840 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
6841
6842         * aot.c (emit_method_info): Fix build.
6843         
6844         * aot.c: Further rework of the AOT file format to reduce the size of
6845         the method info data.
6846
6847         * mini.h: Bump AOT file format version.
6848
6849 2004-12-27  Martin Baulig  <martin@ximian.com>
6850
6851         * mini.c (mini_get_method): New static method; call
6852         mono_get_method_full() and mono_get_inflated_method().
6853         (mono_method_to_ir): Use mini_get_method() instead of
6854         mono_get_method_full(). 
6855
6856 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
6857
6858         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
6859
6860 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
6861
6862         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
6863
6864         * inssel-amd64.brg: Add some optimization rules.
6865
6866 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
6867
6868         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
6869         standard not GC'd stuff is fine.
6870
6871 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
6872
6873         * aot.c: Rework the AOT file format to get rid of most of the global
6874         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
6875
6876         * mini.h: Bump AOT file format version.
6877         
6878 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
6879
6880         * mini.h: Bump AOT file format version.
6881
6882         * aot.c (mono_aot_is_got_entry): New function to determine if an 
6883         address is inside a GOT.
6884
6885         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
6886
6887         * cpu-pentium.md: Increase the maximum size of some instructions which
6888         might involve a got access.
6889         
6890         * mini.c (get_method_from_ip): Another debug helper function.
6891
6892         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
6893         when got var accesses are created during the decompose phase.
6894
6895         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
6896
6897         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
6898         argument mini_compile_method and to MonoCompile, and use this to
6899         determine whenever a given method is compiled for AOT. This allows the
6900         other methods compiled during AOT compilation to be free of AOT stuff,
6901         so the backends does not need to add special support for them by
6902         creating a fake GOT etc.
6903
6904         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
6905         longer needed.
6906
6907 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
6908
6909         * mini.c (mono_method_to_ir): It turns out that some of the
6910         x-appdomain wrappers are lax with types, so just ignore this for
6911         all wrappers.
6912
6913         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
6914         at the vtable->klass. If it is non-shared code we can just use the
6915         vtable.
6916
6917 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
6918
6919         * mini-ppc.c: access MonoDomain from tls, too.
6920
6921 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
6922
6923         * declsec.c: Removed unused variable (and related warning ;-)
6924
6925 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
6926
6927         * iltests.il: New test for LDELEMA on an array of ref types.
6928
6929         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
6930         all ldelema's on reftypes.
6931         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
6932         it was the wrong place to put it.
6933
6934         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
6935         register to pop to make this cleaner, at the request of Paolo.
6936
6937 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
6938
6939         * mini-ops.h (OP_GETHASHCODE): New op.
6940
6941         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
6942
6943         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
6944         operation.
6945
6946         For a microbenchmark, this reduces the cost of Hashtable.get_Item
6947         by 25%.
6948         
6949         * mini-x86.c (mono_arch_output_basic_block): Rather than
6950
6951         add ebp, 4
6952
6953         Emit
6954
6955         pop edx
6956
6957         The first is 3 bytes while the second is 1. This saves 36 kb on
6958         mscorlib, quite a big saving. When bootstraping mcs, I was able to
6959         see a small boost because of icache locality.
6960
6961         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
6962
6963 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
6964
6965         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
6966         started code sharing with the generic code.
6967
6968 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
6969
6970         * mini-ppc.c, cpu-g4.md: added code for direct access to
6971         tls data slots.
6972
6973 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
6974
6975         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
6976          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
6977         to OP_TLS_GET.
6978
6979 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
6980
6981         * declsec.c|h: Added functions to cache the declarative stack modifiers
6982         in MonoJitInfo and to create a security frame from a MonoJitInfo 
6983         structure.
6984         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
6985         created. Register internal calls for System.Security.SecurityFrame::
6986         _GetSecurityFrame and _GetSecurityStack.
6987         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
6988         the definitions for the new stack walk/callback mechanism.
6989         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
6990         first security frame for LinkDemands and InheritanceDemands) and
6991         GetSecurityStack for Demands. Both use the new mono_walk_stack code
6992         from lupus.
6993         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
6994         walk initialization (lupus).
6995
6996 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
6997
6998         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
6999         idiom.
7000         (handle_loaded_temps): Do not create a temporary variable for
7001         things that we know are temps. They will never be modified.
7002         (mono_spill_call): Set MONO_INST_IS_TEMP
7003         (mono_emulate_opcode): ditto
7004         (emit_tree): ditto
7005         (mono_method_to_ir.CEE_DUP): ditto
7006
7007 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
7008
7009         * mini.c (type_to_eval_stack_type): Make this handle the void type
7010         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
7011         (emit_tree): use ip_in_bb to special case some common idioms
7012         Update all callers to pass in the IP.
7013         (mono_method_to_ir): Make CEE_CALL* do the above as well.
7014
7015         This gives us a nice 2% speedup in mcs bootstrap.
7016
7017         * mini-x86.c (peephole_pass): Peephole pass to make
7018         mov  [foo], eax
7019         push [foo]
7020
7021         into
7022
7023         mov [foo], eax
7024         push eax
7025
7026         * mini.c (ip_in_bb): new method.
7027         (mono_method_to_ir): use this method rather than doing the hash
7028         lookup ourselves.
7029
7030         * linear-scan.c (mono_linear_scan): When expiring actives, you
7031         don't need to keep around variables that expire on this
7032         instruction. This makes it so that:
7033              a = b + 1
7034         will turn into:
7035              store (ebx add (ebx, 1))
7036         which will become
7037              add ebx, 1
7038
7039 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
7040
7041         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
7042         combination to avoid doing two copies. Fix up problems with previous
7043         patch.
7044
7045         * mini.c: Fix 64 bit warnings.
7046
7047         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
7048
7049 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
7050
7051         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
7052         changes from the x86 code.
7053
7054         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
7055
7056 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
7057
7058         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
7059         throwing code to reduce its size, unify the AOT and non-aot code and 
7060         get rid of relocations in the AOT case.
7061
7062         * mini-x86.h mini.c exceptions-x86.c 
7063         (mono_arch_get_throw_corlib_exception): New arch specific function to 
7064         raise corlib exceptions which doesn't require relocations in the 
7065         caller.
7066
7067         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
7068
7069 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
7070
7071         * mini.c (mono_emit_method_call): Only allocate the got var when it is
7072         needed.
7073
7074         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
7075         in the AOT case.
7076
7077 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
7078
7079         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
7080         with add function when used from Inc/dec atomic 
7081         functions. Re-enabled optimization on x86.
7082         * mini-ops.h: renamed atomic_add functions to
7083         allow _add to match the Interlocked::Add and
7084         _add_next to match Interlocked::Inc/Dec.
7085
7086 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
7087
7088         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
7089         linking of BBs to the end BB, and enabled SSAPRE also with
7090         consprop and copyprop (which was prevented by that bug).
7091
7092 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
7093
7094         * mini-x86.c: disabling the Interlocked optimizing code. 
7095
7096 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
7097
7098         * aot.c (load_aot_module): Move reading of got_addr after the AOT
7099         file version check.
7100         
7101 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
7102
7103         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
7104         interlocked optimization due lack of support on x86, rewrote 
7105         exchange to take into account that base may be in eax.
7106         
7107         xsp works again; activated Interlocked optimizing code.
7108         
7109 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
7110
7111         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
7112
7113 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
7114
7115         * mini-ops.h: Add new opcodes.
7116
7117         * mini.h: Add new patch types. Add got_var to MonoCompile.
7118
7119         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
7120         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
7121         make it work with all kinds of patchable code.
7122
7123         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
7124         address of the GOT, and referencing entries in the GOT.
7125
7126         * mini.c: Add code to load the GOT address if needed by an opcode.
7127
7128         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
7129         independent AOT code on the x86 using an elf-style Global Offset Table.
7130
7131 2004-12-14  Raja R Harinath  <rharinath@novell.com>
7132
7133         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
7134
7135 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7136
7137         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
7138         when running xsp.
7139
7140 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
7141
7142         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
7143         of Interlocked:Increment/Decrement/Add as inline ops.
7144         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
7145
7146 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
7147
7148         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
7149         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
7150
7151 2004-12-12  Duncan Mak  <duncan@ximian.com>
7152
7153         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
7154         again. `patch_info->table_size' is no longer valid after Zoltan's
7155         commit #37636.
7156
7157 2004-12-12  Martin Baulig  <martin@ximian.com>
7158
7159         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
7160         if we are the "real" method, ie. not an inlined method inside it.
7161
7162 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
7163
7164         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
7165         before we look in the special fields table. This fixes
7166         ../tests/thread-static-init.cs.
7167
7168 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7169
7170         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
7171         for Array get_Rank and get_Length. Fixes bug #70465.
7172
7173 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
7174
7175         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
7176         separate structure to reduce the size of MonoJumpInfo.
7177
7178 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
7179
7180         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
7181
7182 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
7183
7184         * mini.c (mini_get_inst_for_method): Changed to allow ports
7185         to return a MonoInst instead of opcode 
7186         (renamed mini_get_opcode_for_method to better reflect the new functionality)
7187         
7188         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
7189         Allow ports to return a created MonoInst instead of op-code, will enable
7190         new optimizations.
7191         (renamed mini_get_opcode_for_method to better reflected the functionality)
7192
7193 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
7194
7195         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
7196
7197 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
7198
7199         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
7200         Fixes #69985.
7201
7202 2004-12-08  Martin Baulig  <martin@ximian.com>
7203
7204         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
7205         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
7206
7207 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
7208
7209         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
7210         correctly.
7211
7212         * exceptions.cs: Disable some tests which depend on properties of x86 fp
7213         arithmetic.
7214
7215 2004-12-08  Raja R Harinath  <rharinath@novell.com>
7216
7217         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
7218
7219 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
7220
7221         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
7222         bug introduced by the previous patch.
7223
7224 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
7225
7226         * mini-ppc.c, objectc.cs: handle large structs passed by value
7227         (fixes bug #69972).
7228
7229 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
7230
7231         * mini-ppc.c: OP_ARGLIST implementation from
7232         Geoff Norton  <gnorton@customerdna.com>.
7233
7234 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
7235
7236         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
7237         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
7238
7239 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
7240
7241         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
7242
7243 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7244
7245         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
7246         support.
7247
7248 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
7249
7250         * mini-sparc.c: Zero out localled-ed memory.
7251
7252         * iltests.il: Add tests for zeroing out localloc-ed memory.
7253
7254 2004-12-04  Martin Baulig  <martin@ximian.com>
7255
7256         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
7257         mono_method_get_signature_full().       
7258
7259 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
7260
7261         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
7262         and some utility functions (always for SSAPRE), integrated SSAPRE.
7263         * mini.h: Likewise.
7264         * driver.c: Added ssapre option.
7265         * ssa.c: Small fix on OP_ARG handling.
7266         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
7267         * Makefile.am: Likewise.
7268
7269 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
7270
7271         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
7272         now in the xp code.
7273
7274         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
7275         icall.
7276
7277 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7278
7279         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
7280         
7281         * cpu-s390.md : Increase instruction length of oparglist.
7282
7283         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
7284
7285 2004-11-30  Martin Baulig  <martin@ximian.com>
7286
7287         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
7288         virtual generic methods.  We call a special helper_compile_generic_method()
7289         icall to retrieve the method from the vtable, inflate and compile
7290         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
7291
7292         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
7293
7294 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
7295
7296         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
7297
7298 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
7299
7300         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
7301         Fixes #69929.
7302
7303 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
7304
7305         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
7306         platforms with PIC aot.
7307
7308 2004-11-28  Martin Baulig  <martin@ximian.com>
7309
7310         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
7311         Fixes gen-112.cs.
7312
7313 2004-11-28  Martin Baulig  <martin@ximian.com>
7314
7315         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
7316         the result of mono_type_get_underlying_type() to check whether
7317         we're byref.
7318
7319 2004-11-26  Martin Baulig  <martin@ximian.com>
7320
7321         * mini.c
7322         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
7323         in the g_assert().
7324
7325 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
7326
7327         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
7328         the same way as the other arguments so they won't get clobbered.
7329
7330         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
7331         calls through R11 since it is clobbered by the trampoline code.
7332
7333 2004-11-26  Raja R Harinath  <rharinath@novell.com>
7334
7335         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
7336         pick up in-tree mscorlib.dll.
7337
7338 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
7339
7340         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
7341
7342         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
7343         runtime data/code are now stored in a table similar to the GOT in ELF. 
7344         This allows the code itself to be position independent.
7345
7346         * aot.c: Fix loading of referenced assemblies after the lazy assembly
7347         loading changes.
7348
7349         * aot.c: Attach ELF type (object/function) directives to all global
7350         symbols.
7351
7352         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
7353
7354         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
7355
7356         * mini-amd64.h: Turn on PIC AOT code.
7357
7358         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
7359         returning the offset within an OP_AOTCONST instruction where the GOT
7360         offset needs to be added.
7361
7362         * mini.h: Bump AOT file format version.
7363
7364 2004-11-25  Martin Baulig  <martin@ximian.com>
7365
7366         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
7367         uninflated generic methods.
7368
7369 2004-11-25  Martin Baulig  <martin@ximian.com>
7370
7371         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
7372
7373 2004-11-24  Martin Baulig  <martin@ximian.com>
7374
7375         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
7376         original klass (this only applies for generic instances).
7377
7378 2004-11-24  Martin Baulig  <martin@ximian.com>
7379
7380         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
7381         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
7382         that array).
7383
7384 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
7385
7386         * mini.c (mono_method_to_ir): Disable inlining for methods containing
7387         localloc. Fixes #69678.
7388
7389         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
7390         
7391 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
7392
7393         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
7394         used SSE registers on pinvoke calls. Fixes #69774.
7395
7396 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
7397
7398         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
7399         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
7400
7401 2004-11-23  Raja R Harinath  <rharinath@novell.com>
7402
7403         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
7404         Refer directly to the mcs/ tree.
7405
7406 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7407
7408         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
7409         Check if a trampoline for a synchronized method is required. 
7410
7411 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
7412
7413         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
7414         with localloc if needed. Throe arithmetric exception in
7415         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
7416         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
7417
7418 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
7419
7420         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
7421         types before switching on type.  Fixes #69622.
7422
7423 2004-11-19  Raja R Harinath  <rharinath@novell.com>
7424
7425         * Makefile.am (check-local): New.  Integrate into 'make check'.
7426         (MCS,RUNTIME): Define using in-tree mono and mcs.
7427         (ILASM): New.
7428         (%.exe): Use $(ILASM).
7429
7430 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
7431
7432         * mini-ppc.c: adjust initial prolog size (bug #69691).
7433
7434 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
7435
7436         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
7437         #69664.
7438
7439 2004-11-17  Raja R Harinath  <rharinath@novell.com>
7440
7441         * Makefile.am (clean-local): Rename from 'clean'.
7442
7443 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7444
7445         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
7446         to mono_arch_is_int_overflow. 
7447         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
7448         SIGFPE events.
7449
7450 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
7451
7452         * declsec.c|h: New files to support declarative security attributes.
7453         Added function to check if a method has (applicable) security.
7454         * mini.c|h: Add check for declarative security attributes in
7455         mono_method_check_inlining.
7456         * Makefile.am: Added declsec.c and declsec.h to the build.
7457
7458 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
7459
7460         * mini.c, mini.h: update to keep dynamic code info per-domain.
7461
7462 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
7463
7464         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
7465         (mini_init): Get rid of it from here too.
7466
7467 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
7468
7469         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
7470         implemented OP_RETHROW (patch by Geoff Norton
7471         <gnorton@customerdna.com>).
7472
7473 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
7474
7475         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
7476         between appdomains.  Fixes appdomain-unload on PPC.
7477
7478 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
7479
7480         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
7481         mini-exceptions.c: handle the new wrapper types.
7482         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
7483         token value as a MonoClass* when compiling a wrapper.
7484         mono_jit_create_remoting_trampoline now takes an additional
7485         MonoRemotingTarget parameter.
7486         
7487 2004-11-10  Martin Baulig  <martin@localhost>
7488
7489         * mini.c (mono_method_to_ir): Use `generic_container->context'
7490         rather than creating a new one.
7491
7492 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7493
7494         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
7495
7496         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
7497
7498 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
7499
7500         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
7501         the experimental aot cache stuff.
7502
7503 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
7504
7505         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
7506         mini-exceptions.c: update to exception clause structure changes.
7507
7508 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
7509
7510         * exceptions-x86.c (throw_exception): Fix warnings.
7511
7512         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
7513         for OP_RETHROW.
7514
7515 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
7516
7517         * exceptions-sparc.c (get_throw_exception): Really fix this.
7518
7519 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
7520
7521         * tramp-*.c: we no longer support icalls without wrappers, so
7522         a bit of code can be removed here
7523
7524 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
7525
7526         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
7527         patch.
7528
7529         * cpu-sparc.md: Add op_rethrow.
7530
7531         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
7532
7533         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
7534
7535         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
7536         * mini-ops.h: Add OP_RETHROW.
7537
7538         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
7539
7540         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
7541
7542 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
7543         
7544         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
7545         Makes the output much easier to read
7546
7547 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
7548
7549         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
7550         prevents another huge leak when compiling with ssa. Secondly, the
7551         performance of doing this rather than freeing the lists is much
7552         better. GList does a lock every time you allocate a list link,
7553         so that it can use a memory pool. So, it is better to just use
7554         a memory pool of our own.
7555         
7556         * ssa.c, linear-scan.c: replace g_list_remove_link with
7557         g_list_delete.  The remove one does not free the GList, so we were
7558         leaking memory. On -O=all --compile-all with corlib, this cut down
7559         3 MB of allocations.
7560
7561 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
7562
7563         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
7564
7565         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
7566
7567         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
7568         into a new function mono_create_jit_trampoline ().
7569
7570 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
7571
7572         * trace.c (get_spec): Allow tracing of classes without a namespace.
7573
7574 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
7575
7576         * mini.c: Fix pointer overwrite in mini_method_compile.
7577
7578 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
7579
7580         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
7581         The darwin ABI needs some special handling for 1 and 2 byte structs
7582         Lets use lbz/lhz instead of lwz everywhere.
7583         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
7584         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
7585         Use stb/sth for the former, and put the latter always on stack instead of in
7586         argument registers.
7587
7588 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
7589
7590         * trace.c (is_filenamechar): Add '_'.
7591
7592 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
7593
7594         * mini-s390.c: Fix prolog length to allow for large trace requirements.
7595
7596         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
7597
7598 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
7599
7600         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
7601         depends on libmonogc. Fixes #68805.
7602
7603 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
7604
7605         * mini.c (mono_jit_free_method): Provide extra information for
7606         this error.  Currently this leaks, but will be turned into a
7607         developer option in the future.
7608
7609 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
7610
7611         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
7612
7613 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
7614
7615         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
7616         boundary. Fixes reading of PATCH_INFO_R4 and R8.
7617         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
7618
7619 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
7620
7621         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
7622         trampolines for AOT code.
7623
7624 2004-10-22    <vargaz@freemail.hu>
7625
7626         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
7627         constructed types. Fixes #68136.
7628
7629 2004-10-21  Martin Baulig  <martin@ximian.com>
7630
7631         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
7632         if it returns true, unwind the stack to the call instruction.
7633
7634 2004-10-21    <vargaz@freemail.hu>
7635
7636         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
7637
7638         * mini.h: Bump AOT version number.
7639
7640         * objects.cs: Add another test for unbox trampolines.
7641
7642         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
7643         valuetype methods.
7644
7645 2004-10-20    <vargaz@freemail.hu>
7646
7647         * driver.c: Add SHARED to the set of optimizations tested.
7648
7649         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
7650
7651         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
7652         used by CEE_NEWARR.
7653
7654         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
7655
7656 2004-10-20  Martin Baulig  <martin@ximian.com>
7657
7658         * mini-exceptions.c (mono_handle_exception): Call
7659         mono_debugger_handle_exception() to tell the debugger about
7660         catch/finally clauses.
7661
7662 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
7663
7664         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
7665
7666         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
7667         #68447.
7668
7669 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
7670
7671         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
7672         methods as their native size, fixed bug #57543, #57545.
7673         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
7674         This saves a temporary register and mullw call down into 1 (minor perf
7675         increase for cases like sum = sum * 5;  This use to translate into:
7676             li r11,5
7677             mullw r28,r28,r11
7678         It now translates to
7679             mulli r28,r28,5
7680
7681 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
7682
7683         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
7684         #68388.
7685
7686 2004-10-11  Martin Baulig  <martin@ximian.com>
7687
7688         * mini.c (mono_method_to_ir): If we're a generic method, get the
7689         MonoGenericContainer from our MonoMethodNormal and create a
7690         MonoGenericContext from it.
7691
7692 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
7693
7694         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
7695
7696         * basic-long.cs: Add test for checked i8->i2 cast.
7697
7698 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
7699
7700         * inssel-ppc.brg: added a couple of speedup rules.
7701
7702 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
7703
7704         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
7705         to speed up rebuilds.
7706
7707 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7708
7709         * mini-s390.c: Minor fix to OP_OR_IMM.
7710
7711 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
7712
7713         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
7714         better. Fixes appdomain-unload.exe on sparc.
7715
7716 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
7717
7718         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
7719         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
7720         see bug 67324.
7721
7722 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
7723
7724         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
7725
7726 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
7727
7728         * mini.c: Always generate a field read/write wrapper for members
7729         of the class MarshalByRefObject since the actual instance could
7730         be a CBO.
7731
7732 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
7733
7734         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
7735
7736 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
7737
7738         * driver.c mini.h trace.c: Move the setting of the main assembly into
7739         a separate function called mono_trace_set_assembly () and call it after
7740         actually loading the main assembly. Fixes #66872.
7741
7742 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
7743
7744         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
7745         using the code manager.
7746
7747 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
7748
7749         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
7750
7751 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
7752
7753         * cpu-amd64.md: Fix bug in previous patch.
7754         
7755         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
7756         #66650.
7757
7758 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
7759
7760         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
7761         mini-exceptions.c: updates for changed stack walk interface.
7762
7763 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
7764
7765         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
7766
7767 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
7768
7769         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
7770
7771 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
7772
7773         * driver.c (mini_regression_list): Do not call mono_assembly_close 
7774         since assemblies can't be unloaded.
7775         
7776 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
7777
7778         * cpu-amd64.md: Fix more instruction lengths.
7779
7780         * cpu-amd64.md: Fix lengths of some instructions.
7781
7782 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
7783
7784         * inssel.brg: Make the array ldelema check aot friendly.
7785
7786 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
7787
7788         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
7789
7790         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
7791
7792 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
7793
7794         * mini-x86.c: Fix build.
7795
7796         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
7797         mono_type_get_underlying_type () helper function to simplify code.
7798         
7799 2004-09-09  Martin Baulig  <martin@ximian.com>
7800
7801         * mini-amd64.c: Don't access `type->data.klass' directly, call
7802         mono_class_from_mono_type() instead since the type may be a
7803         generic instance.
7804
7805 2004-09-09  Martin Baulig  <martin@ximian.com>
7806
7807         * mini-amd64.c (get_call_info): Fix support for generic instances.
7808         (add_valuetype): Use mono_class_from_mono_type() to get the class
7809         since we can be a generic instance.
7810
7811 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
7812
7813         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
7814
7815 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
7816
7817         * liveness.c: reset spill costs on each scan: bug 62107
7818
7819 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
7820
7821         * exceptions-sparc.c (mono_arch_find_jit_info): remove
7822         unnecessary line that doesn't compile
7823
7824 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
7825
7826         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
7827         trampolines, make them call an error function so people can fix their
7828         code.
7829
7830 2004-09-06  Martin Baulig  <martin@ximian.com>
7831
7832         * mini.c (mono_method_to_ir): When initializing locals, handle a
7833         generic instances like a valuetype if it's a valuetype and like a
7834         class if it's a class.
7835
7836 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
7837
7838         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
7839         stack. Fixes #64674.
7840
7841         * exceptions.cs: Add test for unwinding of call arguments.
7842
7843 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
7844
7845         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
7846         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
7847         set the carry/borrow flag). The sparc and s390 implementations
7848         can now use optimized versions (and simplify the code). ppc bugfixes.
7849
7850 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
7851
7852         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
7853
7854 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
7855
7856         * inssel-amd64.brg: Remove leftover 32 bit rule.
7857
7858         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
7859
7860 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
7861
7862         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
7863         mono_arch_find_jit_info functions into a new function. Fix a memory
7864         leak.
7865
7866         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
7867         refactored code.
7868         
7869 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
7870
7871         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
7872         as well.
7873         
7874         * exceptions.cs: Add array size tests.
7875
7876         * mini.c: Allocate a separate icall wrapper for each arity of 
7877         mono_array_new_va. Fixes #59509.
7878
7879         * exceptions.cs: Add testcase for 64578.
7880
7881         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
7882
7883         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
7884         
7885 2004-09-02  Martin Baulig  <martin@ximian.com>
7886
7887         * mini.c (mono_method_to_ir): When initializing the locals, call
7888         handle_initobj() on the generic instance itself, not its
7889         underlying type.
7890
7891 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
7892
7893         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
7894         MonoJitInfo for dynamic methods.
7895
7896         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
7897
7898         * mini.c: Add support for freeing JIT data for dynamic methods.
7899         
7900 2004-09-01  Martin Baulig  <martin@ximian.com>
7901
7902         * mini-x86.c (is_regsize_var): Added support for generic
7903         instances.
7904         (mono_arch_emit_prolog): Make this compile again, use
7905         `x86_push_imm_template (code)'.
7906
7907 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
7908
7909         * mini-x86.c: make all push_imm instructions that get
7910         patched always emit the long form
7911
7912 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
7913
7914         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
7915         in a per-domain hash.
7916
7917         * mini-amd64.c (merge_argument_class_from_type): Handle generic
7918         types.
7919
7920 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
7921
7922         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
7923         work.
7924         
7925         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
7926         work.
7927
7928         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
7929         Beginnings of SSE2 support.
7930
7931         * exceptions.cs: Add more tests for checked int<->uint casts.
7932
7933 2004-08-28  Martin Baulig  <martin@ximian.com>
7934
7935         * mini-x86.c (mono_arch_instrument_epilog): Added support for
7936         generic instances.
7937
7938         * mini.c
7939         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
7940         Handle generic instances recursively.
7941
7942 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
7943
7944         * iltests.il: test for conv.u8 on a constant
7945
7946 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
7947
7948         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
7949         LCONV_x4 (shrun_32 (membase)).
7950
7951 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
7952
7953         * inssel-x86.brg: c&p rules for push/setret of long
7954
7955 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
7956
7957         * inssel-x86.brg: c&p rules for compare (base, regvar) and
7958         compare (regvar, base)
7959
7960         * inssel-x86.brg: more burg love
7961
7962         * inssel.brg: more cleanup
7963
7964         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
7965
7966 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
7967
7968         * basic-long.cs, basic-calls.cs: new tests for optimization.
7969
7970 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
7971
7972         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
7973         patch.
7974
7975 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
7976
7977         * mini-amd64.c (read_tls_offset_from_method): Add another case.
7978         
7979 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
7980
7981         * inssel.brg (mini_emit_memcpy): use 
7982         NO_UNALIGNED_ACCESS to disable memcpy optimization
7983
7984 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
7985
7986         * mini-amd64.c: Handle generic types in various places.
7987
7988         * mini.c (mono_method_to_ir): Handle generic types in init locals.
7989
7990 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
7991
7992         * mini.c (handle_box): Fix warning.
7993
7994         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
7995
7996         * mini-amd64.h: Enable the emit_state optimization.
7997
7998         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
7999
8000         * mini-amd64.c: Add some new 64 bit peephole opts.
8001
8002         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
8003
8004         * cpu-amd64.md: sreg1 of div instructions must be %rax.
8005
8006         * mini-amd64.c: Register allocator fixes.
8007
8008         * mini.c: Add an optimization to emit_state to avoid allocation of new
8009         registers on some platforms.
8010
8011 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
8012
8013         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
8014
8015         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
8016         allocation. Fixes #63085.
8017
8018         * basic-long.cs: Add new regression test.
8019
8020         * mini-amd64.c: Register allocator improvements.
8021
8022 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
8023
8024         * mini-amd64.c (read_tls_offset_from_method): Add another code
8025         sequence.
8026
8027         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
8028         instruction sequence for nullifying class init trampolines.
8029
8030         * objects.cs: Add new regalloc test.
8031
8032         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
8033
8034 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
8035
8036         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
8037         
8038         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
8039         arguments.
8040
8041         * driver.c: Fix profiling after TLS changes.
8042         
8043         * driver.c (mono_main): Set mono_stats.enabled if needed.
8044
8045         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
8046         CEE_BOX.
8047
8048 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
8049
8050         * mini-x86.c: use a 1 op rather than a 2 op tls access
8051         instruction -> faster.
8052
8053 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
8054
8055         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
8056         x86 backend.
8057
8058 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
8059
8060         * exceptions-sparc.c (throw_exception): fix typo
8061
8062 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
8063
8064         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
8065         set tree->dreg correctly with tls. Allow any
8066         register to be used.
8067
8068         * mini-x86.c (read_tls_offset_from_method): add new code
8069         generation pattern seen with GCC.
8070
8071
8072 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
8073
8074         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
8075         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
8076         exceptions-sparc.c: fix some performance issues in exception
8077         handling and setting of the stack trace for exceptions that were
8078         already thrown.
8079
8080 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
8081
8082         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
8083         x86 backend.
8084         
8085         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
8086         registers.
8087
8088 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
8089
8090         This patch inlines tls access, when possible.
8091         
8092         * mini.h: new arch functions for TLS intrinsics.
8093         All platforms updated with a stub.
8094
8095         * mini.c: use the new intrinsics
8096
8097         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
8098         arch specific intrinsic for tls variables
8099
8100 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
8101
8102         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
8103         under windows.
8104
8105 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
8106
8107         * mini.c: thread local allocation
8108
8109 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
8110
8111         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
8112
8113         * Makefile.am: Link against the static version of libmonogc.
8114         
8115         * Makefile.am: Link the static versions of the convenience libraries
8116         into the mono executable.
8117
8118         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
8119
8120 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
8121
8122         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
8123         on integer overflow.
8124
8125         * mini-amd64.c: Reorganize function call code.
8126
8127         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
8128
8129 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
8130
8131         * inssel-x86.brg: use xor eax,eax.
8132         
8133         * basic.cs: new tests
8134
8135 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
8136
8137         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
8138         in exception throwing code.
8139         
8140 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
8141
8142         * inssel-x86.brg: use xor esi,esi.
8143
8144 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
8145
8146         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
8147         can trace methods compiled during mini_init () too.
8148
8149         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
8150         CEE_CONV_U4.
8151
8152 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
8153
8154         * Makefile.am: static link on x86 (r=zoltan)
8155
8156 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
8157
8158         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
8159         code since it causes some programs to fail.
8160
8161 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
8162
8163         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
8164
8165 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
8166
8167         * mini.c: ovfops_op_map - add STACK_OBJ case for
8168         CONV_I 
8169         * basic.cs: add test_0_pin_string as test
8170         case for above.
8171
8172 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
8173
8174         * Makefile.am: build C# if srcdir != builddir
8175
8176 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
8177
8178         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
8179         fall-through blocks.
8180
8181 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
8182
8183         * driver.c: enable loop by default again and include abcrem in -O=all.
8184
8185 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
8186
8187         * iltests.il: Add some localloc tests.
8188
8189         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
8190
8191         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
8192         Fixes #62574.
8193
8194         * inssel-amd64.brg: Add some optimizations.
8195
8196         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
8197         for gcc-3.4.
8198
8199         * Makefile.am: Statically link mono against libmono on AMD64.
8200         
8201         * mini-amd64.c inssel-amd64.brg: Optimizations.
8202
8203 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
8204
8205         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
8206
8207         * tramp-amd64.c: Patch calling code in trampolines.
8208
8209 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
8210
8211         * mini-amd64.c: pinvoke struct passing fixes.
8212
8213 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
8214
8215         * mini-sparc.c: redo change, make mono_arch_cpu_init call
8216         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
8217
8218 2004-08-05  Duncan Mak  <duncan@ximian.com>
8219
8220         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
8221         CEE_LDELEM_ANY.
8222
8223 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
8224
8225         * mini-amd64.c (emit_move_return_value): Move return value for normal
8226         calls too.
8227
8228 2004-08-05  Martin Baulig  <martin@ximian.com>
8229
8230         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
8231         `type->type'; just modify `type' itself when dealing with enums
8232         and generic instances.
8233         (check_call_signature): Make `simple_type' a `MonoType *'.
8234
8235 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
8236
8237         * mini.c: Use OP_PADD to add offsets to addresses.
8238
8239         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
8240
8241 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
8242
8243         * mini-sparc.c (mono_arch_emit_epilog): fix check
8244         for folding last op into restore instruction
8245
8246 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
8247
8248         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
8249         helper methods using the code manager.
8250         
8251         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
8252
8253         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
8254
8255 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
8256         
8257         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
8258           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
8259
8260         * mini-s390.c: fix tail processing
8261
8262 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
8263
8264         * mini-ppc.c: mul.ovf.un exception name fix.
8265
8266 2004-08-03  Martin Baulig  <martin@ximian.com>
8267
8268         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
8269         instances; before jumping to `handle_enum', also modify `ptype'.
8270
8271 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
8272
8273         * cpu-sparc.md: fcall maximal length too small.
8274
8275 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
8276
8277         * mini-amd64.c mini.h: Add initial support for passing/returning 
8278         structures to/from pinvoked methods.
8279
8280 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
8281
8282         * mini-ppc.c: reg allocator fix.
8283
8284 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
8285
8286         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
8287
8288         * inssel.brg: Optimize memset on 64 bit machines.
8289
8290         * mini-amd64.c: Fix some vararg cases.
8291
8292 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
8293
8294         * mini-s390.c: Corrected macro in emit_float_to_int
8295
8296         * s390-abi.cs: Tests to exercise the s390 ABI
8297
8298 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
8299
8300         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
8301         caller saved regs.
8302
8303         * basic.cs: Add a test for add.ovf.un.
8304
8305 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
8306
8307         * mini-sparc.c: add case for OP_IDIV_UN
8308
8309 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
8310
8311         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
8312         
8313         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
8314
8315 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
8316
8317         * basic.cs: regression tests.
8318
8319         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
8320         regressions.
8321
8322 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
8323
8324         * basic.cs: Add a new test.
8325
8326         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
8327         and AOT. Various fixes and optimizations.
8328
8329         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
8330
8331 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
8332
8333         * mini-ppc.c: make sure temp regs are not used for global reg
8334         allocation.
8335
8336 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
8337
8338         * cpu-sparc.md: conv_i8 fix for 64bits
8339
8340         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
8341
8342 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
8343         
8344         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
8345         add opcode for cmp BYTE PTR [eax], imm.
8346
8347         * inssel.brg: Make memcpy and memset takes bases.
8348
8349 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
8350
8351         * *-amd64.*: More AMD64 work.
8352         
8353 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
8354
8355         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
8356         add a compare-not-equal opcode.
8357         
8358 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
8359
8360         * mini.c: Use mono_init_from_assembly instead of mono_init.
8361         
8362 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
8363
8364         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
8365
8366         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
8367
8368         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
8369
8370         * inssel.brg: 64 bit fixes.
8371
8372         * mini.h (MonoCallInst): Add some AMD64 specific data.
8373
8374         * mini.h: Add some OP_P opcodes.
8375
8376 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
8377
8378         * basic.cs: tests for 61797 and 61740
8379
8380 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
8381
8382         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
8383         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
8384
8385 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
8386
8387         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
8388
8389         * *-amd64*.*: Ongoing AMD64 work.
8390
8391 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
8392
8393         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
8394
8395         * *-amd64*: Ongoing AMD64 work.
8396
8397         * mini-arch.h: Add AMD64 support.
8398
8399         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
8400
8401         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
8402
8403         * mini-ops.h: Add new opcodes.
8404
8405         * Makefile.am: Add AMD64 support.
8406
8407         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
8408         rules into the inssel-long*.brg files.
8409
8410         * *-amd64.*: Add beginnings of AMD64 backend.
8411
8412 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
8413
8414         * mini.c (print_dfn): commenting out the code that prints
8415         the cil. With -O=deadce, this makes -v -v crash.
8416         
8417         * cpu-pentium.md: make checkthis have a length of 2
8418
8419 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
8420
8421         * mini-sparc.h: fix implementations of __builtin
8422         functions for Sun compiler for V9.
8423
8424 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
8425
8426         * mini.c: use the new stelem.ref wrapper
8427         * exceptions.cs, arrays.cs: new stelem.ref tests
8428
8429 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
8430
8431         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
8432         new XSP should work with these changes).
8433
8434 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
8435         
8436         * inssel-{long32,x86,}.brg: trivial optimizations.
8437         
8438 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
8439
8440         * mini.c: load value when emitting box operation in
8441         constrained calls.
8442
8443 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
8444
8445         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
8446         is one byte shorter than cmp DWORD PTR [eax], 0.
8447
8448 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
8449
8450         * inssel-ppc.brg: arguments on the stack are always
8451         relative to the stack pointer (spotted by Neale Ferguson).
8452
8453 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8454
8455         * exceptions-x86.c: delay appending the method name to the trace until
8456         after mono_jit_info_table_find is called, as this gets the real
8457         MonoMethod.
8458
8459 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
8460
8461         * aot.c: register roots
8462
8463 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
8464
8465         * aot.c : I could just use PLATFORM_WIN32 flag.
8466
8467 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
8468
8469         * aot.c : Reverting the previous fix. This time it broke linux build.
8470
8471 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
8472
8473         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
8474
8475 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
8476
8477         * mini.c (handle_stack_args): Remove some more debugging code.
8478         
8479         * mini.c (handle_stack_args): Remove debug output left in by mistake.
8480
8481         * driver.c mini.h aot.c: Allow additional options to be specified with
8482         --aot and pass them to mono_compile_assembly.
8483
8484         * aot.c: Add experimental code to AOT compile all loaded assemblies
8485         on demand and save the code into a cache in the filesystem.
8486
8487         * aot.c: Add support for more wrapper methods.
8488         
8489         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
8490         58863.
8491
8492         * cpu-*.md: Remove removed opcodes.
8493
8494         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
8495         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
8496         related icalls to marshal.c.
8497
8498 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
8499
8500         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
8501
8502         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
8503
8504         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
8505
8506 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
8507         * liveness.c: If liveness is recomputated we need to reset the information
8508         for each variable. This way, if the liveness range has been narrowed
8509         by optimizations that happened after the last computation, we can return
8510         a smaller range.
8511         
8512         For example, if you have
8513         
8514         {
8515                 int i = 0;
8516                 
8517                 // Tons of code that does not affect i
8518                 
8519                 i = foo ();
8520                 ...
8521         }
8522         
8523         i = 0 is dead code and will be removed by SSA. However, when
8524         linear scan gets to the code, i will still appear to be live
8525         throughout the entire block. This prevents good register allocation.
8526
8527 2004-07-06  Martin Baulig  <martin@ximian.com>
8528
8529         * debug-mini.c (mono_debug_init_method): Allow
8530         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
8531         (mono_debug_add_icall_wrapper): New method.
8532
8533         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
8534
8535 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
8536
8537         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
8538         optimization.
8539
8540 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
8541
8542         * aot.c (mono_aot_load_method): Fix loading of debug info.
8543
8544 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
8545
8546         * aot.c: Add logging support.
8547
8548 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
8549
8550         * mini.h: Add prototype for mono_print_method_from_ip.
8551
8552         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
8553
8554         * inssel.brg: 64 bit fixes.
8555
8556         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
8557         inssel-long32.brg.
8558
8559         * Makefile.am: Add SPARC64 support.
8560
8561 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
8562
8563         * aot.c: Fix alignment problems on 32 bit platforms.
8564
8565 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
8566
8567         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
8568         SPARC64.
8569
8570         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
8571         problems.
8572
8573         * mini.h: Bump AOT file version. Some 64 bit fixes.
8574
8575 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
8576
8577         * inssel-sparc.brg: Add new rule to avoid register moves.
8578
8579         * inssel.brg: Add ldind_to_load_membase helper function.
8580
8581 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
8582
8583         * mini.c: OffsetToStringData intrinsic.
8584         
8585 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
8586
8587         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
8588
8589         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
8590         regression tests.
8591
8592         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
8593 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
8594
8595         * mini.c: reinstated mono_compile_get_interface_var()
8596         on x86, too, since the change breaks the Gtk# build there as well.
8597
8598 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8599
8600         * driver.c: remove loop from the default optimizations: it seems to
8601         interact badly with some of the other options (see bug #60613).
8602
8603 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
8604
8605         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
8606         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
8607
8608 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
8609
8610         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
8611         vararg-using methods.
8612
8613 2004-06-21  Martin Baulig  <martin@ximian.com>
8614
8615         * mini/mini-exceptions.c
8616         (mono_handle_exception): Added `gpointer original_ip' argument.
8617         After calling mono_unhandled_exception(), call
8618         mono_debugger_unhandled_exception() and if that returns true,
8619         restore the context and return.
8620
8621 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
8622
8623         * mini-ppc.c: prefer the use of relative branches so
8624         they won't need to be patched in aot code (patch from Patrick Beard).
8625
8626 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
8627
8628         * aot.c: patch from Patrick Beard to make the output assembly
8629         more correct for the MacOSX assembler. Small tweak to
8630         generate sane images on Linux/PPC, too.
8631
8632 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8633
8634         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
8635         case until bug #59509 is fixed (shows up in #60332).
8636
8637 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
8638
8639         * mini.c: make sure the needed wrappers are compiled, too, with
8640         precomp.
8641
8642 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
8643
8644         * driver.c: remove NPTL reference in --version output.
8645
8646 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
8647
8648         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
8649         generate valid assembly for the Mach-O assembler.
8650
8651 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
8652
8653         * driver.c: don't include abcrem in the all optimization specifier
8654         since it slows down jit compilation too much for now.
8655
8656 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
8657
8658         * mini.c: use BIGMUL only if both operands have the same signage.
8659         * iltests.il: Test for bug 60056. (errors related to signage in
8660         BIGMUL).
8661
8662         r=lupus.
8663
8664 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
8665
8666         * mini.c, aot.c: memory leak fixes.
8667
8668 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
8669
8670         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
8671
8672 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
8673
8674         * Makefile.am: remove the -static hack completely, it links in
8675         statically glib as well.
8676
8677 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
8678
8679         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
8680         * exceptions.cs: make it compile with new mcs/csc.
8681
8682 2004-06-03 Massimiliano Mantione <massi@ximian.com>
8683         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
8684         and added relevant test case.
8685
8686 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
8687
8688         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
8689         regressions in gtk-sharp.
8690
8691 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
8692
8693         * exceptions.cs: New regression tests.
8694
8695         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
8696
8697 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
8698
8699         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
8700
8701 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
8702
8703         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
8704
8705         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
8706
8707 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
8708
8709         * mini.c (mono_jit_runtime_invoke): Init class in this
8710         method instead of trusting mono_jit_compile_method to
8711         do the work (because wrappers can be in object class)
8712
8713 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
8714
8715         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
8716
8717         * basic-long.cs: New regression test.
8718
8719 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
8720
8721         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
8722         and div/rem checks.
8723
8724 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
8725
8726         * Makefile.am: fix miguel's change to build mono statically against
8727         libmono (track build dependencies).
8728
8729 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
8730
8731         * cfold.c: Some glib versions do not have G_MININT32.
8732
8733 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
8734
8735         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
8736         with precision of tan, atan, sin and cos, and implemented related
8737         regressions tests (fixes bug 54467, but one new problem appeared and
8738         is not fixed yet).
8739
8740 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
8741
8742         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
8743
8744         * exceptions.cs: Add test for constant folding && division by zero.
8745
8746         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
8747         since driver.c is in libmono too, so the optimization was useless.
8748
8749         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
8750         variable to driver.c so the compiler can emit more efficient code to
8751         access them.
8752
8753 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
8754
8755         * Makefile.am: don't distribute generated inssel.[ch] files.
8756
8757 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
8758
8759         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
8760         into the default appdomain. Fixes #58707.
8761
8762         * jit-icalls.c: Remove the broken approximation for truncl, doing
8763         no conversion is better.
8764
8765         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
8766         Fixes #58863.
8767
8768 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
8769
8770         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
8771         of the mcrxr instruction which is not available on some processors
8772         even if it's documented to be. Implement add and sub overflow correctly
8773         (still not complete for long unsigned). Speed up icalls a bit.
8774
8775 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
8776
8777         * mini.c (mono_jit_compile_method_with_opt): Make sure that
8778         we run .cctor in the current domain instead of target_domain.
8779         
8780         Fixes bug #58558, .cctor not being called in -O=shared.
8781
8782 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
8783
8784         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
8785
8786 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
8787
8788         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
8789         which can be done with an imm8, do it that way.
8790         (mono_arch_output_basic_block): ditto for a jmp
8791         (mono_arch_emit_prolog): Computate maximum offset of a label.
8792
8793 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
8794
8795         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
8796         now tries to allocate prefered physical reg's for virtual
8797         regs. This reduces the number of emited spills/loads with
8798         20-30% on our core assemblies.
8799
8800 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
8801
8802         * jit-icalls.c: truncl() is not needed and trunc() is
8803         the correct thing to do anyway (bug #58287).
8804
8805 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
8806
8807         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
8808         if available.
8809
8810 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
8811
8812         * driver.c: enable loop optimizations by default.
8813
8814 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
8815
8816         * mini-x86.c: fix calc of max loop size when aligning loops start.
8817
8818 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
8819
8820         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
8821         the stack.
8822
8823 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
8824
8825         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
8826         should set carry.
8827
8828         * basic-long.cs: Add tests for add/subtract of immediates with carry.
8829
8830         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
8831         
8832         * mini.c (inline_method): Allways inline some wrappers even if the cost
8833         is too large. Fixes #58785.
8834
8835         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
8836         
8837 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
8838
8839         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
8840         (crichton@gimp.org). Beginning of support for sparc/linux.
8841
8842         * mini-sparc.c: Optimize retrieval of LMF address.
8843
8844 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
8845
8846         * exceptions-ppc.c:  handle alloca in methods with clauses.
8847
8848 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
8849
8850         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
8851
8852 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
8853
8854         * mini.c: Delegate most of the abort signal work to 
8855           mono_thread_request_interruption, which also handles Stop and Suspend
8856           states.
8857
8858 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
8859
8860         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
8861         supports the save/restore lmf opcodes.
8862
8863 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
8864
8865         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
8866         by gcc-3.4 as well.
8867
8868         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
8869
8870 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
8871
8872         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
8873         methods which contain array accesses.
8874
8875         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
8876         boundaries. Fixes #58537.
8877
8878         * iltests.il: Add regression test for #58537.
8879
8880 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
8881
8882         * mini-x86.c (mono_arch_local_regalloc): Last part of
8883         fix for bug #58633 (releasing register to early).
8884
8885 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
8886
8887         * basic-long.cs: Add new regression test.
8888
8889 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
8890
8891         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
8892         register too early on the chain.
8893
8894 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
8895
8896         * mini.c (create_helper_signature): Use a helper function to reduce
8897         the code which needs to be written. Also set the calling convention of
8898         icalls on windows. Fixes #57840.
8899
8900 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
8901
8902         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
8903         exceptions-ppc.c: added helper function to get the instruction address
8904         from a signal handler context.
8905
8906 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
8907
8908         * helpers.c: use g_get_tmp_dir. Invokes happyness 
8909         from gonzalo.
8910
8911 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
8912
8913         * helpers.c: Add new env variable to pass args to objdump.
8914         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
8915
8916 2004-05-17  Radek Doulik  <rodo@ximian.com>
8917
8918         * Makefile.am (common_sources): added abcremoval.h so it get
8919         disted and daily mono packages on go-mono.com will build again
8920
8921 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
8922
8923         * abcremoval.c: Fixed coding style, added copyright header.
8924
8925         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
8926
8927         * mini.h: Added prototype for abc removal main function.
8928
8929         * build_relations_propagation_table.pl: Added copyright header.
8930
8931 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
8932
8933         * basic-long.cs: reg test for complex ceq_long bug.
8934
8935 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
8936
8937         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
8938         reg in long and clob case (bug #58343). Fixed/added comments.
8939
8940 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
8941
8942         * mini.c (mono_jit_runtime_invoke): Follow new convention
8943         of calling the invoke method with an function pointer.
8944
8945 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
8946
8947         * ChangeLog: Fix author of memory leak patch.
8948
8949 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
8950
8951         * Makefile.am: fix make dist as well...
8952
8953
8954 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
8955
8956         * cfold.c: Made so that conversions from pointer to int4 are no-ops
8957         on archs where pointers are 4 bytes long.
8958
8959         * Makefile.am: Added abcremoval.c source file.
8960
8961         * abcremoval.c: Added abcremoval.c.
8962
8963         * abcremoval.h: Added abcremoval.h.
8964
8965         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
8966
8967         * inssel.brg: Enabled bounds check removal.
8968
8969         * mini.c: Added support for abcrem optimization.
8970
8971         * mini.h: Added abcrem optimization label.
8972
8973         * driver.c: Added support for abcrem optimization.
8974
8975         * propagated_relations_table.def: Added propagated_relations_table.def.
8976
8977 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
8978
8979         * mini.c, cfold.c: fix style.
8980
8981 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
8982
8983         * mini.c: handle issue with the low-level implementation of
8984         some long opcodes (bug #54209).
8985
8986 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
8987
8988         * basic.cs: test for my new cmov stuff.
8989
8990 2004-05-13      Patrik Torstensson
8991
8992         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
8993         opt and added peephole documentation.
8994
8995 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
8996
8997         * tramp-ppc.c: rewrote the generic trampoline code.
8998
8999 2004-05-11      Patrik Torstensson
9000
9001         * mini-x86.c: optimize long shl/shr asm code (one less branch)
9002
9003 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
9004
9005         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
9006
9007         * mini.h mini.c dominators.c: Applied patch from Derek Woo
9008         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
9009
9010         * mini.c: Add new icalls for AsAny marshalling.
9011
9012 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
9013
9014         * tramp-ppc.c, mini-ppc.c: more cleanups.
9015
9016 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9017
9018         * mini.c: no warnings.
9019
9020 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
9021
9022         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
9023
9024 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
9025
9026         * mini.c: In the thread abort signal handler, if the thread is in the
9027         process of being stoped, don't throw the Abort exception, just stop the
9028         thread.
9029
9030 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
9031
9032         * tramp-ppc.c: removed old code.
9033
9034 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
9035
9036         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
9037         do some simple speed optimizations on ppc.
9038
9039 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
9040
9041         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
9042         and large offsets in load/store.
9043
9044 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
9045
9046         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
9047         it causes regressions.
9048
9049 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
9050
9051         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
9052         support.
9053
9054 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
9055
9056         * jit-icalls.c: remove warnings.
9057         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
9058         speedups for unsafe code.
9059
9060 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
9061
9062         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
9063
9064 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
9065
9066         * basic-calls.cs: Add new regression test.
9067
9068         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
9069         more portable.
9070
9071         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
9072
9073         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
9074         is no longer used.
9075
9076 2004-05-06      Patrik Torstensson
9077
9078         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
9079         long reg allocation in any reg (not only eax:edx) and implemented 
9080         long shl/shr ops in asm instead of helpers.
9081
9082 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
9083
9084         * mini-sparc.h: Fix warnings.
9085
9086         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
9087         stack.
9088
9089         * mini-exceptions.c (mono_handle_exception): Call the filter in a
9090         separate statement for clarity.
9091
9092         * mini-sparc.c: Update status.
9093
9094 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
9095
9096         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
9097         here.
9098
9099 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
9100
9101         * inssel-ppc.brg: another small pre-release workaround:
9102         we don't do overflow detection for long_sub_un.
9103
9104 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
9105
9106         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
9107         (also works around a weird ppc bug: 57957).
9108
9109 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
9110
9111         * tramp-ppc.c: trampoline fixes.
9112
9113 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
9114
9115         * mini-ppc.c: fixed typos.
9116
9117 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
9118
9119         * mini-ppc.c, exceptions-ppc.c: more code saves registers
9120         at the top of the stack. Fixed typos. Use a frame registers
9121         for all the methods with exception clauses.
9122
9123 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
9124
9125         * exceptions-ppc.c: restore fp registers.
9126
9127 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
9128
9129         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
9130         order from the stack top (moved the stack room to save the
9131         return value for trace after the param area). Fixed corruption
9132         in restoring registers on unwind.
9133
9134 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
9135
9136         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
9137
9138 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
9139
9140         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
9141         and prolog/epilog for methods that use it. Allow
9142         enough param area room for varargs methods. Fix miguel's
9143         breakage in exception handling.
9144
9145 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
9146
9147         * Makefile.am: run genmdesc only on current arch.
9148
9149 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9150
9151         * exceptions-x86.c:
9152         * mini-x86.h: fix the build on windows.
9153
9154 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
9155
9156         * 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.
9157
9158         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
9159
9160         * mini-exceptions.c: New file.
9161         
9162         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
9163         Move some parts of the x86 exception handling code to an 
9164         arch-independent file so it can be shared with other ports.
9165
9166 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
9167
9168         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
9169
9170 2004-04-26  David Waite  <mass@akuma.org>
9171
9172         * driver.c: remove comma from end of enumeration declaration
9173
9174 2004-04-26  Jackson Harper  <jackson@ximian.com>
9175
9176         * driver.c: parse config file before loading first assembly. This
9177         allows the user gac to be enabled/disabled. 
9178         
9179 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
9180
9181         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
9182         simpler mechanism: we do not care what is encoded initially
9183         (branch absolute or relative), we care about the code and its
9184         target.  I kept the old code for reference for now.
9185
9186         The new code tries first to determine if the jump is anywhere in
9187         the -/+32 absolute meg range, if it succeeds, it encodes using the
9188         absolute branch;  If not, it tried to find something in the
9189         relative range, if not, it uses the handle_thunk code. 
9190
9191 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
9192
9193         * exceptions-ppc.c: use the correct ip register on macosx.
9194
9195 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
9196
9197         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
9198
9199 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
9200
9201         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
9202         Raise exception on integer divide by zero by hand since the hw
9203         doesn't support it. Handle NaNs in FP compares.
9204
9205 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
9206
9207         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
9208         code reducing duplication between the platforms and enabled
9209         signal exception handling (on linux for now).
9210
9211 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
9212
9213         * exceptions-ppc.c: more macosx support.
9214
9215 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
9216
9217         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
9218
9219 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
9220
9221         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
9222
9223 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
9224
9225         * iltests.il: more tests.
9226
9227 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
9228
9229         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
9230         vars as well.
9231
9232 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
9233
9234         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
9235
9236 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
9237
9238         * liveness.c: Mark variables as volatile in all basic blocks reachable
9239         from exception clauses.
9240
9241 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
9242
9243         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
9244         inlining.
9245
9246 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
9247
9248         * iltests.il, basic.cs: more tests for regalloc.
9249
9250 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
9251
9252         * iltests.il: Some tests for register allocation modifications
9253         I have locally.
9254
9255 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
9256
9257         * exceptions.cs: Add regression test for bug #56782.
9258
9259         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
9260         original stack trace if an exception is rethrown. Fixes #56782. Oh,
9261         the beauty of fixing the same thing in 5 different files...
9262
9263 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
9264
9265         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
9266         methods.
9267
9268 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
9269
9270         * mini.c: Add support for STRWLPARRAY marshalling convention.
9271
9272 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
9273
9274         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
9275         to init the context to setup the regs pointer).
9276
9277 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
9278
9279         * exceptions-ppc.c: more exceptions work.
9280
9281 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
9282
9283         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
9284         not allowed.
9285
9286 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
9287
9288         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
9289         can use the memory directly.
9290
9291         * cpu-pentium.md: Update documentation from a post from Zoltan. 
9292
9293         add x86_add_membase, x86_sub_membase, x86_mul_membase
9294
9295 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
9296
9297         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
9298         GENERAL_REGS they were also hardcoded for all PPC ports.
9299
9300         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
9301
9302         Remove hard-coded limit for floating point registers, use
9303         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
9304
9305         Notice that in MacOS X calling conventions you can fit a lot more
9306         floating point values in registers, so I should update the PInvoke
9307         test to excercise the passing of floating point values on the
9308         stack (currently broken).
9309         
9310 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
9311
9312         * tramp-ppc.c (create_trampoline_code): Added
9313         JUMP_TRAMPOLINE_SIZE. 
9314         (ppc_magic_trampoline): Follow the pattern from
9315         x86_magic_trampoline: if code is set to zero, return. 
9316         (create_trampoline_code): Always pass MonoMethod to the jump
9317         trampoline, before it was passing a null.
9318         (mono_arch_create_jump_trampoline): Implement the jump stub, could
9319         share the code with mono_arch_create_jit_trampoline. 
9320
9321         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
9322         implemented.
9323         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
9324         implemented.  
9325
9326         * cpu-g4.md: Added length for jmp instruction, the worst case
9327         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
9328         for save_lmf).
9329
9330 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
9331
9332         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
9333
9334 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
9335
9336         * mini.c: Only set bblock->real_offset when adding a new bblock, and
9337         before each IL instruction.
9338
9339         * mini.c (CEE_BOX): Fix warnings.
9340
9341 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9342
9343         * mini.c: removed a few unused vars and extra whitespace.
9344
9345 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
9346
9347         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
9348         checks.
9349         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
9350         index.
9351         (OP_GETCHR): use the above
9352         (CEE_LDELEMA): use the above.
9353
9354         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
9355         version of the generic impl.
9356         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
9357         (CEE_LDELEMA): use the above.
9358
9359 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
9360
9361         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
9362         Fixes #56317.
9363
9364         * iltests.il: Added new regression test for #56317.
9365
9366 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
9367
9368         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
9369         under NetBSD. Fixes #56450.
9370
9371         * liveness.c (update_gen_kill_set): Fix previous patch.
9372
9373 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9374
9375         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
9376
9377 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
9378
9379         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
9380         ldsfld and ldsflda.
9381
9382         * inssel-sparc.brg: Add more optimizations.
9383
9384         * mini-sparc.c: Replace multiply/divide with shifts if possible.
9385
9386 2004-04-01  Martin Baulig  <martin@ximian.com>
9387
9388         * mini.c (handle_box): New static function; moved the
9389         implementation of CEE_BOX here.
9390         (mono_method_to_ir): Added `constrained_call' variable.
9391         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
9392         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
9393         mono_method_get_constrained() to get the method.
9394
9395 2004-04-01  Martin Baulig  <martin@ximian.com>
9396
9397         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
9398         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
9399         (mono_method_to_ir): We don't need these macros anymore since
9400         mono_class_get_full() already takes care of it. 
9401
9402 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9403
9404         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
9405         use @function (as doesn't accept #function here) and check the return
9406         value of system and stop if fails.
9407
9408 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9409
9410         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
9411
9412 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
9413
9414         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
9415
9416         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
9417
9418         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
9419         #56223.
9420
9421         * basic-long.cs: Add test for negation of Int64.MinValue.
9422
9423 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
9424
9425         * mini-sparc.c: Update status.
9426
9427         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
9428
9429         * exceptions-sparc.c: Fix return value in filters.
9430
9431         * inssel-sparc.brg: Fix register allocation in some rules.
9432
9433 2004-03-28  Martin Baulig  <martin@ximian.com>
9434
9435         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
9436         if neccessary.  
9437
9438 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
9439
9440         * mini-x86.c (mono_arch_patch_code): Fix warnings.
9441         
9442         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
9443         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
9444         remove unused conv_u4 opcode.
9445
9446         * mini-x86.c: Remove valgrind workaround since it slows down things
9447         even when mono is not run under valgrind.
9448
9449 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
9450
9451         * mini-sparc.c: Update status.
9452
9453         * inssel-sparc.brg: Add some optimizations.
9454
9455         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
9456         future delay slot filling. Add support for varargs, tail calls and JMP.
9457
9458         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
9459         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
9460
9461         * inssel.brg: Fix register allocation in OP_ARGLIST.
9462
9463         * inssel.brg: Fix warnings.
9464
9465 2004-03-25  Martin Baulig  <martin@ximian.com>
9466
9467         * mini.c (inflate_generic_field): Removed.
9468         (mini_get_method): Removed, use mono_get_method_full(),
9469         (mini_get_class): Removed, use mono_class_get_full().
9470         (mono_method_to_ir): Pass our generic context to
9471         mono_field_from_token().        
9472
9473 2004-03-25  Martin Baulig  <martin@ximian.com>
9474
9475         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
9476         of a `MonoMethod *'.
9477         (mini_get_method): Take a `MonoGenericContext *' instead
9478         of a `MonoMethod *'.
9479         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
9480         a new local variable called `generic_context' which holds the
9481         current `MonoGenericContext *'; use it to lookup things.
9482
9483 2004-03-24  Martin Baulig  <martin@ximian.com>
9484
9485         * mini.c (mini_get_class): New static method; if we're inside a
9486         generic instance, inflate the class if neccessary.
9487         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
9488
9489 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
9490
9491         * iltests.il: New regression test for #55976.
9492
9493         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
9494         #55976.
9495
9496 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
9497
9498         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
9499         output.
9500
9501 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
9502
9503         * liveness.c: Consider SSA stores as well as loads when making vars
9504         volatile.
9505
9506         * exceptions.cs: New regression tests for register allocation.
9507         
9508 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
9509
9510         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
9511         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
9512           domain lock only to protect puntual access to data structures.
9513           Added access lock for sighash, jit_icall_hash_name, 
9514           jit_icall_hash_addr and domain->code_mp.
9515
9516 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
9517
9518         * driver.c: Print SIGSEGV handling method.
9519
9520         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
9521
9522         * mini.c (setup_jit_tls_data): Handle case when this is called
9523         multiple times for a thread.
9524
9525         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
9526         is different from fbxx_un. Fixes #54303. Also use constants instead of
9527         magic numbers in a lot of places.
9528
9529 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
9530
9531         * exceptions.cs: Fix cctor test when --regression is used.
9532
9533 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
9534
9535         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
9536         for Linux/ppc.
9537
9538 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
9539
9540         * inssel-ppc.brg: fixed register assignments for some rules.
9541
9542 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
9543
9544         * exceptions.cs: Add test for exceptions in static constructors.
9545
9546         * mini.c (mono_jit_compile_method_with_out): Move the calling of
9547         static constructors outside the domain lock. Fixes #55720.
9548
9549 2004-03-17  Martin Baulig  <martin@ximian.com>
9550
9551         * mini.c (get_generic_field_inst): Removed, this'll never happen.
9552         (inflate_generic_field): Take the `MonoMethod *' instead of the
9553         `MonoClass *' and added support for generic method.
9554         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
9555         have a `field->parent->gen_params', only inflate the field if it's
9556         an open constructed type.
9557
9558 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
9559
9560         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
9561         exception object instead of the preconstructed ones.
9562
9563 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9564
9565         * mini.c: reverted changed to sigsegv_signal_handler commited
9566         accidentally in the previous patch.
9567
9568 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
9569
9570         * mini.c:
9571         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
9572         running --aot with an old assembly.
9573
9574 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
9575
9576         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
9577         point values.
9578
9579         * mini-sparc.c: Add support for v9 branches with prediction.
9580
9581 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
9582
9583         * mini.c (mini_init): #warning is GNUC only
9584
9585         * mini-sparc.h: implement __builtin_frame_address
9586         and __builtin_return_address for Sun C compiler
9587
9588 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
9589
9590         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
9591
9592 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
9593
9594         * basic-calls.cs: Add test for unaligned byref long argument passing.
9595
9596         * mini-ops.h: Add sparcv9 compare and branch instructions.
9597
9598         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
9599         v9 instructions if we have a v9 cpu.
9600
9601         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
9602         registers for global allocation.
9603
9604         * exceptions-sparc.c: Fixes.
9605         
9606 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
9607
9608         * liveness.c (mono_analyze_liveness): Optimized version.
9609
9610         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
9611
9612         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
9613         sparc work.
9614
9615         * basic-float.cs basic-calls.cs: New regression tests.
9616
9617 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
9618
9619         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
9620         sigaltstack implementation.
9621
9622         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
9623         
9624         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
9625         stuff if SIGSEGV_ON_ALTSTACK is not defined.
9626
9627 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
9628
9629         * mini.c: Fix warnings.
9630         
9631         * mini.c (mono_resolve_patch_target): New function which contains the
9632         arch independent part of the patching process.
9633
9634         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
9635         patching code to a separate function.
9636
9637 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
9638
9639         * mini.c (add_signal_handler): ifdef out on Windows
9640
9641 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
9642
9643         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
9644         cpu-sparc.md: Add exception handling support + other fixes.
9645
9646         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
9647         typed GC detection in --version.
9648
9649         * basic.cs exceptions.cs: New regression tests.
9650
9651         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
9652         the arch specific code can store data during a compilation.
9653
9654         * mini-ops.h: Add OP_SETFRET.
9655
9656         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
9657         function, register a separate icall for each arity, so the icalls can
9658         get a wrapper.
9659         
9660         * mini.c (mono_print_tree): Print negative offsets in a more readable
9661         form.
9662         
9663         * mini.c: Make signal handling work on sparc.
9664         
9665         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
9666
9667         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
9668
9669         * jit-icalls.c: Emulate truncl by aintl on solaris.
9670
9671         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
9672
9673 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
9674
9675         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
9676
9677 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
9678
9679         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
9680         a MarshalByRef type, inline a method that performs the check, taking into
9681         account that the object can be a proxy. Also implemented tow new opcodes:
9682         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
9683         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
9684         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
9685
9686 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
9687
9688         * mini-ppc.c: if a relative branch displacement is too big
9689         but it points to and area reachable with an absolute branch, 
9690         avoid the thunks.
9691
9692 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
9693
9694         * mini.c: optimize small copies in cpblk.
9695
9696 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
9697
9698         * basic-calls.cs basic-float.cs: New regression tests.
9699
9700         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
9701         negative offsets from %fp. Implement localloc. Fix local register 
9702         allocation. Fix the case when the this argument needs to be saved to
9703         the stack. Implement some missing opcodes.
9704
9705 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
9706
9707         * mini.c (mini_method_compile): Reenable global regalloc in methods
9708         with exception handlers.
9709
9710         * linear-scan.c (mono_varlist_sort): Fix warning.
9711
9712         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
9713
9714         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
9715         regalloc costs.
9716
9717         * liveness.c: Make all variables uses in exception clauses volatile, to
9718         prevent them from being allocated to registers. Fixes #42136.
9719
9720 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
9721
9722         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
9723         causes regressions.
9724
9725         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
9726         argument to mono_arch_regalloc_cost.
9727
9728         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
9729         precisely.
9730
9731 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
9732
9733         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
9734         Make the cost of allocating a variable to a register arch dependent.
9735
9736         * basic-calls.cs: Fix compilation of tests.
9737         
9738         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
9739         helper function to cut back on the number of #ifdefs needed.
9740
9741         * mini-ppc.c: Fix compilation.
9742
9743         * basic-calls.cs: New regression tests.
9744
9745         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
9746
9747         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
9748         of l0 since that is callee saved.
9749
9750         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
9751         to virtual calls.
9752
9753         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
9754         of delay instruction.
9755
9756         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
9757
9758         * mini.h (MonoCallInst): Add 'virtual' flag.
9759
9760         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
9761
9762 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
9763
9764         * *.cs: New regression tests.
9765
9766         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
9767         work.
9768
9769         * mini.c (mono_runtime_install_handlers): Fix build.
9770
9771         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
9772         'signal_stack_size' members.
9773
9774         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
9775         alternate signal stack.
9776
9777         * exceptions-x86.c: Add stack overflow handling.
9778
9779         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
9780         functions to arch independent code.
9781
9782         * mini.c (mono_print_tree): Print more detailed info for load_membase
9783         opcodes.
9784         
9785 2004-02-23  Martin Baulig  <martin@ximian.com>
9786
9787         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
9788
9789 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
9790
9791         * mini-x86.c: fixed reg allocation for div/rem.
9792
9793 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
9794
9795         * driver.c (mono_main): Report some configuratio options on --version.
9796
9797 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
9798
9799         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
9800         low in the address space. Correctly flush memory in thunks where we
9801         output native code.
9802
9803 2004-02-20  Martin Baulig  <martin@ximian.com>
9804
9805         * mini.c (mini_get_method): New static method; inflate all generic
9806         methods and methods in open generic instances.
9807         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
9808         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
9809
9810 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
9811
9812         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
9813
9814         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
9815
9816 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
9817
9818         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
9819
9820         * mini-sparc.c (flushi mono_arch_output_basic_block): make
9821         it compile using Sun's compiler.
9822
9823 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
9824
9825         * 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.
9826
9827         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
9828
9829 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
9830
9831         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
9832         code.
9833         * mini-ppc.c: handle calls outside of the allowed range with thunks
9834         allocated using the code manager.
9835         * tramp-ppc.c: use the code manager to hold generated native code.
9836         Fixed the magic trampoline to just patch vtable entries.
9837
9838 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
9839
9840         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
9841         independent file.
9842
9843 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
9844
9845         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
9846         PPC.
9847
9848         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
9849         if we have a working __thread implementation.
9850
9851         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
9852         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
9853
9854 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
9855
9856         * mini-x86.c: Fix compilation under gcc 2.
9857         
9858 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
9859
9860         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
9861         contains a call to the wrapped function.
9862
9863         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
9864         OP_<CALL>_IMM opcodes, and use them under X86.
9865         
9866         * mini.c (mono_jit_find_compiled_method): Fix warning.
9867
9868         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
9869
9870         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
9871
9872         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
9873         functionality to mini.c.
9874
9875         * mini.c (mono_create_jump_trampoline): New function to create a jump
9876         trampoline. Return a compiled method instead of a trampoline if it
9877         exists. Add a cache for jump trampolines.
9878
9879         * mini.c (mono_jit_find_compiled_method): New function to return a
9880         compiled method if it exists.
9881
9882         * mini-x86.c: Call mono_create_jump_trampoline instead of 
9883         mono_arch_create_jit_trampoline.
9884
9885         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
9886         a jump trampoline. Fixes #52092.
9887         
9888 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
9889
9890         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
9891         which is not up-to-date. Add check_corlib_version () instead.
9892
9893         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
9894         have to call it.
9895         
9896         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
9897         since newer valgrind versions do not need it.
9898
9899         * mini.c (mono_jit_compile_method_with_opt): New helper function to
9900         compile a method with a given set of optimizations.
9901
9902         * mini.c: Compile icall wrappers on-demand instead of at startup.
9903
9904         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
9905         wrapper for an icall.
9906
9907 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
9908
9909         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
9910         #54063.
9911
9912         * iltests.il: Add test for non-empty stack before switch instruction.
9913
9914 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
9915
9916         * mini.c: Add support for new stringbuilder marshalling conventions.
9917
9918         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
9919
9920 2004-02-01  Martin Baulig  <martin@ximian.com>
9921
9922         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
9923         in `ginst->mtype_argv'.
9924
9925 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
9926
9927         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
9928         facilitate grepping.
9929
9930 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
9931
9932         * mini.c: fixed buglet in initobj generic implementation for references.
9933
9934 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
9935
9936         * Makefile.am: make the version script conditional.
9937         * jit-icalls.c: handle missing truncl().
9938
9939 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
9940
9941         * exceptions.cs: Add more tests for double->int conversion.
9942
9943         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
9944         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
9945
9946 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
9947
9948         * driver.c: make --verbose --version emit an error
9949         if the loaded corlib doesn't match the runtime version.
9950
9951 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
9952
9953         * mini-ppc.h: export ppc_patch().
9954         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
9955         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
9956         on par or better than on MacOSX.
9957
9958 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
9959
9960         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
9961         mono_lookup_pinvoke_call.
9962
9963         * mini-x86.c: Under windows, the default pinvoke calling convention is
9964         stdcall. Fixes #52834.
9965
9966         * mini.c (optimize_branches): Add an upper bound to the number of
9967         iterations to prevent infinite loops on strange loops. Fixes #53003.
9968
9969 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
9970
9971         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
9972         and ISINST. Fixes #52093.
9973
9974         * objects.cs (test_0_vector_array_cast): New tests.
9975         
9976 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
9977
9978         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
9979         checking in Array.Set ().
9980
9981         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
9982         #52590.
9983
9984         * object.cs (test_0_multi_array_cast): New regression test.
9985
9986 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
9987
9988         * exceptions-ppc.c: fix build on Linux/PPC.
9989
9990 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
9991
9992         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
9993         running under valgrind.
9994         (x86_magic_trampoline): Fix build bustage.
9995
9996         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
9997         negative values as well. This is needed for the encoding of the line number
9998         info, since sometimes the line numbers are not in increasing order.
9999
10000 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
10001
10002         * cpu-pentium.md (localloc): Increase the size of the localloc 
10003         instruction since it is a loop under Win32.
10004
10005         * debug-mini.c (record_line_number): Get rid of unneccesary memory
10006         allocation.
10007
10008 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
10009
10010         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
10011         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
10012         Max Horn (max@quendi.de). Fix file names in comments.
10013
10014 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
10015
10016         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
10017         avoid stack overflow.
10018         (replace_usage): Avoid uninitialized variable warnings.
10019
10020         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
10021         and taking the address of valuetype variables.
10022
10023 2004-01-03  Patrik Torstensson
10024
10025         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
10026         for other purposes than FP later on.
10027
10028 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
10029
10030         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
10031         of tail calls.
10032
10033 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
10034
10035         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
10036
10037 2003-12-30  Patrik Torstensson <p@rxc.se>
10038
10039         * mini-x86.h: Decreased number of availiable fp regs.
10040         Solves corner cases with FP spilling.
10041
10042 2003-12-23  Patrik Torstensson <p@rxc.se>
10043
10044         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
10045         for floating point stack tracking / spilling on x86. 
10046         Fixes bug #49012.
10047         
10048         * basic-float.cs: added float mul overflow test.
10049
10050 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
10051
10052         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
10053
10054 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
10055
10056         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
10057         supports for cond branches that overflow the immediate
10058         overflow offset. mcs can compile simple programs.
10059
10060 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
10061
10062         * exceptions-ppc.c: exception handling support wip:
10063         finally handlers get run on exception.
10064
10065 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
10066
10067         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
10068         profiling.
10069
10070 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
10071
10072         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
10073         initial support for stack walking and unwinding.
10074
10075 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
10076
10077         * driver.c (mono_main): Make corlib-out-of-sync message more 
10078         descriptive. Also remove verify_corlib call.
10079
10080 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
10081
10082         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
10083         not overlap with other call's arguments, too.
10084
10085 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
10086
10087         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
10088         move to arch-specific code the choice of arch-specific
10089         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
10090         * mini.c: ensure emulation calls will not interleave
10091         with other calls.
10092
10093 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
10094
10095         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
10096         the magic trampoline stack frame is dropped before executing
10097         the new method.
10098
10099 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
10100
10101         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
10102         and integer to fp conversions. Added support for overflowing
10103         arguments on the stack. Reserve a couple more registers as temps.
10104         Added support for aot compilation (as output still needs to be
10105         tweaked, though).
10106
10107 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
10108
10109         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
10110         Don't overwrite return register in some corner cases.
10111
10112 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
10113
10114         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
10115         static constructors when AOT compiling.
10116
10117         * driver.c (mono_main): Call mono_check_corlib_version.
10118
10119 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
10120
10121         * cpu-g4.md, basic.cs: fixed div target register.
10122
10123 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
10124
10125         * mini-ppc.c, basic.cs: shl_imm fix with test.
10126
10127 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
10128
10129         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
10130         structures by value. Misc fixes.
10131         * objects.cs: more tests.
10132
10133 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
10134
10135         * mini-ppc.c: lconv.ovf.i implemented.
10136
10137 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10138
10139         * mini.c:
10140         (mini_init): don't error out if someone already called g_thread_init.
10141
10142 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
10143
10144         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
10145         to be any type per the spec. Fix abnormal memory usage when
10146         the same object is repeatedly thrown.
10147
10148 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
10149
10150         * mini.c: check for overruns in IL code.
10151
10152 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
10153
10154         * TODO: Add/remove some todo entries.
10155
10156 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
10157
10158         * driver.c (mono_main): Call mono_verify_corlib.
10159
10160 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
10161
10162         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
10163         This has been moved to mini.c
10164         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
10165         type being casted is marshalbyref it could be a proxy, so instead of
10166         emitting the type check code, emit a call to a runtime method that will
10167         perform the check by calling CanCastTo if needed.
10168
10169 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
10170
10171         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
10172         methods with large stack frames under Win32.
10173
10174 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
10175
10176         * Makefile.am: Distribute regression tests.
10177
10178         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
10179         at the end instead of inserting each variable into the sorted list.
10180
10181         * linear-scan.c (mono_varlist_sort): New helper function.
10182         
10183 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
10184
10185         * mini.c: ensure arguments and locals are within bounds.
10186
10187 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
10188
10189         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
10190         related fixes.
10191
10192 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
10193
10194         * mini.c (mono_cprop_copy_values): Fix crash.
10195
10196         * aot.c: Set verbosity back to 0.
10197         
10198 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
10199
10200         * regalloc.c: complete memory leak fix by Laurent Morichetti
10201         (l_m@pacbell.net).
10202
10203 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
10204
10205         * driver.c (main_thread_handler): Revert the previous patch.
10206
10207         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
10208         under valgrind.
10209
10210         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
10211         memory from the memory pool.
10212
10213         * driver.c (main_thread_handler): Turn on all optimizations when
10214         --aot is used.
10215
10216         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
10217         an array for better performance.
10218
10219         * regalloc.c (mono_regstate_assign): Fix memory leak.
10220
10221         * debug-mini.c (mono_debug_serialize_debug_info): New function to
10222         serialize the debug info.
10223
10224         * debug-mini.c (mono_debug_add_aot_method): New function to load the
10225         debug info from the serialized representation.
10226
10227         * aot.c: Save debug info into the generated file and load it when 
10228         loading a method.
10229
10230         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
10231
10232 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
10233
10234         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
10235         More FP-related fixes.
10236
10237 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
10238
10239         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
10240         and register allocation buglet. Hello world now runs.
10241
10242 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
10243
10244         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
10245         * tramp-ppc.c: fixed class init trampoline.
10246         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
10247
10248 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
10249
10250         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
10251         mini.c: more ppc changes/fixes.
10252
10253 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
10254
10255         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
10256         Also optimize the case when the arguments are the same in the caller 
10257         and in the callee.
10258
10259         * iltests.il: Add tests for tail calls with valuetype arguments.
10260
10261 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
10262
10263         * mini-ppc.c: fixes for struct return type.
10264
10265 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
10266
10267         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
10268         mono_spillvar_offset() to arch-specific code.
10269
10270 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
10271
10272         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
10273
10274 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
10275
10276         * exceptions-x86.c: Fix stack space leaks.
10277         
10278         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
10279         registers from the lmf if the method has save_lmf set.
10280
10281 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
10282
10283         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
10284         of icall wrappers into InvokeInDomain, since these are now per-domain.
10285
10286 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
10287
10288         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
10289         make some opcode emulation and intrinsic ops enabled/disabled 
10290         according to the architecture. More fixes.
10291
10292 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
10293
10294         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
10295
10296 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
10297
10298         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
10299         arch-specific handling for 'this' and struct return type to
10300         arch-specific code.
10301
10302 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10303
10304         * aot.c: prevent divide by zero error when reporting (it happened with
10305         Accessibility.dll).
10306
10307 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
10308
10309         * mini.h (inst_switch): Remove unused macro.
10310
10311 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10312
10313         * aot.c:
10314         (load_aot_module): free 'info->methods' and 'info' properly. No more
10315         "free(): invalid pointer blah" messages when you have an old aot
10316         compiled assembly.
10317
10318 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
10319
10320         * jit-icalls.c, mini.c: Added support for context static fields.
10321
10322 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
10323
10324         * mini.c (mono_method_blittable): Methods which set LastError are not 
10325         blittable either. Fixes #51108.
10326         
10327 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
10328
10329         * mini.c: flush icache.
10330         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
10331
10332 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
10333
10334         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
10335
10336 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
10337
10338         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
10339         safe on IA32.
10340
10341         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
10342         vararg calls.
10343
10344         * inssel.brg (CEE_MKREFANY): Fix AOT case.
10345
10346 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
10347
10348         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
10349         instruction when the result is discarded.
10350
10351         * iltests.il (test_0_div_regalloc): New regression test.
10352
10353         * arrays.cs: Fix compilation error.
10354
10355 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
10356
10357         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
10358         float rules to inssel-x86.brg: sane architectures with FP registers
10359         don't need to implement these rules.
10360
10361 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
10362
10363         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
10364
10365 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
10366
10367         * mini.h, inssel-long32.brg: fixed endianess issues in int64
10368         implementation of 32 bit systems.
10369
10370 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
10371
10372         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
10373         (Jeroen Zwartepoorte).
10374
10375 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
10376
10377         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
10378         the caller and the callee matches.
10379         
10380         * mini.c (mono_method_to_ir): Add comment.
10381
10382         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
10383         signbit is missing on some platforms.
10384
10385 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
10386
10387         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
10388
10389         * mini.c (setup_jit_tls_data): Call the new function.
10390         
10391         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
10392
10393         * mini-x86.c: Add experimental support for fast access to the lmf
10394         structure under NPTL/Linux 2.6.x.
10395
10396 2003-11-06  Martin Baulig  <martin@ximian.com>
10397
10398         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
10399         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
10400         the debugger.
10401
10402 2003-11-02  Martin Baulig  <martin@ximian.com>
10403
10404         * mini.c (inflate_generic_field): New static method.
10405         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
10406         generic instance and the field is declared in a generic type, call
10407         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
10408
10409 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
10410
10411         * mini.h mini.c (mono_method_same_domain): New function to return
10412         whenever the caller and the callee are in the same domain.
10413
10414         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
10415
10416 2003-10-30  Martin Baulig  <martin@ximian.com>
10417
10418         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
10419         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
10420         method parameters.
10421         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
10422         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
10423
10424 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
10425
10426         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
10427         propagation.
10428
10429         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
10430         object here, so it is in the correct appdomain etc.
10431
10432 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
10433
10434         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
10435         already done.
10436         (mono_method_to_ir): Avoid freeing the type created returned from
10437         mono_type_create_from_typespec, since it is put into an internal cache
10438         by the function. Fixes pointer.exe.
10439
10440         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
10441         trampolines for icalls and pinvokes as well. Fixes #33569.
10442
10443 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
10444
10445         * mini.c: Update after appdomain changes.
10446
10447         * mini.c (mono_jit_compile_method_inner): Allways compile native
10448         method wrappers in the root domain, since there can only be one
10449         instance of them, whose address is stored in method->info.
10450
10451 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
10452
10453         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
10454         environment variable. Instead detect automatically whenever running
10455         under valgrind using the magic macro RUNNING_ON_VALGRIND from
10456         valgrind.h.
10457
10458 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
10459
10460         * trace.c, trace.h: New files that implement the new trace option
10461         parsing. 
10462
10463         * driver.c: Document new --trace options.
10464
10465         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
10466         mini-x86.c: Apply:
10467
10468         -       if (mono_jit_trace_calls)
10469         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
10470
10471         * mini.h: prototypes.
10472         
10473 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
10474
10475         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
10476
10477         * mini.c inssel.brg: Implement typedefbyref opcodes.
10478
10479         * mini.c (mono_jit_compile_method): Remove unused local variable.
10480
10481         * mini.c (mono_jit_compile_method_inner): Ditto.
10482         
10483 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
10484
10485         * tramp-x86.c (x86_class_init_trampoline): Fix build.
10486         
10487         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
10488
10489 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
10490
10491         * mini.c (mono_no_aot): Remove unused global variable.
10492
10493         * mini.c: Thread safety fixes.
10494
10495 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
10496
10497         * mini.c (mono_create_class_init_trampoline): Add a lock around
10498         class_init_hash_addr.
10499
10500         * arrays.cs (test_0_newarr_emulation): Add new regression test for
10501         #30073.
10502
10503         * mini.c: Decompose the NEWARR instruction before decomposing its
10504         arguments. Fixes #30073.
10505
10506 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
10507
10508         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
10509         convention.
10510
10511 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
10512
10513         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
10514
10515         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
10516
10517         * driver.c: Add support for compiling icall wrappers to --compile.
10518
10519 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
10520
10521         * inssel.brg: The empty value in class->interface_offsets is -1, not
10522         0. Fixes #49287.
10523
10524 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
10525
10526         * objects.cs: New test for 'is' operator on an array of interfaces.
10527
10528 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
10529
10530         * tramp-ppc.c: update trampoline code to support jumps
10531         and class initialization.
10532
10533 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
10534
10535         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
10536
10537         * inssel.brg (OP_UNBOXCAST): Fix #46027.
10538
10539         * inssel.brg (OP_UNBOX): Remove unused rule.
10540
10541         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
10542         region instead of one for each method. Fixes #47813.
10543
10544 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
10545
10546         * exceptions.cs (test_0_nested_finally): New regression test for
10547         nested exception handlers.
10548
10549         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
10550
10551         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
10552
10553         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
10554         inlining.
10555
10556         * mini.c (mono_method_check_inlining): Make the inlining limit 
10557         configurable by an environment variable.
10558         
10559         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
10560
10561         * mini.h: Bump AOT file version.
10562
10563         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
10564         token, store the image along with the token, since the token might not 
10565         refer to the same image as the method containing the relocation, 
10566         because of inlining.
10567
10568 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
10569
10570         * mini.c (mono_precompile_assemblies): New function to compile
10571         all methods in all loaded assemblies.
10572
10573         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
10574
10575         * regalloc.h regalloc.c (MonoRegState): Change the type of 
10576         iassign and fassign to int*, since they can contain large negative
10577         values if the register is spilled. Also added some comments. Fixes
10578         #45817.
10579
10580         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
10581         under Win32. Fixes #42964.
10582
10583 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
10584
10585         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
10586
10587         * aot.c: Added support for AOT compiling methods which contain calls
10588         to wrappers. Currently, only remoting-invoke-with-check wrappers are
10589         handled.
10590         
10591         * driver.c (compile_all_methods): Run the compilation in a thread
10592         managed by mono. Fixes #44023.
10593
10594         * mini.c (mono_codegen): Print full method name in verbose output.
10595
10596         * mini-x86.c (mono_arch_patch_code): Fix warning.
10597         
10598         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
10599         jumps, since the method we are jumping to might be domain-specific.
10600
10601         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
10602
10603 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
10604
10605         * inssel.brg: string chars are unsigned.
10606
10607 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
10608
10609         * TODO: New todo item.
10610
10611         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
10612         which calls mono_runtime_class_init and patches the call site to
10613         avoid further calls.
10614         (mono_arch_create_class_init_trampoline): New arch specific function 
10615         to create a class init trampoline.
10616         (create_trampoline_code): Generalized so it can create
10617         class init trampolines as well.
10618
10619         * mini.c (helper_sig_class_init_trampoline): New helper variable.
10620         (mono_create_class_init_trampoline): New function to create and cache
10621         class init trampolines.
10622         (mono_find_class_init_trampoline_by_addr): New function to lookup the
10623         vtable given the address of a class init trampoline. Used by the
10624         patching process.
10625         (mono_codegen): Generate a call to a trampoline instead of
10626         mono_runtime_class_init in LDSFLD[A].
10627         (mono_codegen): Add relocations for the new trampoline.
10628         
10629         * mini.h mini-x86.c aot.c: Added a new relocation type: 
10630         MONO_PATCH_INFO_CLASS_INIT.
10631
10632         * mini.h: Bump AOT version number.
10633
10634         * aot.c: Create a copy of the loaded code instead of using the original
10635         so methods which call each other will be close in memory, improving
10636         cache behaviour.
10637         
10638         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
10639         patch since it breaks the regression tests.
10640         
10641         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
10642         for the register saving instruction sequence since the 
10643         frame_state_for function in glibc 2.3.2 don't seem to detect it.
10644
10645 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
10646
10647         * TODO: Fix todo item && remove another.
10648
10649 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
10650
10651         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
10652         previous checkin.
10653
10654         * aot.c: Moved the check for MONO_LASTAOT into the initialization
10655         function of the module.
10656
10657         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
10658         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
10659         --no-aot command line option.
10660
10661 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
10662
10663         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
10664         by Bernie Solomon (bernard@ugsolutions.com).
10665
10666         * inssel.brg: Refactor the interface offset table related code into
10667         its separate functions and add support for the AOT case.
10668
10669 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
10670
10671         * aot.c (mono_aot_get_method_inner): Fix memory leak.
10672         
10673         * aot.c: Added mono_aot_verbose variable and made all debugging
10674         output depend on the value of this variable.
10675
10676         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
10677         method_label and info_label.
10678
10679         * mini.h mini-x86.c aot.c: Added a new relocation type 
10680         MONO_PATCH_INFO_IID for klass->interface_id.
10681
10682         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
10683         the MonoJitInfo structure.
10684
10685         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
10686         a non-root appdomain in shared mode.
10687
10688 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
10689
10690         * aot.c: make aot loader less verbose. Remove free of unused variable.
10691
10692 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
10693
10694         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
10695
10696         * .cvsignore: Added *.dll.
10697
10698         * mini.c (mono_print_tree_nl): New function callable while debugging.
10699
10700         * mini.c (mono_print_code): Export this.
10701
10702         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
10703         patched code.
10704
10705 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
10706
10707         * mini.h (MonoCompile): Added 'jit_info' field.
10708
10709         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
10710         the cfg structure, since it is needed by the AOT compiler.
10711
10712         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
10713
10714         * aot.c: A major rewrite. Changes include:
10715         - save exception tables for methods which have them.
10716         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
10717         to g_module_symbol.
10718         - reworked the file format so it is now much smaller and needs
10719         fewer relocation entries.
10720         
10721 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
10722
10723         * aot.c (load_aot_module): Fix build bustage on platforms without
10724         Boehm GC.
10725
10726 2003-09-04  Martin Baulig  <martin@ximian.com>
10727
10728         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
10729
10730 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
10731
10732         * TODO: Some new optimization ideas.
10733
10734         * aot.c: Move AOT module loading logic here from mono_assembly_open.
10735
10736         * aot.c: Save the optimization flags used to compile the code into
10737         the AOT module.
10738
10739         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
10740         support emitting domain specific code.
10741         
10742         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
10743         no longer domain neutral. It can be made domain neutral by compiling 
10744         with --optimize=shared.
10745
10746         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
10747         between appdomains.
10748
10749         * driver.c mini.h mini.c: New --no-aot debugging option which disables
10750         loading of AOT code.
10751
10752         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
10753         
10754         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
10755         if there is no domain neutrality information.
10756
10757 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
10758
10759         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
10760         format version into the generated library.
10761
10762         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
10763         callee method into the caller since one of them could be shared.
10764
10765         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
10766         system exceptions from AOT code now works.
10767
10768         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
10769         method if it is domain neutral and the callee is not.
10770
10771         * graph.c (cfg_emit_one_loop_level): Fix warning.
10772
10773 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
10774
10775         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
10776         last checkin.
10777
10778 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
10779
10780         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
10781         is needed  by code which is executed before mono_runtime_init ().
10782         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
10783         
10784         * mini.c (mono_thread_abort): Fix warning.
10785         (mono_jit_compile_method): Call static constructor in the AOT case too.
10786
10787         * aot.c (mono_compile_assembly): Fix warning.
10788
10789 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
10790
10791         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
10792
10793 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
10794
10795         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
10796
10797         * cpu-pentium.md: Fix the length of call opcodes so they include the
10798         ESP restoring instruction. Fixes #47968.
10799
10800 2003-08-28  Martin Baulig  <martin@ximian.com>
10801
10802         * mini-x86.c (mono_arch_call_opcode): Added support for
10803         MONO_TYPE_GENERICINST.
10804
10805         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
10806
10807 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
10808
10809         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
10810         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
10811
10812         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
10813         metadata_section.
10814
10815 2003-08-26  Martin Baulig  <martin@ximian.com>
10816
10817         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
10818         when reporting an error, set this to the actual error location.
10819         (mono_method_to_ir): Report the correct error location if
10820         get_basic_blocks() returned an error.
10821
10822 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
10823
10824         * mini.c (mono_type_blittable): OBJECT is not blittable.
10825         (mono_method_blittable): Methods which have marshalling descriptors
10826         are not blittable either. Fixes #47842.
10827
10828 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
10829
10830         * driver.c mini.c: Use an environment variable instead of a global 
10831         variable. Also fix the build.
10832
10833         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
10834         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
10835         reporting this. 
10836
10837         * driver.c mini.c: Added --with-valgrind option to turn off some
10838         code which prevents mono from running under valgrind.
10839
10840         * mini.c (mono_emit_call_args): Fixed warning.
10841
10842         * mini.c (mono_emulate_opcode): Fixed warning.
10843
10844 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
10845
10846         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
10847         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
10848         regalloc.c, regalloc.h: specify available registers in arch-specific
10849         code and support floats in the regallocator (patch by Laurent Morichetti 
10850         <l_m@pacbell.net>)
10851
10852 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
10853
10854         * mini.c: mono_thread_current() can be called only after
10855         mono_runtime_init(): rearrange code to not call it early on.
10856
10857 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
10858
10859         * mini.c: allocate jump tables in the code mempools.
10860
10861 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
10862
10863         * mini.c, mini.h: make sure per-thread data allocated by the jit is
10864         freed.
10865
10866 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
10867
10868         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
10869         12 to 16.  This fixes bug #47453.
10870
10871
10872 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
10873
10874         * mini-ppc.c: fixed indexed load and unsigned compares.
10875
10876 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
10877
10878         * mini.c: reenabled installation of handler for
10879           thread abort signal.
10880
10881 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
10882
10883         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
10884         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
10885         until it's fixed and actually useful.
10886
10887 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
10888
10889         * inssel-long32.brg: couple more opcodes implemented.
10890
10891 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
10892         
10893         * mini-sparc.c: Even more opcodes implemeted.
10894
10895 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
10896
10897         * mini-sparc.c: More opcodes implemented.
10898
10899 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
10900
10901         * mini-sparc.c: More opcodes implemented.
10902
10903 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
10904
10905         * inssel-sparc.brg: Add some needed rules.  Direct
10906         copy from PPC.
10907         * Makefile.am: Use inssel-sparc.brg
10908         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
10909         an assert happy for now.
10910
10911 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
10912
10913         * mini-sparc.c: Fixed compile errors.
10914         * exceptions-sparc.c: Same.  We now produce a mono binary 
10915         on sparc-linux.  Yea.
10916
10917 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
10918
10919         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
10920         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
10921         They compile, but do not work.
10922
10923 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10924
10925         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
10926         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
10927         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
10928         (ct@gentoo.org).
10929
10930 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
10931
10932         * mini.c: more opcodes implemented and better support for generics.
10933
10934 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
10935
10936         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
10937         * mini.c, mini.h: first cut at generics support: some new instructions 
10938         added and changed the behaviour of some of the existing ones.
10939
10940 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
10941
10942         * mini.c: Removed definition of metadata_shared mutex here.
10943
10944 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
10945
10946         * mini-x86.c: make vararg calls work for instance methods.
10947
10948 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
10949
10950         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
10951         returns the arguments in a separte list, now.
10952
10953 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
10954
10955         * aot.c, mini.c: updates for array type representation changes.
10956
10957 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
10958
10959         * mini.c: register function to perform jit shutdown.
10960
10961 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
10962
10963         * mini.c: use a faster allocator if possible.
10964
10965 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
10966
10967         * aot.c: some cleanups and portability changes.
10968
10969 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
10970
10971         * mini.c: use faster allocation for CEE_BOX if possible.
10972
10973 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
10974
10975         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
10976         Moved inlined mempcy code to its own function so that is can be
10977         reused. Added an inline memset function as well (optimized initobj).
10978         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
10979
10980 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
10981
10982         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
10983
10984 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
10985
10986         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
10987         arch code can setup the cpu for CLR execution, if needed.
10988         We use it on x86 to set the precision of FP operations.
10989
10990 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
10991
10992         * mini.c: disable some optimizations if we can guess they'll cost too
10993         much for a given method.
10994
10995 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
10996
10997         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
10998         
10999 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
11000         * mini.h mini.c mini-x86.c: Added instruction level coverage 
11001         info collection support.
11002
11003 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
11004
11005         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
11006         is now implemented in the profiling API. Get rid of a couple of
11007         unnecessary global variables.
11008
11009 2003-06-15  Nick Drochak <ndrochak@gol.com>
11010
11011         * basic-long.cs: tests for negative values for bigmul, and unsigned.
11012         * cpu-g4.md: add op_bigmul and op_bigmul_un
11013         * cpu_pentium.md: add op_bigmul_un
11014         * inssel-long32.brg: add rule for unsigned bigmul
11015         * mini-ops.h: define OP_BIGMUL_UN
11016         * mini-x86.c: THE BUG: handle (un)signed properly
11017         * mini.c: choose unsigned opcode if needed.
11018         This set of patches fixes bug #44291
11019
11020 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
11021
11022         * mini.c (optimize_branches): improved to handle all kinds of
11023         conditional branches.
11024
11025 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
11026
11027         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
11028         don't raise exceptions.
11029
11030 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
11031
11032         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
11033         to arch-specific files.
11034
11035 2003-06-09  Martin Baulig  <martin@ximian.com>
11036
11037         * Makefile.am (libs): Added $(LIBGC_LIBS).
11038
11039 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
11040
11041         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
11042         and OP_ATAN (fixes bug#44293).
11043
11044 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
11045
11046         * Makefile.am, mini-x86.c: rename cpu description array to
11047         pentium_desc, since some compilers define the 'pentium' preprocessor
11048         symbol.
11049
11050 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
11051
11052         * mini.c (mini_select_instructions): add explicit branch if the
11053         following block is not the false target of a conditional branch -
11054         we need this with any optimization that reorder or remove bblocks
11055
11056         * mini.c (optimize_branches): bug fixes
11057
11058 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
11059
11060         * mini.c (mono_method_to_ir): inline static readonly fields
11061
11062         * ssa.c (fold_tree): start cfold support for long (very simple
11063         cases only)
11064
11065         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
11066
11067 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
11068
11069         * inssel.brg: fixed memcpy (bug #44219).
11070
11071 2003-06-05  Dick Porter  <dick@ximian.com>
11072
11073         * driver.c: Set the glib log levels to not abort if g_message
11074         recurses.
11075
11076         g_set_prgname() has to happen before mini_init() so that the
11077         process handle gets the info.
11078         
11079 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
11080
11081         * driver.c: add intrins to the default optimizations to get wider
11082         exposure.
11083
11084 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
11085
11086         * mini.h: some large basic blocks will overflow a 16-bit
11087         integers for symbolic registers.
11088
11089 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
11090
11091         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
11092         (mono_arch_output_basic_block): fix bug 43499 
11093
11094 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
11095
11096         * mini.c: kill duplicated definition of mono_debug_format.
11097
11098 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
11099
11100         * mini-x86.c, arrays.cs: fixed register allocation bug.
11101
11102 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
11103
11104         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
11105
11106         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
11107
11108 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11109
11110         * mini.c:
11111         (print_method_from_ip): also print source location information if
11112         available.
11113
11114 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
11115
11116         * mini.c (mono_find_block_region): bug fix in region code
11117         (mini_method_compile): enable removing unreachable code again, but
11118         only in methods without exception clauses.
11119
11120 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
11121
11122         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
11123         Implemented arglist opcode and handling of TypedReference type.
11124         Fixed x86 call convention when a structure is returned.
11125         Minimal support for calling static vararg methods.
11126
11127 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
11128
11129         * mini.c (mini_method_compile):  always remove unreachable code,
11130         because the code in them may be inconsistent  (access to dead
11131         variables for example).
11132
11133 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
11134
11135         * driver.c, debug-mini.c: warning fixes.
11136
11137 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
11138
11139         * Makefile.am, jit.h, mini.h: install header for embedding mono.
11140
11141 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
11142
11143         * mini.c: thread-static fields are registered in mono_class_vtable(),
11144         so ensure the function is called before checking for them.
11145
11146 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
11147
11148         * mini.c (optimize_branches): fix for bug 43586
11149
11150         * jit-icalls.c (mono_llmult_ovf): added an additional check for
11151         overflow (fixes Bug #43639)
11152
11153 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11154
11155         * mini.c, objects.cs: allow the use of stobj for primitive types.
11156
11157 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11158
11159         * mini.c: be less strict about argument checking until we support
11160         running the verifier.
11161
11162 2003-05-27  Nick Drochak <ndrochak@gol.com>
11163
11164         * basic-long.cs: tests for (ulong)int * (ulong)int also
11165         * mini.c: use the same trick for (ulong)int * (ulong)int
11166
11167 2003-05-27  Nick Drochak <ndrochak@gol.com>
11168
11169         * basic-long.cs: add regression test for (long)int * (long)int
11170         * cpu-pentium.md: add op_bigmul specification
11171         * inssel-long32.brg: add OP_BIGMUL rule
11172         * mini-ops.h: add OP_BIGMUL
11173         * mini-x86.c: register allocator: handle case where src1 needs to be
11174         in EAX.
11175         * mini.c: substitute special BIGMUL opcode in the tree for 
11176         (long)int * (long)int
11177
11178 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
11179
11180         * jit-icalls.c: call the type ctor on field access if needed.
11181
11182 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
11183
11184         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
11185         to a method (including results of ldelema, bug#43207).
11186
11187 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
11188
11189         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
11190         colors to show exception handler blocks.
11191
11192         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
11193         (fix for pinvoke7.cs).
11194
11195 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11196
11197         * mini.h, mini.c: ensure correct initialization order for types that
11198         require it. Prepare for lazy compilation of jit icall wrappers.
11199         Provide a name for opcode emulation to reduce unneeded mallocing.
11200
11201 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
11202
11203         * mini-x86.c: better register restoring code and profiling
11204         support for tail calls.
11205
11206 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
11207
11208         * mini.h, driver.c: prepare for leaf methods optimization.
11209
11210 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
11211
11212         * mini.c: get targets of branches before converting a method.
11213
11214 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
11215
11216         * mini.c (optimize_branches): added some experimental code (disbaled) 
11217
11218 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
11219
11220         * mini.c (optimize_branches): fix branch to branch optimization 
11221
11222         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
11223
11224         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
11225
11226         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
11227
11228         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
11229         if needed.
11230
11231 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
11232
11233         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
11234         enable use of interface variables again.
11235
11236         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
11237         I1 to registers because there is no simply way to sign extend 8bit
11238         quantities in caller saved registers on x86.
11239
11240         * inssel-float.brg: set costs of some rules to 2 so
11241         that monobure always select the arch. specific ones if supplied,
11242         regardless of the order we pass the files to monoburg.
11243
11244 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
11245
11246         * mini.c, mini-x86.c: since the magic trampoline for jumps
11247         can't patch the code directly, we do it as soon as the
11248         method gets compiled.
11249
11250 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
11251
11252         * mini-x86.c, mini.h: introduce a new patching method
11253         to support CEE_JMP and tail calls.
11254         * mini.c: obey tail.call. Don't precompile methods target
11255         of CEE_JMP.
11256         * tramp-x86.c: new trampoline code to handle methods
11257         reached through a jump.
11258
11259 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
11260
11261         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
11262         bit values to registers
11263
11264 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
11265
11266         * mini.c (mono_compile_get_interface_var): share interface
11267         variables if possible.
11268
11269 2003-05-16  Martin Baulig  <martin@ximian.com>
11270
11271         * debug-mini.c (mono_init_debugger): New function to initialize
11272         the debugger.  This is not in the debugger since it needs to
11273         access some of mini's internals.
11274
11275 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
11276
11277         * mini.c (mono_method_to_ir): inlining fixes/cleanups
11278
11279 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
11280
11281         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
11282         for value type handling.
11283
11284 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
11285
11286         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
11287         (mono_method_check_inlining): enable inlining of all kinds of wrappers
11288
11289 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
11290
11291         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
11292           the constructor through a proxy.
11293
11294 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
11295
11296         * jit-icalls.c, inssel.brg: fixes to array element address
11297         calculations.
11298
11299 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
11300
11301         * mini-x86.c (is_regsize_var): allocate pointer to registers
11302
11303 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
11304
11305         * driver.c: fixed typo, added intrins to the set of optimizations
11306         tested with regressions.
11307
11308 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
11309
11310         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
11311         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
11312         test case.
11313
11314 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
11315
11316         * inssel.brg: remove some common pop instructions without side effects
11317
11318 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
11319
11320         * inssel-x86.brg: fixed thinko in int to double conversions.
11321
11322 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
11323
11324         * mini.c, jit-icalls.c: added runtime thread-static variable support.
11325
11326 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
11327
11328         * inssel-long32.brg: two more missing instructions.
11329
11330 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
11331
11332         * mini.c (mono_emit_call_args): set the cil_code for all arguments
11333         if not already set.
11334
11335 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
11336
11337         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
11338         correctly.
11339
11340         * basic-float.cs: Added tests for negative zero.
11341
11342 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
11343
11344         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
11345         a couple of missing operations for long casts, with test cases.
11346
11347 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11348
11349         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
11350
11351 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
11352
11353         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
11354         code size estimation.
11355
11356 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
11357
11358         * mini.c (mono_jit_create_remoting_trampoline): make it work with
11359         abstract methods (fix bug 42542)
11360
11361         * aot.c: add ability to handle array types
11362         
11363 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
11364
11365         * mini.c: Call the _specific versions of the object allocation
11366         functions if possible.
11367
11368 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
11369
11370         * driver.c: call setlocale ().
11371
11372 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
11373
11374         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
11375         windows build.
11376
11377 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
11378
11379         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
11380
11381         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
11382         wrappers (fix bug 42122)
11383
11384 2003-05-04  Martin Baulig  <martin@ximian.com>
11385
11386         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
11387
11388         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
11389         s/mini_set_defaults/mono_set_defaults/g.
11390
11391 2003-05-04  Martin Baulig  <martin@ximian.com>
11392
11393         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
11394
11395 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
11396
11397         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
11398         (reported by Don Roberts).
11399
11400 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
11401
11402         * mini.c: temporarily work around two bugs for this release.
11403
11404 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
11405
11406         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
11407         that contains -export-dynamic and it makes using the ld script
11408         useless.
11409         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
11410
11411 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
11412
11413         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
11414         specific cpu.
11415
11416 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
11417
11418         * mini.c: make sure leave calls all the needed finally blocks,
11419         even when the target jumps out of multiple exception clauses.
11420
11421 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
11422
11423         * ldscript, Makefile.am: add linker script to reduce the number of
11424         exported symbols (should also fix the issues with libwine defining
11425         some of the same symbols in io-layer).
11426
11427 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
11428
11429         * driver.c (mini_main): Avoid assertion when no file name is given on 
11430         the command line.
11431
11432 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
11433
11434         * driver.c: added --version/-V command line option.
11435         Added the inline optimization in the regression tests.
11436
11437 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
11438
11439         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
11440         to the type in the method signature (fixes bug#42134).
11441
11442 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
11443
11444         * mini.c: when inlining, check this is not null only when needed (bug #42135).
11445
11446 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
11447
11448         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
11449
11450 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11451
11452         * driver.c: fixed bug #42100.
11453
11454 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
11455
11456         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
11457
11458 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
11459
11460         * mini.c: moved most of the code required to do inlining to its own
11461         function so it can be reused. Inline also ctors if appropriate.
11462
11463 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
11464
11465         * Makefile.am: Link with -export-dynamic so shared libs loaded by
11466         the runtime can call mono API functions.
11467
11468 2003-04-27  Martin Baulig  <martin@ximian.com>
11469
11470         * debug-mini.c (mono_debug_init_method): Added
11471         `guint32 breakpoint_id' argument; if the method has a breakpoint,
11472         send a notification to the debugger.
11473
11474         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
11475         running in the Mono Debugger, just pass the breakpoint number to
11476         mono_debug_init_method().
11477
11478         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
11479
11480 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
11481
11482         * mini.c: allow some more unsafe compares.
11483
11484 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
11485
11486         * mini-x86.c, Makefile.am: make distcheck works (partially from
11487         a patch by Richard Lee <r.h.lee@attbi.com>).
11488         * regset.c, regset.h: removed, they are unused.
11489
11490 2003-04-25  Dick Porter  <dick@ximian.com>
11491
11492         * driver.c: Usage reports the name as 'mono' not 'mini'
11493         * exceptions-x86.c: Build and run on freebsd
11494
11495 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
11496
11497         * Makefile.am: install the program with the 'mono' name and
11498         the library as libmono instead of mini and libmini.
11499
11500 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
11501
11502         * driver.c: provide the APIs for the embedding interface of the old jit.
11503
11504 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
11505
11506         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
11507
11508 2003-04-23  Martin Baulig  <martin@ximian.com>
11509
11510         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
11511
11512         * driver.c: Added `--debug' command line argument to enable
11513         debugging support.
11514
11515 2003-04-23  Martin Baulig  <martin@ximian.com>
11516
11517         * debug.[ch]: Removed.  The code is now in
11518         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
11519
11520         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
11521         last six months.
11522
11523 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
11524
11525         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
11526
11527 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
11528
11529         * mini.c:
11530         (mini_cleanup): moved mono_runtime_cleanup call after the call to
11531         mono_domain_finalize.
11532         (mini_method_compile): use mono_method_profile* if the the option is
11533         enabled.
11534
11535 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
11536
11537         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
11538         methods with their wrapper.
11539
11540         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
11541         methods with their wrapper.
11542
11543         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
11544         their wrapper.
11545
11546         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
11547         wrapper.
11548
11549         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
11550         methods.
11551
11552 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
11553
11554         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
11555
11556 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
11557
11558         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
11559         of the mempool. This is slightly faster and uses less memory
11560
11561 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
11562
11563         * mini.c: avoid O(n) allocation for variables.
11564
11565 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
11566
11567         * mini.c: handle items on the stack after inlining methods.
11568
11569 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
11570
11571         * mini.c: make the method->opcode optimization dependent
11572         on MONO_OPT_INSTRINS and do it lazily.
11573
11574 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
11575
11576         * driver.c: print overall results at the end of regression run.
11577
11578 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
11579
11580         * inssel.brg: don't overwrite symbolic registers.
11581
11582 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
11583
11584         * inssel-x86.brg: fix conversion from long to float.
11585
11586 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
11587
11588         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
11589
11590 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
11591
11592         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
11593
11594         * driver.c: Added --print-vtable option as in the old JIT.
11595
11596 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
11597
11598         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
11599
11600 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
11601
11602         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
11603
11604 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
11605
11606         * mini.c regalloc.c regalloc.h: Fix memory leak.
11607
11608 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
11609
11610         * aot.c (mono_aot_get_method): register all used strings
11611
11612 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
11613
11614         * mini.c: always intern strings references with ldstr at compile time.
11615
11616 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
11617
11618         * Makefile.am: add BUILT_SOURCES.
11619
11620 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
11621
11622         * driver.c: give a better error message when the assembly to execute
11623         doesn't have an entry point.
11624
11625 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
11626
11627         * Makefile.am: added hack for automake
11628
11629         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
11630         correct sematics.
11631
11632         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
11633
11634 22003-04-07  Martin Baulig  <martin@ximian.com>
11635
11636         * Makefile.am: Added Makefile.am.
11637
11638         * debugger-main.c: Removed, this is now in the debugger where it
11639         belongs.
11640
11641         * mini.pc.in: Call this package `mini' for the moment.
11642
11643
11644
11645
11646
11647
11648
11649