2009-10-10 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
2
3         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
4         gdb mode.
5
6 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
7
8         * driver.c (parse_debug_options): Add a 'gdb' option.
9
10         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
11
12         * image-writer.c: Add support for emitting the image into a memory buffer.
13
14         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
15
16         * aot-compiler.c: Add support for registering debug info with GDB using the
17         new JIT debugging interface in GDB 7.0. It can be turned on by setting
18         MONO_XDEBUG to 'gdb'.
19
20 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
21
22         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
23         each instance of Comparer<T>.
24
25         * generics.cs: Add a new test.
26
27 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
28
29         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
30         when using full-aot.
31
32 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
33
34         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
35         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
36         a variable to hold the stack slot used by the int<->float conversion opcodes.
37
38         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
39
40 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
41
42         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
43         mono_runtime_capture_context () without calling mono_runtime_invoke ().
44         (can_marshal_struct): Skip structures with auto layout.
45
46         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
47
48 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
49
50         * mini-sparc.c: Fix the handling of enums with base type long.
51
52         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
53
54         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
55         instead of using type->data.klass as the later doesn't work with generics.
56
57 2009-09-25  Mark Probst  <mark.probst@gmail.com>
58
59         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
60         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
61         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
62         works differently now and we don't handle it in the JIT anymore.
63
64         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
65         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
66         the Thread class split.
67
68 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
69
70         * driver.c: Don't run tests with the obsolete treeprop optimization.
71
72         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
73         variable volatile. Fixes #541577.
74
75         * basic-calls.cs: Add a new test.
76
77         * basic-long.cs: Remove tests which are now in basic-calls.cs.
78
79 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
80
81         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
82         work/required with recent iphone sdk versions.
83
84         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
85         structures.
86
87         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
88         in the VCALL decomposition code.
89
90 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
91
92         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
93
94         * basic.cs: Add a test.
95
96         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
97         generic invokes.
98
99         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
100         searches all the domains of the current thread.
101
102         * exceptions-<ARCH>.c: Use it. Fixes #539394.
103
104 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
105
106         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
107         so catching exceptions thrown in the same method works. Fixes exception17.exe.
108
109         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
110         for non-jit trampolines.
111
112         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
113
114         * aot-compiler.c (add_wrappers): Ditto.
115
116         * mini-arm.c: Implement support for passing vtypes and floats, and increase
117         the size of the param area used by dyn_call to 6 which covers the majority of
118         methods.
119
120         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
121
122         * mini-arm.c: Implement support for passing/receiving
123         longs and receiving floats in the dyn_call code.
124
125         * mini-amd64.c: Implement support for receiving vtypes in registers in
126         the dyn_call code.
127
128         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
129         the dyn_call code.
130
131 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
132
133         * mini-arm.c (get_call_info): Return more precise information in
134         ArgInfo->regtype.
135         (dyn_call_supported): Use the information in CallInfo.
136
137         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
138
139         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
140         code.
141
142         * mini-arm.c: Update after the dyn_call api changes.
143
144         * mini.c (mini_create_jit_domain_info): Register a destructor function
145         for the runtime_invoke_hash.
146
147         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
148         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
149         this function.
150         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
151         (dyn_call_supported): Simplify this by using get_call_info ().
152         (mono_arch_dyn_call_free): New destructor function.
153
154         * generics.cs: Remove a printf.
155
156         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
157
158         * mini-arm.c: Add support for enum return values and passing a few arguments
159         on the stack.
160         
161         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
162         dyn invoke.
163
164         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
165
166         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
167         the dynamic invoke wrappers.
168
169         * mini-arm.c: Implement OP_DYN_CALL for arm.
170
171         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
172         supported by the dynamic runtime invoke wrapper.
173
174         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
175         runtime invoke wrapper.
176
177         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
178         if possible when running with full-aot.
179
180         * mini-ops.h: Add OP_DYN_CALL opcode.
181
182         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
183         with dynamic arguments lists similar to libffi.
184
185 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
186
187         * method-to-ir.c: Fix the previous change on 64 bit platforms.
188         
189         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
190         to NEWARR.
191
192         * iltests.il.in: Add a new test.
193         
194 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
195
196         * aot-compiler.c (add_generic_instances): Add more instances of
197         GenericEqualityComparer.
198
199 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
200
201         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
202
203 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
204
205         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
206         comments on some functions that now can fail.
207
208 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
209
210         * Makefile.am: Add Info.plist to EXTRA_DIST
211
212 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
213
214         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
215         static synchronized wrappers. Fixes #539500.
216
217 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
218
219         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
220         properly.
221
222 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
223
224         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
225         lmf before calling filter clauses as well. Fixes #539550.
226
227         * exceptions.cs: Add a test.
228         
229 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
230
231         * aot-compiler.c (add_generic_class): Add instances of
232         Array.GetGenericValueImpl as well.
233
234         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
235         can be tested too.
236
237         * generics.cs: Add a fullaot linq test.
238
239 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
240
241         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
242         reg r1 on arm.
243
244 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
245
246         * mini-trampolines.c (mono_delegate_trampoline) : Call
247           mono_cominterop_get_invoke if the delegate target object
248           is a COM object.
249
250         Code is contributed under MIT/X11 license.
251
252 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
253
254         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
255         internal call is defined outside platform code. Reduce code 
256         duplication with existing [Method|Field]AccessException
257
258 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
259
260         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
261         if the return value is a small struct passed on regs.
262
263 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
264
265         * cpu-arm.md mini-arm.c: Remove unused opcodes.
266
267         * mini-codegen.c: Enable the cpu description validation for arm.
268
269 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
270
271         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
272         test which depends on structs to objects.cs.
273         
274         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
275         require object model related stuff working.
276
277         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
278
279         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
280
281         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
282         against the instruction metadata in mini-ops.h. amd64 only for now.
283
284         * mini-ops.h: Fix some instruction descriptions.
285
286         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
287         unused instructions.
288
289 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
290
291         * exceptions.cs: Add a new test.
292
293 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
294
295         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
296
297 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
298
299         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
300         skip empty phi opcodes.
301         
302         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
303         correctly by zero extending after loads. Skip methods containing calls
304         to the monitor enter/exit trampolines.
305
306         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
307         when calling mono_thread_force_interruption_checkpoint ().
308
309         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
310
311         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
312         64 bit thunks.
313         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
314
315         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
316         bootstrap could run.
317
318 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
319
320         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
321
322 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
323
324         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
325         of the method to
326         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
327         LLVM might be very short.
328
329         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
330         in OP_THROW/RETHROW.
331
332         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
333         alignment on osx.
334
335 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
336
337         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
338         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
339         LLVM might be very short.
340
341 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
342
343         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
344         the alignment for the value of sp.
345
346 2009-09-01  Geoff Norton  <gnorton@novell.com>
347
348         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
349         managed wrappers in full aot.
350
351 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
352
353         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
354
355 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
356
357         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
358
359 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
360
361         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
362
363         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
364         saved info.
365
366         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
367
368         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
369         depend on the info MonoMethodHeader which could be missing in IL stripped
370         assemblies.
371
372 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
373
374         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
375         they are only 4 byte aligned.
376
377 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
378
379         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
380         was done previously, since using SP causes too many problems.
381
382         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
383         frames without a frame pointer works.
384
385         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
386         global register in methods with calls, since the calls can go through
387         a static rgctx trampoline which doesn't save it.
388
389 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
390
391         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
392
393 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
394
395         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
396
397 2009-08-18  Christian Hergert  <chris@dronelabs.com>
398
399         * method-to-ir.c: Fix warnings for uninitialized variables.
400
401 2009-08-18  Christian Hergert  <chris@dronelabs.com>
402
403         * mini-exceptions.c:
404         * aot-compiler.c: Fix printf warnings.
405
406 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
407
408         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
409         Add GetGenericValueImpl<string>.
410         
411         * aot-compiler.c (add_generic_instances): Add instances of
412         GenericEqualityComparer<T> for primitive types. Only emit the array
413         wrappers into the mscorlib image.
414
415 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
416
417         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
418         the methods_loaded array using amodule->info->nmethods.
419
420         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
421         (MONO_AOT_FILE_VERSION): Bump this.
422
423         * aot-compiler.c: Emit more generic instances allowing some parts of linq
424         to work.
425
426         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
427         MonoJitInfo doesn't belong to its methods aot image.
428
429 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
430
431         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
432
433         * mini-arm.c: Fix warnings.
434         
435         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
436
437         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
438         supports it.
439
440 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
441
442         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
443         avoid clobbering IP.
444
445         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
446         hold the trampoline argument, so its initial value is available during
447         debugging.
448
449 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
450
451         * exceptions-arm.c:
452         * exceptions-hppa.c:
453         * mini.c:
454         * exceptions-s390x.c:
455         * exceptions-mips.c:
456         * exceptions-ppc.c:
457         * exceptions-sparc.c:
458         * exceptions-alpha.c:
459         * aot-runtime.c:
460         * mini-trampolines.c:
461         * exceptions-x86.c:
462         * exceptions-s390.c: add and use #define's instead of sizeof()
463         for MonoJitInfo and MonoJitInfoTable.
464
465 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
466
467         * tramp-arm.c:
468         * tramp-amd64.c:
469         * tramp-ppc.c:
470         * tramp-x86.c: use a #define instead of sizeof() for a few
471         structures that use a zero-length array.
472
473 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
474
475         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
476         case when the method is dynamic. Fixes #529238.
477
478 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
479
480         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
481         of asserting when a method is JIT compiled in full-aot mode.
482
483 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
484         
485         Contributed under the terms of the MIT/X11 license by
486         Jerry Maine <crashfourit@gail.com>.
487         
488         * fixed wrong dates in changelog.
489
490 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
491         
492         Contributed under the terms of the MIT/X11 license by
493         Jerry Maine <crashfourit@gail.com>.
494
495         * basic-simd.cs: added test for packed double square root.
496         * cpu-amd64.md: added opcode info for packed double square root.
497         * cpu-x86.md: added opcode info for packed double square root.
498         * mini-ops.h: added IR opcode for packed double square root.
499         * mini-x86.c: added IR to native translation code for packed double square root.
500         * mini-amd64.c: removed todo for packed double square root.
501         * simd-intrinsics.c: added method to IR opcode converstion for
502         packed double square root.
503
504 2009-08-03 Jerry Maine <crashfourit@gmail.com>
505
506         Contributed under the terms of the MIT/X11 license by
507         Jerry Maine <crashfourit@gail.com>.
508
509         * mini-amd64.c: Added a change to help tell the difference as 
510         to what perpose the xmm register is being used--mainly to help
511         with debuging.
512         * mini-amd64.h: Changed callee regs to use 15 out of 16 
513         (one used for special cases) xmm registers for both fp
514         and simd ops. Added define to turn on new feature in the regalloc
515         that allows fp and simd ops to share the xmm regs happily.
516         * codegen.c: Added code to detect for which perpose an xmm reg is
517         being used (fp or simd) and to translate back and forth to the
518         correct logical reg bank (fp or simd) for 'spill load's.
519
520 2009-08-03 Jerry Maine <crashfourit@gmail.com>
521
522         Contributed under the terms of the MIT/X11 license by
523         Jerry Maine <crashfourit@gail.com>.
524
525         * basic-simd.cs: Added tests for stressing the regalloc when running with
526         16 simd regs and when simd and fp ops share the same reg bank.
527
528 2009-08-01  Mark Probst  <mark.probst@gmail.com>
529
530         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
531         in shared generic code, we might have to look up the class in the
532         RGCTX.  If we use the class directly, compute its GC descriptor.
533
534 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
535
536         * mini.c (mono_jit_runtime_invoke): Fix a warning.
537
538 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
539
540         * mini.c (mono_jit_runtime_invoke): Initialize the class and
541         check for errors. Fixed the case when the class with the Main
542         method is broken.
543
544 2009-07-31 Jerry Maine <crashfourit@gmail.com>
545
546         Contributed under the terms of the MIT/X11 license by
547         Jerry Maine <crashfourit@gail.com>.
548
549         * cpu-amd64.md: Fixed simple bug in machine discrition file.
550
551 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
552
553         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
554
555 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
556
557         * method-to-ir.c: Fix naming of stelem and ldelem.
558
559 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
560
561         * driver.c (main_thread_handler): Check that the assembly loaded
562         matches the filename when doing AOT.
563
564 2009-07-30  Mark Probst  <mark.probst@gmail.com>
565
566         * mini.c: get_ip_from_sigctx installer has been removed, so don't
567         call it anymore.
568
569         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
570         utils/mono-sigcontext.h).
571
572         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
573         #ifdef.
574
575 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
576
577         * mini.c (mono_codegen):
578         Call profiler hook to keep track of method code buffers.
579
580 2009-07-27  Mark Probst  <mark.probst@gmail.com>
581
582         * method-to-ir.c: Invoke write barriers for the
583         Interlocked.(Compare)Exchange JIT intrinsics.
584
585 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
586
587         * Makefile.am (version.h): Fix issues when built out of tree.
588         Remove some redundant 'grep's piped through 'sed's.
589
590 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
591
592         This patch is contributed under the terms of the MIT/X11 license
593
594         * mini-ppc.c (mono_arch_output_basic_block):
595         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
596         for bits 32-47 with signed load/store diplacements for bits
597         48-63.  Use prefered base/offset order for indexed form.
598         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
599         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
600         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
601         OP_LOADI2_MEMBASE): Same.
602         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
603         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
604         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
605         indexed form.
606         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
607         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
608         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
609         OP_LOADI1_MEMINDEX): Same
610         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
611         OP_STORER8_MEMINDEX): Same
612         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
613         computations.
614         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
615         for bits 32-47 with signed load/store diplacements for bits
616         48-63.  Use prefered base/offset order for indexed form.
617
618 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
619
620 This patch is contributed under the terms of the MIT/X11 license
621
622         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
623         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
624         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
625         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
626         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
627         cfg->stack_usage to avoid size warnings.
628         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
629         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
630         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
631         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
632         to convert.
633         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
634         after code varible is initialized.
635         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
636         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
637         (mono_arch_emit_epilog): 
638         Move Use ppc_load32 for cfg->stack_usage to avoid size
639         warnings.
640
641 2009-07-24  Mark Probst  <mark.probst@gmail.com>
642
643         * method-to-ir.c: The write barrier doesn't do the store anymore,
644         so we have always to emit it.  Also, emit the wbarrier after the
645         store.
646
647 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
648
649         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
650         for argument count 3 too.
651
652 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
653
654         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
655         the caller handle the exceptions.
656         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
657         method. Fixes #524498.
658
659 2009-07-22  Geoff Norton  <gnorton@novell.com>
660
661         * mini-exceptions.c: Fix build on ia64.
662
663 2009-07-22  Mark Probst  <mark.probst@gmail.com>
664
665         * mini-exceptions.c (ves_icall_get_frame_info): Use write
666         barriers.
667
668 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
669
670         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
671         code.
672
673 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
674
675         * basic-simd.cs (Main): Pass args to the test driver.
676
677 2009-07-20  Geoff Norton  <gnorton@novell.com>
678
679         * mini-x86.h: Fix the x86 version guards to use Apple's
680         properly defined macros.
681
682 2009-07-20  Geoff Norton  <gnorton@novell.com>
683
684         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
685         aligned access.
686
687 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
688
689         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
690         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
691         the information which is needed for invokes, so only one locking+hash table
692         lookup is needed.
693
694         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
695         
696         * aot-compiler.c (add_generic_instances): Emit instances of 
697         GenericComparer<T> for primitive types.
698
699 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
700
701         * mini-posix.c: Fix linux build.
702
703 2009-07-19  Geoff Norton  <gnorton@novell.com>
704
705         * mini.h: Add prototypes for mono_runtime_syscall_fork and
706         mono_gdb_render_native_backtraces
707         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
708         so we implement the sane semantics to the runtime here
709         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
710         so we need to call it differently (mono_gdb_render_native_backtraces)
711         * mini-posix.c: Move the old semantics from mini.c to the prototypes
712         here for default implementations.
713         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
714         support Apple's weird syscall (SYS_fork) implementation and not busy
715         loop in abort() on native crashes on OSX anymore.
716
717 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
718
719         * aot-runtime.c (load_method): Change the handling of the
720         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
721         are used.
722
723         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
724
725 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
726
727         * mini.c (mono_patch_info_equal): Revert the last change for now as it
728         seems to break the aot tests.
729         
730         * mini.c (mono_patch_info_equal): Fix the handling of 
731         MONO_PATCH_INFO_RGCTX_FETCH.
732
733 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
734
735         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
736
737         * mini.c (mono_patch_info_hash): Fix the handling of 
738         MONO_PATCH_INFO_INTERNAL_METHOD.
739         (mono_patch_info_equal): Ditto.
740
741 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
742
743         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
744         in a few places.
745         
746         * mini-llvm.c: Add some infrastructure for AOT support.
747
748 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
749
750         * mini-llvm-cpp.c: Update to the latest llvm api.
751         
752         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
753         option to false to prevent llvm from installing signal handlers which
754         trip up the gc.
755         
756 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
757
758         * cpu-x86.md:
759         * cpu-amd64.md: Revert previous change as those instructions
760         take 2 separate arguments. Remember to read the arch docs more
761         carefully next time.
762
763 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
764
765         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
766
767 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
768
769         * mini-ppc.c: exploit multiple load/store units if available (rest of
770         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
771         http://bugzilla.novell.com/show_bug.cgi?id=487846).
772
773 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
774
775         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
776         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
777
778 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
779
780         * cpu-x86.md: Fix missing clobbering from trancendental simd
781         ops.
782
783         * cpu-amd64.md: Same.
784
785 2009-07-14 Jerry Maine <crashfourit@gmail.com>
786
787         Contributed under the terms of the MIT/X11 license by
788         Jerry Maine <crashfourit@gail.com>.
789
790         * basic-simd.cs: Added tests for single and doulble indexers.
791
792         * cpu-amd64.md: Added simd opcode information.
793
794         * mini-amd64.c: Added IR to native simd generation code.
795         Added simd register names and function that returns them.
796
797         * mini-amd64.h: Added marcos to turn on simd code compilation in
798         amd64. Added max simd register count marco. Added caller/callee
799         register mask marcos. Added marcos to use simd register bank.
800
801         * mini.h: Added helper marco for shufling dwords and simple
802         floats.
803
804 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
805
806         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
807
808         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
809
810         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
811         the length of the native code as well.
812
813         * basic-simd.cs: Add a test for #521662.
814
815 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
816
817         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
818
819 2009-07-13  Mark Probst  <mark.probst@gmail.com>
820
821         * mini.c: Register function for getting the IP from a signal
822         context with metadata.
823
824 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
825
826         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
827         call a generic class init trampoline if needed. Fixes #519336.
828
829         * generics.cs: Add a test.
830         
831 2009-07-09  Mark Probst  <mark.probst@gmail.com>
832
833         * method-to-ir.c: When doing a call which might be remote from
834         shared generic code to other shared code with open type arguments,
835         get the remoting invoke wrapper from the RGCTX and do an indirect
836         call to it.
837
838 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
839
840         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
841         after the unbox trampoline in the full-aot case.
842
843 2009-07-02  jonas echterhoff <jonas@unity3d.com>
844         
845         * mini.c: Move initialization of jit_mutex before debugger initialization
846         
847         to avoid crashes.
848         
849         
850         * Info.plist: added Info.plist and link flag to enable the mono executable
851         to access other processes. Requires codesigning of the executable to work.
852         
853         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
854         
855         compile on OS X.
856         
857
858 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
859
860         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
861
862 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
863
864         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
865         when the generic instance is an instantiation of a subclass of the
866         methods class. Fixes #517166.
867
868 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
869
870         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
871         code.
872
873         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
874         AOTed code.
875
876         * CMakeLists.txt: Add minimal support for installation.
877
878 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
879
880         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
881         determine whenever a method is directly callable to a separate function.
882
883         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
884         needed ones as a result of the previous change.
885
886         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
887         type of register arrays.
888
889         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
890         type of register arrays.
891
892 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
893         
894         Contributed under the terms of the MIT/X11 license by
895         Jerry Maine <crashfourit@gail.com>.
896
897         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
898
899 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
900
901         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
902
903 2009-06-24  Neale Ferguson <neale@sinenomine.net>
904
905         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
906         dump of structure return value. Fix some formatting.
907         * cpu-s390x.md: Fix lengths of instruction sequences.
908         * mini-s390.c: Minor formatting changes.
909
910 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
911
912         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
913         Use sigaction on freebsd as well.
914
915 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
916
917         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
918         uses #ifdef on it.
919         
920         * mini.c (mini_init): Revert a change which breaks cross-compilation.
921
922 2009-06-22  Mark Probst  <mark.probst@gmail.com>
923
924         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
925
926 2009-06-22  Mark Probst  <mark.probst@gmail.com>
927
928         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
929
930 2009-06-20  Martin Baulig  <martin@ximian.com>
931
932         * debug-mini.c
933         (MonoDebuggerThreadFlags): New enum typedef.
934         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
935         (mono_debugger_thread_created): Added `gpointer func' argument;
936         initialize the new `thread_flags' field.
937
938 2009-06-18  Martin Baulig  <martin@ximian.com>
939
940         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
941         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
942
943         * debug-debugger.c
944         (mini_debugger_set_attach_ok): New function; sets the attach-ok
945         flag in `MONO_DEBUGGER__info.runtime_info'.
946
947         * driver.c
948         (mono_main): Call mini_debugger_set_attach_ok() if generics
949         sharing is disabled.
950
951 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
952
953         * aot-compiler.c (add_wrappers): Fix a warning.
954
955         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
956         the ppc load/store macro changes.
957
958 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
959
960         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
961
962         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
963         not just the got symbol.
964
965         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
966         on ppc.
967
968         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
969         ppc.
970         
971         * aot-compiler.c: Remove some fixmes.
972
973         * driver.c (mono_main): Print a helpful message when cross-compiling.
974
975         * mini.c (mini_init): Disable signal handlers when cross-compiling.
976
977         * method-to-ir.c (initialize_array_data): Do the optimization if the
978         target byte order is little endian, instead of the host byte order.
979
980         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
981         wrappers into the mscorlib image, Emit a unique plt symbol for each
982         image, emit symbols for plt entries.
983
984         * image-writer.c (img_writer_emit_symbol_size): New function to emit
985         a .size directive.
986         
987 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
988
989         * aot-compiler.c (add_wrappers): Avoid calling 
990         mono_marshal_get_type_info () since it can assert for some types.
991
992         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
993         ldtoken are used inside wrappers.
994
995         * helpers.c: Add support for prefixing tools with the arch name.
996
997         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
998         quantities when using ilp32.
999
1000         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
1001         spill slots. Use sizeof(mgreg_t) for the spill slot size.
1002
1003         * image-writer.c: Use .long on ilp32.
1004
1005         * aot-compiler.c: Use 32 bit loads on ilp32.
1006         
1007 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
1008
1009         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
1010
1011         * mini-ops.h: Use TARGET_POWERPC define for consistency.
1012
1013         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
1014
1015         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
1016         second got slot of every aot image.
1017         
1018         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
1019         aot on platforms with function pointers.
1020
1021         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
1022         support for aot/full aot on ppc/ppc64.
1023         
1024         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
1025         arguments which are needed on ppc.
1026
1027         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
1028         argument.
1029
1030         * mini-trampolines.c aot-runtime.c: Update after the above changes.
1031         
1032         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
1033
1034         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
1035
1036         * aot-compiler.c (emit_got_info): Fix reading unused memory.
1037
1038         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
1039
1040 2009-06-17  Geoff Norton  <gnorton@novell.com>
1041
1042         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
1043
1044 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
1045
1046         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
1047         to control whenever the dwarf writer is in xdebug or aot mode.
1048         (emit_class_dwarf_info): Use a separate abbrev for structures without
1049         children.
1050
1051         * aot-compiler.c: Pass the appending parameter to 
1052         mono_dwarf_writer_create ().
1053
1054         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
1055         falls through to its next bblock. Fixes #513931.
1056
1057         * iltests.il: Add a test.
1058
1059         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
1060         infor even if emit_line is FALSE, as the apple linker seems to require it.
1061
1062         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
1063
1064         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
1065         gcc does.
1066         (emit_fde): Ditto.
1067
1068 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
1071         mips build.
1072
1073 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
1076         'has_call_handler' fields.
1077
1078         * method-to-ir.c (mono_method_to_ir): Set them if needed.
1079
1080         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
1081         first bblock if not needed. Fixes #512790.
1082         
1083 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1084
1085         * aot-compiler.c (mono_compile_assembly): Fix a warning.
1086         
1087         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
1088         wrappers.
1089
1090         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
1091         remoting-invoke-with-check wrappers, which are not needed when running with
1092         full-aot, since it doesn't support remoting.
1093         
1094 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1095
1096         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
1097
1098         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
1099         method info, it is not used anymore.
1100
1101         * mini.h: Bump AOT file format version.
1102         
1103         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
1104         word smaller.
1105
1106         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
1107         change above.
1108         
1109         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
1110
1111         * mini.h: Bump AOT file format version.
1112         
1113 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1114
1115         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
1116         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
1117         iphone.
1118
1119         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
1120         of CKFINITE and FBGE for VFP.
1121
1122 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
1123
1124         * aot-compiler.c: Don't align code to 16 bytes on arm.
1125         
1126         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
1127         before the methods they belong to.
1128
1129         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
1130         the full-aot case if possible, since the trampoline will be called right 
1131         away.
1132
1133         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
1134         trampolines to 1024 after the change above.
1135
1136         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
1137         trampoline to save 8 bytes per trampoline.
1138
1139         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
1140         change above.
1141
1142 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1143
1144         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
1145
1146 2009-06-08  Martin Baulig  <martin@ximian.com>
1147
1148         * debug-mini.c
1149         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1150         (_mono_debugger_throw_exception): Don't make this static.
1151         (_mono_debugger_unhandled_exception): Likewise.
1152         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1153
1154         * debug-mini.c
1155         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1156         (_mono_debugger_throw_exception): Add function prototype.
1157         (_mono_debugger_unhandled_exception): Likewise.
1158
1159         * mini-exceptions.c
1160         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1161         arg; return the first exception handler if the exception is caught
1162         and we're running inside the debugger.
1163         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1164         improve exception handle inside runtime-invoke, check whether the
1165         exception is actually caught in the method being invoked and not
1166         by the runtime-invoke-wrapper.
1167
1168 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1169
1170         * image-writer.c: Improve support for the osx assembler.
1171
1172         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
1173         support them.
1174
1175 2009-06-08  Martin Baulig  <martin@ximian.com>
1176
1177         * debug-mini.c
1178         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1179         (_mono_debugger_throw_exception): Don't make this static.
1180         (_mono_debugger_unhandled_exception): Likewise.
1181         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1182
1183         * debug-mini.c
1184         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1185         (_mono_debugger_throw_exception): Add function prototype.
1186         (_mono_debugger_unhandled_exception): Likewise.
1187
1188         * mini-exceptions.c
1189         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1190         arg; return the first exception handler if the exception is caught
1191         and we're running inside the debugger.
1192         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1193         improve exception handle inside runtime-invoke, check whether the
1194         exception is actually caught in the method being invoked and not
1195         by the runtime-invoke-wrapper.
1196
1197 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
1198
1199         * image-writer.c (append_subsection): Don't align subsections of the
1200         debug_line section as a workaround.
1201
1202         * dwarfwriter.c: Emit line number info in the AOT case as well.
1203
1204 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
1205
1206         This patch is contributed under the terms of the MIT/X11 license
1207
1208        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
1209        code_len <= code_size
1210
1211 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
1212
1213         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
1214
1215 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
1216
1217         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
1218         invoke wrappers, we now use trampolines instead.
1219
1220 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1221
1222         * mini-darwin.c: The exception thread must not be registered with
1223         the GC.
1224
1225 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1226
1227         * mini-gc.c: Disable the code because it makes SGen crash.
1228
1229 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
1230
1231         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
1232         instead of asserting.
1233
1234 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1235
1236         * aot-compiler.c (mono_compile_assembly): Move the creation of the
1237         output file after the code has been compiled.
1238
1239 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
1240
1241         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
1242
1243 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1244
1245         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
1246         entries distinction to simplify the code.
1247
1248         * mini.h: Bump AOT file format version.
1249         
1250 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
1251
1252         * objects.cs: Fix the signature of one of the tests.
1253
1254         * mini.c (mini_create_ftnptr): New helper function, moved here from
1255         object.c.
1256         (mini_get_addr_from_ftnptr): Ditto.
1257         (mini_init): Install the new helpers.
1258
1259 2009-05-28  Martin Baulig  <martin@ximian.com>
1260
1261         Correctly initialize the debugger when embedding Mono.
1262
1263         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
1264         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
1265         see documentation in mini_debug_running_inside_mdb().
1266
1267         * debug-debugger.c
1268         (mini_debug_running_inside_mdb): New function to check whether
1269         we're running inside mdb.
1270
1271         * mini.c (mini_init): Call mini_debugger_init() if we're running
1272         inside the debugger.
1273
1274         * driver.c (mono_main): Moved the call to mini_debugger_init()
1275         into mini_init() to make this work when embedding Mono.
1276
1277         * debug-debugger.c (mini_debugger_init): Warn about duplicate
1278         calls to mini_debugger_init().
1279
1280         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
1281         mono_debugger_main() -> mini_debugger_main() and put them inside a
1282         `MONO_DEBUGGER_SUPPORTED' conditional.
1283
1284 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
1285
1286         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
1287         this is no longer in use.
1288         * mini.h: Same.
1289
1290 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
1291
1292         * mini-sparc.c (add_outarg_load): Fix the sparc build.
1293
1294         * aot-compiler.c (emit_method_code): Always write out C style symbols for
1295         methods.
1296
1297 2009-05-27  Martin Baulig  <martin@ximian.com>
1298
1299 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1300
1301         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
1302         long_conv_to_r_un to 64 bits.
1303
1304         * cpu-x86.md: Increase the instruction size due to the changes.
1305
1306         * iltests.il.in: Add regression test.
1307
1308         Fixes #467201.
1309
1310 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1311
1312         * objects.cs: Move the previous test from basic.cs to here.
1313
1314 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1315
1316         * basic.cs: Add regression test for #506915.
1317
1318 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1319
1320         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
1321         optimization we must check the bb of the first byte of stobj as
1322         it's the only one set in cil_offset_to_bb.
1323
1324         Fixes #506915.  
1325
1326 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
1327
1328         * image-writer.c: Fix pointer directive on ppc64.
1329
1330 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
1331
1332         * image-writer.c (asm_writer_emit_section_change): Avoid using
1333         .bss subsections on ppc too.
1334
1335 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
1336
1337         * image-writer.c: Fix the definition of TARGET_ASM_....
1338         
1339         * image-writer.c: Fix the emission of assembler directives in the last
1340         change.
1341
1342         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
1343         exception throwing code to accomodate ppc64.
1344
1345         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
1346         size to work on ppc64 too.
1347
1348         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
1349         too.
1350
1351         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
1352         the assembler dialect instead of using platform specific defines.
1353
1354 2009-05-22  Geoff Norton  <gnorton@novell.com>
1355
1356         * mini-arm.c (get_call_info): If a structure is split between the stack
1357         and argument registers, we should not advance the stack pointer by the entire
1358         native size, but just by the amount that spilled.
1359
1360 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
1361
1362         * mini-arm.c (get_call_info): Handle structures with alignment requirements
1363         correctly.
1364
1365 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1366
1367         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
1368         wrappers normally.
1369         
1370         * aot-compiler.c (add_extra_method): Fix up the collection of extra
1371         methods so wrapper don't get added twice.
1372         (add_generic_instances): Don't add methods of arrays.
1373
1374         * generics.cs: Mark one test as !FULLAOT.
1375
1376 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1377
1378         * mini-x86.c (emit_move_return_value): Remove unused vars.
1379
1380 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1381
1382         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
1383         decomposing 8 bytes structs into a LCALL.
1384
1385         * mini-x86.c (emit_move_return_value): We no longer push the vtype
1386         pointer for where to store the returned regs.
1387
1388         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
1389         state the concern.
1390
1391         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
1392
1393 2009-05-20  Miguel de Icaza  <miguel@novell.com>
1394
1395         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
1396         without getenv.
1397
1398 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1399
1400         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
1401
1402         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
1403         generics.
1404
1405 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
1406
1407         * local-propagation.c (mono_local_cprop): Avoid local propagation
1408         across paired add/sub if the first instruction dest reg is it's
1409         source reg. For example:
1410
1411         int_add_imm R12 <- R12 [1] clobbers: 1
1412         int_sub_imm R42 <- R12 [1] clobbers: 1
1413
1414         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
1415         maintain the math identify.
1416
1417         Fixes #505375.
1418
1419 2009-05-20  Andreia Gaita  <avidigal@novell.com>
1420
1421         * Makefile.am: avoid going on the network just to get the revision,
1422         use git log instead
1423
1424 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
1425
1426         Fixed estimate for short branches on amd64 (they were off mark, and
1427         enabling call prolog-epilog instrumentations caused assertions).
1428         * mini.h (struct MonoBasicBlock): added max_length field to hold the
1429         estimate for the maximum length of this basic block.
1430         * mini-amd64.c:
1431         - mono_arch_emit_prolog: compute max_length for each basic block
1432           (instead of max_offset), and inflate size estimate also for entry bb
1433           in case of code instrumentation.
1434         - mono_arch_output_basic_block: get rid of "cpos" (the current
1435           estimated "position" in the code), and always use "offset" instead,
1436           which is accurate; at the beginning of the function quickly recompute
1437           max_offset for all the remaining blocks, starting from the current
1438           cfg->code_len (which is correct, and not estimated) and using the
1439           estimated block lengths computed previously.
1440
1441 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
1442
1443         * exceptions-ppc.c: Remove the caching from the trampoline creation 
1444         functions, it is already done in the caller.
1445
1446         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
1447
1448         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
1449         MONO_ARCH_GSHARED_SUPPORTED define.
1450
1451         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
1452
1453         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
1454         function.
1455
1456 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
1457
1458         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
1459         call to mono_marshal_get_rgctx_invoke ().
1460
1461         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
1462         mono_marshal_get_static_rgctx_invoke (), all platforms which support
1463         gshared use the static rgctx trampolines now.
1464         
1465         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
1466         platform supports it.
1467
1468 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1469
1470         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
1471
1472         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
1473
1474 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1475
1476         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
1477
1478         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
1479         for ppc.
1480
1481 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
1482
1483         Made it possible for mono_arch_instrument_epilog to preserve
1484         argument registers, otherwise instrumenting the "epilogue" before
1485         a tail call would clobber them.
1486         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
1487         if like mono_arch_instrument_epilog but with an additional parameter
1488         that states if argument registers must be preserved.
1489         * mini.c: implemented mono_arch_instrument_epilog as a call to
1490         mono_arch_instrument_epilog_full without asking to preserve argument
1491         registers (this makes the existing code work as usual).
1492         * mini-amd64.c:
1493         - mono_arch_instrument_epilog: add parameter to transform it into
1494         mono_arch_instrument_epilog_full, and preserve argument registers
1495         when required.
1496         - mono_arch_output_basic_block, OP_TAILCALL case: call
1497         mono_arch_instrument_epilog_full.
1498         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
1499         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
1500         only transformed mono_arch_instrument_epilog into
1501         mono_arch_instrument_epilog_full.
1502
1503 2009-05-15  Geoff Norton  <gnorton@novell.com>
1504
1505         * mini-darwin.c: This works on arm now.
1506
1507 2009-05-14  Geoff Norton  <gnorton@novell.com>
1508
1509         * jit.h, driver.c: Allow full-aot to be decided programatically by the
1510         embedding api.
1511
1512 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1513
1514         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
1515         label names.
1516
1517         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
1518         wrappers during full aot mode correctly.
1519
1520         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
1521         methods correctly.
1522
1523         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
1524         mono_metadata_type_hash ().
1525
1526 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
1527
1528         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
1529         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
1530         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
1531         Removed MONO_INST_BRLABEL from the instruction flags, and the
1532         remaining code that used it, because we do not support branches inside
1533         basic blocks (and branch target labels) anymore.
1534         * Makefile.am: As part of the above cleanup, remove reference to
1535         BURG files which don't exist anymore.
1536
1537 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
1538
1539         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
1540         osx.
1541
1542         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
1543         to use mono_arch_throw_corlib_exception.
1544
1545         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
1546         mono_arch_throw_corlib_exception for throwing corlib exceptions.
1547
1548         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
1549         domain mempool.
1550
1551         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
1552
1553         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
1554         for the got to make debugging easier and to avoid confusing it with the
1555         system got.
1556         
1557         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
1558         method so a breakpoint can be set when using gdb.
1559
1560 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
1561
1562         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
1563         on mono_method_get_imt_slot ().
1564
1565         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
1566         num_decodes variables.
1567
1568         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
1569         change as it doesn't seem to work.
1570         
1571         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
1572         wrappers.
1573
1574 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
1575
1576         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
1577         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
1578
1579         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
1580         builder when using full aot.
1581
1582         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
1583         here, it is already handled.
1584         
1585         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
1586         correctly for IMT.
1587
1588         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
1589
1590         * mini-arm.h: Enable IMT for full aot.
1591         
1592         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
1593         arch doesn't support it.
1594
1595         * mini.c (mini_init): Don't disable IMT for full aot if the
1596         architecture supports it.
1597
1598         * mini.h (MonoAotTrampoline): New enum containing the different types
1599         of 'numerous' trampolines.
1600         (MONO_AOT_FILE_VERSION): Bump this.
1601
1602         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
1603         static rgctx trampolines. Add support for full-aot IMT thunks.
1604
1605         * mini-amd64.h: Enable IMT for full aot.
1606
1607         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
1608         to exclude tests belonging to a category.
1609
1610         * generics.cs: Mark some tests with a !FULLAOT category.
1611
1612         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
1613         generics tests.
1614
1615 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
1616
1617         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
1618         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
1619         (emit_plt): Fix a warning.
1620
1621 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
1622
1623         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
1624         back into aot-compiler.c to a place where the other functions shared by
1625         the runtime and aot compiler are.
1626         
1627         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
1628         as done previously, instead of in MonoAotFileInfo, since pointers might have
1629         alignment requirements.
1630
1631         * mini.h: Bump AOT file format version.
1632
1633 2009-05-10  Miguel de Icaza  <miguel@novell.com>
1634
1635         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
1636         that is used at runtime from the aot-compiler.c, this makes it
1637         work on setups that remove the AOT compiler from the output
1638         image. 
1639
1640 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
1641
1642         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
1643         PPC.
1644
1645         * mini-ppc.h: Enable static rgctx trampolines for ppc.
1646
1647         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
1648
1649         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
1650         stuff to mono_arch_decompose_long_opts ().
1651         (mono_decompose_opcode): Remove some dead code.
1652
1653 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
1654
1655         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
1656         cmethod can be null for quite a some reasons.
1657
1658 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
1659
1660         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
1661
1662 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
1663
1664         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
1665
1666 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
1667
1668         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
1669         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
1670         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
1671         calls returning structures by addr on amd64.
1672
1673         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
1674
1675         * iltests.il.in: Restructure the tail call tests a bit.
1676         
1677 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
1678
1679         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
1680         for virtual methods too.
1681
1682 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
1683
1684         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
1685         due to regression in verifying System.dll.
1686
1687 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
1688
1689         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
1690         in dynamic methods.
1691
1692         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
1693         instances.
1694
1695         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
1696         g_str_hash () which can change.
1697
1698         * driver.c (mini_regression): Disable optimizations not supported by
1699         the cpu. Fixes #500019.
1700
1701         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
1702         build.
1703
1704 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
1705
1706         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
1707         to the latest LLVM code.
1708
1709 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
1712
1713 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
1714
1715         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
1716         x86/amd64.
1717
1718         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
1719         no longer saving offsets, so just save the patch types along with the other
1720         info.
1721         * aot-runtime.c (load_patch_info): Update after the changes to 
1722         encode_patch_list ().
1723         (decode_got_entry): Removed, merged into load_patch_info ().
1724         (is_shared_got_patch): Removed, call the same function from
1725         aot-compiler.c.
1726
1727         * mini.h: Bump aot file format version.
1728         
1729         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
1730         half-finished no-dlsym code.
1731
1732         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
1733         option.
1734
1735         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
1736         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
1737
1738 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
1741         buffer length to work with AOT code.
1742
1743         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
1744         ldfld/stfld opcodes.
1745
1746         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
1747         as it is not used.
1748
1749         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
1750
1751         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
1752
1753         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
1754         LLVM API.
1755
1756         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
1757         if needed. Don't decompose long operations when using llvm.
1758
1759 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
1762         PAGESIZE constant.
1763
1764         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
1765
1766 2009-05-03  Martin Baulig  <martin@ximian.com>
1767
1768         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
1769         mono_debugger_insert_method_breakpoint() since the class init
1770         handler we're inserting at the top of the method already gives us
1771         a notification.
1772
1773 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
1774
1775         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
1776         to mono_arch_decompose_long_opts () for x86 and arm.
1777
1778 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
1781         TARGET_AMD64 here.
1782
1783 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
1784
1785         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
1786         JIT code.
1787
1788 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
1789
1790         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
1791         number of trampolines used in full-aot mode.
1792
1793         * aot-compiler.c: Add an ntrampolines option to set the number of 
1794         trampolines emitted in full-aot mode.
1795
1796 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
1797
1798         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
1799         a volatile load. Get rid of get_tempname (), llvm assigns names
1800         automatically.
1801
1802         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
1803         builder function.
1804
1805         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
1806         a value.
1807
1808         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
1809         level 1.
1810
1811         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
1812         to the same register as a fixed sreg2. Fixes #497271.
1813
1814         * iltests.il.in: Add a new test.
1815
1816 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
1817
1818         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
1819         stack, since pushes complicate exception handling.
1820
1821         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
1822         the stack if they are passed using moves.
1823
1824         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1825
1826         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
1827         when using llvm.
1828
1829         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
1830         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
1831         of FMOVE if it is an R4.
1832
1833 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
1834
1835         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
1836
1837         * mini.h (LLVMCallInfo): New structure to store calling convention 
1838         information for the LLVM back end similar to the CallInfo structures in 
1839         the back-ends.
1840
1841         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
1842         call information in a format usable by LLVM.
1843         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
1844
1845         * method-to-ir.c (mono_emit_call_args): Emit calls using 
1846         mono_llvm_emit_call () when compiling using LLVM.
1847
1848         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
1849         comments to all functions. Fix memory leaks. Add a public init/cleanup
1850         function.
1851
1852         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
1853
1854         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
1855         mono_array_new_va () jit icall.
1856         
1857 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
1858
1859         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
1860         multiple machine description files to be specified.
1861         * mini-ops.h: fixes for cross-compilation.
1862
1863 2009-04-22  Miguel de Icaza  <miguel@novell.com>
1864
1865         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
1866         some porting work.
1867
1868 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
1869
1870         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
1871         to prevent asserts in various passes. Fixes #497220.
1872
1873 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
1874
1875         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
1876         a racy assert.
1877
1878         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
1879         table to avoid duplicates.
1880
1881         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1882         
1883         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
1884         option is used.
1885
1886 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1887
1888         * mini.c (mini_method_verify): Fail fulltrust code if the exception
1889         is for method or field access.
1890
1891 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
1892
1893         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
1894         a Value to stdout.
1895
1896         * mini-llvm.c (mono_llvm_emit_method): Use it.
1897         
1898         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
1899         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
1900         on volatile values.
1901
1902         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
1903         synchronized methods.
1904
1905         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
1906
1907         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
1908
1909         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
1910         OP_LOADI8_MEM.
1911
1912         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
1913         allowing some options to be set dynamically.
1914
1915 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
1916
1917         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
1918         unconditional branch.
1919
1920         * mini.h (MonoTrampolineType): Add new trampoline type 
1921         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
1922         compiled code.
1923
1924         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
1925         function.
1926
1927         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
1928         creation function.
1929
1930         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
1931         is enabled. Instead, use the llvm vcall trampoline.
1932         
1933         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
1934
1935         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
1936         
1937         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
1938         functions.
1939
1940         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
1941         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
1942
1943         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
1944         OP_IA64_CSET opcode.
1945
1946         * mini.c: Fix a warning.
1947
1948         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
1949         THROW to the appropriate llvm type.
1950
1951 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
1952
1953         * mini.c (mini_method_compile): Add statistics for methods JITted
1954         with/without LLVM.
1955
1956 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1957
1958         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
1959         OP_IA64_CMP_<cond>_IMM opcodes.
1960
1961 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1962
1963         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
1964         corlib exceptions.
1965
1966         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
1967         correctly.
1968
1969         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
1970         GENERICINST.
1971
1972 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
1973
1974         * mini-exceptions.c : add thread id to EXCEPTION trace message.
1975
1976 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1977
1978         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
1979         support.
1980
1981         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
1982         rgctx invoke trampolines for x86.
1983
1984         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
1985         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
1986         (mono_arch_get_vcall_slot): Simplify this.
1987
1988 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
1989
1990         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
1991         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
1992
1993 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1994
1995         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
1996         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
1997
1998         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
1999
2000         * liveness.c (visit_bb): Remove a needless assert.
2001
2002 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
2003
2004         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
2005         full aot support to the arch specific code.
2006
2007         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
2008
2009         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
2010
2011         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
2012         
2013         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
2014         collect information about the delegate invoke impl trampolines.
2015
2016         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
2017         to save trampolines during full-aot mode.
2018
2019         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
2020         creation function which returns a trampoline which sets the rgctx
2021         argument.
2022         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
2023         wrapper if possible.
2024         (mono_delegate_trampoline): Ditto.
2025
2026         * mini.c (mono_jit_runtime_invoke): Ditto.
2027
2028         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
2029         
2030         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
2031
2032         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2033         
2034 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
2035
2036         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
2037         just setting the opcode to OP_NOP.
2038
2039 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
2040
2041         * mini.c (mini_method_compile): Put the last change inside an 
2042         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
2043         
2044         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
2045         and extend live ranges to cover the whole method when using xdb.
2046
2047         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
2048         do it in the trampolines.
2049
2050         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
2051         needed.
2052
2053         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
2054         
2055         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
2056         call code in full-aot mode since IMT is disabled there.
2057         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
2058         new JIT no longer has that restriction.
2059
2060         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2061
2062         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
2063         a more compact format.
2064         (mono_aot_wrapper_name): New function to return a unique name for a
2065         wrapper method, also used by the AOT runtime.
2066
2067         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
2068         aot-compiler.c.
2069
2070         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
2071         when a ICollection<T> etc is encountered.
2072         (add_generic_instances): Process method arguments/locals too.
2073         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
2074         trampoline names.
2075
2076         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
2077         
2078 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
2079
2080         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
2081
2082         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
2083
2084         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
2085         representing the result of the decomposition. Nullify instructions
2086         instead of setting them to OP_NOP since nops can't have registers
2087         set.
2088
2089 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
2090
2091         * aot-compiler.c (mono_compile_assembly): Split this huge function into
2092         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
2093         info. Strip 'mapping symbols' on ARM.
2094
2095         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
2096         
2097         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
2098         this with the native genmdesc.
2099
2100 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
2101
2102         * aot-runtime.c:  Fixing the MSVC build.
2103
2104         Code is contributed under MIT/X11 license.
2105
2106 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2107
2108         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
2109         JITted code depends on it.
2110
2111 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2112
2113         * aot-compiler.c: Use new MonoGenericParam accessors.
2114
2115 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2116
2117         Reduce memory usage and improve correctness wrt MonoGenericParam
2118         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
2119         handing.  Avoid allocating MonoGenericParams, but use the ones in
2120         the container itself.
2121
2122 2009-04-07  Miguel de Icaza  <miguel@novell.com>
2123
2124         * tasklets.c: Return exceptions in the out argument.
2125
2126 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2127
2128         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
2129         opcode. Use pointer types in more places instead of casting them to 
2130         integers.
2131
2132         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
2133         optimizations.
2134         (mono_llvm_optimize_method): New helper function to optimize a method.
2135
2136         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
2137         widening code so it could be called from more places.
2138         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
2139         code paths in the call opcodes.
2140
2141 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
2142
2143         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
2144
2145 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
2146
2147         * dwarfwriter.c: Use _ to separate class name 
2148         components as gdb can't handle '.'. Represent reference variables
2149         as 'class <NAME>&'.
2150         
2151         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
2152
2153         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
2154         
2155         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
2156
2157         * gc-test.cs: New file with GC stack marking tests.
2158         
2159         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
2160         negative numbers for vfp.
2161
2162         * basic-float.cs: Add a test.
2163         
2164 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
2165
2166         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
2167
2168 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
2169
2170         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
2171         part of tasklet/continuation support.
2172
2173 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
2174
2175         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
2176         amd64 opcodes inside an ifdef.
2177
2178         * dwarfwriter.c: Emit inheritance information for classes, emit fields
2179         of complex types.
2180         
2181         * dwarfwriter.c (emit_type): Emit the class info for classes.
2182
2183 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
2184
2185         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
2186
2187         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
2188
2189         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
2190
2191         * ssa.c (mono_ssa_compute): Fix some memory leaks.
2192
2193 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
2194
2195         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
2196
2197         * mini-llvm.c: Update comments.
2198
2199         * mini.h (COMPILE_LLVM): New macro.
2200
2201         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
2202
2203         * ssa.c (mono_ssa_compute): Ditto.
2204         
2205         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
2206         the unwind ops from a DWARF FDE.
2207
2208         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
2209         methods by extracting the dwarf unwind ops from the unwind info generated
2210         by LLVM.
2211         
2212         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
2213         calls.
2214
2215         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
2216         addressing modes.
2217
2218 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
2219
2220         * Makefile.am (llvm_sources): Enable this.
2221
2222         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
2223         failing back to the JIT if something cannot be handled.
2224
2225         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
2226         compiling with LLVM.
2227
2228         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
2229         compiling with LLVM.
2230
2231         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
2232         compiling with LLVM.
2233
2234         * mini-ops.h: Add a few opcodes needed by LLVM.
2235
2236         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
2237         has no unwind info.
2238
2239         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
2240         backend.
2241
2242         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
2243
2244         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
2245
2246 2009-04-01  Mark Probst  <mark.probst@gmail.com>
2247
2248         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
2249         ridiculously large methods.
2250
2251 2009-03-31  Martin Baulig  <martin@ximian.com>
2252
2253         * debug-debugger.c (debugger_remove_breakpoint): Call
2254         mono_debugger_remove_class_init_callback ().
2255
2256 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
2257
2258         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
2259         right before emitting code, not at the start.
2260
2261         * mini.c (mono_postprocess_patches): Extract this into a separate function
2262         from mono_codegen ().
2263
2264         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
2265         byref types correctly.
2266
2267 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
2268
2269         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
2270         by the last change.
2271
2272 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
2273
2274         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
2275         indirect calls, this avoids problems where get_vcall_slot () would get
2276         confused by the native code for the instruction preceeding the call.
2277         (mono_arch_get_vcall_slot): Simplify this.
2278         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
2279
2280         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
2281         register allocator now seems to depend on them instead of the data in
2282         cpu-<ARCH>.md.
2283
2284         * mini.c (mini_method_compile): Throw the correct type of exception if
2285         mono_method_get_header () fails because of a loading error.
2286
2287 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
2288
2289         * mini.c (mini_method_compile): Clear the loader error if the method
2290         header cannot be decoded.
2291
2292         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
2293         interface methods on proxies correctly.
2294
2295         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
2296         this argument for vtype methods. Add precise liveness info for arguments.
2297
2298         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
2299         LIVERANGE_START/END opcodes.
2300
2301         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
2302         for arguments and values in registers.
2303
2304 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
2305
2306         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
2307         return a valuetype. Fixes #487518.
2308
2309         * iltests.il: Add a test.
2310         
2311         * aot-compiler.c: Use mono_thread_create () to create helper threads.
2312
2313         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
2314         closed over a null reference correctly.
2315
2316 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
2317
2318         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
2319
2320 2009-03-25  Mark Probst  <mark.probst@gmail.com>
2321
2322         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
2323         allocated to the same registers as fixed sregs.
2324
2325 2009-03-24  Mark Probst  <mark.probst@gmail.com>
2326
2327         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
2328         ATOMIC_CAS_IMM ops.
2329
2330         * method-to-ir.c: Handle more cases for
2331         Interlocked.CompareExchange.
2332
2333         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
2334         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
2335         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
2336
2337 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
2338
2339         * aot-runtime.c (decode_method_ref): Fix a warning.
2340
2341         * unwind.c (mono_unwind_frame): Ditto.  
2342
2343 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2344
2345         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
2346         (mono_compile_assembly): Enable the binary writer for full-aot as well.
2347
2348         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
2349         fix the handling of large values in the ALU_PC_G0_NC relocation.
2350
2351 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2352
2353         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
2354
2355 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2356
2357         * method-to-ir.c (mono_spill_global_vars): Support for ternary
2358         ops.
2359
2360 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2361
2362         * method-to-ir.c: MINI_OP3 needs a comma.
2363
2364         * method-to-ir.c, mini.h, mini.c: Remove
2365         mono_init_op_sreg_counts ().
2366
2367 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2368
2369         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
2370         OP_JMP.
2371         
2372         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
2373         assertion.
2374
2375         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
2376
2377         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
2378         code somewhat.
2379
2380 2009-03-21  Mark Probst  <mark.probst@gmail.com>
2381
2382         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
2383         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
2384         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
2385         operations.
2386
2387 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * driver.c: Change location of gc_wrapper.h.
2390
2391         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
2392         inside finally clauses correctly. Fixes #485721.
2393
2394         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
2395         after the change above.
2396
2397         * exceptions.cs: Add a test.
2398         
2399 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2400
2401         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
2402
2403         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
2404         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
2405         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
2406
2407         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
2408         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
2409
2410 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
2411
2412         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
2413         Simplify logic for ensure_method_is_allowed_to_call_method. 
2414         Handle wrappers on callers.
2415
2416 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2417
2418         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
2419         them don't run yet.
2420
2421         * basic-simd.cs: Fix the names of some test methods.
2422
2423 2009-03-18  Geoff Norton  <gnorton@novell.com>
2424
2425         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
2426
2427 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
2428
2429         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
2430
2431 2009-03-17  Jb Evain  <jbevain@novell.com>
2432
2433         * driver.c: remove now uneeded call to mono_gc_base_init before
2434         mono_profiler_load.
2435
2436 2009-03-17  Jb Evain  <jbevain@novell.com>
2437
2438         * dwarfwriter.c (token_handler): handle more cases.
2439
2440 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
2441
2442         * method-to-ir.c: Remove more dead code (that was required only
2443         because of method_is_safe). Fix compiler warnings.
2444
2445 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
2446
2447         * method-to-ir.c: Remove unneeded/useless method_is_safe
2448         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
2449
2450 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
2451
2452         * mini.c (mini_method_compile): Print the method been compiled with
2453         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
2454         for people not familiar with the runtime.
2455
2456 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
2457
2458         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
2459         a managed object which is later put into a GList. Return its class instead.
2460
2461         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
2462         stack slots when using sgen.
2463
2464 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
2465
2466         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
2467
2468 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
2469
2470         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
2471         > so it works on the first vreg as well.
2472
2473 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
2474
2475         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
2476         trigger randomly.
2477
2478         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
2479         
2480         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
2481         implement GArray.
2482
2483 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
2484
2485         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
2486         native->IL offset mapping.
2487
2488 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
2489
2490         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
2491
2492         * basic.cs: Add a test.
2493
2494 2009-03-11  Mark Probst  <mark.probst@gmail.com>
2495
2496         * mini-x86.c (mono_arch_output_basic_block): Use different
2497         registers in case the ones we want to overwrite are used by the
2498         other operand.  Fixes regression in #480807.
2499
2500 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
2501
2502         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
2503
2504         * dwarfwriter.c (emit_line_number_info): The line number info for
2505         IL code was off by one. Fix that.
2506
2507         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
2508         stack.
2509
2510 2009-03-09  Mark Probst  <mark.probst@gmail.com>
2511
2512         Contributed under the terms of the MIT/X11 license by Steven
2513         Munroe <munroesj@us.ibm.com>.
2514
2515         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
2516         Fixes #483462.
2517
2518 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
2519
2520         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
2521         as well.
2522
2523 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
2524
2525         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
2526         the delegate ctor handling code. Fixes #482638.
2527         
2528         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
2529         #481458.
2530
2531         * iltests.il.in: Add a test.
2532         
2533         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
2534         mini-posix.c.
2535
2536 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2537
2538         * mini-trampolines.c (mono_create_jump_trampoline): If the method
2539         is shared generic code, return the trampoline, even if the method
2540         has already been compiled.  Fixes #479763.
2541
2542         * mini.c, mini.h: New function
2543         mono_jit_find_compiled_method_with_jit_info() which is the same as
2544         mono_jit_find_compiled_method() but also returns the jit info.
2545
2546 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2547
2548         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
2549         for methods which actually have one.  For all other methods, make
2550         sure the this argument var is live the whole method.
2551
2552         * mini.c (mini_method_compile): Every shared method has a
2553         this/vtable/mrgctx info.  Fixes #480807.
2554
2555 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2556
2557         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
2558         generic/imt thunks where some entries branch through the vtable,
2559         while other entries branch directly.
2560
2561 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
2562
2563         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
2564
2565         * mini-windows.c: Ditto.
2566         
2567         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
2568         ctors.
2569
2570 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
2571
2572         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
2573         down an assert.
2574
2575 2009-03-04  Mark Probst  <mark.probst@gmail.com>
2576
2577         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
2578         #481403.
2579
2580 2009-03-04  Mark Probst  <mark.probst@gmail.com>
2581
2582         * exceptions-x86.c: Include debug-mini.h - fixes build.
2583
2584 2009-03-04  Martin Baulig  <martin@ximian.com>
2585
2586         * debug-mini.c: Clean up the exception API and add documentation.
2587         (mono_debugger_handle_exception): New public method; this is
2588         called when throwing an exception or encountering an unhandled one.
2589         (mono_debugger_call_exception_handler): Formerly known as
2590         mono_debugger_handle_exception(); this is used to tell the
2591         debugger that we're about to invoke an exception handler.
2592
2593 2009-03-04  Martin Baulig  <martin@ximian.com>
2594
2595         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
2596         ../metadata/mono-debug-debugger.c; save and reset exception state.
2597
2598 2009-03-02  Martin Baulig  <martin@ximian.com>
2599
2600         * debug-mini.c: Moved the debugger exception handling here from
2601         ../metadata/mono-debug-debugger.c.
2602
2603         * debug-mini.h
2604         (MonoDebuggerExceptionAction): New exception typedef.
2605
2606         * debug-mini.c
2607         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
2608
2609         * exceptions-amd64.c
2610         (mono_amd64_throw_exception): Use the new debugger exception
2611         handling code.
2612
2613         * mini-exceptions.c
2614         (mono_handle_exception_internal): Don't call
2615         mono_debugger_unhandled_exception() here.
2616
2617 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
2618
2619         * mini.c aot-compiler.c: Update after the changes to 
2620         mono_marshal_get_runtime_invoke ().
2621
2622         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
2623         Virtual generic methods might not have method->slot set, work around
2624         that.
2625
2626         * generics.cs: Add a test.
2627
2628 2009-03-02  Geoff Norton  <gnorton@novell.com>
2629
2630         * mini.c:
2631         * driver.c: Allow signal chaining of SIGFPE as well.
2632
2633 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
2634
2635         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
2636         this since it now receives the method not its generic context in the
2637         IMT reg.
2638
2639         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
2640         generic/imt thunks where some entries branch through the vtable, while
2641         other entries branch directly.
2642
2643         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
2644
2645         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
2646         support for interface methods as well.
2647
2648         * mini-trampolines.c: Add support for virtual generic methods in interfaces
2649         using the normal IMT thunks.
2650
2651         generics.cs: Add new tests.
2652         
2653         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
2654         the generic inst to the generic imt thunks. This fixes AOT support, 
2655         improves consistency with the normal IMT thunks, and makes it easier to
2656         add support for interface generic virtual methods later.
2657
2658         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
2659         
2660 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * driver.c (mono_set_signal_chaining): New public API function to enable
2663         signal chaining on POSIX platforms.
2664
2665         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
2666         (si@lindenlab.com) to implement signal chaining. The original patch was
2667         contributed under the MIT X/11 license:
2668         https://bugzilla.novell.com/show_bug.cgi?id=318894
2669
2670 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
2671
2672         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
2673         too until it can be made to run on amd64.
2674
2675 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
2676
2677         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
2678         to  get_generic_context_from_code () + get_call_info () if possible.
2679
2680 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
2681
2682         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
2683         suspend-on-sigsegv functionality.
2684
2685         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
2686         to suspend when a native SIGSEGV is received. This is useful for debugging
2687         crashes which don't happen under gdb, since a live process contains more
2688         information than a core file.
2689
2690         * mini-exceptions.c (mono_print_thread_dump): Use 
2691         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
2692
2693         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
2694
2695         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
2696         
2697         * basic-float.cs: Disable the tests which currently fail on amd64.
2698
2699         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
2700         value to mono_arch_patch_callsite () to fix crashes.
2701         
2702         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
2703
2704 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
2705
2706         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
2707         nop code by patching the call address to point to the nullified class init
2708         trampoline, as the former does not seem to be safe on SMP machines.
2709
2710 2009-02-23  Mark Probst  <mark.probst@gmail.com>
2711
2712         * mini-ops.h: Fix the argument types for a few x86 opcodes where
2713         they were wrong.
2714
2715 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * basic-float.cs basic-calls.cs: Fix warnings.
2718
2719 2009-02-22  Mark Probst  <mark.probst@gmail.com>
2720
2721         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
2722         correct frame pointer in the LMF.  Should fix #478394.
2723
2724 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
2725
2726         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
2727
2728         * image-writer.c: Make the binary writer less verbose.
2729
2730 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
2731
2732         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
2733         are called from runtime invoke wrappers.
2734
2735 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
2736
2737         * cpu-ppc.md (store_memindex): Increase the size of this.
2738
2739 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2740
2741         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2742
2743         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
2744
2745         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
2746         OP_LCONV_TO_R_UN.
2747
2748         Last fix for of #467201.
2749
2750
2751 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2752
2753         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2754
2755         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
2756         and long_conv_to_r8_2:
2757
2758         Fixed part of #467201.
2759
2760 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2761
2762         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2763
2764         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
2765         conversion to 32 bits.
2766
2767         * cpu-x86.md: Increase the size of int_conv_to_r4.
2768
2769         * basic-float.cs: Add a test for this.
2770
2771         Fixed part of #467201.
2772
2773 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2774
2775         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2776
2777         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
2778         conversion to 64 bits.
2779
2780         * basic-float.cs: Add a test for this.
2781
2782         Fixed part of #467201.
2783
2784 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2785
2786         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2787
2788         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
2789         This behavior is compatible with MS.
2790
2791         * iltest.il.in: Add a test for this.
2792
2793         Fixed part of #467201.
2794
2795 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2796
2797         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2798
2799         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
2800         change the precision of the value.
2801
2802         * cpu-x86.md: Define len for float_conv_to_r4.
2803
2804         * basic-float.cs: Add a test for this.
2805
2806         Fixed part of #467201.
2807
2808 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
2809
2810         * mini.c: Adjust locking order to the new semantics where the loader lock
2811         comes first.
2812
2813 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2814
2815         * aot-runtime.c:
2816         * mini-amd64.c:
2817         * mini-arm.c:
2818         * mini-ia64.c:
2819         * mini-mips.c:
2820         * mini-ppc.c:
2821         * mini-sparc.c:
2822         * mini-trampolines.c:
2823         * mini-x86.c:
2824         * mini.c:
2825         * tramp-alpha.c:
2826         * tramp-amd64.c:
2827         * tramp-arm.c:
2828         * tramp-hppa.c:
2829         * tramp-ia64.c:
2830         * tramp-mips.c:
2831         * tramp-ppc.c:
2832         * tramp-s390.c:
2833         * tramp-s390x.c:
2834         * tramp-sparc.c:
2835         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
2836
2837 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
2838
2839         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
2840         as it is incorrect.
2841
2842 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2843
2844         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
2845         for cctors if needed.
2846
2847 2009-02-17  Mark Probst  <mark.probst@gmail.com>
2848
2849         * mini-ppc.c: Fix build on Darwin.
2850
2851 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2852
2853         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
2854         version instead of 3 as valgrind doesn't like version 3.
2855
2856         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2857
2858         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
2859         usable for hashing methods.
2860         (emit_extra_methods): Use the new hash to avoid putting every method in the
2861         same hash bucket.
2862
2863         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
2864
2865         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
2866         whenever a method ref could match a method.
2867         
2868         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
2869         test to fail.
2870         
2871         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
2872         methods refs.
2873
2874         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
2875
2876         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
2877         the encoding buffer.
2878
2879         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
2880         mono_method_get_header () on inflated methods as an optimization.
2881
2882 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2883
2884         * ssa.c (fold_ins): Fix another crash if the instruction following the
2885         switch was optimized away.
2886
2887 2009-02-16  Mark Probst  <mark.probst@gmail.com>
2888
2889         Contributed under the terms of the MIT/X11 license by Steven
2890         Munroe <munroesj@us.ibm.com>.
2891
2892         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
2893
2894 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2895
2896         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
2897         around the mono_domain_alloc calls, it is now done by the functions
2898         themselves.
2899
2900         * aot-compiler.c (compile_method): Only add wrappers referenced by
2901         the method if compiling with full AOT.
2902         (mono_compile_assembly): Error out if --aot=full is specified on
2903         a platform where it is not supported.
2904
2905         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
2906         on ARM too.
2907
2908         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
2909         AOT support.
2910
2911         * aot-runtime.c (load_named_code): Handle 
2912         mono_arm_throw_exception_by_token.
2913
2914         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
2915
2916         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
2917         unaligned.
2918
2919         * Makefile.am (fullaotcheck): Exit if a test fails.
2920
2921         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
2922         on ARM.
2923         (mono_compile_assembly): Handle the assembler failing.
2924
2925         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
2926         accepting subsections of .bss.
2927
2928         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
2929         was optimized away.
2930
2931         * aot-compiler.c: Remove some unused includes.
2932         
2933         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
2934         now in MonoImageWriter.
2935
2936         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
2937         code sequence which matches a non-virtual call. Fixes #472654.
2938
2939 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
2940
2941         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
2942         xdebug code.
2943         
2944         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
2945         use the image/dwarf writers directly.
2946
2947         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
2948         field.
2949
2950         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
2951         MonoDwarfWriter.
2952
2953         * image-writer.h: Fix some typos.
2954
2955         * dwarfwriter.h dwarfwriter.c: New files.
2956         
2957         * aot-compiler.c: Extract the DWARF info writing functionality into a 
2958         separate module.
2959
2960         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
2961         argument to return unwind info.
2962
2963         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
2964
2965         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
2966         
2967         * aot-runtime.c (decode_method_ref): Add a case for 
2968         MONO_AOT_METHODREF_WRAPPER_NAME.
2969
2970         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
2971         for AOT.
2972
2973         * aot-compiler.c (encode_method_ref): Use the new constants.
2974
2975         * aot-runtime.c (decode_method_ref): Ditto.
2976
2977         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
2978         be compiled, not the icall itself.
2979
2980 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
2981
2982         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
2983         using decode_method_ref ().
2984
2985         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
2986         convert it to an in32. Fixes #475859.
2987
2988         * arrays.cs: Add a test.
2989
2990 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2991
2992         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
2993         OP_LCONV_TO_U2.
2994
2995         * basic-long.cs: Add a test.
2996
2997 2009-02-12  Mark Probst  <mark.probst@gmail.com>
2998
2999         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
3000         remove the frame pointer in leaf methods which don't receive any
3001         arguments, don't throw exceptions and don't do dynamic stack
3002         allocations.
3003
3004 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3005
3006         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
3007         the fail_tramp changes. Hopefully fixes #475132.
3008
3009 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
3010
3011         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
3012         instead of mono_metadata_signature_dup_full.
3013
3014 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3015
3016         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
3017         for processing jump tables. Fixes #473787.
3018
3019 2009-02-11  Mark Probst  <mark.probst@gmail.com>
3020
3021         * mini-generic-sharing.c: mini_method_get_context() just calls
3022         mono_method_get_context_general() now.
3023
3024         * mini.c, mini.h: Moved get_object_generic_inst(),
3025         construct_object_context_for_method() and
3026         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
3027
3028 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
3029
3030         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
3031         basic block fell through to its successor bblock without a branch. Fixes
3032         #474718.
3033
3034         * iltests.il.in: Add a test.
3035         
3036         * aot-compiler.c (encode_method_ref): Encode methods of array types.
3037         (can_encode_patch): We can now handle arrays of generic parameters and
3038         array methods.
3039
3040         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
3041
3042         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
3043         the AOT file to avoid some #ifdefs in aot-runtime.c
3044
3045         * mini.h: Bump AOT file format version.
3046
3047 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3048
3049         * Makefile.am (fullaotcheck): Make this run the tests.
3050
3051         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
3052
3053 2009-02-10  Mark Probst  <mark.probst@gmail.com>
3054
3055         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
3056         individually.  Fixes #473482.
3057
3058 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
3061
3062 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
3063
3064         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
3065         (mono_compile_assembly): Hush compile warnings about
3066         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
3067         code path.
3068
3069 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3070
3071         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
3072
3073         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
3074
3075         * aot-compiler.c: Fix arm support.
3076
3077         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
3078         img_writer_emit_unset_mode () function.
3079
3080         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
3081         (mono_unwind_get_dwarf_pc_reg): Ditto.
3082
3083         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
3084         Move almost all platform specific code to a set of arch_ functions, 
3085         and document them to ease porting.
3086         
3087         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
3088
3089         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
3090
3091         * aot-compiler.c: Extract the image writing functionality into a separate
3092         module to reduce the size of this file.
3093
3094 2009-02-09  Geoff Norton  <gnorton@novell.com>
3095
3096         * mini-s390.c: Fix the signature of emit_sig_cookie.
3097
3098 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
3099
3100         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
3101
3102         * aot-runtime.c (is_shared_got_patch): Ditto.
3103
3104         * aot-runtime.c (load_named_code): Cope with the fact that 
3105         decode_got_entry () won't decode the patch fully if its corresponding got
3106         entry is already filled.
3107         
3108         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
3109         Initialize *ji.
3110         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
3111
3112         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
3113         as the moving pointer instead of 'buf' for consistency with the rest of the
3114         codebase.
3115         (mono_arch_create_monitor_exit_trampoline): Ditto.
3116
3117         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
3118         generic_class_init trampolines.
3119         (add_generic_class): Extract some code from add_generic_instances () into a
3120         separate function so it can be called from other places too.
3121         (compile_method): Call add_generic_class () for the classes of inflated methods
3122         referenced by the method.
3123         (can_encode_patch): Allow references to generic parameters.
3124
3125         * aot-runtime.c: Add support the patches required by the new trampolines.
3126         
3127         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
3128         support.
3129
3130         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
3131         full-aot support.
3132
3133         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
3134         this from get_throw_pending_exception, make the signature full aot compatible.
3135
3136         * Makefile.am (fullaotcheck): New target to run full-aot tests.
3137
3138         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
3139
3140         * exceptions.cs: Add a test.
3141
3142 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3143
3144         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
3145         use the DWARF_DATA_ALIGN constant instead.
3146
3147         * exception-<ARCH>.c: Update after the above change.
3148
3149         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
3150         dwarf unwinder.
3151
3152         * mini-arm.c: Enable the dwarf unwinder.
3153
3154         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
3155         instead of mono_class_setup_vtable ().
3156
3157 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3158
3159         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
3160         dwarf unwinder.
3161
3162         * mini-x86.h: Enable the dwarf unwinder.
3163
3164 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
3165
3166         Fix mcs/tests/test-7.cs
3167         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
3168         2009-02-03.
3169
3170 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
3171
3172         * mini.c (print_jit_stats): Remove some unused statistics.
3173
3174 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3175
3176         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
3177
3178 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3179
3180         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
3181         the method we get from mono_object_get_virtual_method() because
3182         that function does it properly, now.
3183
3184 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3185
3186         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
3187         opcodes. Fixes #472775.
3188
3189 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3190
3191         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
3192         fact that mono_find_jit_info() sometimes returns the context
3193         corresponding to the jit info in new_ctx.  Fixes #472600.
3194
3195 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3196
3197         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
3198         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
3199         klass->enum_basetype directly.
3200
3201         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
3202         enum subtypes.
3203
3204         * unwind.c: Avoid 0 sized arrays.
3205
3206 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3207
3208         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
3209         size on systems with 64k pages. Fixes #471389.
3210
3211 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3212
3213         Contributed under the terms of the MIT/X11 license by Steven
3214         Munroe <munroesj@us.ibm.com>.
3215
3216         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
3217         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
3218         necessary.
3219
3220 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3221
3222         Contributed under the terms of the MIT/X11 license by Steven
3223         Munroe <munroesj@us.ibm.com>.
3224
3225         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
3226         comparison fix.
3227
3228         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
3229         The trampoline can be longer on PPC64.
3230
3231 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3232
3233         Contributed under the terms of the MIT/X11 license by Steven
3234         Munroe <munroesj@us.ibm.com>.
3235
3236         * mini-ppc.c: Compiler warning fixes and trivial code
3237         simplifications.
3238
3239 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3240
3241         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
3242         ins->dreg which could be a hardware register, not a vreg.
3243
3244         * aot-compiler.c (emit_method_dwarf_info): Ditto.
3245         
3246         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
3247         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
3248
3249         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
3250         
3251         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
3252         ->dreg, that is not the vreg we are looking for.
3253
3254         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
3255
3256         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
3257         LIVERANGE_END.
3258
3259         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
3260         strange crashes.
3261
3262 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
3263
3264         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
3265
3266         * aot-compiler.c (emit_line_number_info): Fix line number emission when
3267         the line diff is 0.
3268
3269         * aot-compiler.c: Add xdebug support on x86.
3270
3271         * unwind.c: Add x86 support.
3272         
3273         * aot-compiler.c (emit_exception_debug_info): Control the emission of
3274         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
3275
3276         * mini.c (mini_method_compile): Ditto.
3277         
3278         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
3279         the variable index.
3280
3281         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
3282         which mimic .push_section/.pop_section in GAS.
3283         
3284         * aot-compiler.c: Emit precise live range information for variables.
3285
3286         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
3287
3288         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
3289         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
3290         them.
3291
3292         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
3293         the live ranges of variables.
3294
3295         * mini.h (struct MonoMethodVar): Add two fields containing the live range
3296         of the variable in terms of native offsets.
3297
3298 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
3299
3300         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
3301         
3302 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3303
3304         Contributed under the terms of the MIT/X11 license by Steven
3305         Munroe <munroesj@us.ibm.com>.
3306
3307         * exceptions-ppc.c (restore_regs_from_context): Correct operand
3308         order (offset then base reg) for ppc_load_multiple_regs.
3309         (emit_save_saved_regs) Correct operand order for
3310         ppc_store_multiple_regs.
3311         (mono_arch_get_call_filter): Correct operand order for
3312         ppc_load_multiple_regs.
3313
3314         * mini-ppc.c (emit_memcpy): Fix operand order for
3315         ppc_load_reg_update and ppc_store_reg_update.
3316         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
3317         (mono_arch_emit_epilog): Correct operand order for
3318         ppc_load_multiple_regs.
3319
3320         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
3321         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
3322
3323 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3324
3325         * cpu-ppc64.md: Fixed storer4_memindex length.
3326
3327 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
3328
3329         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
3330         line number info.
3331         
3332         * aot-compiler.c (emit_line_number_info): Optimize this.
3333
3334 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
3335
3336         * aot-compiler.c: Disassemble tokens in the IL disassembly.
3337         
3338         * aot-compiler.c: Add debug info for methods without debug info by
3339         emitting an IL file and having the line number info referencing that file.
3340
3341         * aot-compiler.c: Optimize the size of the generated line number info.
3342
3343         * aot-compiler.c: Emit line number info in xdebug mode.
3344
3345         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
3346         million arguments.
3347
3348 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
3349
3350         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
3351
3352         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
3353         is used.
3354
3355 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3356
3357         * basic-calls.cs: Test for the weird crash found on arm.
3358         
3359 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3360
3361         * cpu-arm.md: Increase the size of storer8_membase_reg and
3362         loadr8_membase_reg to 24 bytes to accomodate the extra add.
3363
3364         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
3365         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
3366         reg to LR otherwise we'll be loading/storing from just the offset.
3367
3368 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3369
3370         Question: if we are storing gint32's inside the "*native_offset",
3371         should we change the signature to "gint32 *native_offset" to
3372         ensure that we do not have type definition problems?
3373         
3374         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
3375         an int * as this is what the other function expects, causes
3376         problems with Freescale's compiler that defined int32_t to be a
3377         long and makes int incompatible 
3378
3379 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3380
3381         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
3382         filename conflict with bjam.
3383
3384 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3385
3386         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
3387         as it might use decomposed ops.
3388
3389 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3390
3391         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
3392
3393         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
3394         is defined.
3395
3396         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
3397
3398         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
3399         offsets.
3400
3401         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
3402         way registers are stored in MonoContext on arm.
3403
3404         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
3405         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
3406
3407         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
3408
3409         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
3410
3411         * mini.c (mini_init): Register mono_isfinite.
3412
3413         * jit-icalls.c (mono_isfinite): New jit icall.
3414
3415         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
3416         
3417         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
3418         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
3419         the parent frame.
3420
3421 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3422
3423         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
3424         separate frame and stack pointers, so we must use FP to find the register
3425         spill area.
3426         The FP reg is retrieved from the MonoContext::regs array.
3427
3428 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3429
3430         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
3431         as FPA requires it.
3432
3433 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3434
3435         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
3436         return R4 and R8 when not running under softfloat.
3437
3438         Fixes basic-calls.exe
3439
3440 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3441
3442         * mini-arm.c: Implement some overflow opcodes.
3443
3444 2009-01-29  Miguel de Icaza  <miguel@novell.com>
3445
3446         * ssa.c: handle another alloca.h
3447
3448         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
3449         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
3450         MONO_ARCH_USE_SIGACTION. 
3451
3452         * aot-runtime.c, mini-exceptions.c: Replace platform define with
3453         capability defines.
3454
3455         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
3456
3457         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
3458         PPC targets as sigaction does not exist on all platforms, define
3459         this on a per-platform basis.
3460
3461         Instead of erroring out if the platform is not defined, include
3462         mini-ppc-os.h, and expect that the OS specific setting provides
3463         the required information.   
3464
3465 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3466
3467         * aot-compiler.c: Fix --enable-minimal=aot.
3468
3469 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3470
3471         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
3472         previous change.
3473
3474 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
3475
3476         * exceptions-arm.c: Fix warnings.
3477
3478         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
3479         ARM.
3480
3481         * mini-x86.c: Fix --enable-minimal=jit build.
3482
3483         * mini.c: Really fix --enable-minimal=jit build.
3484         
3485         * mini.c (construct_object_context_for_method): Move this outside
3486         the DISABLE_JIT block to fix the --enable-minimal=jit build.
3487
3488         "Backported" of r124984 from 2.0 branch.
3489         
3490         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
3491
3492         "Backport" of r124977 + r124978 from 2.0 branch.
3493         
3494         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
3495         to avoid calling mono_exception_from_token () from the throw trampoline.
3496         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
3497         for throwing corlib exceptions, this fixes full-aot support for corlib
3498         exceptions.
3499
3500         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
3501
3502 2009-01-29  Miguel de Icaza  <miguel@novell.com>
3503
3504         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
3505         part of the changes to split the code in mini into operating
3506         system specific files.
3507
3508         This patch was done by copying mini.c to the respective files to
3509         preserve SVN history.
3510
3511 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
3512
3513         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
3514
3515 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
3516
3517         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
3518         remoting-invoke-with-check wrappers of shared methods.
3519
3520         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
3521
3522 2009-01-27  Mark Probst  <mark.probst@gmail.com>
3523
3524         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
3525         optimization if the top of stack is the last instruction in the
3526         bblock.  Otherwise it might have been used after its definition.
3527         Fixes #469742.
3528
3529 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
3530
3531         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
3532         method as well when get_vcall_slot () fails to match a code sequence.
3533
3534         * mini-arm.c: Fix the android build, which doesn't have
3535         __aeabi_read_tp.
3536
3537 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3538
3539         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
3540         the s390x build.
3541
3542 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
3543
3544         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
3545
3546 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3547
3548         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
3549         and put its id into jinfo->used_regs. This is only used on amd64,
3550         which is currently the only platform generating unwind info.
3551
3552         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
3553         the dwarf unwinder. This is required to correctly handle async exceptions
3554         like thread abort and stack overflows, which can happen while a method
3555         is in the middle of its prolog or epilog.
3556         
3557         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
3558         the unwind info belonging to an AOTed method.
3559
3560         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
3561         into cfg->unwind_ops.
3562         
3563         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
3564
3565         * mini.c (mini_init): Call mono_unwind_init ().
3566         (mini_cleanup): Call mono_unwind_cleanup ().
3567
3568         * unwind.c: Add functions for managing a set of unwind info entries, allowing
3569         unwind info to be shared between methods.
3570
3571         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
3572         saved in the LMF.
3573
3574         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
3575         get_throw_pending_exception () to avoid initialization races.
3576
3577         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
3578         mono_arch_exceptions_init () function.
3579
3580         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
3581
3582 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
3583
3584         * mini.c (mono_get_domain_intrinsic): New helper function.
3585         (mono_get_thread_intrinsic): Ditto.
3586
3587         * mini-arm.c mini-ia64.c: Use the new helper functions.
3588         
3589         * method-to-ir.c (mono_method_to_ir): Fix the comment for
3590         the last constrained_call change, since it is needed in the non-AOT
3591         case as well.
3592
3593         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
3594         
3595         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
3596         mono_get_lmf_addr () on arm eabi linux.
3597
3598 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
3599
3600         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
3601         code sequence which matches a non-virtual call.
3602
3603 2009-01-23  Mark Probst  <mark.probst@gmail.com>
3604
3605         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
3606         stack pointer (r1).
3607
3608 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
3609
3610         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
3611         runtime-invoke wrappers, since they are also shared based on signature.
3612
3613 2009-01-22  Mark Probst  <mark.probst@gmail.com>
3614
3615         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
3616         info from the (correct) context.
3617
3618 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
3619
3620         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
3621         
3622         * unwind.c (mono_unwind_frame): New function to unwind through a frame
3623         using dwarf unwinding info. Not yet used.
3624
3625         * mini.c (mini_init): When using xdebug, disable freeing of domains.
3626
3627 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3628
3629         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
3630         descriptors.
3631
3632         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
3633         special case and handle mono_arch_delegate_invoke_impl() returning
3634         function descriptors.
3635
3636         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
3637         trampolines return function descriptors, too.
3638
3639 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3640
3641         * method-to-ir.c (handle_alloc): Avoid generic instances in the
3642         out_of_line optimization.
3643
3644 2009-01-21  Martin Baulig  <martin@ximian.com>
3645
3646         * mini.h
3647         (MonoCompile): Added `disable_deadce_vars' to disable removing
3648         unused variables.
3649
3650         * mini.c
3651         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
3652         inside the debugger.
3653
3654         * liveness.c (mono_analyze_liveness): Don't remove any unused
3655         variables if `cfg->disable_deadce_vars' is set.
3656
3657 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3658
3659         * method-to-ir.c: Only apply exception constructor optimization if
3660         the the method actually belongs to an exception class.  Fixes
3661         #467456.
3662
3663 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3664
3665         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
3666         change inside a #ifdef __mono_ppc64__.
3667
3668         * aot-compiler.c (compile_method): Remove the previous limitation.
3669
3670         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
3671         on type variables in AOTed code.
3672         
3673         * aot-compiler.c (compile_method): Skip generic methods having type 
3674         constraints on their generic parameters.
3675
3676         * aot-compiler.c (compile_method): Check for methods which cannot be
3677         encoded inside RGCTX_FETCH patches as well.
3678
3679         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
3680         build.
3681
3682 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3683
3684         * method-to-ir.c: Force the vtable variable in shared generic code
3685         for the case that they might show up on a stack trace where they
3686         are needed.
3687
3688         * mini-exceptions.c: Save and use generic sharing info as well as
3689         IP in stack traces to resolve shared generic instantiations.
3690
3691 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
3694         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
3695
3696 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3697
3698         * method-to-ir.c: Do generic sharing for array constructors.
3699
3700 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
3701
3702         * mini-exceptions.c (mono_print_thread_dump): Add information
3703         about the thread state using wapi_current_thread_desc.
3704
3705 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
3706
3707         * basic-simd.cs: Tests for the new constructors. 
3708
3709 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
3710
3711         * mini-ops.h: Added OP_EXPAND_*
3712
3713         * cpu-x86.md: Same.
3714
3715         * mini-x86.c (mono_arch_output_basic_block): Same.
3716         
3717         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
3718
3719 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
3720
3721         * iltests.il.in: Add a test for #467385.
3722
3723 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
3724
3725         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
3726         thread been cleaned up is not the same currently in execution.
3727
3728         Fixes appdomain-unload crashes on windows, osx and linux variants
3729         without the __thread keyword.
3730
3731 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
3732
3733         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
3734         (koush@koushikdutta.com). Implement this for android.
3735
3736         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
3737         begins with a digit.
3738
3739         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
3740         mono_marshal_get_write_barrier ().
3741
3742 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
3743
3744         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
3745         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
3746         that pass them on a register pair.
3747
3748         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
3749         test was crashing due to that.
3750
3751 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
3752
3753         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
3754         trampoline code. Include ucontext.h only if available.
3755
3756 2009-01-15  Mark Probst  <mark.probst@gmail.com>
3757
3758         * mini.c: mono_domain_lookup_shared_generic() takes an open method
3759         and doesn't check whether it's sharable, like it was before
3760         removing the shared generics hash.  This brings IronPython
3761         performance back to what it was before that change.
3762
3763 2009-01-14  Mark Probst  <mark.probst@gmail.com>
3764
3765         * method-to-ir.c: Handle delegate invocation optimization earlier,
3766         otherwise it would be handled (much more slowly) by the
3767         final/sealed optimization.
3768
3769 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
3770
3771         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
3772         domain is not set. Fixes #465864.
3773
3774 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3775
3776         * method-to-ir.c: Don't stop sharing of generic methods with catch
3777         clauses - we already handle those.
3778
3779 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3780
3781         * mini.c, mini.h: lookup_generic_method() is now
3782         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
3783         making the shared_generics_hash obsolete.
3784
3785 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3786
3787         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
3788         use the red zone.  Make room on the stack first and then use it,
3789         not the other way around.
3790
3791 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
3792
3793         * mini.c (mini_init): Call mono_xdebug_init ().
3794
3795         * aot-compiler.c (mono_xdebug_init): Make this non-static.
3796
3797 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
3798
3799         * TestDriver.cs: Add an --iter argument to run tests multiple times.
3800
3801         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
3802         trampolines.
3803
3804         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
3805         debug+unwind info for trampolines.
3806
3807         * mini.c (mono_create_unwind_op): New helper function.
3808
3809         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
3810
3811 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
3812
3813         * aot-compiler.c: Fix the build.
3814
3815 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
3816
3817         * Makefile.am: Update dtrace-prelink.sh location.
3818
3819 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
3820
3821         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
3822         optimization. Fixes #464520.
3823
3824 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
3825
3826         * mini-amd64.c : Adding code to save/restore non-volatile registers
3827            on Winx64.
3828
3829         * exceptions-amd64.c : Adding code to save/restore non-volatile 
3830           registers on Winx64.
3831
3832         Contributed under MIT/X11 license.
3833
3834 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
3835
3836         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
3837         __GNUC_MINOR__ which can break when the major version changes.
3838
3839 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
3840
3841         * basic-simd.cs: Add tests for usage of the sizeof opcode.
3842
3843 2009-01-07  Geoff Norton  <gnorton@novell.com>
3844
3845         * helpers.c:  Allow mono -v -v -v to work on darwin.
3846
3847 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
3848
3849         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
3850           pattern. 
3851
3852         Contributed under MIT/X11 license.
3853
3854 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
3855
3856         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
3857         instead of directly accessing type->data.klass. Fixes #462016.
3858         (mono_allocate_stack_slots_full): Ditto.
3859
3860         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
3861         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
3862
3863         * aot-compiler.c (emit_plt): Fix ARM build.
3864
3865 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
3868         
3869         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
3870         change.
3871
3872         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
3873         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
3874         #463357.
3875
3876         * iltests.il.in: Add a regression test.
3877
3878 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3879
3880         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
3881
3882 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3883
3884         * basic-simd.cs: Add a regression test for #462457.
3885
3886 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3887
3888         * mini-ops.h: Add a definition of XPHI.
3889
3890         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
3891
3892         * ssa.c (op_phi_to_move): Handle XPHI.
3893
3894         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
3895
3896         Fixes #462457
3897
3898 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3899
3900         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
3901
3902 2008-12-31  Geoff Norton  <gnorton@novell.com>
3903
3904         * mini-ppc.c: The prolog size allocated can be too small for darwin
3905         ppc32 under certain circumstances.  Also fix a small logic bug.
3906
3907 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
3908
3909         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
3910         while loading AOT methods.
3911
3912         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
3913         since only the former is nulled out after a successful cast. This prevents
3914         crashes with rethrown exceptions when using --debug=casts.
3915
3916 2008-12-24  Mark Probst  <mark.probst@gmail.com>
3917
3918         * mini.h: New macro for checking whether a method is final,
3919         i.e. whether the method or its class is marked final.
3920
3921         * method-to-ir.c: Use the new macro for all final-checks
3922         consistently.  Fixes the crash in the System.ServiceModel tests.
3923
3924 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3925
3926         * mini-exceptions.c (get_exception_catch_class): Corrected another
3927         overly strict assertion.
3928
3929 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3930
3931         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
3932         Clobbering it is not allowed because the caller might use it as
3933         the vtable register in the interface call.
3934
3935 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3936
3937         * mini-exceptions.c (get_exception_catch_class): Corrected an
3938         overly strict assertion.
3939
3940 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
3941         
3942         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
3943
3944         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
3945
3946         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
3947
3948         * cpu-mips.md: correct lengths for certain long_ opcodes.
3949
3950         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
3951
3952         * mini-mips.c: Add support for more long operations. Fix issues with stack frame layout for n32 (still not perfect yet). Add mips_emit_load_const().
3953         
3954 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3955
3956         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
3957         
3958 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3959         
3960         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
3961         
3962 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3963
3964         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
3965         next basic block.
3966         
3967 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
3968
3969         * mini.h: Allow MonoInst 'p' field to alias with the low-order bits of the 'const_val' fields correctly on big-endian systems when SIZEOF_VOID_P < SIZEOF_REGISTER
3970
3971         * ir-emit.h: Change SIZEOF_VOID_P to SIZEOF_REGISTER, init instruction through inst_c* fields instead of inst_p* fields in case sizeof(inst_p) < sizeof(inst_c)
3972         
3973 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
3974         
3975         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
3976         
3977 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
3978
3979         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
3980         gshared code. Fixes #458947.
3981
3982         * generics.cs: Add a test.
3983
3984 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3985         
3986         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3987         
3988         * mini-mips.c: first pass n32 code generation.
3989
3990         * mini-mips.h: datatypes and defines for n32 support.
3991
3992         * exceptions-mips.c: first pass n32 code generation.
3993         
3994         * tramp-mips.c: first pass n32 code generation.
3995         
3996         * cpu-mips.md: add long_ opcodes.
3997         
3998 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3999
4000         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4001
4002         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4003         
4004         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4005         
4006         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4007
4008         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4009
4010         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4011
4012         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4013
4014         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4015
4016         * helpers.c: for mips/n32, don't pass -mips32 to objdump
4017
4018 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
4019
4020         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
4021
4022 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
4023
4024         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
4025
4026 2008-12-12  Mark Probst  <mark.probst@gmail.com>
4027
4028         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
4029         descriptors for helper functions directly in front of the code.
4030
4031 2008-12-11  Mark Probst  <mark.probst@gmail.com>
4032
4033         * method-to-ir.c: Removed an unnecessary assertion.
4034
4035 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4036
4037         * method-to-ir.c: Merge SGEN changes from the old JIT.
4038
4039 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4040
4041         * driver.c (compile_all_methods_thread_main): Handle failure of
4042         mono_get_method ().
4043
4044 2008-12-10  Mark Probst  <mark.probst@gmail.com>
4045
4046         * mini-ppc.c: Merged with mini-ppc64.c.
4047
4048         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
4049
4050         * Makefile.am: Use the same sources for PPC and PPC64.
4051
4052         * mini-ppc64.c: Removed.
4053
4054 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4055
4056         * branch-opts.c (remove_block_if_useless): Extract fall through detection
4057         code to mono_bb_is_fall_through.
4058         
4059         * branch-opts.c (mono_remove_critical_edges): Same.
4060
4061 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4062
4063         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
4064         expect that an OP_BR_REG will be there.
4065
4066 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4067
4068         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
4069         for the many branch ops. The original check miss OP_BR_REG.
4070
4071         Fixes #457574.
4072         
4073 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4074
4075         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
4076
4077 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4078
4079         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
4080         while holding the aot lock.
4081
4082 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4083
4084         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
4085         
4086 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4087
4088         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
4089           to release all runtime callable wrappers held by the runtime.
4090
4091         Contributed under MIT/X11 license.
4092
4093 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4094
4095         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
4096           for Winx64.
4097
4098         Contributed under MIT/X11 license.
4099
4100 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4101
4102         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
4103         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
4104
4105 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4106
4107         * cpu-mips.md: fix ckfinite length
4108
4109         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
4110         (mono_arch_lowering_pass): cleanup, rearrange for clarity
4111         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
4112         
4113 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
4114
4115         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
4116         
4117 2008-12-08  Geoff Norton  <gnorton@novell.com>
4118
4119         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
4120         size by 8 bytes as well.
4121
4122 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4123
4124         * basic-simd.cs: Fix method names for Vector16b.
4125         
4126 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4127
4128         * basic-simd.cs: Fix method names for Vector16sb.
4129
4130 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4131
4132         * basic-simd.cs: Fix method names for Vector8us.
4133         
4134 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4135
4136         * basic-simd.cs: Fix method names for Vector8s.
4137         
4138 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4139
4140         * basic-simd.cs: Fix method names for Vector4ui.
4141
4142 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4143
4144         * basic-simd.cs: Fix method names for Vector2l.
4145
4146 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4147
4148         * basic-simd.cs: Fix method names for Vector2d.
4149
4150 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4151
4152         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
4153         that are extension methods.
4154
4155 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4156
4157         * basic-simd.cs: Fix method names for Vector4f.
4158
4159 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
4160
4161         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
4162         as such. Fixes #456669.
4163
4164 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4165
4166         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
4167         
4168 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4169
4170         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
4171         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
4172         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
4173         (mips_adjust_stackframe): handle FP spills
4174                 
4175         * mini-ops.h: add mips_mtc1_s2
4176         
4177         * cpu-mips.md: add mips_mtc1_s2
4178         
4179 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
4180
4181         * unwind.c: New file, move the unwind info encoding functions here from
4182         aot-compiler.c, so they could be used at runtime too.
4183
4184 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4185
4186         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
4187         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
4188         
4189 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4190
4191         * mini-mips.c: cleanup warnings
4192         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
4193         (mips_adjust_stackframe): handle case of taking the address of stack locals
4194         
4195 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4196
4197         * aot-compiler.c: Implement a few functions missing from the asm writer.
4198         (emit_method_code): Only write symbols for methods when using the bin
4199         writer, since the assembler can't deal with the characters in our method
4200         names.
4201
4202         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
4203
4204         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
4205         call.
4206
4207         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
4208         a bit to also restore %rax.
4209
4210 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4211
4212         * mini-ppc.c: Some simple merges from mini-ppc64.c.
4213
4214 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
4217         arguments.
4218
4219 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4220
4221         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
4222
4223         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
4224         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
4225
4226         * exceptions-ppc64.c: Removed.
4227
4228         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
4229
4230 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4231
4232         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
4233         tramp-ppc64.c.
4234
4235         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
4236
4237         * tramp-ppc64.c: Removed.
4238
4239 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4240
4241         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
4242         the TYPESPEC table.
4243
4244 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4245
4246         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
4247
4248         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
4249         mini-ppc.h instead of mini-ppc64.h.
4250
4251         * mini-ppc64.h: Removed.
4252
4253 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4254
4255         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
4256         
4257         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
4258         
4259 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4260
4261         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
4262         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
4263         code easier.
4264
4265 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4266
4267         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
4268
4269 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4270
4271         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
4272
4273 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4274
4275         * basic-simd.cs: Tests for operator == and != on Vector4f.
4276
4277 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4278
4279         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
4280
4281         * simd-intrinsics.c: Kill useless enum.
4282
4283 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4284
4285         * cpu-mips.md: add long_conv_to_ovf_i4_2
4286         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
4287
4288 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4289
4290         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
4291         
4292         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
4293
4294 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4295
4296         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
4297         
4298 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4299
4300         * basic-simd.cs: Add tests for new methods.
4301
4302 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4303
4304         * simd-intrinsics.c: Add support for operator == and !=
4305         on Vector4(u)i.
4306
4307         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
4308
4309 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4310
4311         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
4312
4313 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
4314
4315         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
4316
4317         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
4318         MONO_PATCH_INFO_ICALL_ADDR.
4319
4320         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
4321
4322         * aot-compiler.c: Resurrect full-aot support.
4323
4324 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4325
4326         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
4327         
4328 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4329
4330         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
4331         
4332 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
4333
4334         * basic-simd.cs: Fix tests to work under ppc.
4335         Remove tests for methods that will be removed.
4336
4337 2008-12-03  Mark Probst  <mark.probst@gmail.com>
4338
4339         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
4340         generic type (via a typedef or typeref) correctly.
4341
4342 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
4343
4344         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
4345         diagnose an assertion failure.
4346
4347 2008-12-02  Mark Probst  <mark.probst@gmail.com>
4348
4349         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
4350         Fix trampoline size.
4351
4352         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
4353         conversion opcodes are implemented natively instead via emulation.
4354
4355 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4356
4357         * cpu-mips.md: remove mips_xori
4358
4359         * mini-ops.h:  remove mips_xori
4360
4361         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
4362
4363         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
4364         
4365         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
4366         
4367 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4368
4369         * cpu-mips.md: fix instruction lengths.
4370
4371         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
4372
4373         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
4374
4375         * mini-ops.h: fix slti / sltiu op profiles.
4376         
4377 2008-12-02  Martin Baulig  <martin@ximian.com>
4378
4379         * method-to-ir.c (mono_method_to_ir): Disable debugging
4380         information for the init locals block to make the debugger stop
4381         after all locals have been initalized.
4382
4383 2008-12-02  Martin Baulig  <martin@ximian.com>
4384
4385         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
4386         running inside the debugger.
4387
4388 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
4389
4390         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
4391         is enabled.
4392
4393         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
4394         alu->alu imm optimization which only shows if deadce is disabled.
4395
4396         * aot-compiler.c: Rename the function names for the binary and asm writers
4397         so they can coexist in the same process. Rework the xdebug code to use the
4398         asm writer. This avoids the need to call into the runtime to dump the
4399         debugging info. Add more debugging info for types.
4400
4401         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
4402
4403         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
4404         cpu description tables, they can't occur in cpu-<ARCH>.md.
4405
4406         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
4407         the stack in CEE_LDFLDA. Fixes #450542.
4408
4409         * generics.cs: Add a new test.
4410
4411 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4412
4413         * mini-ops.h: updated MIPS opcodes
4414         * mini-mips.c: decompose long opts
4415         * mini-mips.h: decompose long opts
4416         
4417 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
4418
4419         * cpu-mips.md: fix length on int_rem_un
4420         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
4421         
4422 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
4423
4424         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
4425
4426         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
4427
4428 2008-11-29  Martin Baulig  <martin@ximian.com>
4429
4430         * mini-exceptions.c (mono_handle_native_sigsegv): Check
4431         mono_debug_using_mono_debugger() in addition to the
4432         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
4433
4434 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4435
4436         * mini-ops.h: updated more MIPS opcodes
4437         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
4438         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
4439         
4440 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4441
4442         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
4443
4444 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4445
4446         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
4447         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
4448         * mini-ops.h: correct selected mips opcode entries
4449         
4450 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4451
4452         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
4453         make them work.
4454
4455 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4456
4457         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
4458
4459 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4460
4461         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
4462         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
4463         * mini-mips.h: disable IMT
4464         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
4465         
4466 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4467
4468         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
4469
4470 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4471
4472         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
4473
4474 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
4475
4476         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
4477         consistency.
4478
4479 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4480
4481         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
4482         for Set/GetVector aligned versions.
4483
4484 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4485
4486         * basic-simd.cs: Add tests for Get/SetVector.
4487
4488 2008-11-27  Mark Probst  <mark.probst@gmail.com>
4489
4490         * mini.c: Removed g_slist_append_mempool().  Now in
4491         metadata/mempool.c.
4492
4493 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4494
4495         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
4496         size properly and make the bounds check optional.
4497
4498         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
4499         for SetVector and IsAligned.
4500
4501 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
4502
4503         * mini.c: Remove unused mono_normalize_opcodes () function.
4504
4505 2008-11-26  Mark Probst  <mark.probst@gmail.com>
4506
4507         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
4508         using the new atomic add ops now.
4509
4510         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
4511         add.
4512
4513 2008-11-26  Mark Probst  <mark.probst@gmail.com>
4514
4515         * mini-ppc64.c: Several fixes.
4516
4517 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4518
4519         * cpu-mips.md: added jump_table
4520         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
4521
4522 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4523
4524         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
4525
4526 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4527
4528         * mini-ops.h: corrected a handful of MIPS opcodes.
4529
4530 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4531
4532         * aot-compiler.c: MIPS to use ELF writer
4533
4534 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4535
4536         * mini-codegen.c: remove MIPS specific assert.
4537
4538 2008-11-25  Mark Probst  <mark.probst@gmail.com>
4539
4540         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
4541         fixes.  PPC64 now passes most of the runtime regressions.
4542
4543 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
4544
4545         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
4546         volatile intervals a bit.
4547
4548 2008-11-24  Mark Probst  <mark.probst@gmail.com>
4549
4550         * basic-long.cs: New test case.
4551
4552 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
4553
4554         * mini.c (mini_method_compile): Disable globalra for large methods for 
4555         now.
4556
4557         * regalloc2.c (order_moves): Add fp support.
4558
4559         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
4560         source bblock ends with an OP_BR_REG.
4561
4562         * ratests.cs: Add a new test.
4563
4564 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4565
4566         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
4567         sharing.  PPC64 now passes generics.exe.
4568
4569 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4570
4571         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
4572
4573 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
4574
4575         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
4576         memory when mono_jit_info_table_find () can't find the method in the
4577         LMF case.
4578
4579         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
4580         AOTed code too.
4581         
4582         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
4583         writer too.
4584
4585 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4586
4587         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
4588         Several fixes.  PPC64 now runs exceptions.exe and
4589         devirtualization.exe.
4590
4591 2008-11-22  Mark Probst  <mark.probst@gmail.com>
4592
4593         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
4594         arrays.exe and basic-math.exe.
4595
4596 2008-11-22  Mark Probst  <mark.probst@gmail.com>
4597
4598         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
4599         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
4600
4601 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4602
4603         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
4604
4605 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4606
4607         * method-to-ir.c: Move bounds checking macros to ir-emit.h
4608
4609         * ir-emit.h: Move macros from method-to-ir.c to here.
4610
4611 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4612
4613         * mini-ops.h: Correct the long simd ops to use LREG.
4614
4615 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
4616
4617         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
4618         
4619         * mini-ops.h: Correct the dreg type of a few long opcodes.
4620
4621         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
4622         Add netbsd support.
4623
4624 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
4625
4626         * mini-ppc.c: remove negative stack references in epilog
4627         for platforms that don't support the red zone.
4628
4629 2008-11-21  Mark Probst  <mark.probst@gmail.com>
4630
4631         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
4632         point regs.  Now PPC64 passes basic-calls.exe.
4633
4634 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4635
4636         * basic-simd.cs: Add tests for accessors of Vector2l.
4637
4638 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4639
4640         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
4641
4642         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
4643         
4644         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
4645
4646 2008-11-21  Mark Probst  <mark.probst@gmail.com>
4647
4648         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
4649         PPC64 passes basic-long.exe.
4650
4651 2008-11-20  Mark Probst  <mark.probst@gmail.com>
4652
4653         * decompose.c: Decompose carry and overflow add on PPC64 like on
4654         other 64 bit archs.  Don't decompose sub at all on PPC64.
4655
4656         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
4657         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
4658         basic-long.exe.
4659
4660 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4661
4662         * basic-simd.cs: Add tests for accessors of Vector2d.
4663
4664 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4665
4666         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
4667
4668         * cpu-x86.md: Same.
4669
4670         * mini-x86.c (mono_arch_output_basic_block): Same.
4671         
4672         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
4673
4674 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4675
4676         * basic-simd.cs: Add tests for accessors of Vector4f.
4677
4678 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4679
4680         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
4681
4682         * cpu-x86.md: Same.
4683
4684         * mini-x86.c (mono_arch_output_basic_block): Same.
4685         
4686         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
4687
4688 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4689
4690         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
4691
4692 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4693
4694         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
4695
4696         * cpu-x86.md: Same.
4697
4698         * mini-x86.c (mono_arch_output_basic_block): Same.
4699         
4700         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
4701
4702 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4703
4704         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
4705
4706 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4707
4708         * simd-intrinsics.c: Enable setters for Vector16sb.
4709
4710 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4711
4712         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
4713
4714         * cpu-x86.md: Same.
4715
4716         * mini-x86.c (mono_arch_output_basic_block): Same.
4717         
4718         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
4719
4720 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
4721
4722         * simd-intrinsics.c: Implement setter for Vector8us.
4723
4724 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
4725
4726         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
4727         for dead variables.
4728
4729 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
4730
4731         * mini-ppc.c: remove references to the red zone in the prolog
4732         (for systems that don't support it).
4733
4734 2008-11-19  Mark Probst  <mark.probst@gmail.com>
4735
4736         * cpu-ppc64.md: Fixed a few instruction lengths.
4737
4738         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
4739         now.
4740
4741 2008-11-19  Mark Probst  <mark.probst@gmail.com>
4742
4743         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
4744         basic.exe now.
4745
4746 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
4747
4748         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
4749
4750 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
4751
4752         * mini-ops.h: Added OP_INSERT_I2.
4753
4754         * cpu-x86.md: Same.
4755
4756         * mini-x86.c (mono_arch_output_basic_block): Same.
4757         
4758         * simd-intrinsics.c: Implement setter for Vector8s.
4759
4760         * simd-methods.h: Add the names of get setters of Vector8s.
4761
4762 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
4763
4764         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
4765         
4766         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
4767         parameters.
4768
4769         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
4770
4771 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4772
4773         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
4774         for PPC64.  An empty program runs now.
4775
4776 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
4777
4778         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
4779
4780         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
4781         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
4782         info for JITted code is emitted into a shared library, loadable into gdb.
4783
4784 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4785
4786         * Makefile.am: Changes to build PPC64.
4787
4788         * mini-arch.h: Include mini-ppc64.h on PPC64.
4789
4790 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4791
4792         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
4793         in PPC code up to r119147.
4794
4795 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4796
4797         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
4798         cpu-ppc64.md: Changes for PPC64.
4799
4800         Based on code submitted by andreas.faerber@web.de at
4801         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
4802         X11/MIT license.
4803
4804 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4805
4806         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
4807         cpu-ppc64.md: Copied from the corresponding PPC files from
4808         r118846.
4809
4810 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
4811
4812         * mini-ops.h: Added OP_ROUND.
4813
4814         * cpu-x86.md: Added round.
4815
4816         * mini-x86.c: Added support for intrinsicing Math.Round (double).
4817
4818         * basic-math.cs: Added test_0_round to test rounding.
4819
4820         Contributed under MIT/X11 license.
4821
4822 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
4823
4824         * aot-compiler.c : Fix the Winx64 build.
4825
4826         Contributed under MIT/X11 license.
4827
4828 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4829
4830         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
4831         in OP_EXTRACT_R8 to avoid possible stack corruption.
4832
4833 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4834
4835         * mini-ops.h: Added OP_EXTRACT_R8/I8.
4836
4837         * cpu-x86.md: Added extract_r8.
4838
4839         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
4840         
4841         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
4842         a couple of OP_EXTRACT_I4.
4843
4844         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
4845
4846         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
4847
4848 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4849
4850         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
4851         and not 4.1. 
4852
4853 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4854
4855         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
4856         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
4857
4858         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
4859         are not needed any more.
4860
4861         * mini.h: Remove the unused INS_LIST macros.
4862
4863         * mini.c (mini_method_compile): Remove a disable globalra case which is no
4864         longer needed.
4865
4866         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
4867         ir-emit.h.
4868
4869         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
4870         mono_alloc_ireg () instead.
4871
4872         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
4873         macros.
4874
4875         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
4876         on amd64.
4877
4878         * aot-runtime.c (load_aot_module): Disable AOT when running under
4879         CAS.
4880
4881         * mini-amd64.h: Change the monitor fastpath defines to check for
4882         !PLATFORM_WIN32 so they work on *bsd too.
4883
4884         * mini.h mini.c mini-hhpa.c: Remove more unused code.
4885
4886         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
4887
4888         * mini.h (MonoCompile): Remove new_ir flag.
4889
4890         * regalloc.h regalloc.c: Remove unused code.
4891
4892         * cpu-*.md: Remove more unused opcodes.
4893
4894         * simple-cee-ops.h simple-mini-ops.h: Removed.
4895
4896         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
4897         
4898 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4899
4900         * aliasing.h: Removed.
4901
4902         * *.c: Remove references to aliasing.h and inssel.h.
4903
4904         * mini.c: Remove additional unused functions.
4905
4906         * mini-ops.h cpu-*.md: Remove unused opcodes.
4907
4908 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4909
4910         Remove the old JIT code.
4911
4912         * inssel*.brg: Removed.
4913
4914         * ssa.c abcremoval.c aliasing.c: Removed.
4915
4916         * ssa2.c: Renamed to ssa.c.
4917
4918         * abcremoval2.c: Renamed to abcremoval.c.
4919
4920         * *.c: Removed all !cfg->new_ir code.
4921
4922         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
4923         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
4924
4925         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
4926         
4927 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4928
4929         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
4930         to simplify the code and cut back on the number of global symbols in the AOT
4931         file.
4932         
4933         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
4934
4935 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
4936
4937         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
4938         with the got/got_info tables.
4939
4940         * mini.h: Bump AOT file format version.
4941         
4942         * unwind.h: New file, contains definitions for stack unwinding.
4943
4944         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
4945         to cfg->unwind_ops.
4946         
4947         * aot-compiler.c: Generalize the emitting of unwind information to use the
4948         information in cfg->unwind_ops.
4949
4950         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
4951
4952         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
4953         AOT method frames. Enable writing symbols for methods by default.
4954
4955 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
4956
4957         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
4958         and make it work with vectors of element sizes 1, 2 and 4.
4959
4960         * simd-intrinsics.c: Enable getter for all vectors with element size
4961         1, 2 or 4.
4962
4963         * simd-methods.h: Add the names of other getters.
4964
4965         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
4966
4967         * cpu-x86.md: Same.
4968
4969         * mini-x86.c: Same.
4970
4971 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
4972
4973         * mini-ppc.h: portability fix.
4974
4975 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4976
4977         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
4978         buggy and will overwrite it.
4979
4980 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4981
4982         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
4983         Use it to emit local symbols for all methods so AOTed methods show up with
4984         their full name in gdb/valgrind output.
4985
4986 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
4987
4988         * mini-ppc.c: portability fixes.
4989
4990 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4991
4992         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
4993         entries out of the if (!generic_shared...) code so it is always done.
4994         (mono_class_init_trampoline): Do the patching when running under valgrind
4995         too, newer versions of valgrind have no problems with it.
4996
4997 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4998
4999         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
5000         further sections.
5001
5002 2008-11-13  Mark Probst  <mark.probst@gmail.com>
5003
5004         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
5005         filters.
5006
5007 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5008
5009         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
5010
5011 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5012
5013         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
5014
5015         * cpu-x86.md: Same.
5016
5017         * mini-x86.c: Same.
5018
5019         * simd-intrinsics.c: Same.
5020
5021 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5022
5023         * simd-intrinsics.c: Enable constructor intrinsics for all types.
5024
5025 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5026
5027         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
5028         to work with more Vector types.
5029
5030 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5031
5032         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
5033         store the elemens directly instead of using and intermediate.
5034
5035 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5036
5037         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
5038
5039         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
5040         to preserve %eax for aot plt trampolines.
5041
5042         * aot-compiler.c (compile_method): Don't skip synchronized methods.
5043         (encode_method_ref): Flag synchronized methods so they won't go through
5044         the AOT trampoline.
5045
5046         * aot-compiler.c: Additional work to support AOTing synchronized methods/
5047         wrappers.
5048
5049         * cpu-ia64.md (jmp): Increase max length.
5050
5051 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5052
5053         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
5054         open generic classes.
5055
5056         * aot-compiler.c: Enable the ELF writer on ELF platforms.
5057
5058         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
5059         box+brtrue optimization since it causes test failures on x86.
5060
5061 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5062
5063         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
5064
5065         * cpu-x86.md: Same.
5066
5067         * mini-x86.c: Same.
5068
5069         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
5070         for simd ctor values. 
5071
5072         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
5073         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
5074
5075 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5076
5077         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
5078         LogicalRightShift.
5079
5080         * simd-instrincs.c: Same.
5081
5082         * basic-simd.cs: Same.
5083
5084 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5085
5086         * ratests.cs: Add more tests.
5087
5088         * regalloc2.c (add_spill_code): Handle more corner cases.
5089
5090 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5091
5092         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
5093         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
5094         both the source an destination of an instruction.
5095
5096 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5097
5098         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
5099         wapihandles.c: more portability changes.
5100
5101 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
5102
5103         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
5104         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
5105         safe to execute in a signal handler and the kernel provides better
5106         the info in /proc/self/smaps. Avoid the assert on sigaction during
5107         cleanup.
5108
5109 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5110
5111         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
5112         do the bblock linking hack if it is actually needed.
5113
5114         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
5115         up linking.
5116
5117         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
5118         crash problem is fixed.
5119
5120         * branch-opts.c (mono_remove_critical_edges): Link up newly added
5121         bblocks.
5122
5123         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
5124         for catch clauses.
5125         (mini_method_compile): Set the starting value of next_vreg to 
5126         MAX_IREGS + MAX_FREGS when using globalra.
5127
5128         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
5129         filter clauses with BB_EXCEPTION_HANDLER.
5130
5131         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
5132
5133 2008-11-10  Mark Probst  <mark.probst@gmail.com>
5134
5135         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
5136         space for stdcall.  Fixes regressions on Win32.
5137
5138 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
5139
5140         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
5141         bblocks.
5142         (linear_scan): Remove an assert which doesn't seem to be needed.
5143
5144         * local-propagation.c (mono_local_deadce): Avoid a call to
5145         MONO_DELETE_INS which would screw up the instruction linking.
5146
5147         * mini.c (mono_decompose_op_imm): Make this work with globalra.
5148
5149         * regalloc2.c: Upgrade to work the current JIT code.
5150
5151 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
5152
5153         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
5154         case.
5155
5156         * aot-runtime.c: Remove some dead code.
5157
5158         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
5159         consistency.
5160         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
5161
5162         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
5163         trampolines using sscanf since atoi doesn't work on large unsigned values.
5164
5165         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
5166         Initialize code_size.
5167
5168 2008-11-08  Mark Probst  <mark.probst@gmail.com>
5169
5170         * method-to-ir.c (mini_emit_inst_for_method): Make
5171         Interlocked.CompareExchange work for Int arguments on 32 bit
5172         archs, as well.
5173
5174 2008-11-07  Mark Probst  <mark.probst@gmail.com>
5175
5176         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
5177
5178 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
5179
5180         * main.c Fix MSVC build.
5181
5182         Contributed under MIT/X11 license.
5183
5184 2008-11-06  Mark Probst  <mark.probst@gmail.com>
5185
5186         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
5187         alignment larger than 8 bytes are aligned correctly, too.
5188
5189         * mini.c: Honor the min_align field of MonoClass when laying out
5190         the stack.
5191
5192 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
5193
5194         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
5195
5196         * aot-compiler.c (emit_plt): Fix a warning.
5197         
5198         * aot-compiler.c: Implement ARM support in the binary writer.
5199
5200 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5201
5202         * basic-simd.cs: Add test for getter with byref arg.
5203         Fix the naming of a few tests.
5204         Add missing checks to a test.
5205
5206 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5207
5208         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
5209
5210         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
5211         most of the full-aot support for monitor enter/exit trampolines.
5212
5213         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
5214         enter/exit trampoline creation functions.
5215
5216         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
5217         make dist.
5218
5219 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
5220
5221         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
5222         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
5223         implement the needed functionality without adding crap to the runtime.
5224
5225 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5226
5227         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
5228         non-x86 builds.
5229
5230         * mini.c (mono_build_date): New global version holding the build date in
5231         string format.
5232         
5233         * Makefile.am (buildver.c): Generate a file containing the build date.
5234
5235         * main.c: Set the build date from the generated file.
5236
5237         * mini.c (mono_get_runtime_build_info): New helper function returning build
5238         information in a string format.
5239         
5240         * driver.c (mono_main): Print the build date in --version.
5241
5242         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
5243         file when the bind-to-runtime-version option is used.
5244
5245 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5246
5247         * simd-intrinsics.c: Fix bug when using getters and byref args. 
5248
5249 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5250
5251         * simd-methods.h: Rename prefetch methods.
5252
5253         * simd-intrinsics.c: Same.      
5254
5255 2008-11-05  Mark Probst  <mark.probst@gmail.com>
5256
5257         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
5258         sizes.
5259
5260 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5261
5262         * aot-compiler.c: Use the bundled elf header files instead of depending on
5263         the system one.
5264         
5265         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
5266         mempool.
5267
5268         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
5269         on every call.
5270
5271 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
5272
5273         * cpu-x86.md: Add store nta ops.
5274
5275         * mini-ops.h: Same.
5276
5277         * mini-x86.c: Same.
5278
5279         * mini.h: Add an enum for simd prefetch modes.
5280
5281         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
5282         of store. Use the changed code to support store nta.
5283
5284         * simd-intrinsics.c: Add prefetch ops for all vector types.
5285
5286 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5287
5288         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
5289         threads.
5290         
5291         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
5292         names.
5293
5294         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
5295         trampolines.
5296
5297 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5298
5299         * mini-x86.c: Fixed commit.
5300
5301 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5302
5303         * aot-compiler.c (emit_plt): Align the plt section only on x86.
5304
5305 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5306
5307         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
5308         and MONITOR_EXIT, for the ASM fastpaths.
5309
5310         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
5311         available.
5312
5313         * mini.c, patch-info.h: Signature and patch infos for
5314         Monitor.Enter/Exit trampolines.
5315
5316         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
5317
5318         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
5319         Monitor.Enter/Exit ASM fastpath for Linux.
5320
5321 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5322
5323         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
5324
5325         * objects.cs: Add a new test.
5326         
5327         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
5328
5329         * aot-runtime.c (load_method): Run class initialization in the PLT case even
5330         if MONO_LOG_LEVEL is set.
5331
5332         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
5333
5334         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
5335
5336         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
5337         
5338         * aot-compiler.c: Change the relocation code to use virtual addresses instead
5339         of file offsets. Align the sections belonging to the data segment to 
5340         PAGESIZE.
5341
5342 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5343
5344         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
5345         elf.h. Port it to amd64.
5346
5347 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5348
5349         * driver.c: Enable SIMD by default.
5350
5351 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5352
5353         * cpu-x86.md: Add prefetch op.
5354
5355         * mini-ops.h: Same.
5356
5357         * mini-x86.c: Same.
5358
5359         * mini.h: Add an enum for simd prefetch modes.
5360
5361         * simd-methods.h: Add prefetch function names.
5362
5363         * simd-intrinsics.c: Add prefetch ops for all vector types.
5364
5365 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5366
5367         * aot-compiler.c (emit_bytes): Speed this up a little.
5368
5369 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
5370
5371         * aot-compiler.c: Add JIT time etc. statistics.
5372         
5373         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
5374
5375         * mini.h (MonoCompile): Add 'got_offset' field.
5376
5377         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
5378         method_got_offsets array.
5379
5380         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
5381         wrappers.
5382
5383         * aot-compiler.c (compile_method): Add generic method instances referenced
5384         by the method to the list of methods to be compiled, this is required so if
5385         A<T> references B<T>, and another assembly references A<int>, then it will
5386         also get a copy of B<int>.
5387
5388         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
5389         when checking for monitor enter/exit.
5390
5391 2008-10-30  Mark Probst  <mark.probst@gmail.com>
5392
5393         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
5394         for Monitor.Enter and Monitor.Exit if enabled.
5395
5396         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
5397         Solaris.
5398
5399 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
5400
5401         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
5402         of an OP_MOVE. Fixes #440046.
5403
5404         * basic-long.cs: Add a new test.
5405
5406 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5407
5408         * mini.h: Add synchronization note for the managed counter-part.
5409
5410         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
5411         returns the simd caps of the current cpu.
5412
5413 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5414
5415         * basic-simd.cs: Remove Console.WriteLine.
5416
5417 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5418
5419         * basic-simd.cs: New tests for Vector2ul.
5420
5421 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5422
5423         * simd-intrinsics.c: Add new vector type Vector2ul.
5424
5425 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5426
5427         * basic-simd.cs: New tests for Vector2l.
5428
5429 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5430
5431         * cpu-x86.md: Add long version of most packed int ops.
5432
5433         * mini-ops.h: Same.
5434
5435         * mini-x86.h: Same.
5436
5437         * simd-intrinsics.c: Add new vector type Vector2l.
5438
5439 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5440
5441         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
5442
5443         * simd-methods.h: Remove SN_op_BitwiseXor.
5444
5445 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
5446
5447         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
5448         alignment.
5449
5450 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5451
5452         * basic-simd.cs: Test for Vector2d.
5453
5454         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
5455         value.
5456
5457 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5458
5459         * cpu-x86.md: Add double version of all packed float ops.
5460
5461         * mini-ops.h: Same.
5462
5463         * mini-x86.h: Same.
5464
5465         * simd-intrinsics.c: Add new vector type Vector2d.
5466
5467         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
5468
5469         * simd-methods.h: Add Duplicate.
5470
5471 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5472
5473         * basic-simd.cs: Test for packing with signed saturation.
5474
5475 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
5476
5477         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
5478         found in the TYPESPEC table.
5479
5480 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
5481
5482         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
5483         too.
5484
5485         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5486
5487         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
5488         instead of the RVA, since the RVA can be changed by tools like the cil 
5489         stripper.
5490
5491         * method-to-ir.c (mono_method_to_ir2): Ditto.
5492
5493         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
5494         (deserialize_variable): Ditto.
5495
5496 2008-10-25  Martin Baulig  <martin@ximian.com>
5497
5498         * debug-mini.c (write_variable): Use
5499         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
5500
5501 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5502
5503         * cpu-x86.md: Add unsigned variants of packd and packw.
5504
5505         * mini-ops.h: Same.
5506
5507         * mini-x86.h: Emit the right instruction for packd and packw.
5508         Add unsigned variants of packd and packw.
5509
5510         * simd-intrinsics.c: Packd and packw were used in place of their
5511         unsigned variants. Change that.
5512         Add intrinsics for (Signed)PackWithSignedSaturation.
5513
5514         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
5515
5516 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5517
5518         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
5519
5520 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5521
5522         * mini-ops.h: Remove dword packed add/sub with saturation ops.
5523
5524         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
5525
5526         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
5527         sse instructions.
5528
5529         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
5530
5531 2008-10-24  Mark Probst  <mark.probst@gmail.com>
5532
5533         * method-to-ir.c, mini.c: Special casing for the synchronized
5534         wrapper for the ldtoken+GetTypeFromHandle case.
5535
5536 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
5537
5538         * mini.c (mono_replace_ins): Move this to branch-opts.c.
5539
5540         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
5541         created/split bblocks.
5542
5543 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5544
5545         * mini-ops.h: Add packed signed mul high.
5546         
5547         * cpu-x86.md: Same.
5548
5549         * mini-x86.c (mono_arch_output_basic_block): Same.
5550
5551         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
5552
5553         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
5554
5555 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5556
5557         * basic-simd.cs: Tests for Vector16sb.
5558
5559 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
5560
5561         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
5562
5563 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
5564
5565         * mini-ops.h: Add packed signed min, max and compare greater.
5566         
5567         * cpu-x86.md: Same.
5568
5569         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
5570         saturation.
5571
5572         * simd-methods.h: Add CompareGreaterThan.
5573
5574         * simd-methods.h: Remove CompareEquals.
5575
5576         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
5577
5578         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
5579
5580         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
5581         CompareEqual.
5582
5583 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
5584
5585         * basic-simd.cs: Fix tests due to change in the API.
5586
5587 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5588
5589         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
5590
5591 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5592
5593         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
5594
5595         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
5596         inst_offset as this has invalid values for LDADDR.
5597
5598 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5599
5600         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
5601
5602         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
5603
5604 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5605
5606         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
5607         for accessing field->data.
5608
5609 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5610
5611         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
5612
5613 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5614
5615         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
5616
5617         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
5618
5619 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5620
5621         * dominators.c (mono_compute_natural_loops): Allocate GList enties
5622         from the cfg mempool.
5623
5624 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
5625
5626         * basic-simd.cs: Tests for new methods in Vector8us.
5627
5628 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
5629
5630         * mini-ops.h: Add multiply and store high.
5631         
5632         * cpu-x86.md: Same.
5633
5634         * mini-x86.c (mono_arch_output_basic_block): Same.
5635
5636         * simd-methods.h: Same.
5637
5638         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
5639         and CompareEqual.
5640
5641 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
5642
5643         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
5644         mono_class_setup_vtable ().
5645
5646         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
5647         mono_class_get_vtable_entry () for accessing klass->vtable.
5648
5649         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
5650
5651         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
5652         found.
5653
5654         * method-to-ir.c (mono_save_token_info): Don't save references made from
5655         wrappers.
5656
5657         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
5658         of generic instances.
5659
5660         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
5661
5662 2008-10-19  Mark Probst  <mark.probst@gmail.com>
5663
5664         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
5665         OP_JMP depends on the method signature.  Calculate it properly.
5666
5667 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
5668         
5669         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
5670         called directly.
5671
5672         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
5673         instances.
5674         (emit_extra_methods): Add another table mapping method indexes to 
5675         offsets in the extra_method_info table.
5676
5677         * mini.h: Bump AOT file format version.
5678         
5679         * aot-runtime.c: Merge most of the code from mono_aot_get_method
5680         and mono_aot_get_method_from_token () into one function.
5681
5682 2008-10-19  Mark Probst  <mark.probst@gmail.com>
5683
5684         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
5685         separate counter.
5686
5687 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
5688
5689         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
5690         methods.
5691
5692         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
5693         disable_aot.
5694
5695         * mini.c (mono_patch_info_equal): Compare the generic context as well.
5696
5697         * mini.h: Bump aot file format version.
5698
5699         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
5700         AOT file can contain native code for methods which are not in the METHOD
5701         table. Generate code for non-sharable generic instances of generic methods
5702         found in the METHODSPEC table.
5703         
5704         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
5705         encoding generic type handles.
5706
5707         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
5708         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
5709
5710         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
5711         macros + MONO_ADD_INS.
5712
5713         * mini.c (mono_jump_info_token_new2): New function which takes a generic
5714         context as well.
5715
5716         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
5717
5718         * mini.h: Bump aot file format version.
5719
5720         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
5721
5722 2008-10-17  Mark Probst  <mark.probst@gmail.com>
5723
5724         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
5725         platforms, with definable stack alignment value.  Set to 16 now
5726         for all platforms.
5727
5728         * mini.c, mini.h, driver.c: Command line option for disabling
5729         stack alignment.
5730
5731 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5732
5733         * basic-simd.cs: Tests for new methods in Vector4ui.
5734
5735 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5736
5737         * mini-ops.h: Add packed int shuffle.
5738         
5739         * cpu-x86.md: Same.
5740
5741         * mini-x86.c (mono_arch_output_basic_block): Same.
5742
5743         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
5744         extract mask, max, min, shuffle.
5745
5746         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
5747
5748 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5749
5750         * basic-simd.cs: Tests for new methods in Vector8us.
5751
5752 2008-10-17  Mark Probst  <mark.probst@gmail.com>
5753
5754         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
5755         RuntimeTypeHandle, not a TypedReference.
5756
5757 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
5758
5759         * simd-intrinsics.c: remove relocations.
5760
5761 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
5762
5763         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
5764         optimizations from the x86 backend.
5765
5766 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
5767
5768         * simd-methods.h, simd-intrinsics.c: debloat method names and
5769         prepare for no relocations.
5770
5771 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5772
5773         * mini-ops.h: Add packed min/equal and sum of absolute differences.
5774         
5775         * cpu-x86.md: Same.
5776
5777         * mini-x86.c (mono_arch_output_basic_block): Same.
5778
5779         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
5780         extract mask, max, min and sum of absolute differences.
5781
5782         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
5783         method name.
5784
5785 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5786
5787         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
5788         Renamed one test for consistency.
5789
5790 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5791
5792         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
5793         fix to the code that deal with other blocks.
5794
5795 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5796
5797         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
5798
5799 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5800
5801         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
5802         that deals with vreg interference. Explicitly check for OP_LDADDR to be
5803         able to process the source reg.
5804
5805 2008-10-16  Martin Baulig  <martin@ximian.com>
5806
5807         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
5808
5809         * inssel.brg: Add `OP_HARD_NOP'.
5810
5811         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
5812
5813         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
5814         `OP_HARD_NOP' instruction when running inside the debugger.
5815
5816         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
5817         `OP_HARD_NOP' instruction when running inside the debugger.
5818
5819 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5820
5821         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
5822         now works. The issue with the regalloc tripping up no longer
5823         happens.
5824
5825         * simd-intrinsics.c (load_simd_vreg): Same.
5826
5827 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5828         
5829         * basic-simd.cs: Tests for new Vector8ui methods.
5830
5831 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5832
5833         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
5834         only for type. This fixes crashes where MonoInst::klass is checked
5835         for ops of type != VTYPE or OBJ.
5836
5837         * simd-intrinsics.c (load_simd_vreg): Same.
5838
5839 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5840
5841         * mini-ops.h: Add ops for packed shuffle/max/avg and
5842         extract mask.
5843         
5844         * cpu-x86.md: Same.
5845
5846         * mini-x86.c (mono_arch_output_basic_block): Same.
5847
5848         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
5849         extract mask.
5850
5851         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
5852         to emit extract mask op.
5853
5854         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
5855         to emit word shuffles.
5856
5857 2008-10-15  Mark Probst  <mark.probst@gmail.com>
5858
5859         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
5860         the largest alignment needed by a variable, but at least
5861         sizeof(gpointer).
5862
5863 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5864
5865         * basic-simd.cs: Tests for the fixes in the last commit.
5866
5867 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5868
5869         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
5870         no longer handles STACK_PTR input.
5871
5872         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
5873
5874         * simd-intrinsics.c (load_simd_vreg): New function that works like 
5875         get_simd_vreg   but handles STACK_PTR input.
5876
5877         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
5878         as the input can be an arbitrary pointer.
5879
5880         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
5881         LDADDR local optimization directly otherwise use a store op.
5882
5883 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5884
5885         * basic-simd.cs: Tests for dup low and dup high.
5886
5887 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5888
5889         * mini-ops.h: Add dup low and dup high ops.
5890         
5891         * cpu-x86.md: Same.
5892
5893         * mini-x86.c (mono_arch_output_basic_block): Same.
5894
5895         * simd-intrinsics.c (vector4f_intrinsics): Same.
5896
5897 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5898
5899         * basic-simd.cs: Tests for recently added functionality.
5900
5901 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5902
5903         * mini-ops.h: Add remaining sse1 fp ops.
5904         
5905         * cpu-x86.md: Add remaining sse1 fp ops.
5906
5907         * mini-x86.c (mono_arch_output_basic_block): Same.
5908
5909         * mini.h: Add enum for simd FP compare conditions.
5910
5911         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
5912
5913         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
5914         so the backed can generate the appropriate op.
5915
5916 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5917         This patch squeese one more byte from the SimdIntrinsc struct.
5918
5919         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
5920         a a shift amount intead of simply or'ing it.
5921
5922         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
5923
5924         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
5925         byte so we can have an aditional flags field without increasing struct size.
5926
5927         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
5928         against the simd_supported_versions bitmask.
5929
5930         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
5931
5932 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
5933
5934         * mini.c: remove rawbuffer code (the only use here is unsafe because
5935         it takes locks during signal handling and the kernel now provides much
5936         better info in proc/pid/smaps these days).
5937
5938 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
5939
5940         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
5941         OP_X86_PUSH_OBJ. Fixes #434620.
5942
5943         * objects.cs: Add a test.
5944         
5945 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
5946
5947         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
5948         that the packuswb/packusdw don't work with unsigned numbers for what
5949         would be negative numbers in signed format.
5950
5951         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
5952         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
5953
5954         * mini-ops.h: Add doubleword forms of many ops and packing ones.
5955
5956         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
5957
5958         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
5959
5960         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
5961
5962         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
5963         add more ops.
5964
5965         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
5966         version as the enum in mini.h.
5967
5968         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
5969         for sse3 ops, check the simd_version field if present. This way the code
5970         works with all versions of sse.
5971
5972 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5973
5974         * simd-intrinsics.c: Fixed intrinsic name typo.
5975
5976         * mini.h: Added missing simd exported function.
5977
5978         * basic-simd.cs: Added tests for Vector4ui.
5979         Fixed broken test for Vector16b.
5980
5981 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
5982
5983         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
5984         the max length to 64.
5985
5986 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5987
5988         * method-to-ir.c: Only do the fast virtual generic method call for
5989         non-wrapper methods.
5990
5991         * mini.h, mini-trampolines.c: The new generic virtual remoting
5992         trampoline handles virtual method calls via the vtable (as done by
5993         the fast virtual generic method calls) to remoting proxies.
5994
5995         * mini.c (mono_jit_create_remoting_trampoline): For generic
5996         methods reate a generic virtual remoting trampoline.
5997
5998         * mini-amd64.h: Enable fast virtual generic method calls again.
5999
6000 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6001
6002         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
6003         restore registers when doing tail calls.
6004
6005 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6006
6007         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
6008         Vector4ui.
6009
6010 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6011
6012         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
6013
6014 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6015
6016         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
6017
6018 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6019
6020         * basic-simd.cs: Retrofit for API changes.
6021
6022 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6023
6024         * mini-ppc.c: Handle integer stack arguments for tail calls.
6025
6026 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6027
6028         * optflags-def.h: Removed sse3 optimization.
6029
6030         * driver.c: Same.
6031
6032         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
6033         sse3.
6034
6035         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
6036
6037         * mini.h: Added enumeration with simd versions.
6038
6039         * simd-intrinsics.c (emit_intrinsics): Use the new static var
6040         for detecting SSE3.
6041
6042         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
6043
6044         * mini.c (mini_init): Call mono_simd_intrinsics_init.
6045
6046 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6047
6048         * basic-simd.cs: Added tests for Vector8u and Vector16u.
6049
6050         * basic-simd.cs: Fixed test naming.
6051
6052 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6053
6054         * mini-ops.h: Added ops for packed and saturated math, shifts
6055         and packing/unpacking.
6056
6057         * cpu-x86.md: Added descriptors for the above ops.
6058
6059         * mini-x86.c: Added code to emmit the above ops.
6060
6061         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
6062
6063 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
6064
6065         * aot-compiler.c (compile_method): Enable AOT for generic code.
6066
6067         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
6068
6069 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
6070
6071         * mini.c: add a workaround for a common screwup that ends up blamed
6072         to mono (other processes blocking signal delivery).
6073
6074 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6075
6076         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
6077         in the LDFLD/STFLD opcodes. Fixes #432673.
6078
6079         * iltests.il.in: Add a new test.
6080
6081 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
6082
6083         * mini-arm.c: attach the thread in unmanaged->managed transitions
6084         using delegates (bug #433148).
6085
6086 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6087
6088        * basic-simd.cs: Use new ShuffleSel constants.
6089
6090 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6091
6092         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
6093
6094         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
6095         only disable simd intrinsics if no sse2 is detected.
6096
6097         * optflags-def.h: Added sse3.
6098
6099         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
6100         is disabled.
6101
6102 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6103
6104         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
6105         when adding delegate-invoke wrappers.
6106
6107 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6108
6109         * Makefile.am: Reenable the simd tests.
6110
6111 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6112
6113         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
6114           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
6115           other vreg is allocated to that hreg.
6116
6117         Contributed under MIT/X11 license.
6118
6119 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6120
6121         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
6122         yet checked in.
6123
6124 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6125
6126         * basic-simd.cs: New test suite for SIMD intrinsics.
6127
6128         * Makefile.am: Added new tests.
6129
6130 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6131
6132         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
6133
6134         * mini-ops.h: Same.
6135
6136         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
6137
6138         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
6139         using SSE2 aware opcodes.
6140
6141         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
6142         is enabled, this code path is only reachable if conversion ops are emmited after
6143         mono_method_to_ir.
6144
6145         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
6146
6147         This optimization saves 6 bytes per conversion against the old version.
6148
6149 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6150
6151         * aot-compiler.c (compile_method): Don't skip methods referencing 
6152         generic methods without a corresponding entry in token_info_hash, since
6153         encode_method_ref () can handle all generic methods now.
6154
6155         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
6156         generic context is set.
6157         
6158         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
6159         generic sharing of LDTOKEN.
6160
6161 2008-10-06  Mark Probst  <mark.probst@gmail.com>
6162
6163         * mini-amd64.h: Temporarily disabled fast virtual generic method
6164         calls because it breaks the System.Runtime.Remoting tests.
6165
6166 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6167
6168         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
6169
6170         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
6171         so inlining actually works.
6172         (check_inline_caller_method_name_limit): Ditto.
6173
6174 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
6175
6176         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
6177         64 bit safety (from Olaf Hering and Andreas Farber).
6178
6179 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6180         
6181         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
6182         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
6183         unused virtual call support code.
6184
6185         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
6186         
6187         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
6188         which can't use aot trampolines.
6189         (decode_patch): Don't create aot trampolines for methods which can't use
6190         them.
6191
6192         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
6193         use aot trampolines.
6194
6195         * mini.h: Bump AOT image format version.
6196         
6197 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
6198
6199         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
6200         to save_token_info () since cmethod is inflated for constrained calls.
6201
6202         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
6203
6204 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
6205
6206         * Makefile.am: Add build rules for ppc64.
6207         This avoids the build failing at pedump with unresolved symbols
6208         due to lack of arch_sources. Instead it will now fail earlier
6209         due to lack of cpu-ppc64.md.
6210
6211         Contributed under MIT/X11 license.
6212
6213 2008-10-04  Mark Probst  <mark.probst@gmail.com>
6214
6215         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
6216         tail calls.
6217
6218         * iltests.il.in: Add test case for tail call with many arguments.
6219
6220 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6221
6222         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
6223         to the fast virtual generic method code until the aot case is fixed.
6224
6225 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6226
6227         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
6228
6229 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6230
6231         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
6232         thunks.
6233
6234 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6235         
6236         * simd-intrinsics.c: Forgot to add this one.
6237
6238         * mini-codegen.c: Fix macro in case SIMD is not supported.
6239
6240 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6241         
6242         This patch land initial JIT support for simd intrinsics.
6243
6244         * mini-x86.h: Added new define to make --enable_minimal work on x86.
6245
6246         * Makefile.am: Added simd-intrinsics.c
6247
6248         * simd-intrinsics.c: New file with simd instrinsic related
6249         code.
6250
6251         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
6252
6253         * cpu-x86.md: Add simd related instructions.
6254
6255         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
6256
6257         * driver.c: Added two new --regression variants.
6258
6259         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
6260
6261         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
6262
6263         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
6264         extract some complicated logic to helper functions.
6265
6266         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
6267
6268         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
6269
6270         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
6271         the specialized simplification pass.
6272
6273         * method-to-ir.c (mono_spill_global_vars): Use new macro.
6274
6275         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
6276
6277         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
6278         table.
6279
6280         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
6281         if MONO_ARCH_NEED_SIMD_BANK is defined.
6282
6283         * mini-ops.h: Added the new simd ops.
6284
6285         * mini-x86.c: Added mono_arch_xregname.
6286
6287         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
6288
6289         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
6290
6291         * mini-x86.h: Define simd related MONO_ARCH macros.
6292
6293         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
6294
6295         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
6296
6297         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
6298         MONO_CLASS_IS_SIMD to deal with simd related IR.
6299
6300         * mini.h (MonoInst): Added spill_var to the backend union.
6301
6302         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
6303
6304         * mini.h: Added forward declarations of the new simd fuctions.
6305
6306         * optflags-def.h: Added new optimization names SIMD.
6307
6308         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
6309
6310         * regalloc.h: Added support for working with 3 register banks.
6311
6312         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
6313
6314         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
6315
6316 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
6317
6318         * mini-exceptions.c: remove 64 bit related ifdef clutter.
6319
6320 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6321
6322         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
6323         instead of one on 64 bit systems.
6324
6325         * method-to-ir.c: Remove unused includes.
6326
6327 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
6328
6329         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
6330         cfg->used_int_regs, since the two are different on arm.
6331
6332 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6333
6334         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
6335         mono_method_get_vtable_index() to get the vtable index.
6336
6337 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6338
6339         * method-to-ir.c (mono_method_to_ir2): Don't create native
6340         wrappers for array methods, because they're never called (and if
6341         they were called they wouldn't work).
6342
6343 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6344
6345         * method-to-ir.c (mono_method_to_ir2): Array methods are
6346         special-cased and must not be invoked indirectly via the (M)RGCTX
6347         when generic sharing is turned on.  Fixes #431413.
6348
6349 2008-10-01  Mark Probst  <mark.probst@gmail.com>
6350
6351         * method-to-ir.c: When generic sharing is active, call
6352         non-interface virtual generic methods via the standard trampoline.
6353
6354         * mini-trampolines.c: Handle virtual generic shared methods.
6355
6356         * mini.h, mini-x86.c, mini-x86.h: New argument for
6357         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
6358         method thunks and which is the trampoline to call if the lookup
6359         fails.  Enable the virtual generic method thunk for x86.
6360
6361         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
6362         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
6363         argument but assert that it's NULL, because these archs don't yet
6364         implement the virtual generic method thunk.  Changes in the IMT
6365         thunk data structures.
6366
6367 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
6368
6369         * aot-compiler.c (emit_globals): Avoid invalid characters in
6370         the static linking symbol.
6371
6372         * objects.cs: Add a test for the range check optimization. Fix warnings.
6373
6374         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
6375         optimization from the current JIT.
6376
6377         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
6378         later in decompose_array_access_opts () to allow more optimizations.
6379
6380         * method-to-ir.c (mono_handle_soft_float): Rename this to 
6381         mono_decompose_soft_float () for consistency.
6382
6383         * mini-ops.h: Fix arguments of OP_STRLEN.
6384
6385         * method-to-ir.c (save_cast_details): Extract the cast details saving code
6386         into a separate function.
6387         (reset_cast_details): Ditto.
6388         (handle_unbox): Save cast details. Fixes #431254.
6389
6390         * method-to-ir.c: Remove some obsolete FIXMEs.
6391
6392 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6393
6394         * ir-emit.h (alloc_dreg): Write a warning before crashing.
6395
6396 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6397
6398         * mini-codegen.c: More work on macros to make them
6399         ready for multiple regbanks.
6400
6401 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6402
6403         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
6404
6405         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
6406
6407 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6408
6409         * mini-codegen.c (mono_spillvar_offset): Proper support for
6410         multiple regbanks.
6411
6412 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6413
6414         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
6415         the stack overflow changes.
6416
6417 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6418
6419         * mini-codegen.c: Make all bank macros depend on reg_bank.
6420
6421         * mini-codegen.c (mono_local_regalloc): Make free mask
6422         initialization regbank aware.
6423
6424 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6425
6426         * mini-codegen.c (mono_local_regalloc): Extract callee
6427         mask selection to a function and make it regbank aware.
6428
6429 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6430
6431         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
6432         code to deal with many regbanks.
6433
6434 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6435
6436         * mini-codegen.c: More fp->regbank changes.
6437
6438 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6439
6440         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
6441         of a hardcoded constant.
6442
6443 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6444
6445         * method-to-ir.c (type_from_stack_type): Fix typo.
6446
6447 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
6448
6449         * mini-ia64.c (emit_move_return_value): Convert float return values to
6450         double.
6451
6452         * objects.cs: Add a new test.
6453         
6454         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
6455         VARARG methods to fix an assert later.
6456
6457         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
6458         end so it at least compiles.
6459
6460 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
6461
6462         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
6463
6464 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
6465
6466         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
6467         optimization to a new function (emit_optimized_ldloca_ir) and enable
6468         it for both ldloca and ldloca_s.
6469
6470 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
6471
6472         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
6473         gshared CASTCLASS code.
6474
6475         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
6476         amd64, where the libc stack unwinder encounters stack frames referring to
6477         native code in unmapped memory.
6478
6479         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
6480         sharing.
6481
6482         * generics.cs: Add new test.
6483
6484 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
6485
6486         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
6487         add a check that one of the ARM_FPU_ constants is defined.
6488
6489         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
6490         
6491         * mini-exceptions.c: Fix build on non-altstack platforms.
6492
6493         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
6494         sharing of vtypes.
6495
6496         * ir-emit.h: Add a comment to NEW_PCONST.
6497
6498         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
6499
6500         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
6501
6502         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
6503         after the changes to MonoJitDomainInfo.
6504
6505 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6506
6507         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
6508
6509 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6510
6511         * mini-ppc.c: Compiler warning fixes.
6512
6513 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6514
6515         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
6516         for pinvokes.
6517
6518 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6519
6520         * exceptions-ppc.c, mini-ppc.h: Compile
6521         mono_arch_handle_altstack_exception() on Darwin, too.
6522
6523 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6524
6525         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
6526         work on archs which don't have generic sharing implemented, only
6527         without the vtable_arg.
6528
6529 2008-09-26  Mark Probst  <mark.probst@gmail.com>
6530
6531         * mini.c: Added comment explaining why delegate ctor icall
6532         wrappers are compiled.
6533
6534 2008-09-26  Mark Probst  <mark.probst@gmail.com>
6535
6536         * mini.c: Don't produce trampolines to delegate ctor icall
6537         wrappers but compile them upfront.
6538
6539 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
6540
6541         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
6542         runtime-set function when going back to managed code. Currently this
6543         is used to set back the protection on the soft ovf pages and/or to
6544         throw the stack overflow exception that happened in unmanaged code.
6545
6546 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
6547
6548         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
6549         runtime-set function when going back to managed code. Currently this
6550         is used to set back the protection on the soft ovf pages and/or to
6551         throw the stack overflow exception that happened in unmanaged code.
6552
6553 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6554
6555         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
6556         the support code for restoring stack protection after stack overflows
6557         that happen in unmanaged code. Don't set the exec permission on the
6558         soft overflow area.
6559
6560 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
6561
6562         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
6563         delegate->method_ptr is set. Fixes #428054.
6564
6565 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
6566
6567         * tests.cs: Rename to ratests.cs.
6568
6569         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
6570         emit_get_rgctx_... functions.
6571
6572 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6573
6574         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
6575
6576 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6577
6578         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
6579         before asserting that method is sharable.
6580
6581 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6582
6583         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
6584         whether method needs a static RGCTX wrapper used instead of
6585         complex conditions.
6586
6587         * generic-sharing.c, mini.h: A few functions moved to
6588         metadata/generic-sharing.c.
6589
6590 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6591
6592         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
6593         Generic code sharing for value types, which essentially means
6594         treating value type methods like static methods.  The RGCTX is
6595         passed in the same way.
6596
6597 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
6598
6599         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
6600         opcode when creating multi-dimensional arrays of open types.
6601
6602         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
6603         open generic types.
6604
6605         * generics.cs: Add a test.
6606
6607         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
6608
6609 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
6610
6611         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
6612
6613         * mini.c (mini_method_compile): Set it when running under the debugger. 
6614
6615         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
6616         vreg optimization if the flag is set.
6617
6618         * driver.c (mono_main): Add --attach= option to pass options to
6619         the attach agent.
6620
6621         * mini.c (sigquit_signal_handler): Start the attach agent.
6622
6623         * ssapre.c: Disable this to save space since it is not yet ported to
6624         linear IR.
6625
6626         * regalloc2.c: Disable this to save space.
6627
6628         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
6629
6630 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
6631
6632         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
6633         the -v option useful again.
6634
6635 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
6636
6637         * mini-amd64.c (mono_arch_output_basic_block): Add support for
6638         --break-at-bb.
6639
6640         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
6641         arrays of arrays. Fixes #428406.
6642
6643         * method-to-ir.c (mini_emit_castclass): Ditto.
6644
6645         * objects.cs: Add new test.
6646         
6647 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
6648
6649         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
6650         was wrong at it choked against target_type_is_incompatible for byref types.
6651
6652 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
6653
6654         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
6655         places.
6656
6657 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
6658
6659         * mini-exceptions.c: update a few more exceptions-related counters.
6660
6661 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
6662
6663         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
6664         new functions to allocate from persistent mempools.
6665
6666 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
6667
6668         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
6669         multiple register banks in the future.
6670
6671         * mini-codegen.c (mono_local_regalloc): Fix a warning.
6672
6673 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
6674
6675         * mini.c (type_to_eval_stack_type): Remove duplicated function.
6676
6677         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
6678
6679         * mini.h: Export type_to_eval_stack_type.
6680
6681         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
6682         is only ins->klass of byref types.
6683
6684 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
6685
6686         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
6687         (mini_emit_memcpy2): Ditto.
6688
6689         * mini-amd64.c: Fix a warning.
6690
6691 2008-09-21  Mark Probst  <mark.probst@gmail.com>
6692
6693         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
6694         linking.
6695
6696 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
6697
6698         * method-to-ir.c: Extract stloc micro-optimization to a
6699         function and apply it to all cases.
6700
6701 2008-09-19  Mark Probst  <mark.probst@gmail.com>
6702
6703         * method-to-ir.c: Don't fail generic code sharing in cases we
6704         already support.
6705
6706 2008-09-18  Mark Probst  <mark.probst@gmail.com>
6707
6708         * mini-ppc.c: Handle structs in tailcalls on Darwin.
6709
6710 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
6711
6712         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
6713         implementation.
6714
6715 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
6716
6717         * trace.c: make tracing more useful and correct, with per-thread
6718         id and indent info.
6719
6720 2008-09-15  Mark Probst  <mark.probst@gmail.com>
6721
6722         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
6723         doing a method call and the argument is an R4.
6724
6725 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
6726
6727         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
6728         generic methods.
6729
6730 2008-09-13  Mark Probst  <mark.probst@gmail.com>
6731
6732         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
6733
6734 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
6735
6736         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
6737         (MONO_JUMP_TABLE_FROM_INS): Ditto.
6738
6739 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
6740
6741         * driver.c: Add a --agent argument (not supported yet) to load managed
6742         agent assemblies before loading the main assembly, similarly to how the
6743         Java VM handles agents.
6744
6745 2008-09-11  Mark Probst  <mark.probst@gmail.com>
6746
6747         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
6748         function to do stack layout of local variables.
6749
6750 2008-09-11  Mark Probst  <mark.probst@gmail.com>
6751
6752         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
6753         calculation.
6754
6755 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
6756
6757         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
6758         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
6759         JIT if DISABLE_JIT is defined.
6760
6761         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
6762         defined.
6763
6764 2008-09-10  Mark Probst  <mark.probst@gmail.com>
6765
6766         * iltests.il.in: Disable the fconv test on PPC (the result is
6767         undefined according to ECMA).
6768
6769 2008-09-10  Mark Probst  <mark.probst@gmail.com>
6770
6771         * iltests.il.in: Enable tail call tests for PPC.
6772
6773         * mini.h: Add variable for storing incoming valuetype argument
6774         addresses for tail calls.
6775
6776         * mini-ppc.c: Implement valuetype arguments and return values for
6777         tailcalls on Linux.
6778
6779 2008-09-09  Mark Probst  <mark.probst@gmail.com>
6780
6781         * mini-ppc.c: Partially implement tail calls (struct arguments and
6782         return values not supported).
6783
6784         * method-to-ir.c: Enable tail calls on PPC.
6785
6786 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
6787
6788         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
6789         runtime-invoke wrappers to work around the problem of them getting
6790         assigned to a random class.
6791
6792         * aot-runtime.c (mono_aot_get_method): Ditto.
6793         
6794 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
6795
6796         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
6797         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
6798
6799 2008-09-07  Mark Probst  <mark.probst@gmail.com>
6800
6801         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
6802         until they're implemented properly.
6803
6804         * exceptions-ppc.c: Use arch-independent exception-handling code
6805         instead of custom one.
6806
6807         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
6808         for Linear IR.
6809
6810         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
6811
6812         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
6813         applies when __powerpc__ is defined.
6814
6815 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
6816
6817         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
6818         methods to their code to avoid computing the full name of wrappers and
6819         doing a lookup in a string hash table.
6820
6821 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
6822
6823         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
6824         we identify bblocks before method_to_ir () is ran.
6825
6826         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
6827         Also avoid optimizing branches pointing to themselves.
6828
6829         * mini.c (mini_method_compile): Ditto. Fixes #422947.
6830
6831 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
6832
6833         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
6834
6835 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
6836
6837         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
6838         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
6839         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
6840         'buf'.
6841
6842         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
6843         jumped to the same entry in plt_jump_table.
6844
6845 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
6846
6847         * method-to-ir.c (initialize_array_data): Handle field with RVA from
6848         dynamic images.
6849
6850 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
6851
6852         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
6853         other assignment can be if converted. Saves 1.5% on corlib size and fixes
6854         #421807.
6855
6856 2008-08-29  Geoff Norton  <gnorton@novell.com>
6857
6858         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
6859         segment, and doesn't properly handle .space as .text.  Fixes
6860         AOT Mach/ARM
6861
6862 2008-08-29  Geoff Norton  <gnorton@novell.com>
6863
6864         * mini.c: Disable the mach exception handler when running on 
6865         ARM
6866
6867 2008-08-29  Geoff Norton  <gnorton@novell.com>
6868
6869         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
6870         globals on Darwin/ARM
6871
6872 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
6873
6874         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
6875         since too many things depend on it. Instead, call 
6876         mono_runtime_set_no_exec ().
6877         
6878         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
6879         the new JIT.
6880
6881         * aot-compiler.c: Add an 'asm-only' AOT option.
6882
6883         * mini.c: Avoid initializing the runtime when doing AOT compilation.
6884                 
6885         * aot-compiler.c (compile_method): Disable gshared support for now as it
6886         doesn't yet work.
6887
6888 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6889
6890         * mini-amd64.h : Fix a compiler warning.
6891
6892         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
6893           Changed to use a callback function to retrieve the unwind info.
6894           This avoids problems observed when code blocks were removed by
6895           unloading an app domain.
6896
6897         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
6898           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
6899           to work properly.
6900
6901         Contributed under MIT/X11 license.
6902
6903 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6904
6905         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
6906           case to keep the stack aligned to 8.
6907
6908         Contributed under MIT/X11 license.
6909
6910 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
6911
6912         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
6913         avoid repeated linear searches.
6914
6915 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
6916
6917         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
6918         methods it can't handle.
6919         
6920         * aot-compiler.c (add_method): Avoid adding a method twice.
6921         (add_wrappers): Add runtime invoke wrappers for all methods.
6922
6923         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
6924         function to create an aot-compatible version of this trampoline.
6925
6926         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
6927
6928 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
6929
6930         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
6931
6932         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
6933         with a generic sharing failure.
6934
6935         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
6936
6937         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
6938         CEE_RETHROW. Fixes #419634.
6939
6940         * mini.c (mono_method_to_ir): Ditto.
6941
6942         * exceptions.cs: Add a new test.
6943         
6944         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
6945         to mono_type_stack_size_internal () since some callers might not pass in
6946         an rgctx.
6947
6948         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
6949         instrument_prolog. Fixes #419878.
6950
6951         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
6952         doubles in soft float mode volatile.
6953
6954 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
6955
6956         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
6957
6958         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
6959         to handle soft float correctly.
6960
6961         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
6962         the fast path.
6963
6964         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
6965
6966         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
6967         to sp, since the generics catch code requires it.
6968
6969         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
6970         copying.
6971
6972         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
6973         mono_arch_emit_imt_argument ().
6974
6975         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
6976
6977         * mini-arm.c tramp-arm.c: Generic sharing updates.
6978
6979 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
6980
6981         * mini-arm.c: Fix the arm build.
6982
6983         * generic-sharing.c (mini_type_get_underlying_type): New helper function
6984         handling enums, generic instances and generic sharing.
6985         (mini_type_stack_size_full): Ditto.
6986
6987         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
6988         
6989         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
6990
6991         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
6992
6993         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
6994         trampolines.
6995
6996         * mini-arm.c: Various small generic sharing changes.
6997
6998         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
6999         this for x86.
7000         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
7001         custom code.
7002
7003         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
7004         helper function to return a generic class init trampoline.
7005
7006         * method-to-ir.c mini.c: Use it.
7007         
7008         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
7009         arch-specfic function to return a generic class init trampoline.
7010
7011         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
7012         the GENERIC_CLASS_INIT custom code.
7013
7014         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
7015         a fatal error, not a sharing failure.
7016
7017         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
7018         needed.
7019
7020         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
7021         trampoline argument from MONO_ARCH_VTABLE_REG.
7022
7023         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7024         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7025         argument, and pass the vtable in VTABLE_REG.
7026
7027         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7028         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7029         argument, and pass the vtable in VTABLE_REG.
7030         (mono_arch_create_trampoline_code_full): Remove some special casing for
7031         the rgctx fetch trampoline.
7032
7033         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
7034         Fixes #419273.
7035
7036         * iltests.il: Add a test for it.
7037
7038 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
7039
7040         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
7041
7042         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
7043         no longer needed.
7044
7045         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
7046         use mono_jit_info_table_find () to avoid recursion.
7047         (mono_delegate_trampoline): Add a sync wrapper here.
7048
7049         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
7050         here.
7051
7052         * mini.c (mono_method_to_ir): Ditto.
7053         
7054         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
7055         add_sync_wrapper argument. Don't add a sync wrapper here.
7056         (mono_create_jump_trampoline): Don't add a sync wrapper here.
7057
7058         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
7059         
7060 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7061
7062         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
7063           of nonvolatile registers back from MonoContext to CONTEXT.
7064
7065         Contributed under MIT/X11 license.
7066
7067 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7068
7069         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
7070           arguments on Winx64 there are only 4 argument registers.  For this
7071           logic to work the last argument must be pulled from the stack.  
7072
7073         Contributed under MIT/X11 license.
7074
7075 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
7076
7077         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7078
7079         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
7080         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
7081         encode/decode_method_ref ().
7082
7083         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
7084
7085         * aot-runtime.c (decode_patch): Ditto.  
7086
7087         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
7088         MONO_PATCH_INFO_METHOD.
7089
7090         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
7091         MonoGenericJitInfo.
7092
7093         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
7094         MonoGenericJitInfo.
7095
7096         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
7097
7098         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
7099         one from the caller.
7100
7101         * aot-runtime.c (decode_generic_inst): New function to decode and
7102         return a interned generic inst.
7103         (decode_klass_ref): Use it.
7104         (decode_method_ref): Ditto.
7105
7106         * aot-compiler.c (emit_exception_debug_info): Save 
7107         jinfo->has_generic_jit_info too.
7108
7109 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7110
7111         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
7112
7113         * iltests.il.in: Add a test for fconv_to_i.
7114
7115         * liveness.c: Disable the liveness2 pass for now to save space.
7116
7117         * regalloc2.c: Include mempool-internals.h to fix warnings.
7118
7119         * aot-compiler.c (encode_method_ref): Encode the context of generic
7120         instance methods.
7121
7122         * aot-runtime.c (decode_method_ref): Inflate generic methods using
7123         the context saved in the aot file.
7124
7125         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7126
7127         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
7128
7129         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
7130         volatile so they won't be optimized away.
7131
7132 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
7133
7134         * ssa.c:
7135         * ssa2.c:
7136         * mini.c:
7137         * regalloc2.c:
7138         * dominators.c: Remove duplicated functions that now are in
7139         mempool-internals.h.
7140
7141 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7142
7143         * aot-compiler.c: Fix warnings.
7144
7145         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
7146
7147         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
7148
7149         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
7150         as the patch type.
7151
7152         * mini.c (mono_resolve_patch_target): Ditto.
7153         
7154         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
7155         (encode_klass_ref): Add support for encoding VARs/MVARs.
7156
7157         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
7158
7159         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
7160         the handling of the got entries into a separate 'decode_got_entry' function.
7161         Add support for RGCTX_FETCH.
7162
7163         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
7164         clobbered by the trampoline code.
7165
7166         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
7167         not clobbered by the indirect calling code.
7168
7169 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7170
7171         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
7172         to fix the build.
7173
7174 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
7175
7176         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
7177         signature using the compilation mempool otherwise we would leak it.
7178
7179 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7180
7181         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
7182         mono_emit_abs_call ().
7183
7184         * patch-info.h: Add GENERIC_CLASS_INIT.
7185
7186         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
7187
7188         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
7189         as their target as a near call.
7190
7191         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
7192         ABS handling code.
7193         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
7194
7195         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
7196         call to a runtime function described by a patch.
7197
7198         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
7199         mono_emit_abs_call, this has the advantage that the ABS handling code in
7200         mono_codegen () can handle them both, and can handle other stuff in the
7201         future without additional code.
7202
7203         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
7204         entry.
7205         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
7206         abs addresses.
7207
7208         * mini.h: Add missing bblock related prototypes.
7209
7210         * mini.h (MonoCompile): Remove unused reverse_inst_list and
7211         reverse_inst_list_len fields.
7212
7213         * mini.c: Refactor this file a bit by moving branch optimizations to 
7214         branch-opts.c.
7215
7216         * method-to-ir.c: Merge generic sharing changes missed earlier.
7217
7218         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
7219
7220         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
7221         shared patches. Process METHODCONST as a shared patch.
7222
7223         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
7224         as it crashes on the 2.0 mscorlib.
7225
7226         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
7227         to cause crashes.
7228         
7229         * aot-compiler.c: Use is_plt_patch () in a few additional places.
7230         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
7231         by IMT.
7232
7233         * aot-compiler.c: Reorganize the got handling code to be a bit more
7234         understandable.
7235
7236 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7237
7238         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
7239         mono_patch_info_equals/hash, and use it to massively simplify
7240         get_plt_index ().
7241
7242         * mini.c (mono_patch_info_hash): Simplify this and add support for
7243         more patch types.
7244
7245         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
7246
7247         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
7248         handling code, since an offset is not enough to identify a trampoline.
7249
7250         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
7251
7252 2008-08-17  Mark Probst  <mark.probst@gmail.com>
7253
7254         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
7255
7256         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
7257
7258         * mini-ops.h: Argument and result types for OVF_CARRY ops.
7259
7260         * decompose.c: PPC decompositions for various ops.
7261
7262         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
7263
7264 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7265
7266         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
7267         call the generic trampoline code using a call, instead of a jump, to
7268         remove some special casing from the generic trampoline code.
7269
7270         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
7271         (mono_codegen): Ditto.
7272
7273         * aot-compiler.c aot-runtime.c: Ditto.
7274
7275         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
7276
7277         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
7278         helper function to find the offset corresponding to a lazy fetch trampoline.
7279
7280         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
7281         when doing generic sharing.
7282
7283         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
7284         places.
7285         
7286         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
7287         mini-trampolines.c to be with the other trampoline creation functions.
7288
7289         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
7290         as it is equal to method->signature in most cases, add a 
7291         mono_emit_method_call_full variant which takes a signature and an imt
7292         argument as well.
7293
7294 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
7295
7296         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
7297         to this function, since it could be computed easily from the method 
7298         argument.
7299         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
7300         more.
7301
7302         * method-to-ir.c mini.c: Remove references to 
7303         compile_generic_method_wo_context.
7304
7305         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
7306         generic method calls.
7307         
7308         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
7309         dimensional non-szarrays.
7310
7311         * mini.c (mini_init): Register mono_array_new_1.
7312
7313         * jit-icalls.c (mono_array_new_1): New jit icall.
7314
7315         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
7316         pointing to the method.
7317
7318         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
7319         method addresses belonging to METHOD_JUMP patches in the 
7320         jump_target_got_slot_hash.
7321         (mono_aot_load_method): Ditto.
7322
7323         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
7324         METHOD_JUMP patches.
7325
7326         * mini.c (mini_create_jit_domain_info): New helper function which 
7327         initializes/frees domain->runtime_info.
7328         (mini_free_jit_domain_info): Ditto.
7329         (mini_init): Install the domain hook functions with the runtime.
7330
7331         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
7332         information maintained by the JIT.
7333
7334         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
7335         insertion into jump_table_hash into mono_codegen (), also implement proper
7336         locking.
7337
7338         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
7339         tail calls, it is already done by the aot code.
7340         
7341         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
7342         mechanism on amd64.
7343
7344         * iltests.il.in: Make the jmp test a bit more complex.
7345
7346         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
7347         generic instances which doesn't have a token.
7348
7349         * aot-runtime.c (decode_method_ref): Ditto.
7350         
7351         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
7352         can handle this case now.
7353         (handle_box): Ditto.
7354
7355 2008-08-15  Geoff Norton  <gnorton@novell.com>
7356
7357         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
7358         debugging check.
7359
7360 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
7361
7362         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
7363         calling generic methods.
7364
7365         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
7366
7367         * aot-runtime.c (decode_patch_info): Ditto.
7368
7369         * mini.c (mono_resolve_patch_target): Ditto.
7370         
7371         * patch-info.h: Add METHOD_RGCTX.
7372
7373         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
7374
7375 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
7376
7377         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
7378         arguments in registers.
7379
7380         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
7381         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
7382
7383         * mini.c (mini_method_compile): Abort aot compilation for generic
7384         methods if generic sharing is disabled.
7385         
7386         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
7387         an mrgctx.
7388
7389         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
7390         requiring an mrgctx.
7391
7392         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
7393         store instructions when converting a vcall to a normal call.
7394
7395         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
7396         mono_arch_find_jit_info.
7397
7398 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
7399
7400         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
7401         avoid calling mono_method_full_name () for every method even if the
7402         env var is not set.
7403         (check_inline_caller_method_name_limit): Ditto.
7404
7405 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7406
7407         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
7408         assemblies in one run.
7409
7410         * aot-compiler.c (mono_compile_assembly): Only print out a count of
7411         skipped methods if it is not 0.
7412
7413         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
7414
7415 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7416
7417         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
7418           MONO_ARCH_HAVE_UNWIND_TABLE.
7419
7420         Contributed under MIT/X11 license.
7421
7422 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7423
7424         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
7425           from default optimizaton list on Winx64.
7426
7427         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
7428
7429         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
7430           the LMF from the MonoJitTlsData structure.
7431
7432         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
7433
7434         Contributed under MIT/X11 license.
7435
7436 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7437
7438         * mini.c (sigsegv_signal_handler): Fix the build.
7439
7440         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
7441         assembly->aot_module.
7442
7443         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
7444         hash table. This simplifies and speeds up a lot of code, and fixes support
7445         for .netmodules.
7446
7447         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
7448         with the runtime.
7449
7450         * mini-exceptions.c: Ditto.
7451         
7452         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
7453         'native_offset' argument, since these are computed in the 
7454         mono_find_jit_info () function.
7455
7456         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
7457         is used by exceptions-ppc.c.
7458
7459         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
7460         mono_arch_find_jit_info ().
7461         
7462         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
7463         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
7464         generic code in mini-exceptions.c.
7465
7466 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
7467
7468         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
7469
7470         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
7471         
7472         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
7473         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
7474         called while holding the loader lock. Fixes #415608.
7475         (mono_aot_get_method_from_token_inner): Ditto.
7476
7477 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
7478
7479         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
7480         to reduce differences between this and the generic implementation in
7481         mini-exceptions.c.
7482         (ves_icall_get_frame_info): Ditto.
7483
7484         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
7485
7486         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
7487         longer neccesarry.
7488
7489         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
7490         mono_arch_get_call_filter () and make it non-static, for consistency with the
7491         other architectures.
7492
7493 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
7494
7495         * mini.c:
7496         * local-propagation.c:
7497         * mini-x86.c: Correct the name of arch defines.
7498
7499 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
7500
7501         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
7502         NO_EMULATE_LONG_SHIFT_OPS define.
7503
7504 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
7505
7506         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
7507         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
7508
7509         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
7510         MACH fixes. Merged from the 2.0 branch.
7511
7512         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
7513
7514         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
7515         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
7516
7517         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
7518
7519         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
7520         mono_marshal_get_native_wrapper () signature changes.
7521
7522 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
7523
7524         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
7525         conversion bug under arm.
7526
7527 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
7528
7529         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
7530
7531         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
7532         with overflow checking.
7533
7534 2008-08-05  Marek Habersack  <mhabersack@novell.com>
7535
7536         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
7537         to the genmdesc.pl file
7538
7539 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
7540
7541         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
7542         arg_array in the soft-float versions of the LOAD/STORE macros.
7543
7544         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
7545         implementation.
7546
7547         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
7548
7549 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
7550
7551         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
7552         a float HFA. Fixes #413621.
7553
7554 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
7555
7556         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
7557         frame_size to args_size. Fixes build.
7558
7559 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
7560
7561         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
7562         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
7563
7564         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
7565         the stack are not unaligned. Fixes #413247.
7566         
7567 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
7568
7569         * mini.c: update jitted methods performance counters.
7570
7571 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7572
7573         * mini-exceptions.c: increase the exceptions thrown performance
7574         counter in mono_handle_exception ().
7575
7576 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
7577
7578         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
7579         can work with netmodules.
7580
7581 2008-07-28  Geoff Norton  <gnorton@novell.com>
7582
7583         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
7584         regression tests.
7585
7586 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
7587
7588         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
7589         correct place.
7590
7591 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
7592
7593         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
7594           The float param registers and other param registers must be the 
7595           same index on Windows x64.
7596
7597         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
7598           ArgValuetypeAddrInIReg argument case.  Setting the argument
7599           op to OP_VTARG_ADDR (OP_REGOFFSET)).
7600
7601         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
7602           variable computed above as the copy length for arguments of storage
7603           type ArgValuetypeAddrInIReg.
7604
7605         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
7606           ArgValuetypeAddrInIReg argument case.  This case will rely on
7607           mono_arch_emit_outarg_vt to emit the correct code later in the process.
7608
7609         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
7610           a 32 byte stack allocation for all calls.  We will omit the adjustment for
7611           jump and tail call instructoins as they do not follow the typical call behavior.
7612
7613         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
7614           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7615           local variable and pass the local variable by reference to the called method.
7616
7617         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
7618           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
7619           of a struct is passed in a register it must be saved with the other
7620           volatile argument on the stack.
7621
7622         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
7623           frame pointer the stack adjustment value must be saved to the unwind 
7624           info structure.
7625
7626         Contributed under MIT/X11 license.
7627
7628 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
7629
7630         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
7631         which got lost in the merge.
7632
7633 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
7634
7635         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
7636         build.
7637
7638         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
7639         
7640         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
7641         icalls, since they won't be patched.
7642
7643         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
7644         different code sequence when running under valgrind to prevent some valgrind
7645         errors.
7646
7647         * iltests.il.in: Add new regression test.
7648
7649         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
7650         end with a throw.
7651
7652         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
7653         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
7654
7655         * iltests.il.in: Add new test.
7656
7657         * aot-compiler.c: Fix some warnings.
7658
7659         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
7660         Fixes #412494.
7661
7662 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
7663
7664         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
7665         (mini_usage_jitdeveloper): Add a missing --wapi option.
7666
7667 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7668
7669         * mini-codegen.c: Simplify the is_fp macros.
7670         (free_up_ireg): Remove, use free_up_reg instead.
7671         (free_up_reg): Fix the fp case.
7672
7673 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
7674
7675         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
7676         lowered earlier.
7677
7678         * exceptions-x86.c: Merge some changes which seemed to have got lost
7679         in the linear-ir merge.
7680
7681         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
7682
7683         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
7684         long vreg volatile even if the variable was already created.
7685
7686         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
7687         volatile variables.
7688
7689 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
7690
7691         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
7692
7693         * mini.c (mono_jit_compile_method_inner): Add support for 
7694         MONO_EXCEPTION_BAD_IMAGE.
7695
7696         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
7697         mini_method_get_context () returns NULL. Fixes #356531.
7698
7699         * mini.c (mono_method_to_ir): Ditto.
7700         
7701         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
7702         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
7703
7704 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7705
7706         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
7707         in the LDFTN implementation.
7708
7709 2008-07-25  Mark Probst  <mark.probst@gmail.com>
7710
7711         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
7712         code, patch calls to icalls, too, even if they're not in the
7713         shared generic code hash.  Fixes #411962.
7714
7715 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7716
7717         * cpu-x86.md: Increase the length of the fcall opcodes.
7718
7719         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
7720         calls returning floats.
7721
7722         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
7723         on NEWARR.
7724         
7725         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
7726         missed earlier.
7727
7728         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
7729         into the domain->method_code_hash.
7730
7731         * aot-compiler.c: Fix win32 build.
7732
7733         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
7734         
7735         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
7736         gshared NEWARR implementation.
7737
7738         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
7739
7740         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
7741         can be used outside of method_to_ir.
7742
7743         * mini.h (MonoCompile): Add arg_types field.
7744
7745         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
7746         
7747         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
7748         the values of the local arg_array and param_types array.
7749
7750 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
7751
7752         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
7753         got accesses might only get generated later when NEWOBJ is decomposed.
7754         
7755         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
7756         looking up the native code of the target method when a delegate is called
7757         for the first time.
7758
7759         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
7760         optimization.
7761
7762         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
7763
7764         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
7765         AOT work on platforms without a working dlsym implementation.
7766
7767         * mini.h: Bump AOT image format version.
7768         
7769 2008-07-24  Mark Probst  <mark.probst@gmail.com>
7770
7771         * mini-exceptions.c: Free a MonoType with
7772         mono_metadata_free_type() instead of g_free().
7773
7774         * aot-runtime.c: Free a MonoType.
7775
7776 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
7777
7778         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
7779         optimization.
7780
7781         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
7782         fp stack on x86.
7783
7784 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
7785         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
7786         profiler hook.
7787
7788 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
7789
7790         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
7791         NEWOBJ calls on valuetypes.
7792
7793         * iltests.il.in: Add new test.
7794
7795         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
7796
7797 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
7798
7799         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
7800         is no longer needed.
7801
7802         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
7803         non register sized integer arguments.
7804         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
7805         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
7806         emit_memcpy2 ().
7807
7808         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
7809         CEE_MONO_RETOBJ.
7810         
7811         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
7812         two a binop with different sized arguments is emitted.
7813
7814         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
7815         instruction in the ins==NULL case.
7816
7817 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
7818
7819         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
7820
7821         * mini-x86.c: Fix osx build.
7822
7823         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
7824         opcodes as well.
7825
7826         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
7827         instruction for non int sized variables.
7828
7829         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
7830         implementation.
7831
7832 2008-07-23  Robert Jordan  <robertj@gmx.net>
7833
7834         * method-to-ir.c: Fix MSVC build.
7835
7836 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
7837
7838         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
7839         a non int sized type, widen it to an int since newer versions of gcc seem to
7840         generate code which needs this.
7841
7842         * ssa2.c abcremoval2.c: Fix warnings.
7843
7844         * *: Merge the Linear IR branch.
7845
7846         The original branch is at trunk/branches/vargaz/mini-linear-il, and
7847         the ChangeLog file there describes all the changes done over the years. 
7848         Further documentation can be found at www.mono-project.com/Linear_IL.
7849
7850 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
7851
7852         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
7853           The float param registers and other param registers must be the 
7854           same index on Windows x64.
7855
7856         Contributed under MIT/X11 license.
7857
7858 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
7859
7860         * mini.c: Make the previous fix GC safe.
7861
7862 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
7863
7864         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
7865
7866 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
7867
7868         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
7869           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
7870           ArgValuetypeAddrInIReg instead.
7871
7872         Contributed under MIT/X11 license.
7873
7874 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
7875
7876         * mini-codegen.c (get_register_spilling): Fix a warning.
7877
7878 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
7879
7880         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
7881         for types which the initialization fails. Raises the provided exception
7882         at the right stop after cleanup.
7883
7884 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
7885
7886         * aot-compiler.c: Free most of the memory allocated during compilation.
7887
7888         * mini.c (mini_parse_debug_options): Fix a leak.
7889         
7890         * mini.c (mini_method_compile): Don't add the method to the jit info tables
7891         during aot compilation.
7892
7893 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
7894
7895         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
7896         it has too much register pressure.
7897
7898 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
7899
7900         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
7901
7902 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7903
7904         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7905         on x86.
7906
7907         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7908         on amd64 similar to the way it is done on arm.
7909
7910         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7911
7912         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
7913         consistency, normalize error messages, avoid loading aot-only modules in
7914         normal mode.
7915
7916         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
7917         for consistency.
7918
7919         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
7920
7921 2008-07-11  Martin Baulig  <martin@ximian.com>
7922
7923         * debug-debugger.h
7924         (MonoDebuggerInfo): Add `interruption_request'.
7925
7926 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7927
7928         * aot-compiler.c (emit_plt): Remove some dead code.
7929
7930         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
7931
7932         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
7933         return the plt info offset belonging to a given plt entry.
7934
7935         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
7936         mono_aot_get_plt_info_offset.
7937         
7938         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
7939         similar to the amd64 code by makeing jumps through a separate jump table 
7940         instead of embedding the jump addresses into the code.
7941
7942 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
7943
7944         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
7945         method.
7946
7947 2008-07-10  Martin Baulig  <martin@ximian.com>
7948
7949         * mini.c (mini_method_compile): Disable generics sharing when
7950         running in the debugger.
7951
7952 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7953
7954         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
7955
7956         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
7957         the local register allocator from running out of registers on x86 when 
7958         using aot.
7959
7960 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
7961
7962         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
7963         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
7964         C4146.
7965
7966         Contributed under MIT/X11 license.
7967
7968 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7969
7970         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
7971         speed up the assembler.
7972
7973 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7974
7975         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
7976         support.
7977
7978         * mini.c: Move the soft float handling macros a bit earlier, add 
7979         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
7980         place.
7981
7982         * mini.h: Add prototype for mono_arch_fixup_jinfo.
7983
7984         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
7985         read-only to help catch code allocation requests.
7986         
7987         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
7988         and turn it off when using --aot-only or when compiling with --aot=full.
7989
7990         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
7991         jump table for switches from the normal domain mempool, not the code
7992         manager.
7993
7994         * mini-trampolines.c (get_unbox_trampoline): New function to return an
7995         unbox trampoline which handles aot-only mode too.
7996
7997         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
7998         an AOTed unbox trampoline.
7999
8000         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
8001
8002 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8003
8004         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
8005         ""
8006
8007         Contributed under MIT/X11 license.
8008
8009 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8010
8011         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
8012           the unwind information for the method at the end of the allocated block.
8013           
8014         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
8015           MonoCompileArch to hold the unwind info for SEH on Winx64
8016         
8017         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
8018           frame pointer info for the method being compiled.
8019           
8020         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
8021           the call to mono_exception_from_token.
8022           
8023         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
8024           storing the method prolog information in a format that the Winx64 SEH can understand.  This
8025           information is stored a the end of the method block because it is all 32-bit offset based.
8026
8027         Contributed under MIT/X11 license.
8028
8029 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8030
8031         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
8032
8033         * wapihandles.c: Fix warnings.
8034
8035         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
8036         mode.
8037
8038         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
8039         mono_jit_compile_method in aot-only mode since that calls the type 
8040         initializer.
8041         
8042         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
8043         get_delegate_invoke_impl in aot-only mode.
8044
8045         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
8046
8047 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
8048
8049         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
8050
8051         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
8052         is on by default.
8053
8054         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
8055
8056         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
8057         init trampoline from the AOT file as well.
8058
8059         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
8060         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
8061         code.
8062
8063         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
8064         mono_init.
8065
8066         * exceptions-amd64.c: Add _full variants for the remaining exception code
8067         creation functions as well, allow emission of relocatable code, remove
8068         caching since that is now done by the caller.
8069
8070         * mini-exceptions.c: Add _full variants for the remaining exception code
8071         creation functions as well, add aot-only support.
8072
8073         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
8074         if we can determine a proper token for them.
8075         (add_wrappers): Add a few more wrappers.
8076         (emit_method_code): Remove some dead code.
8077         (emit_trampolines): Emit exception code too.
8078
8079         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
8080
8081         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
8082         mono_array_new_va which avoids varargs.
8083
8084         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
8085
8086         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
8087         mono_arch_create_specific_trampoline () in all places.
8088
8089         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
8090         a bit so it can be used for other things as well.
8091         
8092         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
8093         on demand as well.
8094
8095         * exceptions-amd64.c: Rename the caching from the exception code creation
8096         functions, it is done by the caller instead.
8097         
8098         * exceptions-amd64.c: Change the signature of the exception code creation 
8099         functions to allow the creation of relocatable code later.
8100
8101         * mini-exceptions.c: Add a set of functions to query the various 
8102         runtime-generated exception functions.
8103
8104         * mini.c mini-exceptions.c: Use the newly added functions instead of the
8105         mono_arch_.. () functions.
8106         
8107 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8108
8109         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
8110
8111         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
8112
8113         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
8114         (mini_get_vtable_trampoline): Ditto.
8115
8116         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
8117         code in the AOT case by returning the code size and a list of relocations to
8118         the caller.
8119
8120         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
8121
8122 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
8123
8124         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
8125           clean the stack.
8126
8127         Contributed under MIT/X11 license.
8128
8129 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8130
8131         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
8132         so the buffer size can be computed correctly. Fixes #404735.
8133
8134         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
8135         normally as cfg->debug_info is already freed.
8136
8137 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
8138
8139         * mini-amd64.c: For calls returning vtypes in registers, don't store
8140         the return address on the stack, instead allocate a separate local for
8141         it. Fixes #404729.
8142
8143 2008-07-05  Mark Probst  <mark.probst@gmail.com>
8144
8145         * mini-trampolines.c, mini.h: Add an argument to
8146         mono_create_jit_trampoline_in_domain() for turning off the adding
8147         of the sync wrapper.
8148
8149         * mini.c: Use the JIT trampoline without sync instead of
8150         ldftn_nosync in static RGCTX invoke wrappers so that the call can
8151         be patched.
8152
8153 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8154
8155         * driver.c: Turn on GSHARED optimization by default.
8156
8157 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
8158
8159         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
8160         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
8161
8162         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
8163         create a variant of the generic trampoline code callable from AOTed trampolines.
8164
8165         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
8166         trampoline code callable from AOTed trampolines.
8167
8168         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
8169
8170 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8171
8172         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
8173         pass-through manner.
8174
8175         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
8176         and don't fail sharing for them anymore.
8177
8178         * mini-exceptions.c: Handle exceptions in shared generic methods.
8179
8180         * generic-sharing.c: When checking the context of a generic
8181         method, also check its class's context.  Don't treat wrappers as
8182         sharable.
8183
8184         * mini-trampolines.c: Some code factored out to
8185         metadata/generic-sharing.c.  Handle the MRGCTX case.
8186
8187         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
8188         we must deal with the method being of another instantiation of the
8189         class.  Add static rgctx invoke wrappers to generic methods.
8190
8191 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8192
8193         * mini.c: Provide all jit infos of generic shared methods with a
8194         generic jit info.
8195
8196         * mini-exceptions.c: Handle the new situation that a generic info
8197         might be available, but not info about the this/vtable/mrgctx
8198         variable.
8199
8200 2008-07-03  Mark Probst  <mark.probst@gmail.com>
8201
8202         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
8203         generic methods.
8204
8205 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
8206
8207         * dominators.c (check_dominance_frontier): Fix a warning.
8208
8209         * mini.h: Add some missing prototypes.
8210
8211         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
8212
8213         * driver.c (mono_jit_init_version): Correct the comments since the first
8214         argument should be the name of the root domain, not a filename.
8215
8216         * aot-runtime.c (make_writable): Error out if this is called while running
8217         with --aot-only.
8218         (load_aot_module): Ditto.
8219
8220         * aot-compiler.c: Really fix the computation of method indexes.
8221
8222         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
8223         optimizations as this is no longer called frequently.
8224
8225         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
8226         method and the invoke impl code and pass it to the delegate trampoline instead of
8227         just the delegate class.
8228
8229 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
8230
8231         * aot-compiler.c: Fixup the computation of method indexes.
8232         (add_wrappers): Create the base methods of the runtime invoke wrappers using
8233         the method builder infrastructure.
8234
8235         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
8236         has no header.
8237
8238         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
8239         mode, load the method right away instead of creating a trampoline.
8240
8241         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
8242
8243         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
8244         some checks a bit.
8245
8246 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
8247
8248         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
8249         (mono_aot_load_method): Use method_index instead of method->token.
8250
8251         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
8252         can handle icalls etc. properly.
8253
8254         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8255
8256         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
8257
8258         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
8259         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
8260         JIT_ICALL_ADDR patch type.
8261
8262         * patch-info.h: Add JIT_ICALL_ADDR patch type.
8263
8264         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
8265         request flag.
8266         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
8267
8268         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
8269
8270 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * mini.c: Use domain->jit_code_hash_lock for controlling access to
8273         domain->jit_code_hash.
8274
8275 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
8276
8277         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
8278
8279 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
8280
8281         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
8282         get_this_arg_from_call, let it compute it when needed.
8283
8284         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
8285         gsctx from code only when needed.
8286
8287         * mini-trampolines.c (get_generic_context): Rename this to 
8288         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
8289         it can be called by the arch backends.
8290
8291         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
8292
8293 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
8294
8295         * driver.c (mono_main): Add experimental --aot-only command line option.
8296
8297         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
8298         set.
8299
8300 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
8301
8302         * driver.c (DllMain): Remove mono_module_handle.
8303
8304         Contributed under MIT/X11 license.
8305
8306 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
8307
8308         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
8309         for emitting methods which are not in the source assembly. Detect and report
8310         failure of assembling+linking.
8311         
8312         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
8313
8314         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
8315
8316 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
8317
8318         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
8319
8320 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
8321
8322         * mini.h: Remove some obsolete prototypes.
8323
8324         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
8325
8326 2008-06-24  Mark Probst  <mark.probst@gmail.com>
8327
8328         * mini.c (get_object_generic_inst): Variable-sized arrays are not
8329         supported by Visual Studio, so use alloca().
8330
8331 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
8332
8333         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
8334         Fixes #402585.
8335
8336 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8337
8338         * mini.c: Fail sharing of a generic method if it contains an open
8339         catch clause (because we don't pass MRGCTXs yet).
8340
8341 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8342
8343         * mini.c: When compiling a method with generic sharing, insert the
8344         method instantiated with an all-Object generic context into the
8345         jit info table, instead of the context of the first instantiation
8346         of the method we happen to compile.
8347
8348 2008-06-18  Martin Baulig  <martin@ximian.com>
8349
8350         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
8351         `major_version' and `minor_version'.
8352
8353 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8354
8355         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
8356         mono_method_is_generic_sharable_impl() takes an additional
8357         argument specifying whether to treat type variables as reference
8358         types.
8359
8360 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8361
8362         * mini.h: Removed obsolete prototypes.
8363
8364 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8365
8366         * mini.c: Don't fail generic sharing for initobj and sizeof - we
8367         already handle them.
8368
8369 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8370
8371         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
8372         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
8373         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
8374         tramp-x86.c: Added a MonoGenericContext* argument to
8375         mono_arch_get_unbox_trampoline() so that it can call other
8376         functions which require it.
8377
8378 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8379
8380         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
8381         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
8382         mono_arch_get_this_arg_from_call() takes a
8383         MonoGenericSharingContext* as well.
8384
8385 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8386
8387         * mini.c: Factor out code for emitting unbox into emit_unbox() and
8388         implement generic sharing of unbox.
8389
8390 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8391
8392         * mini.c: Don't compute the vtable to determine whether a field is
8393         special static, because it might not work for open types.
8394
8395 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8396
8397         * mini.c: Removed the unused token_type and token_source arguments
8398         from get_runtime_generic_context_ptr().
8399
8400 2008-06-17  Marek Habersack  <mhabersack@novell.com>
8401
8402         * mini.c (ADD_BINOP): fix the build
8403
8404 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
8405
8406         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
8407         a widening op.
8408
8409 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8410
8411         * mini.h: Removed class relations enum that's not used anymore.
8412
8413 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8414
8415         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
8416
8417         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
8418         the lazy fetch trampoline access code.
8419
8420 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
8421
8422         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
8423
8424 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
8425
8426         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
8427
8428         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
8429
8430         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
8431
8432 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8433
8434         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
8435         intrinsics.
8436
8437         * mini-ops.h: Add MIN/MAX_UN opcodes.
8438
8439         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
8440         intrinsics.
8441
8442         * basic-math.cs: Add more min/max tests.
8443
8444         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
8445
8446 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8447
8448         * mini.c: Small fix in the prologue of emit_castclass.
8449
8450 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8451
8452         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
8453
8454         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
8455         do not work even for unsigned types. Fixes #400014.
8456
8457         * basic-math.cs: Add regression tests for unsigned Min/Max.
8458
8459 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8460
8461         * mini.c: Added additional context_used argument to several
8462         functions, which will be needed for sharing generic methods.  Use
8463         GET_RGCTX macro wherever appropriate.  Declare only one
8464         context_used in mono_method_to_ir().
8465
8466 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8467
8468         * mini.c, generic-sharing.c: Removed generic class relations.
8469
8470         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
8471         functions due to MRGCTX changes.
8472
8473 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8474
8475         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
8476         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
8477         with calculated IMT.
8478
8479         * mini.c: Generic sharing of calls via generic interfaces.
8480
8481         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
8482         generic method with non-constant MonoGenericContext*.  Instead,
8483         the context is taken out of the method itself.
8484
8485 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8486
8487         * mini.c: Generic sharing of ldvirtftn.
8488
8489 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8490
8491         * mini.c: Generic sharing of ldftn.
8492
8493 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8494
8495         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
8496
8497 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8498
8499         * mini.c: Generic sharing of the special case of ldtoken followed
8500         by a call to GetTypeFromHandle.
8501
8502 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8503
8504         * mini.c: Generic sharing of box for nullable types.
8505
8506 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8507
8508         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
8509         are passed on the stack. Fixes #324807.
8510
8511 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
8512
8513         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
8514         for the ArgValuetypeAddrInIReg case.
8515
8516         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
8517         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
8518
8519         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
8520         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8521         local variable and pass the local variable by reference to the called method.
8522           
8523         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
8524         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
8525
8526         Contributed under MIT/X11 license.
8527
8528 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
8529
8530         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
8531
8532         * debug-mini.c (mono_debug_print_vars): Release memory after printing
8533         everything.
8534
8535 2008-06-10  Martin Baulig  <martin@ximian.com>
8536
8537         * debug-mini.c
8538         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
8539
8540 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
8541
8542         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
8543         possible error when no arguments are passed.
8544
8545         Contributed under MIT/X11 license.
8546
8547 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
8548
8549         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
8550         where the file name is NULL.
8551
8552 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
8553
8554         * mini.c: Fix s390 build.
8555
8556 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
8557
8558         * trace.c (mono_trace_parse_options): Fix warnings.
8559
8560         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
8561
8562 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
8563
8564         * mini.c (remove_block_if_useless): Avoid printing the method name.
8565         
8566         * mini.c: Remove needless setting of ins->cil_code which is now done by 
8567         MONO_INST_NEW.
8568
8569         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
8570         LMF. Not yet used.
8571
8572         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
8573         translated code after it has been patched.
8574
8575 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
8576
8577         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
8578         avoid problems during code patching on SMP systems.
8579         (emit_call): Avoid adding a patch info which is already added by 
8580         emit_call_body.
8581         (mono_arch_emit_exceptions): Ditto.
8582
8583 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
8584
8585         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
8586         MONO_TYPE_ISSTRUCT already checks for it.
8587
8588 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
8589
8590         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
8591           structs with floats on Winx64 the float registers are not used.  
8592           The integer registers are always used..
8593         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
8594           only one register will be used and only if the size of the struct 
8595           is 1,2,4, or 8 bytes.
8596
8597         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
8598           to work for Winx64.
8599
8600         Contributed under MIT/X11 license.
8601
8602 2008-06-05  Martin Baulig  <martin@ximian.com>
8603
8604         * debug-debugger.c (debugger_lookup_class): Also call
8605         mono_class_setup_methods() here; we're only called from RTI.
8606
8607 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
8608
8609         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
8610         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
8611         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
8612         Post-process object files and add dtrace-generated object, if necessary.
8613
8614         Contributed under MIT/X11 license.
8615
8616 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8617
8618         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
8619         element class.
8620
8621         * mini.c: Generic sharing for unbox.any and castclass.
8622
8623 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8624
8625         * mini.c: Ignore tailcall prefix in shared generic code and when
8626         doing calls which require a vtable/rgctx argument.
8627
8628 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8629
8630         * mini.c: Don't free the JIT info.
8631
8632         * driver.c: Changes in the JIT info table testing code.
8633
8634 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
8635
8636         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
8637         interruption. Fix some warnings.
8638
8639         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
8640         interruption_checkpoint.
8641
8642 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
8643
8644         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
8645         from embedding applications.
8646
8647 2008-06-02  William Holmes  <billholmes54@gmail.com>
8648
8649         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
8650           reserving 32 bytes on the stack when making calls. 
8651
8652         Contributed under MIT/X11 license.
8653
8654 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
8655
8656         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
8657         the linear IL branch.
8658
8659         * driver.c: Print out more information for --version on arm.
8660
8661 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
8662
8663         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
8664         bb_exit instead, since out of line bblocks might not actually be emitted
8665         out-of-line.
8666         
8667         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
8668         maximum epilog size for out of line bblocks if tracing is enabled.
8669
8670         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
8671
8672 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
8673
8674         * arrays.cs: Regression tests for allocating arrays with negative sizes.
8675
8676 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
8677
8678         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
8679         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
8680         opcodes.
8681
8682 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
8683
8684         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
8685         the 'value' to store is a constant.
8686
8687         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
8688
8689         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
8690         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
8691
8692 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
8693
8694         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
8695         for accessing method->generic_container.
8696
8697 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
8698
8699         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
8700         
8701         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
8702
8703         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
8704
8705         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
8706         fails.
8707
8708 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
8709
8710         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
8711
8712         * mini.c: Handle the case when mono_class_vtable () fails.
8713
8714 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
8715         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
8716         the stat profiler.
8717
8718 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8719
8720         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
8721         together with domain sharing.
8722
8723 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8724
8725         * mini.c: Treat callvirts to final methods like non-virtual calls
8726         when doing generic sharing, i.e. look them up in the runtime
8727         generic context.
8728
8729 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8730
8731         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
8732         with computed types (for generic sharing).
8733
8734         * mini.c: Generic sharing for mkrefany and refanyval.
8735
8736 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
8737
8738         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
8739         possible.
8740
8741         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
8742         the generic sharing code.
8743         
8744         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
8745         when needed.
8746
8747 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
8748
8749         * mini.h: Remove the declaration of mono_aot_init_vtable ().
8750
8751 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
8752
8753         * driver.c: updated copyright date
8754
8755 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
8756
8757         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
8758         needed.
8759
8760 2008-05-19  Martin Baulig  <martin@ximian.com>
8761
8762         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
8763         pointing to the new `_mono_debug_using_mono_debugger' variable.
8764
8765         * driver.c
8766         (mono_main): Check mono_debug_using_mono_debugger() rather than
8767         the `MONO_INSIDE_MDB' environment variable to check whether we're
8768         inside the debugger.
8769
8770 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
8771
8772         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
8773         argument.
8774
8775 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
8776
8777         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
8778
8779         * mini.c: Added mini_assembly_can_skip_verification. This
8780         function checks if the assembly requested to skip verification. 
8781         Fixes part of #387274.
8782
8783 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
8784
8785         * mini.c (mini_get_method): Disable the check for open generic classes when
8786         using generic sharing.
8787
8788         * generics.cs: Add a test for #387034.
8789
8790         * mini.c (mini_get_method): Check whenever the method class is an open generic
8791         type, and return NULL in that case, causing a verification error. Fixes
8792         #384123.
8793
8794 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8795
8796         * driver.c (mono_main): Revert r102623. The right
8797         thing to do is to enable the verifier under verifiable
8798         unless a --security flag was passed.
8799
8800         We need this non-trivial behavior for --verify-all otherwise
8801         mcs-compileall won't be able to use it. As it needs everything to
8802         be verified under validil.
8803
8804 2008-05-06  Martin Baulig  <martin@ximian.com>
8805
8806         Fix #383749.
8807
8808         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
8809         (mono_debugger_thread_cleanup): Likewise.
8810         (mono_debugger_extended_notification): Likewise.
8811
8812 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8813
8814         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
8815         against both inflated and non-inflated methods. We need to check against the
8816         generic definition for cases where the instantiated method is not visible.
8817         We need to check against the inflated types for cases where the instantiation
8818         changes any super type. This fixes #382986.
8819
8820         Note that this doesn't need to be applied to other parts of mono_method_to_ir
8821         that check for visibiliy as generic params only appears as the type subject
8822         of tokens on call opcodes. Field manipulation and ldftn must always
8823         target an exact type.
8824
8825 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8826
8827         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
8828         if no related --security flag is passed.
8829
8830 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8831
8832         * mini-arch.h: Prepare support for ppc64.
8833
8834         Contributed under MIT/X11 license.
8835
8836 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8837
8838         * aot-runtime.c: Prepare support for ppc64.
8839
8840         Contributed under MIT/X11 license.
8841
8842 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8843
8844         * mini-ops.h: Prepare support for ppc64.
8845
8846         Contributed under MIT/X11 license.
8847
8848 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
8849
8850         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
8851
8852         Contributed under MIT/X11 license.
8853
8854 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
8855
8856         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
8857         assemblies, since aot_name is not a full path, causing us to load MS.NET 
8858         assemblies on windows.
8859
8860 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
8861
8862         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
8863         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
8864         * main.c: Use UTF-8 encoded command line instead of Windows default code
8865         page on Windows to support Unicode.
8866         * driver.c (DllMain): New function for mixed-mode assembly support.
8867         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
8868         export __stdcall functions without decoration.
8869
8870         Contributed under MIT/X11 license.
8871
8872 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8873
8874         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
8875         saving it very early.
8876
8877 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8878
8879         * mini.h, mini.c: Lots of code for accessing the old RGCTX
8880         deleted.  The only way to access the new RGCTX is via the
8881         trampline.
8882
8883         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
8884         vtable instead of the RGCTX to static methods.
8885
8886         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
8887         accessing the new RGCTX.
8888
8889         * generic-sharing.c: There is no separation between self, type
8890         arguments and other types in the RGCTX anymore.
8891
8892 2008-04-25  Jonathan Chambers <joncham@gmail.com>
8893
8894         * mini-amd64.c (add_general): Remove previous stack adjustment.
8895         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
8896         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
8897         for 32 bytes of stack space reserved for all calls.
8898         
8899         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
8900         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
8901         adjustment.
8902         
8903         Code contributed under MIT/X11 license.
8904
8905 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
8906
8907         * mini.c (mini_method_verify): Only verify non-inflated methods, check
8908         against the root definition, peeling out method and type instantiations.
8909         Cache verify success results, code that fails verification is still
8910         checked multiple times.
8911
8912 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
8913
8914         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
8915
8916 2008-04-23  Jonathan Chambers <joncham@gmail.com>
8917
8918         * mini-amd64.c (add_general): Always increment stack on Win64.
8919         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
8920         on Win64.
8921         
8922         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
8923         stack based argument handling on Win64.
8924         
8925         Code contributed under MIT/X11 license.
8926
8927 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
8928
8929         * Makefile.am (version.h): Add support for git-svn.
8930
8931 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
8932
8933         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
8934         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
8935         avoiding allocations and libc functions which might deadlock.
8936         
8937         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
8938         'no-gdb-backtrace' option is set.
8939
8940         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
8941
8942         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
8943
8944 2008-04-21  Martin Baulig  <martin@ximian.com>
8945
8946         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
8947         and `get_lmf_addr'; `notification_address' is no longer a pointer.
8948
8949 2008-04-21  Martin Baulig  <martin@ximian.com>
8950
8951         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
8952         `thread_vtable', `event_handler_ptr' and `event_handler'.
8953
8954 2008-04-21  Martin Baulig  <martin@ximian.com>
8955
8956         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
8957         allows delayed initialization of the `executable_code_buffer' when
8958         attaching.
8959
8960 2008-04-21  Martin Baulig  <martin@ximian.com>
8961
8962         * mini.h (mono_debugger_create_notification_function): Removed.
8963         * tramp-*.c (mono_debugger_create_notification_function): Removed.
8964
8965         * mdb-debug-info64.s
8966         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8967
8968         * mdb-debug-info32.s
8969         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8970
8971         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
8972         currently only works on x86 and x86_64, so don't create it on ppc.
8973
8974 2008-04-21  Martin Baulig  <martin@ximian.com>
8975
8976         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
8977
8978         * mini.c
8979         (mini_method_compile): In the fp elimination check, check
8980         `debug_options.mdb_optimizations' in addition to
8981         mono_debug_using_mono_debugger().       
8982
8983         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
8984         disable some JIT optimizations which are only disabled when
8985         running inside the debugger.
8986         Added `--help-debug' option to describe the debugging options.
8987         (parse_debug_options): New static function to parse the `--debug'
8988         options, so we can easily add more stuff in future.
8989
8990 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
8991
8992         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
8993         the method has no body.
8994
8995 2008-04-19  Jonathan Chambers <joncham@gmail.com>
8996
8997         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
8998         assembly is not allowed in MSVC 64-bit compiler. 
8999         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
9000         as we get floating point exceptions everywhere.
9001         
9002         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
9003         correctly align arguments for call to throw_exception.
9004         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
9005         
9006         Code contributed under MIT/X11 license.
9007
9008 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
9009
9010         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
9011
9012 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
9013
9014         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
9015
9016         * mini-amd64.c (NEW_INS): Set cil_code.
9017
9018         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
9019         from mini-amd64.c so all debugger related logic is in one place.
9020
9021         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
9022         later won't have a random ip assigned to them.
9023
9024 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
9025
9026         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
9027         the arch specific function initializes code_size.
9028         (mono_create_delegate_trampoline): Ditto.
9029
9030         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
9031         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
9032         platforms.
9033
9034         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
9035         running under the debugger.
9036
9037         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
9038         debugger.
9039
9040         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
9041         debugger. Also move the disabling of optimizations here from driver.c.
9042         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
9043         debugger.
9044
9045         * mini.h (MonoCompile): Add a few new flags.
9046
9047 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
9048
9049         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
9050         so the cil_code field of created MonoInst's is properly set.
9051         (mini_select_instructions): Ditto.
9052
9053         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
9054         (MONO_INST_NEW_CALL): Ditto.
9055
9056         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
9057         in many places so the ins->cil_code field is properly initialized.
9058
9059         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
9060         place.
9061
9062 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
9063
9064         * mini.c (mini_method_compile): Print a different message when compiling a 
9065         shared method.
9066         
9067         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
9068         > 1.
9069
9070 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9071
9072         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
9073         SSE2 instructions.
9074
9075         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
9076         
9077 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9078
9079         * mini.c (handle_stack_args): Make this return void since its return value was
9080         never used. Also set cfg->unverifiable for invalid IL instead of calling
9081         G_BREAKPOINT ().
9082
9083 2008-04-10  Mark Probst  <mark.probst@gmail.com>
9084
9085         * mini.c: Make sure "this" is live in catch clauses with type
9086         variables in shared generic code.
9087
9088 2008-04-08  Mark Probst  <mark.probst@gmail.com>
9089
9090         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
9091         generic_class_is_reference_type() to ensure the proper behaviour
9092         when sharing generic code and the type in question is a type
9093         argument.
9094
9095 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9096
9097         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
9098         race conditions when printing thread dumps. Fixes #377738.
9099
9100 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
9101         
9102         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
9103         shows up when both MonoInst arguments can cause aliasig.
9104         There is likely no way in the current JIT to trigger this problem, but
9105         it showed up in the development of generics sharing, when in a new
9106         opcode both args of an OP_GROUP can be aliases (addresses of a local).
9107         When the generics sharing code will be committed, its tests will be
9108         valid also for this bug.
9109
9110 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9111
9112         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
9113         PATCH_INFO_METHOD.
9114
9115         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
9116         NULL.
9117
9118 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
9119
9120         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
9121         use a more detailed exception message for InvalidCastException.
9122
9123         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
9124
9125         * driver.c (mono_main): Add --debug=casts option to turn on better 
9126         InvalidCastException message details.
9127
9128         * mini.c (mini_get_debug_options): New helper function to return the address of
9129         the debug_options variable.
9130
9131         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
9132         the jit_tls TLS variable.
9133
9134         * mini.c (mono_jit_tls): New TLS variable.
9135
9136         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
9137         option is used.
9138
9139 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
9140
9141         * mini.h: Removed verifer related stuff. This code was moved to verify.c
9142
9143         * mini.c: Removed verifer related stuff, code moved to verify.c.
9144
9145         * driver.c: Using code from verify.c instead of mini.c.
9146
9147 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
9148
9149         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
9150         longer valid.
9151
9152 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
9153
9154         * mini.c (check_for_method_verify): Enabling verification of
9155         corlib if mono_verify_all is set. Bugs in the verifier preventing that
9156         have been fixed.
9157
9158 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
9159
9160         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
9161         caller saved registers as well.
9162         
9163         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
9164         saved registers as well.
9165
9166 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
9167
9168         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
9169
9170         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
9171         code.
9172
9173 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
9174
9175         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
9176         to get_call_info.
9177         (get_call_info): Take a gsctx argument instead of 'cfg'.
9178
9179 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
9180
9181         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
9182         mono_verify_all is set.
9183
9184         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
9185
9186         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
9187
9188 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
9189
9190         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
9191         an exception.
9192
9193         * driver.c mini.c mini.h: Add a --verify-all development option to test the
9194         verifier and the code generated by the compiler.
9195
9196 2008-03-25  Mark Probst  <mark.probst@gmail.com>
9197
9198         * mini.c: Generic sharing of the non-nullable case of the box
9199         instruction.
9200
9201 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
9202
9203         * inssel.brg: Fix the build.
9204
9205         * iltests.il.in: Add a test for lconv.ovf.u8.un.
9206
9207 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
9208
9209         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
9210         Array:Address. Fixes #372410.
9211
9212         * iltests.il.in: New tests for readonly prefix.
9213
9214 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
9215
9216         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
9217         mini-trampolines.c.
9218
9219         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
9220         mini-exceptions.c.
9221
9222         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
9223         
9224         * mini.c (mono_decompose_op_imm): New helper function.
9225
9226         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
9227         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9228         return value.
9229
9230         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9231         mono_arch_output_basic_block. Fix warnings.
9232
9233         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
9234         for now.
9235
9236 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
9237
9238         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
9239         since the extra frame is now detected automatically inside the loop.
9240
9241         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
9242         opts which are now in mono_peephole_ins ().
9243         
9244         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
9245
9246         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
9247         frames and skip duplicate managed-to-native frames. Fixes #367665.
9248
9249         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9250         opts which are now in mono_peephole_ins ().
9251         (mono_arch_peephole_pass_2): Ditto.
9252
9253         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
9254
9255         * mini-codegen.c (mono_peephole_ins): New helper function containing the
9256         arch independent peephole optimizations.
9257
9258         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9259         opts which are now in mono_peephole_ins ().
9260
9261         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
9262         
9263         * mini-s390.c (mono_arch_output_basic_block): Fix build.
9264
9265         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
9266         pattern.
9267
9268         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
9269         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
9270         opcode. 
9271
9272 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
9273
9274         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
9275         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9276         return value.
9277
9278         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9279         mono_arch_output_basic_block. Fix warnings.
9280
9281 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9282
9283         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9284         conv.ovf.u.un.
9285
9286 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9287
9288         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9289         conv.ovf.u.un.
9290
9291         * iltests.il: Add new tests.
9292
9293 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
9294
9295         * mini.c: Removed Windows version macros.
9296
9297 2008-03-20  Mark Probst  <mark.probst@gmail.com>
9298
9299         * generic-sharing.c: Put reflection types in the extensible part
9300         of the runtime generic context.
9301
9302         * mini.c: Generic sharing of the GetTypeHandle special case of the
9303         ldtoken instruction.
9304
9305 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9306
9307         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
9308
9309         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
9310         
9311         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
9312         consistency with the other version on the linear IR branch.
9313
9314         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
9315
9316         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
9317
9318         * iltests.il.in: Add new tests.
9319
9320 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
9321
9322         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
9323
9324         * iltests.il.in: Add new tests.
9325
9326 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9327
9328         * mini.c: Two variables with the same name were declared in
9329         nesting contexts and one wasn't initialized.  Fixed.
9330
9331 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9332
9333         * mini.c: Generic sharing of the initobj instruction.
9334
9335 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
9336
9337         * mini.c: make the test to optimize ldtoken from typeof() more
9338         precise.
9339
9340 2008-03-18  Mark Probst  <mark.probst@gmail.com>
9341
9342         * mini.c: Generic sharing of the initobj instruction for reference
9343         types.
9344
9345 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
9346
9347         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
9348         the mono_breakpoint_clean_code() code to perform bound checks.
9349
9350 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
9351
9352         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
9353         mono_arch_patch_callsite() to include the start of the managed method
9354         to be able to perform bound checks.
9355
9356 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9357
9358         * mini.c: Generic sharing for the isinst instruction.
9359
9360 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9361
9362         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9363         inssel-long32-mips.brg: Added opcodes for doing indirect calls
9364         with the runtime generic context argument.
9365
9366         * mini.c: Share calls to several types of unsharable methods by
9367         putting the address of the method code in the runtime generic
9368         context and doing an indirect call.
9369
9370         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9371         to switches.
9372
9373 2008-03-16  Mark Probst  <mark.probst@gmail.com>
9374
9375         * generic-sharing.c: Change due to a change in the runtime genric
9376         context API.
9377
9378 2008-03-15  Martin Baulig  <martin@ximian.com>
9379
9380         * tramp-x86.c
9381         (mono_arch_nullify_class_init_trampoline): Add call to
9382         mono_breakpoint_clean_code() to make things work when running
9383         inside the debugger.
9384
9385         * tramp-amd64.c
9386         (mono_arch_nullify_class_init_trampoline): Add call to
9387         mono_breakpoint_clean_code() to make things work when running
9388         inside the debugger.
9389
9390 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9391
9392         * inssel-long.brg (reg): Fix 64 bit build.
9393
9394 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9395
9396         * mini.c, mini.h: Share static generic code by passing it an
9397         implicit argument pointing to the runtime generic context.
9398
9399         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9400         inssel-long32-mips.brg: New opcodes for calling shared static,
9401         which need to be passed the runtime generic context.
9402
9403         * mini-amd64.c, mini-x86.c: Save the runtime generic context
9404         argument on the stack in the prologue if needed.  New function for
9405         finding the runtime generic context argument from the registers
9406         saved by the trampoline.
9407
9408         * mini-amd64.h, mini-x86.h: Specify which register to use for the
9409         runtime generic context argument.
9410
9411         * tramp-amd64.c: Also restore the register used for the runtime
9412         generic context argument.
9413
9414         * mini-trampoline.c: Resolve shared static calls by consulting the
9415         runtime generic context via the new argument.
9416
9417         * generic-sharing.c: Add an argument to sharability-checking
9418         functions that specifies whether type variables should be treated
9419         as sharable type arguments.
9420
9421         * inssel-x86.brg: Removed a superfluous, buggy rule.
9422
9423         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9424         to switches.
9425
9426 2008-03-14  Martin Baulig  <martin@ximian.com>
9427
9428         * debug-debugger.c (main_thread_handler): Call
9429         mono_runtime_run_main() without sending any notifications.
9430
9431         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
9432
9433 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9434
9435         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
9436
9437 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9438
9439         * tramp-x86.c: Fixed register restore offsets in the trampoline
9440         code for ECX and EDX.
9441
9442 2008-03-12  Geoff Norton  <gnorton@novell.com>
9443
9444         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
9445         different ucontext_t implementations.
9446         * exceptions-arm.c: Use the above defines to get exceptions working on 
9447         iPhone (based on a patch by Luke Howard lukeh@padl.com)
9448         * mini-arm.c: Implement iPhone icache support (based on a patch by
9449         Luke Howard lukeh@padl.com)
9450
9451 2008-03-12  Mark Probst  <mark.probst@gmail.com>
9452
9453         * mini.c: Enable generic sharing of calls to non-static
9454         non-interface non-generic non-value-type methods.
9455
9456         * mini-trampolines.c: Resolve calls from shared generic code.
9457
9458 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
9459
9460         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
9461
9462         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
9463
9464 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
9465
9466         * mini.c: some fixes for the AOT compiler.
9467
9468 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
9469
9470         * cpu-amd64.md: Add clob:1 to some float opcodes.
9471
9472 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
9473
9474         * mini.h: Added MiniVerifierMode enumeration.
9475
9476         * mini.c: Added mini_verifier_set_mode to control
9477         the usage of the new verifier.
9478
9479         * mini.c (mono_method): Integrated the new verifier.
9480
9481         * driver.c: Extended --security option with validil and
9482         verifiable options to activate the new verifier.
9483
9484 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
9485
9486         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
9487         optimization to ctors taking 0 or 2 arguments too.
9488
9489         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
9490         a bit.
9491
9492         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
9493
9494         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
9495
9496 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
9497
9498         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
9499         non-aot case as well.
9500
9501         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
9502
9503         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
9504         changes.
9505
9506         * aot-compiler.c (encode_patch): Ditto.
9507
9508         * mini.h (G_MININT32): Fix the definition of this.
9509
9510 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
9511
9512         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
9513
9514         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
9515
9516 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
9517
9518         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
9519         methods returning vtypes in registers.
9520         (mono_arch_allocate_vars): Ditto.
9521
9522         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
9523
9524         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
9525
9526         * generics.cs: Add a test from the linear IR branch.
9527
9528         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
9529
9530         * mini.c (inline_method): Cache failed inline attempts.
9531
9532 2008-03-04  Mark Probst  <mark.probst@gmail.com>
9533
9534         * mini.c: For shared methods of generic classes put the location
9535         of "this" into the MonoGenericJitInfo.
9536
9537         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
9538         register out of a MonoContext by register number.  Add the generic
9539         sharing context as an argument to mono_arch_find_this_argument().
9540
9541         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
9542         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
9543         for new arch function.
9544
9545         * mini-exception.c: Handle open exception clauses in shared
9546         generic code.
9547
9548         * mini-trampolines.c: Supply additional argument to
9549         mono_arch_find_this_argument().
9550
9551 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
9552
9553         * Makefile.am (regtests): Run the bench.exe tests last.
9554
9555 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
9556
9557         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
9558         a bit.
9559
9560 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
9561
9562         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
9563         with MS.
9564
9565         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
9566         
9567         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
9568
9569         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
9570         whose class has no cctor.
9571
9572         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
9573
9574 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
9575
9576         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
9577         unverified.
9578
9579 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
9580
9581         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
9582         to be in sync with the code on the linear IR branch.
9583
9584         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
9585
9586         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
9587
9588 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
9589
9590         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
9591
9592         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
9593
9594         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
9595
9596         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
9597
9598         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
9599         
9600         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
9601         body.
9602
9603 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
9604
9605         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
9606         OP_LOADR4_MEMBASE emission.
9607
9608         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
9609         (mono_spillvar_offset_float): Ditto.
9610
9611         * mini-mips.c (mono_arch_emit_prolog): Ditto.
9612
9613         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
9614         emission.
9615
9616         * basic-long.cs: Add regression tests for them.
9617
9618         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
9619         use.
9620         (mono_arch_allocate_vars): Fix representation of single-precision float
9621         argument.
9622         (mono_arch_output_basic_block): Ditto.
9623
9624         * inssel-mips.brg: Ditto, remove duplicate items.
9625
9626         * mini-mips.c (emit_load_volatile_arguments): New function to handle
9627         arguments of tail calls as on other platforms.
9628         (mono_arch_output_basic_block): Handle tail calls.
9629
9630         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
9631         register.
9632
9633         * objects.cs (test_5_pass_static_struct): Add test for it.
9634
9635         Contributed under MIT/X11 license.
9636
9637 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
9638
9639         * Makefile.am: Use gmcs for compiling the regression tests.
9640
9641         * *.2.cs *.2.il: Rename to *.cs and *.il.
9642
9643 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
9644
9645         * regalloc.h: Make the vassign array smaller.
9646
9647         * mini.c (mini_method_compile): Remove an unused field in cfg.
9648
9649         * mini-codegen.c: Add a bunch of micro optimizations.
9650
9651 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
9652
9653         * regalloc.h: Remove some unused fields.
9654
9655 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
9656
9657         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
9658
9659         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
9660
9661 2008-02-22  Mark Probst  <mark.probst@gmail.com>
9662
9663         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
9664
9665         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
9666         trampoline: Fetch an entry from the runtime generic context.  If
9667         it's NULL, jump to the actual trampoline to fill the runtime
9668         generic context.  Otherwise, return it.
9669
9670         * mini.c: Call the lazy fetch trampoline to get entries out of the
9671         runtime generic context.
9672
9673         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
9674         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
9675         tramp-sparc.c: Stubs for the lazy fetch trampoline.
9676
9677 2008-02-21  Mark Probst  <mark.probst@gmail.com>
9678
9679         * mini.c: Fetch data out of the extensible part of the runtime
9680         generic context instead of calling a helper function.
9681
9682         * generic-sharing.c: Some functions moved into
9683         metadata/generic-sharing.c.  Helper function for fetching other
9684         types now checks and asserts against extensible rgctx (just for
9685         debugging purposes - the helper function isn't called anymore
9686         unless for debugging).
9687
9688 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
9689
9690         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
9691         for tail calls up to the point that the tests in iltests.exe run. Also add a
9692         dummy CKFINITE implementation.
9693         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
9694         needed for trampoline LMF frames.
9695
9696         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
9697         trampoline LMF frames.
9698
9699 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
9700
9701         * mini.c (inline_method): clean any pending loader error when inlining fail.
9702         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
9703
9704 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
9705
9706         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
9707
9708         * aot-runtime.c (decode_patch_info): Ditto.
9709
9710         * mini.c (mono_resolve_patch_target): Ditto.
9711         
9712         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
9713         icall wrappers.
9714
9715         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
9716         
9717         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
9718         if it references an icall address.
9719
9720 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
9721
9722         * cpu-s390x.md: Remove some more unused opcodes.
9723         
9724         * cpu-s390x.md: Remove some unused opcodes.
9725
9726         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
9727         mono_op_imm_to_op ().
9728
9729         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
9730         instead of a switch statement.
9731         
9732         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
9733         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
9734
9735         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
9736         
9737         * mini-codegen.c: Remove unused mono_regstate2_... functions.
9738
9739         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
9740         -1.
9741
9742 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
9743
9744         * driver.c (mono_main): Improve error reporting when an assembly cannot be
9745         opened. Fixes #362607.
9746
9747         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
9748
9749         * iltests.il.in: Add a test for static methods in interfaces.
9750
9751 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
9752
9753         * genmdesc.c (build_table): Fix a crash on older glib versions.
9754
9755         * cpu-sparc.md: Remove some unused opcodes.
9756         
9757         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
9758         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
9759
9760         * cpu-amd64.md: Remove some unused opcodes.
9761
9762         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
9763         like the other opcodes.
9764
9765 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
9766
9767         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
9768
9769         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
9770
9771         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
9772         variables 'cfg' instead of 'm' for consistency.
9773
9774         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
9775
9776         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
9777         argument holding the vtype return address, to avoid the ambigious use of
9778         cfg->ret for this purpose.
9779
9780         * mini.c (NEW_RETLOADA): Use vret_addr if set.
9781
9782         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
9783         
9784         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
9785         new mono_print_ins () function which only takes one argument.
9786
9787 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
9788
9789         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
9790         macro arguments.
9791
9792 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
9793
9794         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
9795
9796         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
9797
9798         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
9799         opcodes and other small changes.
9800
9801         * mini-ops.h: Add some new opcodes from the linear IR branch.
9802
9803         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
9804
9805         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
9806         opcodes, use the REG_MEMBASE opcodes instead.
9807         
9808         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
9809         opcodes, use the REG_MEMBASE opcodes instead.
9810         
9811         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
9812         linear IR branch.
9813
9814         * mini.c (mono_op_imm_to_op): New helper function.
9815
9816         * mini-ops.h: Add some opcodes from linear IR branch.
9817
9818 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
9819
9820         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
9821         <tsv@solvo.ru>.
9822
9823 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
9824
9825         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
9826         OP_ICONV_TO_R4/R8.
9827
9828         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
9829
9830 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
9831
9832         * aot-compiler.c (emit_method_code): Add an assert.
9833
9834         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
9835         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
9836         methods.
9837
9838 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
9839
9840         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
9841         some load/store opcodes so they are consistent. 
9842         (mono_arch_emit_prolog): Simplify some code.
9843
9844         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
9845
9846         * objects.cs: Add tests for large argument offsets on ARM.
9847
9848         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
9849         stack offsets. Fixes #359651.
9850
9851         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
9852
9853         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
9854
9855         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
9856
9857         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
9858
9859         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
9860
9861         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
9862         rid of CEE_CONV_R_UN.
9863
9864         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
9865
9866 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
9867
9868         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
9869
9870         * mini.c (mono_normalize_opcodes): Add some more opcodes.
9871
9872         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
9873
9874         * cpu-amd64.md: Remove some unused opcodes.
9875
9876         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
9877
9878         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
9879
9880         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
9881         arch specific functions for its parts. Call the peephole pass after local
9882         regalloc so the prolog can compute a more accurate max_offset.
9883         
9884         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
9885         the corresponding OP_I/OP_L opcodes.
9886
9887         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
9888
9889         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
9890
9891 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9892
9893         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
9894         as they are handled in mini.c.
9895
9896         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
9897         
9898         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
9899         case since it is handled in mini.c.
9900
9901         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
9902
9903         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
9904
9905         * *.c: Use the new opcodes in the IR and back end code.
9906
9907         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
9908
9909         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
9910
9911 2008-02-06  Mark Probst  <mark.probst@gmail.com>
9912
9913         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
9914         an assert because it has a race condition.
9915
9916 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9917
9918         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
9919
9920         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
9921
9922         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
9923
9924         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
9925         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
9926
9927 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
9928
9929         * cpu-amd64.md (move): Correct the maximum size of move.
9930
9931 2008-02-05  Mark Probst  <mark.probst@gmail.com>
9932
9933         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
9934         the generic class init trampoline to return quickly if the class
9935         is already inited.
9936
9937 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
9938
9939         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
9940         issues where an 32 bit callsite cannot be patched by a 64 bit address.
9941
9942 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
9943
9944         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
9945         branch.
9946
9947 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
9948
9949         * objects.cs: Add some soft-float tests.
9950
9951         * mini.c: Fix a couple more soft-float issues.
9952
9953         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
9954
9955         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
9956         avoid a REX prefix.
9957
9958 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
9959
9960         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
9961         exception happens while compiling a virtual method.
9962
9963 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
9964
9965         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
9966         
9967         * mini-sparc.c: Fix build.
9968
9969         * mini-sparc.c (get_call_info): Add support for generic sharing.
9970
9971         * mini-exceptions.c: Add a FIXME.
9972
9973 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
9974
9975         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
9976         altstack handling code.
9977
9978         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
9979         
9980         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
9981
9982         * mini-s390.c: Add support for generic sharing.
9983
9984         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9985         Fix CAS on s390.
9986         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9987
9988         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
9989
9990         * mini-s390x.c: Add support for generic sharing.
9991         
9992         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9993         Fix CAS on ia64.
9994         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9995
9996         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
9997         can be used since it takes a 16 bit signed immediate.
9998
9999         * inssel-s390x.brg: Fix OP_SETRET.
10000
10001         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
10002
10003         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
10004
10005         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
10006
10007         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
10008
10009         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
10010         in one place.
10011
10012         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
10013         stuff.
10014
10015         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
10016         of the unused mono_arch_patch_delegate_trampoline stuff.
10017
10018 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
10019
10020         * basic-long.cs: Move the fp related tests to basic-float.cs.
10021
10022         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
10023
10024         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
10025
10026         * basic-calls.cs: Add a test for proper float argument passing.
10027
10028         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
10029         if the context corresponds to an exception received through a signal.
10030
10031         * exceptions.cs: Add a test for nullref handling at the start of a try
10032         clause.
10033
10034         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
10035
10036         * jit-icalls.c (mono_break): New JIT icall.
10037
10038         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
10039
10040         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
10041
10042 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
10043
10044         * cpu-*.md: Get rid of unused opcodes.
10045
10046         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
10047
10048         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
10049         by all platforms.
10050
10051         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
10052         define.
10053
10054         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
10055         the arch independent trampoline code in mini-trampolines.c.
10056
10057         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
10058
10059         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
10060
10061         * mini-s390.h: Remove an unused define.
10062         
10063         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
10064         the arch independent trampoline code in mini-trampolines.c.
10065
10066         * mini-arm.c (mono_arch_emit_prolog): Fix build.
10067
10068 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
10069
10070         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
10071
10072         * mini-s390.c (mono_arch_emit_prolog): Fix build.
10073
10074         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
10075
10076         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
10077
10078         * cpu-amd64.md: Use smaller sizes for int opcodes.
10079
10080         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
10081
10082         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
10083         objects.cs.
10084
10085         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
10086         debugging.
10087
10088         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
10089         instead of though a pointer to save an indirection when accessing elements of
10090         the array.
10091
10092         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
10093         some typos.
10094         (NOT_IMPLEMENTED): New helper macro.
10095         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
10096         of a bb.
10097
10098         * *.c: Use the new helper macro.
10099
10100 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
10101
10102         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
10103
10104 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
10105
10106         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
10107         stack slots.
10108
10109 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
10110
10111         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
10112         profiling is enabled.
10113         
10114         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
10115         the end.
10116         (mono_arch_emit_prolog): Add more first bblock optimizations.
10117
10118         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
10119         in order if possible.
10120         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
10121         bblock, since the arguments are still in their original registers.
10122
10123         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
10124
10125 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
10126
10127         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
10128         as well.
10129
10130         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
10131         offset 0.
10132
10133         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
10134
10135         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
10136         process async exceptions received while in unmanaged code.
10137
10138         * mini.c (mini_init): Install a callback with the runtime which will be called
10139         when a thread receives an async exception while in unmanaged code.
10140
10141         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
10142
10143         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
10144
10145 2008-01-16  Wade Berrier  <wberrier@novell.com>
10146
10147         * cpu-g4.md:
10148         * cpu-arm.md:
10149         * cpu-s390x.md:
10150         fix build
10151
10152 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
10153
10154         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
10155         compilation with sun cc.
10156
10157         * cpu-*.md: Fix the build.
10158
10159         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
10160
10161         * mini-amd64.h: Add some comments to the MonoLMF structure.
10162
10163         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
10164         
10165         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
10166         in the LMF structure if possible. This saves two instructions in the
10167         managed->native wrappers.
10168
10169         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
10170
10171 2008-01-16  Mark Probst  <mark.probst@gmail.com>
10172
10173         * generic-sharing.c: New type argument lookup code which uses the
10174         runtime generic context template.
10175
10176 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
10177
10178         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
10179
10180         * mini-arm.c (add_general): Fix arm eabi parameter passing.
10181         (mono_arch_output_basic_block): Fix localloc implementation.
10182
10183         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
10184
10185         * mini-ia64.c (peephole_pass): Fix ia64 build.
10186
10187         * mini-amd64.c (peephole_pass): Fix a warning.
10188         
10189         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
10190         at a constant offset from sp/fp.
10191
10192         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
10193         instead of obtaining it from *lmf in the managed method case.
10194
10195 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
10196
10197         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
10198
10199 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
10200
10201         * mini.h (MonoInstList): New type.
10202         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
10203         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
10204         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
10205         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
10206         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
10207         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
10208         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
10209         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
10210         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
10211         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
10212         MONO_INST_LIST_FOR_EACH_ENTRY,
10213         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
10214         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
10215         mono_inst_list_first, mono_inst_list_last,
10216         mono_inst_list_next, mono_inst_list_prev): New instruction
10217         list handling interfaces.
10218         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
10219         list head 'ins_list'.
10220         (MonoInst): Replace next pointer with list head 'node'.
10221         (MonoCallInst): Make 'out_args' a MonoInstList.
10222         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
10223         (MonoCompile): Delete reverse_inst_list and
10224         reverse_inst_list_len.
10225         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
10226         mono_arch_lowering_pass, mono_arch_local_regalloc,
10227         mono_arch_output_basic_block, mono_arch_emit_prolog):
10228         Convert to new instruction lists.
10229         (insert_after_ins): Delete.
10230         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
10231         instruction lists.
10232         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
10233         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
10234         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
10235         mono_emulate_opcode, mono_emit_load_got_addr,
10236         inline_method, mono_method_to_ir, mono_print_bb_code,
10237         print_dfn, decompose_pass, nullify_basic_block,
10238         replace_out_block_in_code, remove_block_if_useless,
10239         merge_basic_blocks, move_basic_block_to_end,
10240         try_unsigned_compare, optimize_branches, mono_print_code,
10241         mini_select_instructions, remove_critical_edges): Likewise.
10242         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
10243         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
10244         mono_arch_output_basic_block, mono_arch_emit_prolog):
10245         Likewise.
10246         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
10247         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10248         mono_arch_output_basic_block): Likewise.
10249         (inst_list_prepend, insert_after_ins): Delete.
10250         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
10251         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
10252         instruction lists.
10253         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
10254         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
10255         mono_arch_emit_prolog): Likewise.
10256         * cfold.c (mono_constant_fold): Likewise.
10257         * liveness.c (visit_bb, mono_analyze_liveness,
10258         optimize_initlocals): Likewise.
10259         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
10260         * graph.c (mono_draw_code_cfg): Likewise.
10261         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
10262         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
10263         mono_ssa_cprop): Likewise.
10264         * abcremoval (get_relations_from_previous_bb, process_block):
10265         Likewise.
10266         * local-propagation (mono_cprop_invalidate_values,
10267         mono_local_cprop_bb): Likewise.
10268         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
10269         peephole_pass, mono_arch_output_basic_block,
10270         mono_arch_emit_prolog): Likewise.
10271         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
10272         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10273         mono_arch_emit_prolog): Likewise.
10274         (insert_after_ins): Delete.
10275         * aliasing.c (print_code_with_aliasing_information,
10276         mono_build_aliasing_information, mono_aliasing_deadce):
10277         Convert to new instruction lists.
10278         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
10279         peephole_pass, NEW_INS, mono_arch_lowering_pass,
10280         mono_arch_local_regalloc, mono_arch_output_basic_block):
10281         Likewise.
10282         (insert_after_ins): Delete.
10283         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
10284         peephole_pass, mono_arch_output_basic_block): Convert to
10285         new instruction lists.
10286         * mini-codegen (InstList, inst_list_prepend,
10287         insert_after_ins): Delete.
10288         (insert_before_ins, get_register_force_spilling,
10289         get_register_spilling, free_up_ireg, free_up_reg,
10290         create_copy_ins, create_spilled_store, alloc_int_reg,
10291         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
10292         to new instruction lists.
10293         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
10294         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10295         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
10296         (insert_after_ins): Delete.
10297         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
10298         mono_arch_local_regalloc, mono_arch_output_basic_block,
10299         mono_arch_call_opcode): Convert to new instruction lists.
10300         (insert_after_ins): Delete.
10301         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
10302         peephole_pass, mono_arch_output_basic_block,
10303         mono_arch_emit_prolog): Convert to new instruction lists.
10304
10305 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
10306
10307         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
10308
10309         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
10310         Fixes #353182.
10311
10312         * Makefile.am (version.h): Make this work with non-bash shells.
10313
10314 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
10315
10316         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
10317
10318 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
10319
10320         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
10321         the InitializeArray optimization.
10322
10323 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
10324
10325         * mini.c driver.c: Don't include os/gc_wrapper.h.
10326
10327 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
10328
10329         * mini.c (print_jit_stats): Print GC statistics if available.
10330
10331 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
10332
10333         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
10334
10335 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
10336
10337         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
10338
10339 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
10340
10341         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
10342         
10343         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
10344
10345         * driver.c (mono_main): Ditto.
10346
10347 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
10348
10349         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
10350
10351         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
10352         in the vtable can't be encoded.
10353         (compile_method): Ditto.
10354
10355 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
10356
10357         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
10358         defined.
10359
10360         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
10361         lmf->rbp.
10362
10363         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
10364         the top LMF entry belongs to the current method.
10365
10366         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
10367
10368 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
10369
10370         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
10371         
10372         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
10373
10374         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
10375
10376         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
10377
10378         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
10379
10380         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
10381         implementation.
10382
10383         * basic-float.cs: Add an ulong->double cast test.
10384
10385 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
10386
10387         * mini.c (mono_method_to_ir): Fix a warning.
10388
10389 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
10390
10391         * mini-ops.h: Add OP_SWITCH.
10392
10393         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
10394         CEE_SWITCH in back-end code, use OP_SWITCH instead.
10395
10396 2007-12-11  Geoff Norton  <gnorton@novell.com>
10397
10398         * mini-s390x.c: Minor change to the MAX() define to allow
10399         it to compile with other gcc versions.
10400
10401 2007-12-11  Geoff Norton  <gnorton@novell.com>
10402
10403         * cpu-s390x.md:
10404         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
10405
10406 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10407
10408         exceptions-arm.c (mono_arch_get_restore_context): Restore
10409         the frame pointer.
10410
10411         exceptions-arm.c (throw_exception): Save the frame pointer.
10412         This is a partial fix for #323747. Only the client side is
10413         fixed.
10414
10415 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10416
10417         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
10418         was using an unrelated variable to log the class which
10419         needed the cctor to be called. This was crashing on arm.
10420
10421 2007-12-09  Robert Jordan  <robertj@gmx.net>
10422
10423         * mini-x86.c (mono_arch_emit_epilog):
10424         Consider all kinds of 64-bit types. Fixes #323114.
10425
10426 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
10427
10428         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
10429
10430 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10431
10432         * mini-amd64.c (peephole_pass): Add a missing instruction check.
10433
10434 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10435
10436         * mini.c: run type ctor before allocating an object, not only
10437         when running it's constructor method (fixes at least part of bug #342507).
10438
10439 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10440         
10441         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
10442         
10443         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
10444         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
10445         function.
10446
10447         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
10448         mono_generic_class_init_trampoline () the same as it is done with the other
10449         trampolines.
10450
10451         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
10452         aot-runtime.c aot-compiler.c: Implement AOT support.    
10453
10454 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10455
10456         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
10457         build for archs which don't have the vtable trampoline defined
10458         yet.
10459
10460 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10461
10462         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
10463
10464         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
10465
10466         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
10467
10468         * tramp-<ARCH>.c: Use the new helper function.
10469
10470 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10471
10472         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
10473         trampoline call, which takes a vtable argument.
10474
10475         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
10476         OP_TRAMPCALL_VTABLEs like other calls.
10477
10478         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
10479         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
10480         call.  Implemented a support function which fetches the vtable
10481         from a register set.
10482
10483         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
10484         Implemented a generic class init trampoline, using the
10485         OP_TRAMPCALL_VTABLE opcode.
10486
10487         * mini.c: Implemented static field access when sharing generic
10488         code.  This implies initing the class using the new
10489         OP_TRAMPCALL_VTABLE call.
10490
10491 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10492
10493         * mini.c: Don't compile methods with sharing enabled if their
10494         classes are disabled for sharing.
10495
10496 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
10497
10498         * inssel.brg: Add a missing sign extension to the GETCHR and array access
10499         opcodes. Fixes #346563.
10500
10501         * objects.cs: Add a new test.
10502
10503         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
10504
10505         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
10506         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
10507
10508 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
10509
10510         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
10511
10512 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
10513
10514         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
10515         code stream.
10516
10517 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
10518
10519         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
10520
10521         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
10522         optimization in the AOT case.
10523         
10524 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
10525
10526         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
10527         
10528         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
10529
10530         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
10531
10532         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
10533
10534         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
10535         is created by the inlined delegate ctor.
10536
10537         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
10538
10539         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
10540
10541 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
10542
10543         * cpu-x86.md: Fix the length of ckfinite.
10544
10545 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
10546
10547         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
10548         
10549         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
10550         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
10551
10552         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
10553
10554         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
10555         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
10556
10557 2007-11-28  Martin Baulig  <martin@ximian.com>
10558
10559         * mini-x86.c
10560         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
10561         after creating the trampoline.
10562
10563 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
10564
10565         * aot-runtime.c (load_aot_module): Check runtime version if needed.
10566
10567         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
10568         the same version.
10569
10570         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
10571         instead of the calling method to help AOT.
10572
10573         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
10574
10575 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
10576
10577         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
10578         is defined.
10579
10580 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
10581
10582         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
10583         
10584         * aot-compiler.c (compile_method): Correct check for generic method definitions.
10585         (encode_method_ref): No need to handle generic method definitions specially.
10586
10587         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
10588
10589         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
10590         decode_klass_info.
10591
10592         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
10593         encode_klass_info.
10594         (compile_method): Enable generic sharing.
10595
10596 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
10597
10598         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
10599         (mini_method_compile): Add preliminary support for AOTing shared generic code.
10600
10601         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
10602         generic code.
10603
10604         * mini-trampolines.c: Fix a warning.
10605
10606         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
10607         NEW_PCONST.
10608         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
10609         (generic_class_is_reference_type): Remove unused function.
10610
10611         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
10612         in the generic vtable trampoline case.
10613
10614         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
10615         
10616         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
10617         return an AOT method based on a vtable slot.
10618
10619         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
10620
10621         * mini.c (mini_get_vtable_trampoline): Export this.
10622
10623 2007-11-22  Martin Baulig  <martin@ximian.com>
10624
10625         * debug-debugger.h
10626         (MonoDebuggerInfo): Move `debugger_version' up.
10627
10628 2007-11-22  Martin Baulig  <martin@ximian.com>
10629
10630         * mini-amd64.c
10631         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
10632
10633         * mini-trampolines.c
10634         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
10635         after compiling the method.
10636
10637 2007-11-20  Martin Baulig  <martin@ximian.com>
10638
10639         * debug-mini.c
10640         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
10641         (mono_debugger_remove_breakpoint): Likewise.
10642         (mono_debugger_check_breakpoints): Likewise.
10643
10644         * debug-debugger.c: Implement the new breakpoint interface here.
10645
10646 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
10647
10648         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
10649         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
10650
10651         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
10652
10653 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
10654
10655         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
10656
10657         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
10658         mini.c.
10659
10660         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
10661         mini.c.
10662
10663         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
10664         returning a vtype in a register.
10665
10666         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
10667         here from the arch specific code.
10668
10669         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
10670         mini.c.
10671
10672         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
10673         (mono_arch_emit_prolog): Increment maximum prolog size.
10674
10675         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
10676         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
10677
10678         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
10679         MonoGenericSharingContext.
10680
10681         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
10682         MonoGenericSharingContext. Allocate memory from the cfg mempool.
10683
10684 2007-11-15  Mark Probst  <mark.probst@gmail.com>
10685
10686         * mini.c, mini.h, generic-sharing.c: Functions for producing code
10687         which extract fields out of the runtime generic context.  Full
10688         sharing of the NEWARR opcode.
10689
10690 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
10691
10692         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
10693         --enable-minimal=ssa.
10694
10695 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
10696
10697         * mini-trampolines.c (mono_delegate_trampoline): Update after 
10698         mono_marshal_get_delegate_invoke () signature change.
10699
10700 2007-11-13  Mark Probst  <mark.probst@gmail.com>
10701
10702         * mini.c: Removed the shared context in favor of the generic
10703         sharing context.  Allocate the MonoJitInfo structure with room for
10704         the generic sharing context if it's needed.
10705
10706         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
10707         domain-internals.h now.
10708
10709         * mini-x86.c: Pass the generic sharing context to get_call_info ().
10710
10711         * generic-sharing.c: Several changes for working without a shared
10712         context and instead operating on open types instead.
10713
10714 2007-11-12  David S. Miller  <davem@davemloft.net>
10715
10716        * inssel-sparc.brg: Fix double instruction emit.
10717
10718 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
10719
10720         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
10721         Get/Set/Address methods.
10722         
10723         * mini.c debug-debugger.c mini-trampolines.c: Update after 
10724         mono_marshal_get_delegate_invoke signature change.
10725
10726 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
10727
10728         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
10729         This can happens with dynamic methods. Fixes the other bug in #322722.
10730
10731 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
10732
10733         * tramp-arm.c (mono_arch_patch_callsite): Support patching
10734         BX call sequence.
10735
10736         * mini-arm.c (arm_patch): Implement patching of BX call
10737         sequence. Fixes one of the bugs in #322722.
10738
10739 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
10740
10741        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
10742        under Linux.  We only need to flush every 32-byte cache line.    
10743
10744 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
10745
10746         * mini.c:
10747         move_basic_block_to_end: Add branches when needed, eventually creating
10748         a new BB.
10749         optimize_branches: added a parameter that tells if it's ok to create
10750         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
10751         and avoid calling move_basic_block_to_end when it's not ok.
10752         Fixes bug 318677.
10753
10754 2007-11-07  Mark Probst  <mark.probst@gmail.com>
10755
10756         * mini.c: Abort inlining call to InitializeArray if something
10757         looks wrong.  Let the icall handle it, which now has proper safety
10758         checks.
10759
10760 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
10761
10762         * mini.c (mono_spill_call): add support for soft-float.
10763
10764         * mini.c (mono_method_to_ir): add support for soft-float
10765         to inlined functions that return float.
10766
10767         * mini.c (mono_method_to_ir): add support for soft-float
10768         to cee_stsfld opcode on float fields.
10769
10770 2007-11-05  Geoff Norton  <gnorton@novell.com>
10771
10772         * mini-x86.h: Fix the structure access for X86 Leopard.
10773
10774
10775 2007-11-05  Martin Baulig  <martin@ximian.com>
10776
10777         * mini-trampolines.c
10778         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
10779         after compiling the method to notify the debugger.
10780
10781 2007-11-05  Martin Baulig  <martin@ximian.com>
10782
10783         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
10784
10785 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
10786
10787         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
10788         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
10789
10790 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
10791
10792         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
10793         native-to-managed wrappers.
10794         
10795 2007-11-01  Geoff Norton  <gnorton@novell.com>
10796
10797         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
10798         members.
10799
10800 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10801
10802         * mini.c, mini-x86.c: when getting back from unmanaged code
10803         to managed via a marshaled delegate we also need to set the
10804         right domain.
10805
10806 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10807
10808         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
10809         for amd64.
10810
10811 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
10812
10813         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
10814         let the debugger or other external agents to tell the JIT when
10815         a sw breakpoint has been inserted in the code that the JIT needs
10816         to be able to inspect.
10817
10818 2007-10-31  Martin Baulig  <martin@ximian.com>
10819
10820         * debug-debugger.h
10821         (MonoDebuggerInfo): Remove `runtime_class_init'.
10822
10823 2007-10-30  Martin Baulig  <martin@ximian.com>
10824
10825         * debug-mini.h
10826         (mono_debugger_thread_created): Added `MonoThread *' argument.
10827         (mono_debugger_extended_notification): New public method.
10828         (mono_debugger_trampoline_compiled): New public method.
10829
10830         * debug-mini.c
10831         (MonoDebuggerThreadInfo): Added `thread' and
10832         `extended_notifications' fields.
10833
10834         * debug-debugger.c
10835         (debugger_executable_code_buffer): New static variable.
10836
10837         * debug-debugger.h
10838         (MonoDebuggerInfo): Added `executable_code_buffer',
10839         `executable_code_buffer_size', `breakpoint_info_area',
10840         `breakpoint_table' and `breakpoint_table_size'.
10841
10842 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
10843
10844         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
10845         that IP  either is an unused value or the vtable pointer. IMT 
10846         calls use vtable + offset now. Reduced by almost half the size
10847         of IMT entries.
10848
10849 2007-10-26  Jonathan Chambers <joncham@gmail.com>
10850
10851         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
10852         defines to access param registers. Replace long usage with
10853         gsize as sizeof(long) != sizeof(void*) on Win64.
10854
10855         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
10856         on Win64. Fix intrinsic, use _AddressOfReturnAddress
10857         instead of non-existant _GetAddressOfReturnAddress.
10858
10859         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
10860         param registers. Save/restore %rdi and %rsi in MonoLMF.
10861
10862         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
10863         param registers. Modify (throw_exception) signature to take 
10864         %rdi and %rsi on Win64. 
10865
10866         Code is contributed under MIT/X11 license.
10867
10868 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10869
10870         * helpers.c: unlink debugging output files.
10871
10872 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
10873
10874         * mini.c: Move mono_create_ftnptr () to object.c.
10875
10876 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
10877
10878         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
10879         optional. This function can now be used to disassemble code generated
10880         outside the JIT such as trampolines and IMT thunks.
10881
10882         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
10883
10884         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
10885         vtable pointer from a ldr instruction.
10886
10887         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
10888         new IMT call sequence.
10889
10890         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
10891         call sequence for interface invocations.
10892
10893         * mini-arm.c (mono_arch_emit_imt_argument): added, required
10894         for imt support. This function is empty since IMT on ARM requires no
10895         special handling on the IR side.
10896
10897         * mini-arm.c (mono_arch_find_imt_method): added, required for
10898         imt support.
10899
10900         * mini-arm.c (mono_arch_find_this_argument): added, required
10901         for imt support.
10902
10903         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
10904         a ldr instruction to load a value stored in the code stream.
10905
10906         * mini-arm.c (mono_arch_build_imt_thunk):added, required
10907         for imt support.
10908
10909
10910 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
10911
10912         * mini.c (mini_init): Install the jump trampoline callback.
10913
10914 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10915
10916         * mini-trampolines.c: handle synchronized methods with the common
10917         vtable trampoline (bug #335601).
10918
10919 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
10920
10921         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
10922
10923         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
10924         64 bit platforms.
10925
10926         * mini-ia64.h mini-ia64.c: Add support for IMT.
10927
10928         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
10929         prolog. Fixes #331958.
10930
10931 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
10932
10933         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
10934
10935 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10936
10937         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
10938         trampoline.
10939
10940 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10941
10942         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
10943         trampoline.
10944
10945 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
10946
10947         * mini-x86.c, mini-x86.h: x86 support for the common vtable
10948         trampoline.
10949
10950 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10951
10952         * mini-trampolines.c: changed the magic rampoline to understand
10953         the common vtable trampoline method: the method to invoke is
10954         determined by the vtable displacement of the call.
10955
10956 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10957
10958         * mini.c, mini.h: register the common vtable trampoline if the
10959         architecture supports it.
10960
10961 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10962
10963         * cpu-amd64.md: use the correct max length for tls_get.
10964
10965 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
10966
10967         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
10968         CEE_STELEM_ANY. Fixes #333696.
10969
10970 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10971
10972         * exceptions-x86.c: provide more graceful handling of the case where
10973         we followed a bogus function pointer from managed code (bug #332866).
10974
10975 2007-10-11  Mark Probst  <mark.probst@gmail.com>
10976
10977         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
10978         replaces the generic_shared flag and will carry more information
10979         in the future.
10980
10981         * generic-sharing.c: Added mini_type_stack_size() which allows
10982         allows open types if given a generic sharing context.
10983         mini_get_basic_type_from_generic() takes a
10984         MonoGenericSharingContext* instead of a MonoCompile* now.
10985
10986         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
10987         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
10988         mini-sparc.c, mini-x86.c: Trivial changes required by the two
10989         changes above.  Just passing arguments through to the right
10990         places.
10991
10992 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10993
10994         * mini-arm.c: unify the call emission to emit_code_seq().
10995
10996 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
10997
10998         * tramp-arm.c: reduced the trampoline size.
10999
11000 2007-10-10  Mark Probst  <mark.probst@gmail.com>
11001
11002         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
11003         variable handling out of arch-specific code.
11004
11005 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
11006
11007         * mini-arm.c: implemented fast delegate dispatch.
11008
11009 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11010
11011         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
11012         that fp elimination is turned off if the space required by locals is too
11013         big. Fixes #331958.
11014
11015 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11016
11017         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
11018         ARM to the new style trampoline.
11019
11020 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11021
11022         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
11023
11024         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
11025
11026 2007-10-09  Martin Baulig  <martin@ximian.com>
11027
11028         * debug-debugger.h
11029         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
11030         `field_info_offset_offset'.     
11031
11032 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
11033
11034         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
11035         removed more internal usage of the r11 register and made it available
11036         to the register allocator.
11037
11038 2007-10-08  Mark Probst  <mark.probst@gmail.com>
11039
11040         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
11041         when sharing generics and treat type variables as references.
11042
11043 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11044
11045         * mini-ppc.c: started removing the internal uses of register r11
11046         to eventually allow the register allocator to manage it as an
11047         additional available register.
11048
11049 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11050
11051         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
11052
11053 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
11054
11055         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
11056         specific trampolines as they are not performance critical as a jump
11057         target (maybe align as before only for AOT code?). This saves about
11058         200 KB of native code on x86 for monodevelop startup.
11059
11060 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11061
11062         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
11063         monodevelop startup.
11064
11065 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
11066
11067         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
11068
11069         * mini-sparc.h mini-sparc.c: Implement IMT support.
11070
11071         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
11072         its smaller and doesn't clobber sparc_g1.
11073
11074         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
11075
11076 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11077
11078         * mini-ppc.c: optimized the size of the IMT thunks a bit.
11079
11080 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11081
11082         * mini-ppc.c: implemented fast delegate invocation.
11083
11084 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11085
11086         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
11087
11088 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11089
11090         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
11091         code to the new style trampoline in preparation for IMT support.
11092
11093 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
11094
11095         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
11096         systems already. This also reduces the specific trampiline sizes and
11097         prepares for the use of r12 as the IMT identifier register.
11098
11099 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11100
11101         * mini-mips.h: endianess fix (simplified from a patch by
11102         Thomas Kunze <thommy@tabao.de>, bug #323737).
11103
11104 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11105
11106         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
11107         to access ucontext fields and enable netbsd support
11108         (partially from Magnus Henoch <mange@freemail.hu>).
11109
11110 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11111
11112         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
11113         use the preprocessor from the CPP env var if it is set.
11114
11115 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11116
11117         * mini-trampolines.c: fixed an assertion and moved it earlier in the
11118         code, before interface_offset gets used.
11119
11120 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
11121
11122         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
11123         mono_class_setup_vtable () before accessing klass->vtable.
11124
11125 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
11126
11127         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
11128         hackish.
11129
11130 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11131
11132         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
11133         IMT slots (this saves hundreds of KB of memory in programs like
11134         IronPython and Monodevelop).
11135
11136 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11137
11138         * mini.c: print the delegate counter.
11139
11140 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
11141
11142         * mini-x86.c: make it easier to enable the debugging code for IMT
11143         slots.
11144
11145 2007-09-28  Martin Baulig  <martin@ximian.com>
11146
11147         * debug-debugger.h
11148         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
11149         `mono_method_klass_offset' and `mono_method_token_offset'.
11150
11151 2007-09-20  Mark Probst  <mark.probst@gmail.com>
11152
11153         * mini.c: First generics sharing implementation.  Can only share
11154         in very simple cases.  If sharing doesn't work it falls back to
11155         dedicated compilation.
11156
11157         * mini.h: Flag in MonoCompile to specify whether generic
11158         compilation is shared.  Flags enum for marking which generic inst
11159         of a context is used.  Prototypes for helper functions.
11160
11161         * generic-sharing.c: Helper functions for generic method sharing.
11162
11163         * optflags-def.h: Optimization flag (gshared) for enabling generic
11164         method sharing added.
11165
11166         * Makefile.am: generic-sharing.c added.
11167
11168 2007-09-19 Daniel Nauck <dna@mono-project.de>
11169
11170         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
11171
11172 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
11173         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
11174         fixes bug 325507.
11175
11176 2007-09-19  Martin Baulig  <martin@ximian.com>
11177
11178         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
11179         mono_debug_cleanup() is now part of mono_cleanup().
11180
11181 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
11182
11183         * driver.c (mono_main): Fix a warning.
11184
11185 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
11186
11187         * aot-compiler.c: Optimize various parts when processing large assemblies.
11188         Fixes ##325568.
11189
11190         * mini.c (mono_patch_info_hash): Improve hash function.
11191
11192 2007-09-14  Jonathan Chambers <joncham@gmail.com>
11193
11194         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
11195         
11196         Code is contributed under MIT/X11 license.
11197
11198 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11199
11200         * mini.c (mini_init): Fix a leak.
11201
11202         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
11203
11204 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11205
11206         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
11207
11208 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11209
11210         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
11211
11212 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
11213
11214         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
11215         variance tests.
11216
11217         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
11218
11219         * mini.c (handle_alloc): Enable managed allocators in AOT code.
11220
11221         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
11222
11223         * aot-runtime.c (decode_patch_info): Ditto.
11224
11225 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11226
11227         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
11228         static case. Cache delegates in architecture specific code, 
11229         based on number of parameters.
11230         
11231         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
11232         in architecture specific code, based on number of parameters.
11233         
11234         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
11235         caching happen in architecture specific code now.
11236         
11237         Code is contributed under MIT/X11 license.
11238
11239 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11240
11241         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
11242         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
11243         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
11244
11245         Code is contributed under MIT/X11 license.
11246
11247 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11248         * mini.c: (mono_thread_abort) Fixed bug #82416.
11249
11250 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11251
11252         * mini.: hook the new managed GC allocation feature into the JIT.
11253
11254 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11255
11256         * mini.c: implementation for the new runtime tls opcode.
11257
11258 2007-09-11  Martin Baulig  <martin@ximian.com>
11259
11260         * debug-debugger.h
11261         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
11262         `mono_method_inflated_offset'.
11263
11264 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
11265
11266         * driver.c mini.h mini.c: Add a new devel command line option for injecting
11267         async exceptions into a method.
11268
11269         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
11270         purpose of testing whenever the unwinder works at every instruction.
11271
11272 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
11273
11274         * mini.c: check accessibility of method used in ldftn (fixes
11275         bug #82635).
11276
11277 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
11278
11279         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
11280
11281         * inssel.brg: Fix a warning.
11282
11283 2007-09-03  Martin Baulig  <martin@ximian.com>
11284
11285         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
11286         now takes the `main_method' as argument.
11287
11288 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
11289
11290         * cpu-sparc.md (endfilter): Add missing src1:i argument.
11291
11292 2007-08-30  Jonathan Chambers <joncham@gmail.com>
11293
11294         * driver.c: include the cil-coff.h header on Windows.
11295         
11296         Code is contributed under MIT/X11 license.
11297
11298 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11299
11300         * mini.c, driver.c: don't include the cil-coff.h header.
11301
11302 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11303
11304         * mini.c: flag places that needs fixes fo soft-float support.
11305
11306 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
11307
11308         * mini.h, inssel-float.brg: fix soft-float constant loads on big
11309         endian systems (partially from Dean Jenkins, bug #81924).
11310
11311 2007-08-28  Mark Probst  <mark.probst@gmail.com>
11312
11313         * mini.c (check_linkdemand): Remove embedded reference object in
11314         call to LinkDemandSecurityException.
11315         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
11316         with an IntPtr instead of a reference object.
11317
11318 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
11319
11320         * mini.c (handle_initobj): Handle alignment properly.
11321
11322         * inssel.brg (mini_emit_memset): Ditto. 
11323
11324         * inssel.brg (mini_emit_memcpy): Ditto. 
11325
11326         * inssel-sparc.brg: Ditto.              
11327
11328         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
11329
11330 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
11331
11332         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
11333         exceptions raised in unmanaged code. Fixes part of #82594.
11334
11335 2007-08-24  Mark Probst  <mark.probst@gmail.com>
11336
11337         * mini.c (mono_method_to_ir), declsec.c
11338         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
11339
11340 2007-08-22  Martin Baulig  <martin@ximian.com>
11341
11342         * debug-mini.h
11343         (MonoDebuggerThreadInfo): New typedef.
11344         (mono_debugger_thread_table): New global variable.
11345         (mono_debugger_thread_created): New public function.
11346         (mono_debugger_thread_cleanup): New public function.
11347
11348         * debug-debugger.h
11349         (MonoDebuggerInfo):
11350         - removed `get_current_thread' and `lookup_assembly'.
11351         - removed `data_table'.
11352         - added `thread_table'.
11353
11354         * mini.c
11355         (mono_thread_start_cb): Call mono_debugger_thread_created().
11356         (mono_thread_attach_cb): Likewise.
11357         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
11358         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
11359         initial domain.
11360
11361         * driver.c (mono_main): Move mono_debug_init() up, before calling
11362         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
11363
11364 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11365
11366         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
11367         together when passing several arguments of type double (gives a small
11368         speedup and saves a few bytes of generated code).
11369
11370 2007-08-20  Jb Evain  <jbevain@novell.com>
11371
11372         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
11373
11374 2007-08-20  Jb Evain  <jbevain@novell.com>
11375
11376         * mini.c (mono_method_to_ir): throw MethodAccessException
11377         and FieldAccessException instead of InvalidProgramException.
11378
11379 2007-08-20  Mark Probst  <mark.probst@gmail.com>
11380
11381         * mini.c: CoreCLR security checks.
11382
11383         * mini.h: Removed MonoSecurityMode (moved to
11384         metadata/security-manager.h) and mono_security_mode global var
11385         (replaced by set/get functions in security-manager.h).
11386
11387         * driver.c: Added "core-clr-test" security mode for testing.  Used
11388         set-function for setting security mode.
11389
11390 2007-08-17  Mark Probst  <mark.probst@gmail.com>
11391
11392         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
11393         the new jit_info_table.
11394
11395         * driver.c: Test code for the new jit_info_table (enabled by the
11396         define MONO_JIT_INFO_TABLE_TEST).
11397
11398 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
11399
11400         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11401         detection of call <REG> instruction sequence. Fixes build on freebsd.
11402
11403 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
11404
11405         * mini-exceptions.c: Fix a warning.
11406
11407 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
11408
11409         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
11410         stack overflow handling code on amd64 too.
11411
11412         * mini-exceptions.c (mono_setup_altstack): Make this use 
11413         mono_thread_get_stack_bounds ().
11414
11415         * mini-x86.h: Disable sigaltstack on solaris x86.
11416
11417 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
11418
11419         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
11420
11421 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
11422
11423         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
11424
11425 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
11426
11427         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
11428
11429         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
11430
11431 2007-08-03  Neale Ferguson <neale@sinenomine.net>
11432
11433         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
11434         due to alignment.
11435
11436 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11437
11438         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
11439         to be emitted (bug #82281).
11440
11441 2007-08-01  Martin Baulig  <martin@ximian.com>
11442
11443         Merged the `debugger-dublin' branch.
11444
11445         * debug-debugger.h (MonoDebuggerInfo):
11446         Removed the `old_*' compatibility entries.
11447         Added `debugger_version' and `data_table'.
11448         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
11449         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
11450
11451         * debug-mini.c
11452         (MiniDebugMethodBreakpointInfo): Add `address_list'.
11453         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
11454         instead of a `gconstpointer'.
11455         (mono_debugger_insert_method_breakpoint): Return a
11456         `MonoDebugMethodAddressList *'.
11457
11458 2007-06-28  Martin Baulig  <martin@ximian.com>
11459
11460         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
11461
11462 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
11463
11464         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
11465         __builtin_frame_address () since it is broken on older gcc versions.
11466
11467 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11468
11469         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
11470         on the stack overflow handling and made the managed stack overflows
11471         catchable in most cases using soft guard pages.
11472         * exceptions-x86.c: added code to restore the protection in the soft
11473         guard pages at the end of exception handling.
11474
11475 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
11476
11477         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
11478
11479 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11480
11481         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
11482         exception handling.
11483
11484 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11485
11486         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
11487         signal handling support until it has been ported to the new mechanism.
11488         * mini.c: fixed stack overflow detection and use the new
11489         architecture code  to handle signals on the altstack.
11490
11491 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
11492
11493         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
11494         stack overflows on the alt stack.
11495
11496 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
11497
11498         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
11499         stack overflows on the alt stack.
11500
11501 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
11502
11503         * exceptions-ppc.c: cleanup preparing for altstack support.
11504
11505 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
11506
11507         * exceptions-arm.c: cleanup preparing for altstack support.
11508
11509 2007-07-27  Mark Probst  <mark.probst@gmail.com>
11510
11511         * mini.c (print_jit_stats): Output hazard pointer stats.
11512
11513 2007-07-26  Mark Probst  <mark.probst@gmail.com>
11514
11515         * driver.c, mini.c: Replaced security mode flags with a single
11516         enum variable.
11517
11518 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11519
11520         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
11521
11522 2007-07-25  Mark Probst  <mark.probst@gmail.com>
11523
11524         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
11525         (which doesn't do anything yet) for activating Core CLR
11526         (Silverlight) security.
11527
11528 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
11529
11530         * mini-codegen.c: work around a possible gcc bug on arm.
11531
11532 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11533
11534         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
11535         message for platforms that don't support AOT compilation.
11536
11537 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
11538
11539         * mini.h, mini.c, driver.c: temporary smcs hack.
11540
11541 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
11542
11543         * mini-arm.h, mini-arm.c: arm EABI fixes.
11544
11545 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
11546
11547         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
11548         case.
11549
11550         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
11551         trampolines taking a method argument.
11552
11553         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
11554
11555         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
11556         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
11557
11558         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
11559         JIT compilation throws an exception. Fixes #82050.
11560
11561 2007-07-19  Mark Probst  <mark.probst@gmail.com>
11562
11563         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
11564         with the MONO_EXCEPTION_ defines.
11565
11566 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
11567
11568         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
11569         #82117.
11570         
11571         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
11572         the cause of an assertion.
11573
11574 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
11575
11576         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
11577         removed.
11578
11579 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
11580
11581         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
11582         assert. Should fix #82103.
11583
11584 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
11585
11586         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
11587         here too. Fixes #82095.
11588
11589         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
11590         addresses.
11591
11592         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
11593
11594         * mini-amd64.h: Enable IMT for amd64.
11595         
11596         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
11597
11598 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
11599
11600         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
11601
11602 2007-07-12  Mark Probst  <mark.probst@gmail.com>
11603
11604         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
11605         as soon as check_linkdemand sets an exception_type.
11606
11607 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11608
11609         * mini-x86.c: fixed offsets for IMT call sequence.
11610         * mini-x86.h: enable IMT again.
11611
11612 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
11613
11614         * trace.c (mono_trace_enter_method): Decode MonoType too.
11615
11616         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
11617
11618         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
11619
11620         * mini-amd64.c: Add preliminary IMT implementation.
11621         
11622 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11623
11624         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
11625         understand the new IMT-base interface invocation (thanks to
11626         Daniel Nauck for the report and the remote debugging session).
11627
11628 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11629
11630         * mini-x86.c: size and speed optimizations for the IMT bsearch.
11631
11632 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
11633
11634         * Makefile.am (aotcheck): Make this actually use the AOTed code.
11635
11636 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
11637
11638         * mini-trampolines.c: implement AOT IMT support.
11639         * mini-x86.h: enable IMT support for wider testing.
11640
11641 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11642
11643         * inssel.brg (emit_imt_argument): Add aot support here.
11644
11645         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
11646
11647 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11648
11649         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
11650         of the IMT implementation, partially from massi, with my
11651         implementation of the bsearch sequence. Disabled by default until
11652         the AOT code is implemented.
11653
11654 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11655
11656         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
11657
11658         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
11659
11660 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11661
11662         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
11663         arch-independent IMT JIT code from Massimiliano
11664         Mantione (massi@ximian.com) with small cleanups from me.
11665
11666 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
11667
11668         * Makefile.am: fix svn invocation to get the svn revision to be
11669         independent of the local language (build fix).
11670
11671 2007-07-09  Mark Probst  <mark.probst@gmail.com>
11672
11673         * mini.c (inline_method): Reset cfg->exception_type if the
11674         inlining is aborted.  Fixes: 82049.
11675
11676 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
11677
11678         * mini.c: remove assert from exception handling code when exception_ptr
11679         is not set.
11680
11681 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11682
11683         * mini.c (mono_codegen): Add an assert.
11684
11685         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
11686         enter and leave code.
11687         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
11688
11689 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11690
11691         * mini-ppc.c: fixed memory corruption for localloc(0)
11692         (bug #81852).
11693
11694 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11695         
11696         * mini.c: Fix warnings.
11697
11698 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
11699
11700         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
11701         to emit better double->int conversions.
11702
11703 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11704
11705         * mini.c: the provided Min/Max optimizations are valid for unisgned
11706         ints.
11707
11708 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
11709
11710         * 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
11711
11712 2007-06-28  Miguel de Icaza  <miguel@novell.com>
11713
11714         * mini.c (mono_running_on_valgrind): Add support for reporting the
11715         method and  its boundaries to valgrind.
11716
11717 2007-06-28  Martin Baulig  <martin@ximian.com>
11718
11719         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
11720
11721 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
11722
11723         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
11724
11725         * generic.2.cs: Add new test case.
11726
11727 2007-06-25  Martin Baulig  <martin@ximian.com>
11728
11729         Merged the `debugger-dublin' branch.
11730
11731         * debug-mini.c
11732         (mono_debugger_insert_method_breakpoint): New public method.
11733         (mono_debugger_remove_method_breakpoint): Likewise.
11734         (mono_debugger_check_breakpoints): New static method.
11735         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
11736
11737         * debug-debugger.h (MonoDebuggerInfo):
11738         Renamed (to keep backward compatibility in the vtable):
11739         `insert_breakpoint' -> `old_insert_breakpoint'.
11740         `remove_breakpoint' -> `old_remove_breakpoint'.
11741         `create_string' -> `old_create_string'.
11742         `lookup_class' -> `old_lookup_class'.
11743         `lookup_type' -> removed; changed into a dummy field.
11744         `lookup_assembly' -> `old_lookup_assembly'.
11745         Added (same functionality, but different signature):
11746         `create_string', `lookup_class', `lookup_assembly'
11747         Added new:
11748         `get_method_addr_or_bpt', `remove_method_breakpoint',
11749         `runtime_class_init'.
11750
11751         * debug-debugger.c: Merged the `debugger-dublin' branch.
11752
11753 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
11754
11755         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
11756         well.
11757         (peephole_pass): Likewise.
11758
11759 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
11760
11761         * driver.c: hopefully make setaffinity work also for ancient
11762         versions of linux.
11763
11764 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
11765
11766         * driver.c : win32 build fix.
11767
11768 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11769
11770         * driver.c: check for the MONO_NO_SMP env var and bind to a single
11771         processor if it is set.
11772
11773 2007-06-21  Martin Baulig  <martin@ximian.com>
11774
11775         * debug-mini.h: New file.
11776
11777         * debug-mini.c
11778         (mono_debugger_insert_breakpoint_full): Moved here from
11779         ../metadata/mono-debug-debugger.c.
11780         (mono_debugger_remove_breakpoint): Likewise.
11781         (mono_debugger_breakpoint_callback): Likewise.
11782
11783 2007-06-15  Raja R Harinath  <rharinath@novell.com>
11784
11785         * jit-icalls.c (mono_helper_compile_generic_method): Update to
11786         changes in MonoGenericClass.
11787
11788 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
11789
11790         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
11791
11792 2007-06-14  Raja R Harinath  <rharinath@novell.com>
11793
11794         * jit-icalls.c (mono_helper_compile_generic_method): Update to
11795         removal of MonoGenericMethod.
11796
11797 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11798
11799         * mini-exceptions.c: hooks for the exception events profiling API.
11800
11801 2007-06-14  Randolph Chung  <tausq@debian.org>
11802
11803         * Makefile.ma: Add hppa target.
11804         * mini-arch.h: Include mini-hppa.h
11805         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
11806         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
11807         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11808
11809 2007-06-14  Randolph Chung  <tausq@debian.org>
11810
11811         * inssel.brg: Add rules for "chained" compare-branch operations so that
11812         a single compare op can affect multiple branches.  Adjust cost for
11813         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
11814         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
11815         cost for some rules so that they can more easily be overridden by
11816         per-arch rules (with fixes from lupus).
11817         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11818
11819 2007-06-13  Randolph Chung  <tausq@debian.org>
11820
11821         * mini-ops.h: Reorder branch ops so that they match the order of the
11822         corresponding CEE_* ops.  The code expects them this way.
11823         Add new ops for HPPA target.
11824         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11825
11826 2007-06-13  Randolph Chung  <tausq@debian.org>
11827
11828         * mini-exceptions.c: Handle cases where the stack grows towards
11829         larger addresses.
11830         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11831
11832 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11833
11834         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
11835         counter.
11836         * driver.c: explain where a non-matching corlib is found.
11837
11838 2007-06-13  Mark Probst  <mark.probst@gmail.com>
11839
11840         * mini.c (print_jit_stats): Output dynamic code allocation stats.
11841
11842 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
11843
11844         * mini-exceptions.c: Generate a method profile leave event during
11845         an exception to ensure that the profiler gets notified.
11846
11847 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
11848
11849         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
11850         branch.
11851
11852         * cpu-amd64.md: Add long_and/or/xor opcodes.
11853
11854 2007-06-06  Wade Berrier  <wberrier@novell.com>
11855
11856         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
11857         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
11858         length of instruction shr_imm (expected 8, got 10)
11859
11860 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
11861
11862         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
11863
11864 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11865
11866         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11867         MonoInternalHashTable again (fixed bug in the internal hash table
11868         code).
11869
11870 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11871
11872         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
11873         Have to figure out what makes it crash the SWF regression.
11874
11875 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
11876
11877         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
11878
11879 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11880
11881         * mini.c: optimize out the type check when storing null in a
11882         reference array.
11883
11884 2007-06-04  Mark Probst  <mark.probst@gmail.com>
11885
11886         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11887         MonoInternalHashTable.
11888
11889 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
11890
11891         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
11892         signed integer methods.
11893
11894 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11895
11896         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
11897         permanently since the current approach doesn't work.
11898
11899 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11900
11901         * inssel.brg (stmt): Only call delegate->invoke_impl if 
11902         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
11903
11904 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11905
11906         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
11907         the sreg2==rdx case.
11908         
11909         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
11910         account if it contains a rex prefix.
11911         (peephole_pass): Handle OP_FMOVE as well.
11912
11913 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11914
11915         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
11916         as it causes regressions.
11917
11918 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
11919
11920         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
11921         static case as well.
11922
11923         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
11924
11925         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11926         (mono_arch_get_this_arg_from_call): Ditto.
11927
11928         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
11929
11930         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
11931         invoke_impl field.
11932
11933         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11934         (mono_arch_get_this_arg_from_call): Ditto.
11935
11936         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
11937         
11938         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
11939         try to create optimized invoke code and use that for further invocations. 
11940         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
11941
11942         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
11943
11944 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
11945
11946         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
11947         sealed classes or methods.
11948         *devirtualization.cs: tests for the new optimization
11949
11950 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
11951
11952         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
11953         by the update_volatile () function.
11954
11955 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
11956
11957         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
11958         require it.
11959
11960         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
11961
11962 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
11963
11964         * mini.c: Add configure checks for header files.
11965         * mini-x86.c: Add configure checks for header files.
11966         * trace.c: Add configure checks for header files.
11967         * aot-runtime.c: Add configure checks for header files.
11968         * aot-compiler.c: Add configure checks for header files.
11969         * driver.c: Add configure checks for header files.
11970         * mini-codegen.c: Add configure checks for header files.
11971         
11972         Code is contributed under MIT/X11 license.
11973
11974 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
11975
11976         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
11977         icompare_imm -128 + op_iclt. Fixes #81703.
11978
11979 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
11980
11981         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
11982
11983 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11984
11985         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
11986         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
11987         so that all isinst checks now use "interface_bitmap".
11988
11989 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
11990
11991         * cpu-amd64.md (jmp): Fix a warning.
11992
11993         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
11994
11995         * basic.cs: Add new regression test.
11996
11997         * basic.cs: Remove test which is now in basic-long.cs.
11998
11999         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
12000
12001         * basic-long.cs: Add new test.
12002         
12003 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
12004
12005         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
12006
12007 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
12008
12009         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
12010
12011         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
12012         places.
12013         
12014         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
12015         throwing code a bit.
12016
12017         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
12018         the exception throwing code a bit.
12019
12020         * mini-x86.c (get_call_info): Allocate result from a mempool.
12021
12022 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
12023
12024         * aot-compiler.c (find_typespec_for_class): Fix the assert.
12025
12026         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
12027
12028         * mini.h (MonoCompile): Add 'token_info_hash' field.
12029
12030         * mini.c: Save token->method associations during compilation so the AOT 
12031         compiler can use it.
12032         
12033         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
12034         which reference generic classes and methods.
12035
12036 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
12037
12038         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
12039
12040         * aot-compiler.c (compile_method): Fix a typo in a comment.
12041
12042         * aot-runtime.c (decode_cached_class_info): Skip generic types.
12043
12044         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
12045         everything generic.
12046
12047         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
12048
12049 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
12050
12051         * mini.h (MonoCompile): Add 'args' field.
12052
12053         * mini.c (mono_compile_create_vars): Store variables representing the arguments
12054         into cfg->args.
12055
12056         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
12057
12058 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
12059
12060         * mini.c (mono_compile_get_interface_var): Remove this unused function.
12061
12062         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
12063
12064         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
12065         opcodes for some opcodes.
12066
12067         * mini.h *.brg *.c: Use the new opcodes.
12068
12069 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
12070
12071         * mini.h: Bumped aot revision.
12072
12073         * inssel.brg: modified code generation of type checks for interfaces
12074         to use the new "MonoClass.interface_bitmap" instead of the old
12075         "MonoClass.interface_offsets".
12076
12077 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
12078
12079         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
12080
12081 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
12082
12083         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
12084         64 bit platforms.
12085
12086 2007-04-27  Neale Ferguson <neale@sinenomine.net>
12087
12088         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
12089
12090 2007-04-27  Wade Berrier  <wberrier@novell.com>
12091
12092         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
12093         mini.h) to fix build.
12094
12095 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
12096
12097         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
12098         
12099         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
12100         causes the corlib unit tests to fail.
12101
12102 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
12103
12104         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
12105
12106         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
12107
12108         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
12109         opcodes to the comparison relations.
12110
12111         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
12112         opcodes to their types.
12113         
12114         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
12115
12116         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
12117         it in cfg->arch.cinfo.
12118
12119         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
12120
12121         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
12122         cfg->cil_offset_to_bb.
12123
12124 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
12125
12126         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
12127         created becase of initlocals.
12128
12129 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
12130
12131         * mini-alpha.c cpu-alpha.md: More alpha port work from 
12132         Sergey Tikhonov <tsv@solvo.ru>.
12133
12134 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
12135
12136         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
12137
12138 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
12139
12140         * cpu-s390.md (break): Correct the length of break instruction.
12141
12142 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12143
12144         * mini.c: fix a couple of soft-float issues and comments.
12145
12146 2007-04-15  Miguel de Icaza  <miguel@novell.com>
12147
12148         * trace.c (is_filenamechar): - is also a filename char.
12149
12150 2007-04-15  Neale Ferguson <neale@sinenomine.net>
12151
12152         * mini-s390.c: Correct checking for enum type in return value processing.
12153
12154 2007-04-14  Raja R Harinath  <rharinath@novell.com>
12155
12156         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
12157         (version.h): Makefile is in the build directory.
12158
12159 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
12160
12161         * mini-amd64.h: fix for assertion failure on Solaris/amd64
12162
12163 2007-04-11  Martin Baulig  <martin@ximian.com>
12164
12165         * mini.c (can_access_member): Fix handling of generic classes;
12166         fixes #81259.
12167
12168 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
12169
12170         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
12171
12172 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
12173
12174         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
12175
12176 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12177
12178         * mini-codegen.c: make sure the right spill amount is
12179         used for fp or integer registers (fixes the float_sub_spill() on ppc).
12180
12181 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
12182
12183         * mini-ppc.c: fixes for the fp_branch_nan test.
12184
12185 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
12186
12187         * basic.cs: Comment out new test which still fails on ia64.
12188
12189 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12190
12191         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
12192
12193 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12194
12195         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
12196
12197 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
12198
12199         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
12200         on 64 bit machines. Fixes part of #80738.
12201
12202         * basic.cs: Add regression test.
12203
12204 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * inssel.brg basic.cs: Revert previous change to fix build.
12207
12208         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
12209         platforms.
12210         
12211         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
12212
12213         * basic.cs: Add new regression test.
12214
12215 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12216
12217         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
12218         many arguments.
12219
12220 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12221
12222         * cpu-s390x.md: Correct length of break instruction.
12223
12224 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12225
12226         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
12227         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
12228
12229 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
12230
12231         * *.c: Begin WIN64 port.
12232         * mini.c:  Use correct register in profiler.
12233         * mini-amd64.c: No inline assembly on Win64.
12234         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
12235         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
12236         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
12237         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
12238         mono_arch_ip_from_context for Win64.
12239         
12240         Contributed under MIT/X11 license.
12241
12242 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
12243
12244         * exceptions-amd64.c (seh_handler): Ditto.
12245
12246         * exceptions-x86.c (seh_handler): Fix a memory leak.
12247
12248 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
12249
12250         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
12251         mini-s390x.c: fixed peephole optimizations to deal
12252         correctly with 1 and 2 byte reload avoidance.
12253
12254 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
12255
12256         * cpu-s390.md, cpu-s390x.md: update localloc length.
12257
12258 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12259
12260         * cpu-g4.md: added missing descriptions.
12261
12262 2007-03-14  Miguel de Icaza  <miguel@novell.com>
12263
12264         *  Makefile.am: Add support so the tail tests are not executed on
12265         PowerPC as that is a known limitation of the PowerPC port.
12266
12267 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12268
12269         * runmdesc.bat:  Move to msvc directory.
12270         
12271 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12272
12273         * runmdesc.bat:  Run executable that was produced by the current
12274         target and sent via an argument.
12275         
12276 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
12277
12278         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
12279         #81102.
12280
12281         * generics.2.cs: Add regression test.
12282
12283 2007-03-09  Wade berrier  <wberrier@novell.com>
12284
12285         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
12286
12287 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
12288
12289         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
12290         AOT code depends on this.
12291
12292 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
12293
12294         * mini.c: more precise tracking of types in the eval stack
12295         (part of fix for bug #81044).
12296
12297 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
12298
12299         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
12300
12301         * aot-compiler.c (encode_patch): Remove an obsolete comment.
12302
12303 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
12304
12305         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
12306
12307         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
12308
12309 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
12310
12311         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
12312         a pointer on 64 bit systems. Fixes #80190.
12313
12314         * iltests.il: Add new regression test.
12315
12316 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12317
12318         * mini.c: inline a constant for Environment.IsRunningOnWindows.
12319
12320 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
12321
12322         * trace.c: Remove an erroneous alignemnt check when tracing.
12323           Fixes --trace on OSX86.
12324
12325 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
12326
12327         * mini-$(arch).h: initialize SP in context for all the archs.
12328
12329 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
12330
12331         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
12332         regressions in the thread tests.
12333
12334 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
12335
12336         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
12337         - fixed implementation of LOCALLOC opcode
12338         - implemented non-un compare for floats
12339         - code cleanup
12340         - implementation of FDIV and CKFINITE opcodes
12341         - fixes for latest mono updates
12342         - additional arch opcodes
12343
12344 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12345
12346         * Makefile.am: simplify and merge rules for cross-compilation.
12347
12348 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
12349
12350         * local-propagation.c: Actually *apply* the fix for bug 80591...
12351
12352 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12353
12354         * mini-exceptions.c: backuot part of the last change
12355         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
12356
12357 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
12358         * inssel.brg: Fix bug 59286.
12359
12360
12361 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
12362
12363         * mini-exceptions.c: patch from Zoltan to correctly check for
12364         stack boundaries (using the stack register, not the frame register),
12365         fixes bugs #80724, #79717.
12366
12367 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
12368
12369         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
12370         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
12371
12372         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
12373         presence of frame pointer elimination.
12374
12375 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
12376         
12377         * mini-x86.h: NetBSD UCONTEX_REG defines.
12378
12379 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
12380
12381         * inssel-amd64.brg: Fix amd64 build.
12382
12383 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
12384
12385         * mini.h: remove extern to workaround what looks likes gcc bug 26905
12386         on amd64.
12387
12388 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
12389
12390         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
12391         ends.
12392
12393         * mini-<ARCH>.c: Use mono_is_regsize_var ().
12394
12395 2007-01-30 Mark Mason <mason@broadcom.com>
12396
12397            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
12398            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
12399            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
12400            beginning support for CEE_JMP [not quite working yet]
12401            * tramp-mips.c: LMF handling now works
12402         
12403 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
12404
12405         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
12406
12407         * mini.h (NULLIFY_INS): New macro.
12408
12409 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12410
12411         * mini.c: statistical profiler fix for windows, patch
12412         from Tor Lillqvist (tml@novell.com).
12413
12414 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
12415         * local-propagation.c: Fix bug 80591.
12416
12417 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
12418
12419         * Makefile.am: put back the --export-dynamic option as with
12420         the previous gmodule flags (thanks to Robert Jordan).
12421
12422 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
12423
12424         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
12425
12426         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
12427         simplify and speed up the local register allocator. Also rename some fields
12428         like iassign->vassign.
12429         
12430         * regalloc.c: Remove some functions which are no longer used since their
12431         inlined version is in mini-codegen.c.
12432         
12433         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
12434
12435         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
12436
12437 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
12438
12439         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
12440         narrowing. Fixes #80622.
12441
12442         * iltests.il: Add new regresssion test. 
12443
12444 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12445
12446         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
12447         debug-debugger.c, debug-debugger.h: warning fixes.
12448         * driver.c: updated copyright year and made it fit in one line.
12449
12450 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
12451
12452         * aot-runtime.c: updated to use mono-dl instead of gmodule.
12453
12454 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
12455
12456         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
12457
12458         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
12459
12460         * iltests.il: Add new test for bug #80507.
12461
12462 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12463
12464         * mini-arm.h: use soft-float also on vfp for now.
12465
12466 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
12467
12468         * mini.c: fix some more soft-float issues.
12469
12470 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
12471
12472         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
12473
12474 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
12475         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
12476         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
12477         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
12478
12479 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
12480
12481         * mini-arm.c: typo fix.
12482
12483 2007-01-23  Neale Ferguson <neale@sinenomine.net>
12484
12485         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
12486
12487 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
12488
12489         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
12490         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
12491
12492         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
12493
12494         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
12495
12496         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
12497         
12498         * inssel.brg: Fix a warning.
12499
12500         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
12501
12502         * abcremoval.c ssa.c ssapre.c: Update after this change.
12503         
12504         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
12505
12506         * dominators.c (df_set): Use mono_bitset_union_fast.    
12507
12508 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
12509
12510         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
12511         mini-codegen.c: reduce relocations and memory usage for the cpu
12512         description.
12513
12514 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
12515
12516         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
12517
12518         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
12519         to reduce their size.
12520
12521 2007-01-19 Mark Mason <mason@broadcom.com>
12522
12523         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
12524         * mini-mips.c: more configuration macros, support long conditional branches, additional
12525         asserts, fix epilog instrumentation.
12526         * mini-mips.h: use standard stack walk
12527         * cpu-mips.md: increase size of div, rem and conditional branches
12528         
12529 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
12530
12531         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
12532         to cpu spec data.
12533
12534 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
12535
12536         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
12537         (compile_method): Ditto.
12538
12539         * aot-runtime.c (decode_klass_info): Ditto.
12540
12541         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
12542         needed by the code generated by inssel.brg. Also fix a warning.
12543
12544 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
12545
12546         * mini.c: deal with enums that become genericinsts by
12547         being nested in a generic class (bug #79956).
12548
12549 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
12550
12551         * mini.c: match the generic definition to check for
12552         private access with generic types (bug #78431).
12553
12554 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
12555
12556         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
12557         to make life easier for people cross-compiling that insist on not
12558         using scratchbox.
12559
12560 2007-01-17 Mark Mason <mason@broadcom.com>
12561
12562         * inssel-long.brg: patch to deal with mips missing flags
12563         * inssel-long32-mips.brg: implement overflow checks
12564         * insset-mips.brg: implement overflow checks
12565         * mini-mips.h: implement conditional exception handling
12566         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
12567           Remove unused code, minor cleanups.
12568         * exceptions-mips.c: minor cleanups
12569         * mini-ops.h: add mips conditional exception ops
12570         * cpu-mips.md: add mips conditional exception ops
12571
12572         
12573 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
12574
12575         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
12576         to deal with mips missing of flags.
12577
12578 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
12579
12580         * exceptions-ppc.c: execute fault handlers.
12581
12582 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
12583
12584         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
12585
12586 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12587
12588         * mini.c: handle also floating point values in initialize_array.
12589
12590 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
12591
12592         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
12593         array initialization and make it conditional on the intrins option.
12594
12595 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12596
12597         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
12598         relocations and put the patch info names close to the enum definition.
12599
12600 2007-01-15 Mark Mason <mason@broadcom.com>
12601
12602         * basic.cs, exceptions.cs: break up large tests to increase debugability.
12603
12604 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12605
12606         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
12607
12608 2007-01-12  Raja R Harinath  <rharinath@novell.com>
12609
12610         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
12611
12612 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
12613
12614         * Makefile.am: distribute the mips sources.
12615
12616 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12617
12618         * mini-codegen.h: handle bug #80489 here, by excluding ecx
12619         directly.
12620
12621 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
12622
12623         * cpu-x86.md: back out for now as this triggers other regressions.
12624
12625 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12626
12627         * cpu-x86.md: force src1 and dest regpair for long shift instructions
12628         to eax:edx, so ecx can't get allocated to them (bug #80489).
12629
12630 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
12631
12632         * mini.c, mini-exceptions.c: enabled running fault handlers
12633         (bug #80469).
12634
12635 2007-01-03  Miguel de Icaza  <miguel@novell.com>
12636
12637         * driver.c: If nothing fail, do not use the string "failed",
12638         because it makes it very annoying to view test result logs on the
12639         web. 
12640
12641 2006-12-30  Miguel de Icaza  <miguel@novell.com>
12642
12643         * debug-debugger.c (mono_debugger_main): Rename "main" to
12644         "main_method" to prevent a warning.
12645
12646         Remove a warning for unused field.
12647
12648 2006-12-28  Martin Baulig  <martin@ximian.com>
12649
12650         * debug-debugger.c
12651         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
12652
12653 2006-12-22  Martin Baulig  <martin@ximian.com>
12654
12655         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
12656         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
12657         seperate `.mdb_debug_info' section, so we can access it from the
12658         debugger even if the binary is stripped.
12659
12660         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
12661         from the `.mdb_debug_info' here to prevent the linker from
12662         removing that section.
12663
12664         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
12665         mdb-debug-info64.s.
12666
12667 2006-12-19  Robert Jordan  <robertj@gmx.net>
12668
12669         * mini-x86: enable the code to return small structures in
12670         registers for FreeBSD as well. Fixes bug #80278.
12671         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
12672
12673 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12674
12675         * mini-x86.c: align the stack when calling the profiler
12676         function instrumenting the prolog (on OSX).
12677
12678 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12679
12680         * mini.c: emit a break opcode where Debugger.Break () is called.
12681
12682 2006-12-13  Miguel de Icaza  <miguel@novell.com>
12683
12684         * mini.c (mono_method_to_ir): Provide useful information on this
12685         assert, to prevent others from debugging like I did.
12686
12687 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
12688
12689         * mini.c: enable code which was incorrectly commented
12690         (bug #80235).
12691
12692 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
12693
12694         * mini-x86.c: enable on OSX, too, the code to return small
12695         structures in registers.
12696
12697 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12698
12699         * mini-x86.c: remove the use of the dynamic code manager here, too.
12700
12701 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12702
12703         * mini.h, debug-debugger.c, tramp-*.c: fixed 
12704         mono_debugger_create_notification_function() to use
12705         mono_global_codeman_reserve () instead of a dynamic code manager.
12706
12707 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
12708
12709         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
12710         ves_array_element_address() jit icall and use a generated
12711         managed method instead (which is about 4 times faster for a rank 3
12712         array access).
12713
12714 2006-11-29  Mark Mason  <mason@broadcom.com>
12715
12716         * basic-calls.cs: additional tests for passing
12717         structures as function arguments.
12718
12719 2006-11-29  Mark Mason  <mason@broadcom.com>
12720
12721         * mini-mips.h: disable custom exception handling
12722         * mini-mips.c: throw/rethrow should use jalr to call
12723         exception stubs.  Fixed bug with passing structures
12724         by value. More support for tracing floating point
12725         functions.
12726
12727 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12728
12729         * mini.c: fixed typo in the soft-float ldind.r4 handling
12730         (bug #80086).
12731
12732 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
12733
12734         * mini.c, mini.h, driver.c: added --runtime command line
12735         option to select a different runtime than the autodetected one.
12736         * jit.h: added API for embedders to initialize with a specific
12737         runtime version.
12738
12739 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12740
12741         * mini.c: handle also boxing of r4 values (bug #80024).
12742
12743 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12744
12745         * mini-ppc.c: force indirect calls until we reserve
12746         enough address space for all the generated code.
12747
12748 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
12749
12750         * exceptions-arm.c: workaround bugs in the libc definition
12751         of struct ucontext.
12752
12753 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12754
12755         * inssel.brg: fixes from me and Mark Mason.
12756
12757 2006-11-23  Dick Porter  <dick@ximian.com>
12758
12759         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
12760         semaphore display now we've fixed the initial value
12761
12762 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12763
12764         * inssel.brg: partially revert the last change to fix the build.
12765
12766 2006-11-21  Mark Mason  <mason@broadcom.com>
12767
12768         * inssel.brg: Add and use compare-and-branch macros to support
12769         architectures that do not have condition code registers (ie. MIPS).
12770         * *-mips.{c,brg,md}: Fix copyright statements
12771
12772 2006-11-20  Mark Mason  <mason@broadcom.com>
12773
12774         * Makefile.am: remove mini-codegen.c from list of MIPS sources
12775         * mini.c: Allow GET_CONTEXT to be specified by the arch port
12776         * mini.h: Added declaration for mono_print_ins()
12777         * mini-codegen.c: added ins_spec initializer for MIPS
12778         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
12779         vreg to be virtual and hreg to be non-virtual.
12780         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
12781         is not yet working/implemented correctly.
12782         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
12783         non-static, fixup calls to print_ins() from other parts in the file.
12784
12785 2006-11-20  Mark Mason  <mason@broadcom.com>
12786
12787         * basic-calls.cs: added tests for passing structures as arguments
12788         to calls.
12789
12790 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12791
12792         * inssel-long32.brg: optimize signed division by power of two.
12793
12794 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
12795
12796         * mini-arm.c: added support for interworking with thumb code
12797         (mono must be still be built using the ARM instruction encoding).
12798
12799 2006-11-19  Miguel de Icaza  <miguel@novell.com>
12800
12801         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
12802         verifier has different rules for it.   Fixes a few verifier issues
12803         in the test suite.
12804
12805         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
12806         at the end, so people know what happened.
12807
12808 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12809
12810         * brach-opts.c: in optimize_exception_target() make sure we
12811         are in a catch clause (fixes bug #79871).
12812
12813 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12814
12815         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
12816         more soft-float support fixes.
12817
12818 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
12819
12820         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
12821         that are passed half on the stack and half in registers.
12822
12823 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
12824
12825         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
12826         more mips integration work from Mark E Mason 
12827         <mark.e.mason@broadcom.com>.
12828
12829 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
12830
12831         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
12832         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
12833         tramp-mips.c: added sources for the mips port, not
12834         integrated in the build yet. Contributed by
12835         Mark E Mason <mark.e.mason@broadcom.com>.
12836
12837 2006-11-14  Neale Ferguson <neale@sinenomine.net>
12838
12839         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
12840
12841 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12842
12843         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
12844         put the soft-float rules in its own file since it seems to
12845         break s390 compilation.
12846
12847 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
12848
12849         * mini-arm.c: fixed wrnings.
12850
12851 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
12852
12853         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
12854         inssel-arm.brg: ARM support for soft-float.
12855
12856 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
12857
12858         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
12859         loads and stores of 32 bit fp values.
12860
12861 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
12862
12863         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
12864
12865         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
12866         works. Fixes #79852 and #79463.
12867
12868 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12869
12870         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
12871         more soft-float support WIP and fixes.
12872
12873 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
12874
12875         * mini-arm.c: some VFP updates.
12876
12877 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12878
12879         * mini-exceptions.c: 0 is a valid local var offset in some
12880         architectures, don't assert (bug #78508).
12881
12882 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
12883
12884         * exceptions-arm.c: fixed off by one error in stack walk code.
12885
12886 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
12887
12888         * mini.h, mini.c: more precise tracking of type load exceptions.
12889
12890 2006-11-03  Robert Jordan  <robertj@gmx.net>
12891
12892         * Makefile.am: [WIN32] Add monow.exe target.
12893         * driver.c: [WIN32] Don't detach the console when debugging.
12894         Fixes bug #79797.
12895         
12896 2006-10-30  Miguel de Icaza  <miguel@novell.com>
12897
12898         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
12899
12900 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12901
12902         * aot-compiler.c (emit_method_info): Add a case missed earlier.
12903
12904         * driver.c (mini_regression): Fix --regression with AOT.
12905
12906         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
12907
12908 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
12909
12910         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
12911
12912         * mini-sparc.h: Don't use sigaction on sparc/linux.
12913
12914         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
12915
12916         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
12917
12918         * mini-exceptions.c: Add proper include files for getpid ().
12919
12920 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
12921
12922         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
12923         address instead of a MonoJitInfo* to avoid decoding the exception info for the
12924         method.
12925
12926         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
12927         name cache to reduce its size.
12928
12929         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
12930
12931 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12932
12933         * mini-x86.c: Save/restore the current LMF structure more efficiently using
12934         the mono_lmf TLS variable.
12935
12936         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
12937         trampoline lmf frames.  
12938
12939         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
12940
12941 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
12942
12943         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
12944         the mono_lmf TLS variable.
12945
12946         * mini-exceptions.c: Access the LMF structure through accessors.
12947
12948         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
12949         variable instead of in jit_tls->lmf.
12950
12951         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
12952         
12953         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
12954         trampoline lmf frames.
12955
12956         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
12957
12958 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12959
12960        * mini.c trace.c mini-x86.c: Revert these too.
12961         
12962        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
12963        signature change.
12964
12965 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
12966
12967         * genmdesc.c: removed now dead code.
12968
12969 2006-10-09  Robert Jordan <robertj@gmx.net>
12970
12971         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
12972
12973 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12974
12975         * mini.h: do not leave gaps in the opcode values.
12976
12977 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
12978
12979         * jit-icalls.h: flag functions as internal here, too.
12980
12981 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
12982
12983         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
12984         functions with the internal attribute.
12985
12986 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
12987
12988         * aot-compiler.c: fclose the file descriptor in the profile read loop.
12989
12990 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12991
12992         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
12993         for soft-float.
12994
12995 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12996
12997         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
12998         tail calls as on other platforms.
12999
13000         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
13001
13002         * iltests.il: Add a few tailcall tests.
13003
13004 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13005
13006         * driver.c: fix loop for old compilers (bug #79521).
13007
13008 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
13009
13010         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
13011
13012         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
13013
13014         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
13015         metadata without any code.
13016
13017         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
13018         more precise debugging information using gdb.
13019
13020 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
13021
13022         * inssel-ia64.brg: Make the helper methods static.
13023
13024 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13025
13026         * inssel-x86.brg: make the helper methods static.
13027
13028 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
13029
13030         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
13031
13032 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13033
13034         * mini.c: updates for monoburg changes.
13035         * inssel.brg: make a few helper functions static as they should.
13036
13037 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
13038
13039         * Makefile.am: Move mini-codegen.c to common_sources.
13040
13041 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13042
13043         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
13044         instructions.
13045         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
13046         mini-ppc.h: port to use the common local register allocator.
13047
13048 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13049
13050         * mini.h: Remove the comment too then.
13051
13052 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
13053
13054         * mini.h: put back backend.data which is to be used shortly and
13055         doesn't increase the size of MonoInst. If any 64 bit arch aligned
13056         pointers on 4 byte boundaries it'd have much bigger issues running
13057         and you can ifdef it out anyway.
13058
13059 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13060
13061         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
13062         MonoInst size by 4 bytes on 64 bit machines.
13063
13064 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
13065
13066         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
13067         replacement with more meaningful field names. Arch maintainers, please
13068         check the assigned names are good enough for your arch.
13069
13070 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13071
13072         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
13073         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
13074
13075 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13076
13077         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
13078         relocations and memory requirements, put the optimization flags
13079         definitions in their own file.
13080
13081 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
13082
13083         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
13084
13085         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
13086
13087 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
13088
13089         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
13090
13091 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
13092
13093         * inssel.brg: use the correct function to get the size of an item
13094         in an array, given an element class.
13095         * aot-compiler.c: do not access class->class_size directly.
13096
13097 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13098
13099         * mini.h, debug-mini.c: added a debugging function to print
13100         info about local variables and arguments in a jitted method.
13101
13102 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
13103
13104         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13105
13106         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
13107
13108 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13109
13110         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
13111         inner and outer loops when passing vtypes.
13112
13113 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
13114
13115         * mini-ppc.c: take into account the cpu errata for cache flushing
13116         which caused some random errors (bug #79381).
13117
13118 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13119
13120         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
13121         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
13122
13123 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
13124
13125         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
13126         loaded.
13127
13128         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
13129         freebsd ports tree.
13130
13131         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
13132         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
13133
13134         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
13135         displacement.
13136
13137 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
13138
13139         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
13140
13141 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
13142
13143         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
13144         macro does not have to be changed during debugging.
13145
13146         * 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>.
13147
13148         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
13149
13150         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
13151         
13152         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
13153         MONO_ARCH_NO_EMULATE_MUL is defined.
13154
13155         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
13156
13157         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
13158
13159         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
13160
13161         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
13162         
13163 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
13164
13165         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
13166         stuff to mini-exceptions.c where it is used.
13167
13168         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
13169         setup code, the real one is in mini-exceptions.c.
13170
13171         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
13172         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
13173         some changes from the freebsd ports tree.
13174
13175         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
13176         constants.
13177         
13178         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
13179
13180 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
13181
13182         * mini.c: on Linux, check for /proc to be mounted
13183         (bug# 79351, novell bug#201204).
13184
13185 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
13186
13187         * mini.c: handle cases where pthread_attr_getstack() behaves
13188         incorrectly (bug #78096).
13189
13190 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
13191
13192         * mini-arm.c: support larger stack frames (bug #79272).
13193
13194 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
13195
13196         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
13197
13198         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
13199         tokens.
13200
13201         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
13202         mono_class_from_name () to find a class from its name.
13203
13204         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
13205
13206 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
13207
13208         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
13209
13210 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
13211
13212         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
13213
13214 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
13215
13216         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
13217         callinfo->trampoline.
13218
13219         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
13220         fixes #79271.
13221         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
13222         future.
13223
13224 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
13225
13226         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
13227
13228 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
13229
13230         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
13231         stats.method_trampolines, it is already done by the generic trampoline code.
13232
13233         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
13234         
13235 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
13236
13237         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
13238
13239         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
13240
13241         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
13242
13243         * mini.c (print_jit_stats): Print mscorlib mempool size too.
13244         
13245         * mini.c (print_jit_stats): Print new stats.
13246
13247         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13248
13249 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
13250
13251         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
13252         Address on two dimensional arrays. Fixes #78729.
13253
13254         * mini.h (MonoCompile): Add a 'skip_visibility' field.
13255
13256         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
13257         a method.
13258
13259         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
13260
13261         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
13262         #79130.
13263         
13264         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
13265         a race condition.
13266         (mini_get_ldelema_ins): Ditto.
13267
13268 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
13269
13270         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
13271         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
13272         Fixes #79213.
13273
13274 2006-08-29 Neale Ferguson <neale@sinenomine.net>
13275
13276         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
13277         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
13278
13279         * exceptions-s390x.c: Cosmetic change.
13280
13281         * tramp-s390.c: Fix warning.
13282
13283         * cpu-s390.md: Correct length of mul_imm.
13284
13285 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13286
13287         * aot-compiler.c: added binary writer with ELF backend
13288         implementation (only on Linux/x86 for now).
13289
13290 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13291
13292         * Makefile.am: Don't run net 2.0 AOT tests.
13293
13294         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
13295         (mono_compile_assembly): Skip net 2.0 assemblies as well.
13296
13297         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
13298
13299 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13300
13301         * aot-compiler.c: simplified and refactored the asm-writing code
13302         to allow different backends.
13303
13304 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13305
13306         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
13307
13308         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
13309         little. Share patches of type TYPE_FROM_HANDLE as well.
13310
13311         * mini.c (mono_patch_info_equal): New helper function.
13312         (mono_patch_info_hash): Ditto.
13313
13314         * aot-compiler.c (emit_method_code): Fix s390 build.
13315
13316         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
13317         is not handled because it is stored as a flag and not as a type ctor. Fixes
13318         #79016.
13319
13320 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
13321
13322         * aot-compiler.c: Fix computation of GOT slot statistics.
13323         
13324         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
13325         Also remove support for not PIC AOT.
13326
13327         * mini.h: Bump AOT file format version.
13328
13329         * objects.cs: Add a test for #78990.
13330
13331         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
13332         (peter.dettman@iinet.net.au). Fixes #79087.
13333
13334         * basic-long.cs: Add a test for the above.
13335
13336 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
13337
13338         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
13339         
13340         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
13341         code somewhat.
13342
13343 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
13344
13345         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
13346         exceptions.
13347
13348 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
13349
13350         * mini.c: Don't verify COM proxy invoke calls
13351         
13352
13353 2006-08-10  Dick Porter  <dick@ximian.com>
13354
13355         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
13356         which process is holding semaphores locked.
13357
13358 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
13359
13360         * mini-ia64.c mini-amd64.c: Fix #79027.
13361
13362         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
13363
13364         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
13365
13366         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
13367         implicit arguments in a vararg call. Fixes #79027.
13368
13369 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
13370
13371         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
13372         (mono_get_array_new_va_signature): Ditto.
13373
13374 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
13375
13376         * aot-runtime.c: Call init_plt lazily.
13377
13378         * inssel-long.brg: Fix unsigned long->int conversion.
13379
13380         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
13381
13382         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
13383         that most data is now in the .rss/.data section.
13384
13385 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
13386
13387         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
13388
13389         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
13390
13391         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
13392
13393         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
13394
13395         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
13396         virtual call. Fixes #79010.
13397
13398         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
13399         and use the result as the this argument in the real call.
13400
13401         * generics.2.cs: Add a new test for #79010.
13402         
13403 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
13404
13405         * mini-x86.c: Fix a warning.
13406
13407         * aot-compiler.c: Add a bunch of statistics.
13408
13409         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
13410
13411 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
13412
13413         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
13414
13415 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
13416
13417         * 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>.
13418
13419 2006-07-13  Miguel de Icaza  <miguel@novell.com>
13420
13421         * mini.c (mono_method_to_ir): Obtain the original method in the
13422         CIL stream and use this to perform validation.
13423
13424         Fixed: #78816
13425
13426 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
13427
13428         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
13429         (mono_arch_call_opcode): Ditto.
13430
13431         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
13432         #78826.
13433
13434         * mini.c (mono_patch_info_dup_mp): New helper function.
13435         
13436         * aot-compiler.c (compile_method): Fix some of the memory allocated during
13437         compilation. Fixes #78827.
13438
13439 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
13440
13441         * declsec.c: Use original security informations for
13442           MONO_WRAPPER_MANAGED_TO_MANAGED.
13443
13444 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
13445
13446         * mini.c: Allow Com Interop methods/classes and
13447         don't verify COM wrapper calls
13448         
13449
13450 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
13451
13452         * inssel-long32.brg: Fix long->i4 checked conversion.
13453
13454         * exceptions.cs: Add a test for the above.
13455
13456 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
13457
13458         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
13459
13460         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
13461         leaks.
13462
13463         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
13464         #78775.
13465
13466 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
13467
13468         * mini.c: Fix solaris/x86 exception handling.
13469
13470         * Makefile.am: Get rid of $(ICU_LIBS).
13471
13472 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
13473
13474         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
13475         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
13476         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
13477
13478         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
13479
13480         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
13481         this function causes a SIGSEGV.
13482
13483 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
13484
13485         * mini.c: Remove unused solaris/x86 includes.
13486
13487 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
13488
13489         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
13490
13491 2006-06-20  Jb Evain  <jbevain@gmail.com>
13492
13493         * cpu-g4.md: fix max length of start_handler instruction.
13494
13495 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
13496         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
13497
13498 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
13499         * ssa.c: Fixed bug 78653 for SSA based deadce.
13500         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
13501         MonoInst.flags, used in SSA based deadce.
13502         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
13503         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
13504
13505 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13506
13507         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
13508         it can end up using non executable memory on ppc64 systems
13509         running ppc32 userspace (fix from Johannes Berg).
13510
13511 2006-06-14  Dick Porter  <dick@ximian.com>
13512
13513         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
13514         4.1.1
13515
13516 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
13517         * mini.c: Made so that inline is locally disabled if it would
13518         trigger a .cctor, because too many apps depend on this behavior
13519         (which seems to be also the one of the MS CLR).
13520
13521 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
13522
13523         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
13524         No idea why this worked before.
13525
13526         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
13527         which branch to outer exception clauses since they could skip the
13528         inner finally clauses. Fixes #78633.
13529
13530         * exceptions.cs: Add a test for the above.
13531
13532         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
13533         Fixes #78629.
13534
13535         * iltests.il: Add a test for the above.
13536
13537 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
13538
13539         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
13540         after the end of a try bblock, to prevent asserts in mini_method_compile ().
13541
13542         * iltests.il: Add a test for the above.
13543
13544 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
13545
13546         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
13547         
13548         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
13549         methods as instrinsics.
13550
13551 2006-06-09  Wade Berrier <wberrier@novell.com>
13552
13553         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
13554         (simple-cee-ops.h ssapre-mini-ops.h)
13555
13556 2006-06-09  Neale Ferguson <neale@sinenomine.net>
13557
13558         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
13559         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
13560         instruction).
13561         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
13562         * cpu-s390x.md: Fix max. length values for a couple of instructions.
13563
13564 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13565
13566         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
13567
13568 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
13569
13570         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
13571         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
13572         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
13573         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
13574         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
13575         of opcodes, so that bug 78549 should not happen again.
13576         * ssapre.c: Updated to use the renamed files.
13577
13578 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
13579
13580         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
13581         in OP_ATOMIC_EXCHANGE_I4.
13582
13583 2006-06-07  Wade Berrier <wberrier@novell.com>
13584
13585         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
13586         in mono_debugger_create_notification_function)
13587
13588 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
13589
13590         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
13591         
13592         * mini.c (type_from_stack_type): Disable some changes which do not
13593         seem to work.
13594
13595         * driver.c: Reenable opts.
13596
13597         * mini.h (MonoStackSlot): New structure to keep track of the verification state
13598         of the evaluation stack.
13599         
13600         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
13601         evaluation stack trace at entry to the bblock.
13602
13603         * mini.c (merge_stacks): New function to perform verification of stack merges.
13604         Turned off by default.
13605
13606         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
13607         STACK_MP.
13608         
13609 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
13610
13611         * local-propagation.c: Fixed bug 78549.
13612
13613 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
13614
13615         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
13616
13617 2006-06-02  Miguel de Icaza  <miguel@novell.com>
13618
13619         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
13620         tramp-arm.c, tramp-ia64.c
13621         (mono_debugger_create_notification_function): Update signature to
13622         new signature and use new protocol for creating the notification
13623         function.  
13624
13625         Should fix the build.
13626
13627 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
13628
13629         * exceptions-ppc.c (mono_jit_walk_stack)
13630         (ves_icall_get_frame_info): Fix the build
13631
13632 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
13633
13634         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
13635
13636 2006-05-31  Raja R Harinath  <rharinath@novell.com>
13637
13638         * il2tests.2.il: New file for generics CIL tests.  Add test for
13639         #78019.
13640         * Makefile.am: Update.
13641
13642         Fix #78019
13643         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
13644         to nullable types.
13645
13646 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
13647
13648         * aliasing.c: Fixed bug 78311.
13649
13650 2006-05-29  Martin Baulig  <martin@ximian.com>
13651
13652         * mini-exceptions.c (mono_find_jit_info): When computing the
13653         native offset, check whether we're actually inside the method's
13654         code; call mono_debug_print_stack_frame() to format the frame.
13655         (ves_icall_System_Exception_get_trace): Call
13656         mono_debug_print_stack_frame() to format the stack frame.
13657         (ves_icall_get_trace): Update to the new debugging API.
13658         (mono_jit_walk_stack_from_ctx): Likewise.
13659         (ves_icall_get_frame_info): Likewise.
13660
13661         * mini.c (get_method_from_ip): Use the new debugging API.
13662         (mono_print_method_from_ip): Likewise.
13663
13664         * exceptions-ppc.c
13665         (mono_jit_walk_stack): Use the new debugging API.
13666         (ves_icall_get_frame_info): Likewise.   
13667
13668 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
13669
13670         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
13671
13672 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
13673
13674         * mini.c: Added "limitator" to inline for debugging.
13675
13676 2006-05-24  Martin Baulig  <martin@ximian.com>
13677
13678         * debug-debugger.c (mono_debugger_init): Create a private,
13679         malloc()-based code manager for the notification function and
13680         intentionally leak it on exit.  This fixes the crash-on-exit race
13681         condition.
13682
13683         * tramp-amd64.c
13684         (mono_debugger_create_notification_function): Added
13685         `MonoCodeManager *' argument.
13686
13687         * tramp-x86.c
13688         (mono_debugger_create_notification_function): Added
13689         `MonoCodeManager *' argument.
13690
13691 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
13692
13693         * aliasing.c: Fixed 64 bit issue.
13694         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
13695         default since all known bugs are fixed (one more time!).
13696
13697 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13698
13699         * mini.c: write barrier support.
13700
13701 2006-05-23  Martin Baulig  <martin@ximian.com>
13702
13703         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
13704         check at the top of the file.
13705
13706 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
13707
13708         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
13709         reverting changes without reason and without changelog entries.
13710
13711 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13712
13713         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
13714         to a few opcodes. Fixes #78439.
13715
13716         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
13717         consistency with other archs.
13718
13719         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
13720
13721 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
13722
13723         * debug-debugger.c: fix the build.
13724
13725 2006-05-17  Martin Baulig  <martin@ximian.com>
13726
13727         * debug-debugger.c
13728         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
13729         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
13730         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
13731         (debugger_attach): Call GC_mono_debugger_add_all_threads().
13732
13733 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13734
13735         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
13736
13737 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13738
13739         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
13740         MONO_TYPE_GENERICINST.
13741         
13742         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
13743         MONO_TYPE_GENERICINST.
13744
13745 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13746
13747         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
13748         #78325.
13749
13750 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
13751
13752         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
13753         mempool.
13754         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
13755
13756 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13757
13758         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
13759         mono_trace_cleanup ().
13760
13761         * iltests.il: Fix problem with the newly added test.
13762
13763         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
13764         due to register constraints, free up the previous hreg. Fixes #78314.
13765
13766         * iltests.il: Add new test for #78314.  
13767
13768         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
13769         Interlocked.Add. Fixes #78312.
13770
13771         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
13772         
13773 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13774
13775         * inssel.brg (mini_emit_virtual_call): Fix a warning.
13776
13777 2006-05-05  Martin Baulig  <martin@ximian.com>
13778
13779         * debug-mini.c (mono_debug_open_block): New method.
13780
13781         * mini-amd64.c
13782         (mono_arch_output_basic_block): Call mono_debug_open_block() at
13783         the beginning of each basic block.
13784
13785         * mini-x86.c
13786         (mono_arch_output_basic_block): Call mono_debug_open_block() at
13787         the beginning of each basic block.
13788
13789 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
13790
13791         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
13792         default until I understand why they break the build on amd64.
13793
13794 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13795
13796         * mini.c (mini_cleanup): Call mono_cleanup ().
13797
13798         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
13799         errors.
13800
13801 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
13802
13803         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
13804         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
13805         default since all known bugs are fixed, and I cannot reproduce bug
13806         77944... I'm asking Matt Hargett to test again after this commit.
13807
13808 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
13809
13810         * mini-codegen.c: Fixed typo that thrashed inline.
13811
13812 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
13813
13814         * dominators.c (compute_dominators): Avoid using a worklist since
13815         it is not correct in some cases. Instead, iterate over all bblocks as
13816         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
13817
13818 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13819
13820         * mini.c (mono_jit_compile_method_inner): Use
13821         mono_prepare_exception_from_error that resets the value
13822         internally.
13823
13824 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13825
13826         * mini.c: Move the mini_loader_error_to_exception to metadata. 
13827         
13828 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
13829
13830         * aliasing.c: Fixed bug 78210.
13831
13832 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
13833
13834         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
13835         default until all their problems (or the ones they trigger) are fixed.
13836
13837 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
13838
13839         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
13840         
13841         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
13842         as loaded only after resolving patches since that could invoke the same method.
13843
13844         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
13845
13846         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
13847         functions.
13848
13849         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
13850         AOT loader.
13851
13852         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
13853         stack.
13854
13855         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
13856         made from AOT code through the PLT table.
13857
13858         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
13859         holding the plt offset when a call is made to the aot plt trampoline.
13860         
13861 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13862
13863         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
13864         amd64 AOT support.
13865
13866         * Makefile.am (common_sources): Fix build breakage.
13867
13868         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
13869         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
13870         intra-assembly calls if possible.
13871         
13872         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
13873
13874         * mini-trampolines.c: Handle PLT entries.
13875
13876         * mini.c: Avoid creating a GOT var for calls.
13877
13878         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
13879         from mscorlib code.
13880
13881         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
13882         from mscorlib code.
13883
13884         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
13885         AOT code.       
13886
13887         * mini.h: Bump AOT file format version.
13888         
13889         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
13890         covers more cases.
13891
13892 2006-04-25  Martin Baulig  <martin@ximian.com>
13893
13894         * driver.c: Disable copyprop, consprop and inline when running
13895         inside the debugger.
13896
13897 2006-04-25  Martin Baulig  <martin@ximian.com>
13898
13899         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
13900         with `get_current_thread' and added `detach'.
13901         (MonoDebuggerMetadataInfo): Added `thread_size',
13902         `thread_tid_offset', `thread_stack_ptr_offset' and
13903         `thread_end_stack_offset'.
13904
13905 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13906
13907         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
13908         aot-runtime.c.
13909
13910         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
13911         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
13912
13913         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
13914
13915         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
13916
13917         * aot.c: Add support for ADJUSTED_IID.  
13918
13919 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13920
13921         * aot.c (emit_method_order): Don't align method_order_end.
13922
13923         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
13924         the interface ID changes.
13925
13926 2006-04-21  Dick Porter  <dick@ximian.com>
13927
13928         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
13929         cleaning up a thread.  Fixes the new part of bug 77470.
13930
13931 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
13932
13933         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
13934         to managed wrapper.
13935                      
13936 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13937
13938         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
13939         
13940         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
13941         SIGSEGV. Fixes #78072.
13942
13943         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
13944         unregister our SIGABRT handler.
13945
13946 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
13947
13948         * mini.c: Disabled inline where it can alter the call stack in a
13949         way visible from managed code.
13950         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
13951         default.
13952
13953 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
13954
13955         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
13956         on other platforms. Fixes #78089.
13957
13958 2006-04-13  Martin Baulig  <martin@ximian.com>
13959
13960         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
13961         determine whether we're inside the debugger.
13962
13963         * debug-debugger.h
13964         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
13965
13966 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13967
13968         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
13969         handler clauses. Fixes #78024.
13970
13971         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
13972         in the CALL_MEMBASE opcodes. Fixes #78088.
13973         (mono_arch_get_vcall_slot_addr): Ditto.
13974
13975 2006-04-10  Martin Baulig  <martin@ximian.com>
13976
13977         * debug-debugger.c: The thread handling code has now been moved
13978         into ../metadata/threads.c.
13979
13980 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13981
13982         * driver.c (mono_main): Fix --with-gc=none build.
13983
13984         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
13985         (mono_spillvar_offset_float): Ditto.
13986         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
13987         hreg, not when its !global, since on ia64, there is a third category: stacked
13988         registers.      
13989
13990 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
13991
13992         * mini.c: set MonoInst->klass for load field address and a few other
13993         places.
13994
13995 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13996
13997         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
13998
13999 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
14000
14001         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
14002         the branch opt changes.
14003
14004 2006-04-06  Dick Porter  <dick@ximian.com>
14005
14006         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
14007         
14008         * wapihandles.c (mini_wapi_seminfo): 
14009         * driver.c (mono_main): Add semaphore info option
14010
14011 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
14012
14013         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
14014         branch optimization changes. Fixes #78009.
14015
14016 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14017
14018         * mini.c: ignore accessibility of methods in managed->native wrappers.
14019
14020 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
14021
14022         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
14023         
14024         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
14025
14026 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
14027
14028         * mini.c: Modify the branch optimizations to preserve the invariant that
14029         the entries inside the in_bb and out_bb arrays are unique.
14030         (mono_unlink_bblock): Avoid creation of new arrays.
14031
14032 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
14033
14034         * mini.c (mono_unlink_bblock): Fix regression caused by previous
14035         change (#77992).
14036
14037 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
14038
14039         * mini.c (optimize_branches): Remove the "optimizations" in
14040         the cbranch1/cbranch2 -> branch cases which were causing several
14041         problems in the past. Fixes #77986.
14042
14043 2006-03-31  Chris Toshok  <toshok@ximian.com>
14044
14045         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
14046         default optimizations :(
14047
14048 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
14049
14050         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
14051         branch.
14052
14053 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
14054
14055         * local-propagation.c: Added comments to structs and removed
14056         "Mono" prefixes from local tree mover types.
14057
14058 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
14059
14060         * Makefile.am (arch_sources): Define this for each architecture so 
14061         libmono_la_SOURCES is defined in one place.
14062
14063 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
14064
14065         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
14066         from handles/.
14067
14068 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
14069
14070         * driver.c: print the GC name supplied by configure.
14071
14072 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
14073
14074         * local-propagation.c: Added tree mover, and moved here all the
14075         local propagation code from mini.c
14076         * mini.c: Added support for treeprop, and moved all the local
14077         propagation code to local-propagation.c
14078         * mini.h: Added support for treeprop
14079         * driver.c: Added support for treeprop, enabled consprop, copyprop,
14080         treeprop, inline and deadce by default
14081         * Makefile.am: Added local-propagation.c
14082
14083 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
14084
14085         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
14086
14087 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
14088
14089         * debug-debugger.c: make it compile without the Boehm GC.
14090
14091 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14092
14093         * mini.c: fixed issue with mismatch when an icall is registered
14094         with multiple names but same address.
14095
14096 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14097
14098         * declsec.c, mini-exceptions.c: use write barrier to set reference
14099         fields of managed objects.
14100
14101 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14102
14103         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
14104         (can_access_internals): Fix a warning.
14105
14106         * mini.c (print_method_from_ip): Rename this to 
14107         mono_print_method_from_ip so it gets exported.
14108
14109         * trace.c: Deal with strings inside StringBuilder's containing garbage
14110         and fix memory leaks. Fixes #77848.
14111
14112 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14113
14114         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
14115         fixes #77787.
14116
14117 2006-03-16 Neale Ferguson <neale@sinenomine.net>
14118         
14119         * mini-s390.c: Remove OP_X86_TEST_NULL.
14120
14121 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14122
14123         * mini.c: use the correct GetHashCode() for the moving collector.
14124
14125 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
14126
14127         * liveness.c: Regalloc spill cost tuning.
14128
14129 2006-03-15 Neale Ferguson <neale@sinenomine.net>
14130         
14131         * mini-s390x.h: Correct S390_LONG macro.
14132
14133         * mini-s390x.c: Cleanup unused code.
14134
14135 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14136
14137         * jit-icalls.h: New file.
14138
14139         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
14140         icalls and include that instead of including jit-icalls.c.
14141
14142         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
14143         OP_X86 opcodes.
14144
14145 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
14146
14147         * mini.c: when checking for member accessibility, also check for
14148         friend assemblies and for explicit interface implementations.
14149
14150 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14151
14152         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
14153
14154         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
14155
14156         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14157         common cases are done first.    
14158
14159         * mini-ops.h: Only define platform specific opcodes on the given platform.
14160
14161         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
14162         branch.
14163         
14164 2006-03-14  Martin Baulig  <martin@ximian.com>
14165
14166         Revert Paolo's change from r57348:
14167
14168         * mini.h: don't use gboolean for bitfields.
14169         * mini.c: verifier changes for fields and methods accessibility.
14170
14171 2006-03-13  Neale Ferguson <neale@sinenomine.net>
14172
14173         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
14174
14175         * mini-s390x.c: Fix conv_r_un.
14176
14177         * cpu-s390, cpu-s390x.md: Fix lengths.
14178
14179 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
14180
14181         * mini.c: nested types have access to all the nesting
14182         levels, not just the enclosing types.
14183
14184 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14185
14186         * mini.c: added a few more verification checks.
14187
14188 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
14189
14190         * liveness.c: Merge optimizations from the linear-il branch.
14191
14192 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14193
14194         * mini-ia64.c (emit_call): Add a comment.
14195
14196         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
14197
14198         * tramp-ia64.c: Fix some warnings.
14199
14200 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
14201
14202         * mini.h: don't use gboolean for bitfields.
14203         * mini.c: verifier changes for fields and methods accessibility.
14204
14205 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14206
14207         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
14208         lazy icall wrapper changes.
14209
14210         * dominators.c: Replace all the dominator algorithms with faster
14211         ones from the linear-il branch.
14212
14213         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
14214         the mempool.
14215
14216         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14217         common cases are done first.
14218
14219         * mini-amd64.c: Fix some warnings.
14220
14221         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
14222         from the mempool.
14223
14224         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
14225         added code.
14226
14227         * mini.h: Add a missing prototype.
14228
14229 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14230
14231         * mini.c: Compile icall wrappers lazily.
14232
14233         * mini-codegen.c: Use printf instead of g_print since its much faster.
14234
14235         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
14236         function.
14237
14238         * mini.c (optimize_branches): Cache the negative result from 
14239         remove_block_if_useless ().
14240
14241         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
14242         Also fix some bblock linking issues.
14243
14244         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
14245         assembly files.
14246
14247         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
14248
14249         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
14250         accessed fields first, for better cache behavior.
14251         
14252 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14253
14254         * mini.c: speedup IList<T> array accesses.
14255
14256 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14257
14258         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
14259         inline_costs counter. Fixes #77190.
14260
14261 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
14262
14263         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
14264         trace messages. Fixes #77706.
14265
14266 2006-03-04  Martin Baulig  <martin@ximian.com>
14267
14268         * tramp-amd64.c, tramp-x86.c
14269         (mono_debugger_create_notification_function): Use
14270         mono_global_codeman_reserve() to allocate a buffer at runtime and
14271         return it.
14272
14273         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
14274
14275         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
14276         notification function at runtime and then call `initialize' in the
14277         `MONO_DEBUGGER__debugger_info' vtable.
14278
14279 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14280
14281         * iltests.il: Fix a visibility problem.
14282
14283 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14284
14285         * driver.c, mini.c: add hooks for the counters API.
14286
14287 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14288
14289         * driver.c: show disabled options.
14290
14291 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14292
14293         * linear-scan.c: always use cost-driven selection.
14294
14295 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14296
14297         * jit-icalls.c (helper_compile_generic_method): Revert change from
14298         2006-02-24.
14299
14300 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
14301
14302         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
14303
14304 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14305
14306         * inssel.brg: style fixes, mostly to force the updated monoburg
14307         to run for people using svn.
14308
14309 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
14310
14311         * mini.c: match monoburg changes.
14312
14313 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14314
14315         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
14316         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
14317         declaration in the header file.
14318
14319 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14320
14321         * helpers.c: reduce relocations and mem usage.
14322
14323 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14324
14325         * mini.h, mini-codegen.c: disable logging features if
14326         requested by configure.
14327
14328 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
14329
14330         * mini.c: tiny verifier changes.
14331
14332 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14333
14334         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
14335         cpu-pentium.md: stack alignment changes for osx/x86,
14336         partially from Geoff Norton <gnorton@customerdna.com>.
14337
14338 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14339
14340         * jit-icalls.c (helper_compile_generic_method): Update to changes
14341         in metadata/class.c.
14342
14343 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14344         
14345         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
14346         
14347         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
14348         interface calls with large offsets.
14349
14350 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14351
14352         * jit-icalls.c (helper_compile_generic_method): Document the
14353         special-case we depend on so that we can inflate the method twice
14354         with the same context with no bad side-effects.
14355
14356 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
14357
14358         * mini-x86.c, mini-amd64.c: fix for case when xen support
14359         is disabled.
14360
14361 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
14362
14363         * mini-x86.c, mini-amd64.c: generate code to access tls items
14364         in a faster way for Xen systems.
14365
14366 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14367
14368         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
14369         updates and compilation fixes for the OSX/x86 port, mostly from
14370         Geoff Norton <gnorton@customerdna.com>.
14371
14372 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14373
14374         * inssel.brg: faster interface call implementation
14375         to sync with the interface_offsets MonoVTable changes.
14376
14377 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14378
14379         * mini.c: more verification checks.
14380
14381 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
14382
14383         * mini.c: added a few more verification checks.
14384
14385 2006-02-17      Neale Ferguson <neale@sinenomine.net>
14386
14387         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
14388         facility on the processor and use it if available.
14389
14390 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14391
14392         * driver.c, aot.c, mini.c: throw exception if the IL code is
14393         invalid or unverifiable.
14394
14395 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14396
14397         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
14398         m.StructField.
14399
14400 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
14401
14402         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
14403
14404 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14405
14406         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
14407         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
14408         handling of instantiated generic valuetypes.
14409
14410 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14411
14412         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
14413         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
14414         instead.
14415
14416         * generics.2.cs: Revert the nullable reftypes tests.
14417
14418 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
14419
14420         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
14421         using __builtin_frame_address (1) as it doesn't work in the presence
14422         of optimizations. Hopefully fixes #77273.
14423
14424         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
14425         -> generics.cs change as it doesn't work with some automake versions.
14426
14427 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14428
14429         * mini.c: handle systems that sue a different way to
14430         retrieve the stack address of the current thread.
14431
14432 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14433
14434         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
14435         it specially in the makefile.
14436
14437         * generics.2.cs: Add tests for nullable reference types.
14438
14439 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14440
14441         * mini.c: always handle the case when mono_jit_init()
14442         is called in a thread different from the main thread,
14443         confusing libgc (bug #77309).
14444
14445 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
14446
14447         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
14448
14449 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14450
14451         * mini.c: change optimize_branches () to use a single loop
14452         and introduce a new optimization to simplify some range checks.
14453
14454 2006-02-03  Martin Baulig  <martin@ximian.com>
14455
14456         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
14457         and merged with debugger_thread_manager_add_thread().
14458         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
14459         inform the debugger about the main thread.
14460
14461 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
14462
14463         * basic.cs: Add test for div.un/rem.un constant folding.
14464
14465 2006-02-03  Neale Ferguson <neale@sinenomine.net>
14466
14467         * cpu-s390x.md: correct int_xor_imm length
14468
14469 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
14470
14471         * generics.2.cs: New test for #77442.
14472
14473         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
14474         #77442.
14475
14476 2006-02-02  Martin Baulig  <martin@ximian.com>
14477
14478         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
14479         <mono/metadata/mono-debug-debugger.h>   
14480
14481         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
14482
14483 2006-02-02  Martin Baulig  <martin@ximian.com>
14484
14485         * debug-debugger.h: New header file for debug-debugger.c.
14486
14487         * debug-debugger.c: Big API cleanup; don't run the managed Main()
14488         function is a separate thread anymore; add support for attaching.
14489
14490 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14491
14492         * tramp-x86.c: Fix a warning.
14493
14494 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14495
14496         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
14497         on very large methods.
14498
14499         * aot.c (load_patch_info): Fix a warning.
14500
14501 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
14502
14503         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
14504         mini-ops.h: alu membase optimizations.
14505
14506 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
14507
14508         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
14509         to speedup StringBuilder.
14510
14511 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
14512
14513         * dominators.c (mono_compute_natural_loops): Fix detection of
14514         loop body start blocks.
14515
14516         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
14517
14518 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14519
14520         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
14521         #75145.
14522
14523 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
14524
14525         * aliasing.c: Fixed aliasing issue on 64 bit archs.
14526
14527 2006-01-25  Martin Baulig  <martin@ximian.com>
14528
14529         * debug-debugger.c: Moved the `MonoDebuggerManager' and
14530         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
14531         started to cleanup this file a little bit.
14532
14533 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
14534
14535         * mini.c: optimize a codepath frequently happening in generics code.
14536
14537 2006-01-23  Martin Baulig  <martin@ximian.com>
14538
14539         * Makefile.am: Only compile debug-debugger.c on supported platforms.
14540
14541         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
14542         functions directly.
14543
14544         * driver.c: debug-debugger.c is only available if
14545         `MONO_DEBUGGER_SUPPORTED' is defined.   
14546
14547 2006-01-23  Martin Baulig  <martin@ximian.com>
14548
14549         * debug-debugger.c: Only enable this on platforms where the Mono
14550         Debugger is working (x86 and x86_64).
14551
14552 2006-01-21  Martin Baulig  <martin@ximian.com>
14553
14554         The Mono Debugger is now using the normal `mono' instead of the
14555         `mono-debugger-mini-wrapper' when executing managed code.
14556
14557         * debug-debugger.c: New file; previously known as
14558         debugger/wrapper/wrapper.c.
14559
14560         * debug-mini.c (mono_init_debugger): Removed.
14561
14562         * driver.c (mono_main): Added new `--inside-mdb' command line
14563         argument which is used when running inside the debugger.
14564
14565 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
14566
14567         * liveness.c (mono_analyze_liveness): Remove some unused data
14568         structures.
14569
14570 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14571
14572         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
14573
14574 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
14575
14576         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
14577         depends on implementation details of monobitset.
14578
14579         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
14580         Fixes #77271.
14581
14582 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
14583
14584         * liveness.c: Update after monobitset changes.
14585
14586 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
14587
14588         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
14589
14590 2006-01-11 Neale Ferguson <neale@sinenomine.net>
14591
14592         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
14593
14594         * mini-s390x.c: Remove warning messages.
14595
14596 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14597
14598         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
14599
14600 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
14601
14602         * generics.2.cs: Add ldelem/stelem_any test.
14603
14604 2006-01-10 Neale Ferguson <neale@sinenomine.net>
14605
14606         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
14607
14608 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
14609
14610         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
14611         
14612 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
14613
14614         * generics.2.cs: Reenable vtype tests.
14615
14616         * inssel-x86.brg: Remove an icorrect valuetype rule.
14617
14618 2006-01-06 Neale Ferguson <neale@sinenomine.net>
14619
14620         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
14621         initial support for OP_ABS.
14622
14623 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14624
14625         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
14626
14627 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14628
14629         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
14630         conversion and implement LADD/LSUB.
14631
14632         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
14633         architectures.
14634
14635 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14636
14637         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
14638
14639         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
14640         architectures.
14641
14642 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14643
14644         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
14645         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
14646         (stack walk problem).
14647
14648 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
14649
14650         * aot.c (mono_aot_load_method): Fix a warning.
14651
14652 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14653
14654         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
14655
14656 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14657
14658         * iltests.il: Add test for #77148.
14659
14660         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
14661         #77148.
14662
14663 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14664
14665         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
14666
14667 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14668
14669         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
14670         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
14671
14672         * basic-long.cs: Add lconv-to-r4/r8 tests.
14673
14674 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14675
14676         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
14677
14678         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
14679         here as on other archs.
14680
14681 2005-12-29 Neale Ferguson <neale@sinenomine.net>
14682
14683         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
14684
14685 2005-12-29 Neale Ferguson <neale@sinenomine.net>
14686
14687         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
14688         
14689         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
14690
14691         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
14692         instrument_prolog; Add memory_barrier instruction.
14693
14694 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
14695
14696         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
14697
14698 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
14699
14700         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
14701
14702         * aliasing.c inssel.brg: Fix warnings.
14703
14704         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
14705         could skip initialization of some parts of memory.
14706
14707         * mini.c mini-ia64.c: Fix warnings.
14708
14709         * inssel-sparc.brg: Add an implementation of lneg which actually works.
14710
14711 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14712
14713         * aliasing.c (mono_build_aliasing_information): Add a workaround for
14714         a crash seen on sparc.
14715
14716         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
14717         
14718         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
14719
14720 2005-12-21 Neale Ferguson <neale@sinenomine.net>
14721
14722         * mini-ops.h: Add s390_backchain instruction
14723
14724         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
14725
14726         * cpu-s390.md: Add s390_backchain instruction
14727
14728         * mini-s390.c: Significant ABI changes
14729
14730         * mini-s390.h: Cater for zero length structures
14731
14732 2005-12-20 Neale Ferguson <neale@sinenomine.net>
14733
14734         * mini-s390.c: ABI fixes
14735
14736         * inssel-s390.brg: Remove debug statements
14737
14738         * cpu-s390.md: Fix length of ATOMIC_xx operations
14739
14740 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
14741
14742         * basic-float.cs: Add float<->long conversion tests.
14743
14744 2005-12-16 Neale Ferguson <neale@sinenomine.net>
14745
14746         * mini-s390.c: Fix LOCALLOC processing.
14747
14748         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
14749
14750 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14751
14752         * iltests.il: Add tests for some opcodes not covered by the other
14753         tests.
14754
14755 2005-12-15 Neale Ferguson <neale@sinenomine.net>
14756
14757         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
14758         register loading for Tail processing; Correct trace output.
14759
14760         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
14761
14762         * cpu-s390.md: Correct size of jmp instruction. 
14763
14764 2005-12-13 Neale Ferguson <neale@sinenomine.net>
14765
14766         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
14767
14768 2005-12-13 Neale Ferguson <neale@sinenomine.net>
14769
14770         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
14771           Bring s390 up to current level.
14772
14773 2005-12-12  Zltan Varga  <vargaz@gmail.com>
14774
14775         * generics.2.cs: Disable the newly added tests as they do not work yet.
14776         
14777         * generics.2.cs: Add valuetype tests.
14778
14779 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
14780
14781         * basic-long.cs: Add i4->u8 test.
14782
14783         * objects.cs: Add tests for JIT intrinsic.
14784
14785         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
14786         optimizations lost by a mistake.
14787
14788 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
14789
14790         * basic-long.cs: Remove a test moved to objects.cs.
14791
14792         * arrays.cs: Add more array tests.
14793
14794 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
14795
14796         * arrays.cs: Add new tests for multi-dimensional arrays.
14797
14798 2005-12-06  Raja R Harinath  <rharinath@novell.com>
14799
14800         * Makefile.am (test_sources2): Add generics.2.cs.
14801         (EXTRA_DIST): Add test_sources2.
14802
14803 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
14804
14805         Support for boxing and unboxing nullable types as well as the
14806         isinst operation on nullables, per the CLI ammendment.
14807
14808         * inssel.brg (CEE_ISINST): Special case for nullable
14809
14810         * mini.c (handle_unbox_nullable): new method
14811         (handle_box): Special case for nullable types
14812         (mono_method_to_ir): Call handle_unbox_nullable in correct
14813         places.
14814
14815         * generics.2.cs: New test suite
14816
14817         * Makefile.am: Support for regression tests with generics.
14818
14819 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
14820
14821         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
14822         allocated to registers. Fixes #76800.
14823
14824 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
14825
14826         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
14827
14828 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
14829
14830         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
14831         of platforms.
14832
14833 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
14834
14835         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
14836         objects.cs.
14837
14838         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
14839         
14840         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
14841 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
14842
14843         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
14844         single precision before storing to a single precision location.
14845
14846 2005-11-28  Raja R Harinath  <rharinath@novell.com>
14847
14848         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
14849
14850 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
14851
14852         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
14853         correct files.
14854
14855         * basic.cs: Remove test_0_byte_compares test which was moved to
14856         objects.cs a long time ago.
14857
14858 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
14859
14860         * aliasing.c: Fixed aliasing issue on 64 bit archs.
14861
14862 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
14863
14864         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
14865         handlers are called.
14866
14867         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
14868         throwing code.
14869
14870          * mini-ia64.c: Add support for the throw->branch exception 
14871         optimization.   
14872
14873         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
14874
14875 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14876
14877         * mini.c: Enabled "fastpath" deadce :-)
14878         
14879 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14880
14881         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
14882         alias analysis pass to support it.
14883         * mini.h: Likewise.
14884         * ssa.c: Likewise.
14885         * liveness.c: Likewise (liveness computation can use aliasing
14886         information to be more accurate).
14887         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
14888         moreover made so that "--compile-all" uses the given optimization
14889         flags and not the default ones.
14890         * aliasing.c: Alias analysis (new file).
14891         * aliasing.h: Likewise.
14892         * Makefile.am: added "aliasing.c" and "aliasing.h".
14893         
14894 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14895
14896         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
14897         OP_L opcodes.
14898
14899 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
14900
14901         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
14902         fp >= end_of_stack exit condition, as it is not needed, and it might
14903         become true for fp eliminated frames.
14904
14905 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14906
14907         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
14908         coded offsets.
14909
14910 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
14911
14912         * mini-arm.c: fixed alignment of doubles/longs to match
14913         the C ABI (bug #76635).
14914
14915 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
14916
14917         * aot.c: fix compilation with --enable-minimal=aot.
14918
14919 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
14920
14921         * mini-arm.c: fixed compatibility with the new
14922         floating point emulator package for compares.
14923
14924 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
14925
14926         * mini.c : reverted sig->pinvoke changes (r51396-51397).
14927
14928 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
14929
14930         * mini-exceptions.c (print_stack_frame): Output to stderr.
14931         (mono_handle_native_sigsegv): Ditto.
14932
14933 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14934
14935         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
14936         OP_LCONV_TO_OVF_I implementation.
14937
14938         * mini-amd64.c: Add support for the throw->branch exception 
14939         optimization.
14940
14941         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
14942         when the catch clause catches a more general exception, i.e. Object.
14943
14944 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
14945
14946         * cpu-ia64.md: Remove unused opcodes.
14947
14948         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
14949         specific defines for architectures defining USE_SIGACTION.
14950
14951         * mini-ia64.c: Fix some warnings.
14952
14953         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
14954         version seemed to skip a frame.
14955
14956 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14957
14958         * mini.c: Clean up the usage of sig->pinvoke flag. Now
14959         only calls which are made to native code use this flag.
14960
14961 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
14962
14963         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
14964         varargs methods as well.
14965         
14966         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
14967         which have save_lmf set. Reorganize methods prologs a bit.
14968
14969         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
14970         debugger to the proper place.
14971
14972 2005-10-29  Martin Baulig  <martin@ximian.com>
14973
14974         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
14975         when running inside the debugger until the debugger has support
14976         for it.
14977
14978 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
14979
14980         * mini.h: Fix a warning.
14981
14982 2005-10-24  Miguel de Icaza  <miguel@novell.com>
14983
14984         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
14985         we expose publicly, this returns the string.
14986
14987 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
14988
14989         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
14990         with fp elimination.
14991
14992 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
14993
14994         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
14995         native stacktrace using the glibc 'backtrace' function if available.
14996
14997 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
14998
14999         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
15000
15001         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
15002         handle SIGSEGVs received while in native code.
15003
15004         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
15005         code, call mono_handle_native_sigsegv which will abort the runtime
15006         after printing some diagnostics, instead of converting it into a
15007         confusing NullReferenceException.
15008
15009 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15010
15011         * cpu-pentium.md: Remove unused opcodes.
15012
15013 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
15014
15015         * mini-amd64.h (MonoLMF): Add rsp field.
15016
15017         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
15018         the lmf too.
15019
15020 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
15021
15022         * mini-codegen.c (get_register_spilling): Fix some warnings.
15023
15024 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
15025
15026         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
15027         elimination during exception handling. Enable fp elimination by
15028         default.
15029
15030         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
15031         elimination.
15032
15033 2005-10-16  Martin Baulig  <martin@ximian.com>
15034
15035         * mini-exceptions.c
15036         (mono_debugger_run_finally): New public method for the debugger.
15037
15038 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15039
15040         * debug-mini.c (mono_debug_init_method): Fix warning.
15041
15042         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
15043         the 'exname' parameter const to fix some warnings.
15044
15045 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
15046
15047         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
15048         introduced by the previous patch.
15049
15050 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
15051
15052         * basic-float.cs: Add test for precision of float arithmetic.
15053
15054         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
15055         when loading/storing single values from/to memory.
15056
15057         * mini.c (mono_jit_compile_method_with_opt): Create the function
15058         pointers in the correct domain.
15059
15060 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15061
15062         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
15063         introduced by previous patch.
15064         
15065         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
15066         when out_filter_idx is NULL.
15067
15068         * mini-exceptions.c: Don't run filter clauses twice during exception
15069         handling. Fixes #75755.
15070
15071 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15072
15073         * aot.c: Add support for ldflda wrappers.
15074
15075         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
15076         #75902.
15077
15078 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
15079
15080         * mini.c, mini.h: do not consider exception handlers blocks when
15081         setting up interface variables.
15082
15083 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
15084
15085         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
15086
15087 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
15088
15089         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
15090         causes a regression.
15091
15092         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
15093
15094 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
15095
15096         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
15097         of the OP_P definitions.
15098
15099         * TODO: Add a proposal for dealing with the CEE/OP mess.
15100
15101         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
15102         optimizations from the x86 port.
15103
15104         * cpu-amd64.md: Ditto.
15105
15106         * basic.cs basic-long.cs: Add tests.
15107
15108 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
15109
15110         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
15111         Patrik Torstensson's implementation of my exception-handling
15112         optimization idea, when the exception object is not used
15113         (bug #62150).
15114
15115 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
15116
15117         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
15118         of the mul_imm optimizations from the old jit.
15119
15120 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
15121
15122         * mini.c, liveness.c: patch by Patrik Torstensson and
15123         Zoltan Varga to improve performance in methods with
15124         exception clauses.
15125
15126 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15127
15128         * driver.c: Remove 'Globalization' entry from --version.
15129
15130 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
15131
15132         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
15133         there is a profiler interested in JIT events.
15134
15135         * aot.c: Load profile files produced by the AOT profiling module, and
15136         reorder methods based on the profiling info. Add a 'method_order' table
15137         to the AOT file to make mono_aot_find_jit_info work with the reordered
15138         methods.
15139
15140         * mini.h: Bump AOT file version info.
15141
15142 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
15143
15144         * mini-arm.h: work around what looks like a gcc bug when optimizations
15145         are enabled.
15146
15147 2005-09-28  Raja R Harinath  <rharinath@novell.com>
15148
15149         * Makefile.am (AM_CFLAGS): Don't use += to append inside
15150         conditionals.  Use ...
15151         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
15152
15153 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
15154
15155         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
15156         to determine the amount of memory to copy when passing valuetypes.
15157
15158         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
15159         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
15160
15161 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
15162
15163         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
15164         information about aot.
15165
15166 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15167
15168         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15169         macros. This will allow a deadlock debugger to easily be plugged
15170         in.
15171
15172 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
15173
15174         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
15175
15176 2005-09-27  Raja R Harinath  <rharinath@novell.com>
15177
15178         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
15179         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
15180         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
15181         ($(arch_built)) [CROSS_COMPILING]: Error out.
15182
15183 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15184
15185         * aot.c: Add support for the no_special_static flag for classes.
15186
15187 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15188
15189         * Reapply reverted patches.
15190
15191         * *: Revert r50174 as well.
15192
15193         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
15194
15195 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15196
15197         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
15198
15199 2005-09-23  Miguel de Icaza  <miguel@novell.com>
15200
15201         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
15202         part of the SIG_HANDLER_SIGNATURE.  
15203
15204 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15205
15206         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
15207         statistics.
15208
15209         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
15210         introduced by previous patch.
15211
15212 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
15213
15214         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
15215         saved registers too.
15216
15217         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
15218         upon the information returned by get_call_info ().
15219         
15220         * mini-x86.c (add_float): Fix stack size calculation.
15221         (mono_arch_call_opcode): Rewrite this so it works based up the
15222         information returned by get_call_info ().
15223         (mono_arch_get_this_vret_args): Ditto.
15224
15225 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
15226
15227         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
15228         in cinfo to determine the registers which need to be used.
15229
15230 2005-09-20  Miguel de Icaza  <miguel@novell.com>
15231
15232         * driver.c (mono_main): Add --server and --desktop flags. 
15233
15234 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
15235
15236         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
15237         registers as global registers.
15238
15239         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
15240         longer needed with the new register allocator.
15241
15242         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
15243
15244         * cpu-ia64.md: Remove unused opcodes.
15245         
15246         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
15247         
15248 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
15249
15250         * cpu-amd64.md: Remove unused opcodes.
15251
15252         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
15253         needed with the new register allocator.
15254
15255         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
15256         reg-reg moves.
15257
15258 2005-09-16  Raja R Harinath  <rharinath@novell.com>
15259
15260         * Makefile.am (check-local): Don't invoke semdel-wrapper.
15261
15262 2005-09-16  Martin Baulig  <martin@ximian.com>
15263
15264         * exceptions-amd64.c
15265         (throw_exception): Don't call mono_debugger_throw_exception() if
15266         we're a rethrow - see the FIXME in the code.
15267
15268 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
15269
15270         * mini.c (mono_init_exceptions): This only works on some architectures.
15271         
15272 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15273
15274         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
15275         on ia64.
15276
15277         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
15278
15279         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
15280         now in mini-exceptions.c.
15281
15282 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
15283
15284         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
15285         now in mini-exceptions.c.
15286
15287 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15288
15289         * exceptions-x86.c: Applied patch from Patrik Torstensson 
15290         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
15291
15292         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
15293         code into mini-exceptions.c. Add some assertions to it.
15294
15295 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15296
15297         * aot.c (emit_section_change): Applied patch from "The Software Team" 
15298         (<software@solmersa.com>). Fix as errors on windows.
15299
15300 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15301
15302         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
15303         method info into the LMF.
15304
15305 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15306         
15307         * mini-ia64.c: Add proper unwind info for method epilogs.
15308
15309         * exceptions-ia64.c: Add some code to help debugging.
15310         
15311         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
15312
15313         * mini-exceptions.c: Fix warning.
15314
15315 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15316
15317         * mini.c: Really fix build.
15318
15319         * mini-x86.c mini-amd64.c: Fix build.
15320
15321 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15322
15323         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
15324
15325         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
15326         some Interlocked methods as intrinsics.
15327
15328         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
15329         for Thread methods as well.
15330
15331         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
15332
15333         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
15334
15335         * mini-ia64.c mini-x86.c mini-amd64.c 
15336         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
15337         OP_MEMORY_BARRIER.
15338         
15339         * mini.c (mono_init_exceptions): Fix build breakage.
15340
15341 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
15342
15343         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
15344         of instructions. Use the new ia64_unw_op macros for emitting unwind
15345         info.
15346
15347         * mini.c (mono_init_exceptions): Initialize exception handling
15348         related trampolines at startup.
15349
15350 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
15351
15352         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
15353
15354 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15355
15356         * mini.c: Handle type loading errors gracefully during compilation and
15357         throw the appropriate exception.
15358
15359 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
15360
15361         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
15362         for the mono binary.
15363
15364 2005-09-09  Martin Baulig  <martin@ximian.com>
15365
15366         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
15367         the release.
15368
15369 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15370
15371         * mini-arm.h: use emulation for conv.r.un for the release.
15372
15373 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15374
15375         * mini-arm.c, objects.cs: more fixes and tests for them.
15376
15377 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15378
15379         * mini-arm.c: align structures to at least 4 bytes to be able
15380         to keep our current optimized memcpy.
15381
15382 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
15383
15384         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
15385
15386 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15387
15388         * mini.c: ignore SIGPIPE.
15389
15390 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
15391
15392         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
15393
15394         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
15395
15396 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
15397
15398         * mini.h: Add prototype for mono_allocate_stack_slots_full.
15399
15400 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15401
15402         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
15403         exception handling support.
15404         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
15405         patch by Brian Koropoff <briank@marakicorp.com>).
15406
15407 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
15408
15409         * mini.c: revert another 'optimization' which breaks when
15410         items on the eval stack need to be saved at a basic block end
15411         (bug #75940).
15412
15413 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15414
15415         * jit-icalls.c: for arrays, ensure we always provide
15416         lower bounds.
15417
15418 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
15419
15420         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
15421         
15422         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
15423
15424 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15425
15426         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
15427         arguments in their original register.
15428
15429 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
15430
15431         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
15432         memset/memcpy.
15433
15434         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
15435         when ssapre is enabled.
15436
15437         * inssel-long.brg: Fix bug in previous patch.
15438
15439         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
15440         multiplication by a constant.
15441
15442 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
15443
15444         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
15445         icc.
15446
15447         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
15448         saving registers.
15449
15450 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
15451
15452         * inssel-arm.brg: apply changes tested by Brian Koropoff
15453         <briank@marakicorp.com>.
15454
15455 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15456
15457         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
15458         
15459 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
15460
15461         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
15462         to the same register if dreg is just a base register.
15463         (print_ins): Improve printing of membase opcodes.
15464
15465         * inssel-x86.brg: Add optimized ldind(reg) rules.
15466
15467         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
15468
15469 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
15470
15471         * mini.c: when running under valgrind, set the stack bottom for
15472         the GC at the actual approximate stack for the app (fixes running
15473         mono with valgrind).
15474
15475 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
15476
15477         * mini.c: do no break at the first valuetype to init found
15478         (fixes bug #75791).
15479
15480 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
15481
15482         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
15483
15484 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
15485
15486         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
15487
15488 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
15489
15490         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
15491
15492 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15493
15494         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
15495
15496         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
15497         code.
15498
15499         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
15500         code.
15501
15502         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
15503         methods.
15504
15505 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
15506
15507         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
15508
15509 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15510
15511         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
15512         in the tail recursion optimization.
15513
15514         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
15515         debug info into the assembly file.
15516
15517         * iltests.il: Add test for filter regions.
15518
15519         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
15520         initial stack of filter regions. Fixes #75755.
15521
15522 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
15523
15524         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
15525         stack requirements.
15526
15527 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15528
15529         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
15530         the check for an already compiled method on non-ia64 platforms.
15531         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
15532         proper domain.
15533
15534         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
15535
15536         * inssel-x86.brg: Add some optimized call rules.
15537
15538 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15539
15540         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
15541         method here.
15542
15543         * mini.h mini-trampolines.c: Pass the trampoline argument to 
15544         mono_arch_patch_delegate_trampoline.
15545
15546         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
15547
15548         * mini-trampolines.c: Fix build.
15549
15550         * mini-amd64.h: Add delegate trampolines.
15551
15552         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
15553
15554         * inssel-amd64.brg: Add optimized call rules.
15555         
15556         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
15557
15558         * inssel-ia64.brg: Add optimized ldind(reg) rules.
15559
15560 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15561
15562         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
15563         change.
15564
15565         * mini-ia64.c: Remove LMF fixmes.
15566
15567         * mini-ia64.h: Remove most fields from LMF.
15568
15569         * inssel-ia64.brg (stmt): Fix unaligned access errors.
15570
15571         * mini-trampolines.c: Add support for IA64 function descriptors.
15572
15573         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
15574         for IA64 function descriptors.
15575
15576 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
15577
15578         * tramp-arm.c: patch the vtable for virtual calls. Added
15579         support code to register/unregister the LMF.
15580         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
15581         more LMF work.
15582
15583 2005-08-19  Dick Porter  <dick@ximian.com>
15584
15585         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
15586         bit value if needed.
15587
15588 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15589
15590         * mini.c (mini_get_method): Move handling of wrapper data here.
15591
15592         * mini.c (mono_method_to_ir): Add support for dynamic methods.
15593
15594         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
15595         virtual.
15596
15597         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
15598         bblock->code does not remain empty.
15599
15600 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
15601
15602         * arrays.cs: Add regression test for #75832.
15603
15604         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
15605         rules. Fixes #75832.
15606
15607         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
15608         instruction scheduling.
15609
15610 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
15611
15612         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
15613
15614 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15615
15616         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
15617
15618         * mini-codegen.c: Fix VC build.
15619
15620         * cpu-pentium.md: Increase length of atomic_exhange_i4.
15621
15622 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15623
15624         * mini.h: fix signature for mono_register_opcode_emulation.
15625
15626 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
15627
15628         * mini.c: Get rid of most of the helper_sig_... constants using
15629         mono_create_icall_signature ().
15630
15631 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
15632
15633         * jit-icalls.c (helper_ldstr): New helper function.
15634
15635         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
15636
15637         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
15638         throw, load the string using a helper call instead of creating a string object.
15639
15640         * aot.c: Update after LDSTR changes.
15641
15642         * mini.h: Bump AOT file version.
15643         
15644         * aot.c: Save class size info into the AOT file. Print more statistics during
15645         compilation.
15646
15647         * mini.h: Bump AOT file version.
15648
15649         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15650         ordering of disasm cases. Fixes #74957.
15651
15652 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
15653
15654         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
15655         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
15656         the generic code needed for the ARM port.
15657
15658 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
15659
15660         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
15661         inssel-arm.brg: more ARM features and fixes.
15662
15663 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
15664
15665         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
15666         ARM port work in progress.
15667
15668 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
15669
15670         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
15671
15672         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
15673
15674         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
15675
15676         * inssel.brg (mini_emit_memset): Add support for unaligned access.
15677
15678         * *-ia64.*: Ongoing IA64 work.
15679         
15680         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
15681
15682 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15683
15684         * TODO: Remove out-of-data todo stuff.
15685
15686         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
15687         dead code.
15688
15689         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
15690
15691         * mini.h: Bump corlib version.
15692
15693 2005-07-27  Martin Baulig  <martin@ximian.com>
15694
15695         * mini-codegen.c
15696         (create_copy_ins): Added `const unsigned char *ip' argument; set
15697         `copy->cil_code' from it.
15698
15699 2005-07-27  Martin Baulig  <martin@ximian.com>
15700
15701         * mini-exceptions.c (mono_handle_exception): Don't call
15702         mono_debugger_handle_exception() for filters.
15703
15704 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
15705
15706         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
15707         as well.
15708
15709 2005-07-26  Martin Baulig  <martin@ximian.com>
15710
15711         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
15712
15713         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
15714         helper_compile_generic_method() if the method is actually virtual
15715         and non-final.
15716
15717 2005-07-26  Martin Baulig  <martin@ximian.com>
15718
15719         * mini.c
15720         (trampoline_code): Renamed to `mono_trampoline_code' and made it
15721         public; this is now accessed directly by the debugger.
15722         (mono_generic_trampoline_code): Removed.
15723
15724         * debug-mini.c
15725         (mono_debug_init_method): Also add interncalls and wrappers.
15726
15727 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
15728
15729         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
15730
15731 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
15732
15733         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
15734
15735 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
15736
15737         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
15738
15739 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15740
15741         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
15742         getting TLS offsets on AMD64 too.
15743
15744 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
15745
15746         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
15747
15748 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
15749
15750         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
15751         inssel-arm.brg, mini-arm.h: ARM port work in progress.
15752
15753 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15754
15755         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
15756
15757         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
15758         to mini.c.
15759
15760         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
15761         mono_sparc_is_virtual_call ().
15762         
15763         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
15764
15765         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
15766         trampoline parameters.
15767
15768         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
15769         
15770         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
15771         to mono_arch_get_vcall_slot_addr.
15772
15773         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
15774         trampoline code.
15775
15776         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
15777
15778 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
15779
15780         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
15781
15782 2005-07-19  Martin Baulig  <martin@ximian.com>
15783
15784         * exceptions-amd64.c (throw_exception): Call
15785         mono_debugger_throw_exception() here like we're doing it on i386.
15786
15787 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
15788
15789         * mini-ia64.c: Add optimized TLS access support.
15790
15791 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
15792
15793         * mini-exceptions.c: Ongoing IA64 work.
15794
15795         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
15796
15797         * mini.c: Use the default optimization set when embedding. Fixes
15798         #75194.
15799
15800 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
15801
15802         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
15803         of trampolines to a separate file.
15804
15805         * mini-trampolines.c: New file.
15806
15807         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
15808         separate file.
15809         
15810         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
15811         amd64/ia64 code.
15812
15813         * mini-codegen.c: Fix cygwin build.
15814
15815 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
15816
15817         * mini.c: Add some minor changes needed by the IA64 port.
15818
15819         * *-ia64.*: Ongoing IA64 work.
15820
15821 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
15822
15823         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
15824         trampolines into arch-independent and arch-dependent parts.
15825
15826         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
15827
15828 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
15829
15830         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
15831
15832         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
15833         the xp-regalloc-branch for amd64.
15834
15835         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
15836         xp-regalloc-branch for x86.
15837
15838 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15839
15840         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
15841
15842 2005-07-06  Martin Baulig  <martin@ximian.com>
15843
15844         * mini.c
15845         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
15846         (mono_jit_runtime_invoke): Likewise.
15847
15848 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
15849
15850         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
15851         on x86 too.
15852         
15853         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
15854         without loading their metadata. Reorganize the file format so exception handling+
15855         debug info is kept separate from normal method info. Create MonoJitInfo 
15856         structures for methods lazily.
15857
15858         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
15859         loading metadata.
15860         (x86_class_init_trampoline): Patch AOT class init trampolines too.
15861
15862         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
15863
15864         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
15865         in AOT code.
15866
15867         * mini.h: Bump AOT file version.
15868
15869 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
15870
15871         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15872
15873 2005-07-01  Raja R Harinath  <rharinath@novell.com>
15874
15875         * Makefile.am (check-local): Call semdel-wrapper.
15876
15877 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
15878
15879         * mini-x86.c: Revert the last change as it seems to break the build..
15880
15881 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
15882
15883         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15884         
15885         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
15886
15887 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
15888
15889         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
15890         outside of the macro, so strange stuff doesn't happen with gcc4
15891         (NEW_AOTCONST_TOKEN): Likewise.
15892
15893 2005-06-28  Martin Baulig  <martin@ximian.com>
15894
15895         * mini.c (mini_class_is_system_array): New static method; use this
15896         instead of `klass->parent == mono_defaults.array_class' everywhere
15897         since this also works for the new generic array class.
15898
15899 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
15900
15901         * inssel.brg: Remove warnings.
15902
15903 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
15904
15905         * mini-ia64.c: Ongoing IA64 work.
15906
15907         * basic-float.cs: Add float->i1 conversion test.
15908
15909         * iltests.il: Add conv.u4 test.
15910
15911 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
15912
15913         * inssel-long.brg: Fix bug caused by last change.
15914
15915 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
15916
15917         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
15918         BSDs.  Allows the x86 JIT to work on OSX86
15919
15920 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
15921
15922         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
15923         u4->i8 conversion.
15924
15925         * mini-ia64.c: Ongoing IA64 work.
15926
15927 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
15928
15929         * mini-ia64.c: Ongoing IA64 work.
15930
15931         * driver.c: Clean up jit_code_hash as well when using --regression.
15932
15933         * inssel-long.brg: Fix long->i4/u4 conversion rules.
15934
15935         * basic-long.cs: Add tests for long->u4 conversion.
15936
15937 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
15938
15939         * mini.c: Take mono_get_domainvar out of macros. This makes sure
15940         that we do not depend on undefined C behavior: the order stuff
15941         gets evaluated within an expression. Fixes mono when compiled on
15942         GCC 4.
15943
15944 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
15945
15946         * *-ia64.*: Ongoing IA64 work.
15947
15948         * aot.c: Lower memory usage while loading AOT methods.
15949
15950         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
15951
15952         * mini.h: Bump AOT file format version.
15953
15954 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
15955
15956         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
15957
15958 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
15959
15960         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
15961         not on callee assembly). Fixed some comments.
15962
15963 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
15964
15965         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
15966         it gets proper disassembly.
15967         (emit_method_info): Remove some dead code.
15968
15969         * mini.c (mini_method_compile): Allways allocate the GOT var in
15970         mono_method_to_ir for emulating opcodes.
15971
15972 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
15973
15974         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
15975         before freeing the code memory. Fixes #74990.
15976
15977         * objects.cs: Add regression test for #74992.
15978
15979         * liveness.c: Extend live ranges of arguments to the beginning of the
15980         method. Fixes #74992.
15981
15982         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
15983         so it points into the faulting instruction.
15984
15985 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
15986
15987         * jit-icalls.c (mono_imul_ovf): Add exception handling.
15988
15989         * *-ia64.*: Ongoing IA64 work.
15990
15991         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
15992
15993 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
15994
15995         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
15996
15997         * *-ia64.*: Ongoing IA64 work.
15998
15999 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
16000
16001         * basic-long.cs: Add tests for add/sub.ovf.
16002
16003         * basic.cs: Add tests for sub.ovf.
16004
16005         * *-ia64.*: Ongoing IA64 work.
16006
16007 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
16008
16009         * *-ia64.*: Ongoing IA64 work.
16010
16011         * basic.cs: Add conv.ovf.i4.un test.
16012
16013 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
16014
16015         * mini.c: (remove_block_if_useless) Fixed bug 75061.
16016         
16017 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16018
16019         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
16020
16021 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16022
16023         * *-ia64.*: Ongoing IA64 work.
16024
16025 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16026
16027         * trace.[ch]:
16028         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
16029
16030 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
16031
16032         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
16033
16034 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
16035
16036         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
16037
16038         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
16039         of a call is callable by a near call.
16040
16041 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
16042
16043         * mini-ia64.c: Ongoing IA64 work.
16044
16045 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
16046
16047         * genmdesc.c: Make the generated array non-static.
16048
16049         * inssel-long.brg: Fix LSHR_IMM rule.
16050
16051         * *-ia64.*: Ongoing IA64 work.
16052
16053         * *-ia64.*: Ongoing IA64 work.
16054
16055 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16056
16057         * *-ia64.*: Ongoing IA64 work.
16058
16059         * *-ia64.*: Ongoing IA64 work.
16060         
16061         * mini-ia64.c: Ongoing IA64 work.
16062
16063         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
16064
16065 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16066
16067         * objects.cs basic-calls.cs: Move some tests to objects.cs.
16068         
16069         * objects.cs basic-long.cs: Move some tests to objects.cs.
16070
16071 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
16072
16073         * *-ia64.*: Ongoing IA64 work.
16074
16075         * iltests.il: Add a new test.
16076
16077         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
16078         newobj. Fixes #75042.
16079
16080 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
16081
16082         * *-ia64.*: Ongoing IA64 work.
16083         
16084         * *-ia64.*: Ongoing IA64 work.
16085         
16086         * *-ia64.*: Ongoing IA64 work.
16087
16088         * basic.cs objects.cs: Move tests accessing static variables as well.
16089
16090         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
16091
16092 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
16093
16094         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
16095
16096         * driver.c: Always print failed tests.
16097
16098         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
16099         frame pointer.
16100
16101         * *ia64*: Ongoing IA64 work.
16102
16103 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16104
16105         * basic.cs: Add tests for add.ovf. Fix warnings.
16106
16107 2005-05-18  Miguel de Icaza  <miguel@novell.com>
16108
16109         * driver.c (mono_main): Avoid crash if no argument is passed to
16110         --break;  Do not use g_error, but f_printf.   And fix all other
16111         ocurrences of the same crash.
16112
16113 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
16114
16115         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
16116         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
16117         Fixes #74742.
16118
16119 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
16120
16121         * *-ia64.*: Add beginnings of IA64 backend.
16122
16123         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
16124
16125 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
16126
16127         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
16128         Fixes #74925.
16129
16130         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
16131
16132         * mini-amd64.c: Fix a warning.
16133
16134 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
16135
16136         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
16137         in float_neg. Fixes #74897.
16138
16139         * mini-amd64.c (emit_call): Fix another near call bug.
16140
16141 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
16142
16143         * declsec.c: Keep the appdomain information in the structure. Added a 
16144         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
16145         value gets overwritten).
16146         * declsec.h: Set the default MonoArray for the the stack to 6. Added
16147         an MonoAppDomain member to MonoSecurityFrame.
16148         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
16149         used in the stack walk. Now use a MonoArray which grow (double) when
16150         it gets full.
16151
16152 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16153
16154         * mini.c: Re-enabled runtime cleanup, since running threads should
16155         now properly stop when exiting.
16156
16157 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16158
16159         * mini-codegen.c: New file contaning the arch-independent local
16160         register allocator. Not used by any architectures yet.
16161
16162         * mini.h linear-scan.c: Merge some changes from the 
16163         mini-xp-local-regalloc branch.
16164
16165 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16166
16167         * mini-amd64.c (emit_call): Fix calls to native functions when the
16168         runtime is compiled as a shared library. Fixes #74756.
16169
16170         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
16171         on a literal field. Fixes #74751.
16172
16173 2005-04-25  Raja R Harinath  <rharinath@novell.com>
16174
16175         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
16176
16177 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16178
16179         * objects.cs: Add missing null casting test.
16180
16181 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16182
16183         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
16184         in wrapper methods. Also rename 'address' variable to 'offset'.
16185
16186 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16187
16188         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
16189         warnings.
16190         
16191         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
16192
16193         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
16194         work on windows.
16195
16196 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16197
16198         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
16199
16200 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16201
16202         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
16203         just the last bytes.
16204
16205 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16206
16207         * aot.c (mono_compile_assembly): Fix warning.
16208
16209         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
16210         by the _MSC_VER stuff.
16211
16212 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16213
16214         * inssel-long.brg: Fix #74588.
16215
16216         * cpu-amd64.md: Fix #74591.
16217
16218         * iltests.il: Add new regression tests.
16219
16220 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16221
16222         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
16223         valuetype.
16224
16225 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
16226
16227         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
16228
16229         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
16230         from Bill Middleton <flashdict@gmail.com>.
16231
16232 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
16233
16234         * arrays.cs: Add new regression test. Fix warnings.
16235
16236 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
16237
16238         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
16239         and leakage in CKFINITE.
16240
16241         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
16242         this to a null op since it is called on amd64 too.
16243
16244         * exceptions-amd64.c (get_throw_trampoline): Align stack.
16245
16246         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
16247         body since this is not used on amd64.
16248         
16249         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
16250
16251         * mini-amd64.c: Remove obsolete fixmes.
16252
16253         * mini.c (print_method_from_ip): Fix debugging support.
16254
16255 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16256
16257         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
16258         so that expressions that don't give much gain are not reduced.
16259         * ssapre.h: Likewise.
16260
16261 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
16262
16263         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
16264
16265         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
16266
16267         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
16268
16269 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
16270
16271         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
16272
16273         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
16274
16275 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
16276
16277         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
16278         stack touching.
16279
16280         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
16281
16282         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
16283
16284         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
16285
16286         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
16287         MONO_ARCH_USE_SIGACTION. Fixes #74252.
16288
16289         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
16290
16291         * mini-x86.c: Fix up stack overflow handling.   
16292
16293         * exceptions.cs: Add new regression test.
16294
16295 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
16296
16297         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
16298         mono_jit_thread_attach.
16299
16300         * mini.c (mono_method_to_ir): Verify called method is not abstract.
16301
16302 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16303
16304         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
16305         avoid calling constructors using callvirt.
16306
16307         * inssel.brg: Fix #74073.
16308
16309 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
16310
16311         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
16312         compilation with non-GCC compilers.
16313         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
16314         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
16315
16316 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
16317
16318         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
16319         klass->interface_offsets (will likely fix bug#74073).
16320
16321 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16322
16323         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
16324
16325 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
16326
16327         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
16328         to amd64_div_reg_size ().
16329         
16330         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
16331
16332 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
16333
16334         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
16335
16336 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16337
16338         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
16339
16340 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16341
16342         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
16343         
16344         * mini.c (mono_precompile_assembly): Load and precompile referenced
16345         assemblies as well. Fixes #74015.
16346
16347 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
16348
16349         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
16350
16351 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
16352
16353         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
16354         a lot of checks and (anyway) permissions cannot work until corlib is 
16355         loaded.
16356
16357 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
16358
16359         * mini-ppc.c: fixed ABI issue on sysv/ppc.
16360
16361 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
16362
16363         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
16364         calls (fixes bug#72824).
16365
16366 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16367
16368         * mini.c: fix tail recursion elimination (see test in bug#73936).
16369
16370 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
16371
16372         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
16373         some fp functions in sse2 mode.
16374
16375 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
16376
16377         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
16378
16379 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
16380
16381         * mini.h mini.c: Add mono_get_jit_tls_key ().
16382
16383         * mini-x86.c: Enable fast TLS support on windows.
16384
16385 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
16386
16387         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
16388         * mini.c: Check for p/invoke method when generating code. If a
16389         p/invoke method, or it's class, isn't decorated with [Suppress
16390         UnmanagedCodeSecurity] then generate code to call System.Security.
16391         UnmanagedDemand (only if the security manager is active).
16392
16393 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16394
16395         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
16396         last change as it seems to cause strange crashes.
16397         
16398 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16399
16400         * *.c: handle unsafe function pointers where needed.
16401
16402 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16403
16404         * mini.c (mono_jit_free_method): Remove the fixme too.
16405
16406 2005-03-15  Miguel de Icaza  <miguel@novell.com>
16407
16408         * mini.c: As discussed, make the code actually free the delegate
16409         thunk now, to enable the debugging of delegate problems, use
16410         MONO_DEBUG=1 when running Mono. 
16411
16412         This takes also care of parts of the leaks as seen by Joe.
16413
16414 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
16415
16416         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
16417         thread_tls_offset calculation.
16418
16419 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
16420
16421         * declsec.c: Reworked linkdemand checks for icall. The previous code
16422         was using the declaration code (untrusted) and didn't work as expected
16423         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
16424         specific case.
16425
16426 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
16427
16428         * iltests.il: Add new localloc test.
16429
16430         * mini-amd64.c: Handle large stack allocations the same way as on
16431         windows if stack overflow handling is working.
16432         
16433         * mini-amd64.c: Allocate the signal stack using mmap.
16434
16435         * mini.c (sigsegv_signal_handler): Fix reading of context.
16436
16437         * mini-exceptions.c: Fix up stack overflow handling.
16438
16439         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
16440
16441         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
16442
16443         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
16444
16445         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
16446
16447         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
16448         tramp_init functions as they are no longer needed.
16449
16450 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
16451
16452         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
16453         
16454         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
16455
16456         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
16457         
16458         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
16459         support that now.
16460
16461         * mini-ops.h: Add OP_LMUL_IMM.
16462
16463         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
16464         long mul/div opcodes as intrinsic.
16465
16466         * mini-amd64.c (emit_call): Handle the case when the callee might be
16467         an AOT method.
16468
16469 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
16470
16471         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
16472         extra safe.
16473         
16474         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
16475
16476         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
16477
16478 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
16479
16480         * mini.c (mono_codegen): Don't leak here, to help people running
16481         monogrind.
16482
16483 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
16484
16485         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
16486         conversions in sse2 mode.
16487
16488         * basic-float.cs: Add regression test.
16489         
16490         * mini-amd64.c: Reenable sse2.
16491
16492 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
16493
16494         * mini-amd64.c: Disable sse2 until some regressions are fixed.
16495
16496 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
16497
16498         * driver.c: Copyright text should include 2005.
16499         
16500 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
16501
16502         * cpu-amd64.md (load_membase): Fix more max lengths.
16503
16504 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
16505
16506         * cpu-amd64.md (load_membase): Fix max length.
16507
16508         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
16509
16510         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
16511
16512         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
16513         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
16514
16515         * basic-float.cs: Add rounding regression test.
16516
16517         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
16518
16519 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
16520
16521         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
16522         structures in registers for pinvoke wrappers.
16523
16524 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
16525
16526         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
16527
16528 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
16529
16530         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
16531         wrapper to mono_jit_thread_attach.
16532
16533         * mini.c (mini_jit_thread_attach): New jit icall.
16534
16535         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
16536         native->managed wrappers.
16537
16538         * exceptions.cs: Add new regression test.
16539
16540         * mini.c (optimize_branches): Check regions in the cbranch to throw
16541         block case as well. Fixes #73242.
16542
16543 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
16544
16545         * mini.c: thread safety fixes.
16546
16547 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
16548
16549         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
16550         patching stuff, since delegates use jump trampolines so there is
16551         no caller.
16552
16553         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
16554         jump trampolines.
16555         
16556         * tramp-amd64.c: Fix build.
16557
16558         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
16559         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
16560
16561         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
16562         Rename this to mono_arch....
16563         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
16564
16565         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
16566
16567         * mini-amd64.c (emit_call): If both the caller and the callee is
16568         guaranteed to have 32 bit addresses, emit a normal call.
16569
16570         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
16571
16572         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
16573         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
16574         method_ptr inside delegates.
16575
16576 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
16577
16578         * mini.c (mono_jit_free_method): Free the method info even if the native code is
16579         invalidated. Fixes #73001.
16580
16581         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
16582
16583         * mini-x86.c: Only use stdcall for pinvokes on windows.
16584
16585 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
16586
16587         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
16588         * mini-x86.c: remove unreliable __thread var offset detection,
16589         use the correct accessors and enable by default.
16590
16591 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
16592
16593         * mini.c (mono_jit_free_method): Fix memory leak.
16594
16595 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
16596
16597         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
16598
16599 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
16600
16601         * cpu-amd64.md: Fix lengths of atomic opcodes.
16602
16603 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
16604
16605         * driver.c: try to not imply using ICU is any good.
16606
16607 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
16608
16609         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
16610         functions as inline ops.
16611
16612         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
16613         some Interlocked functions as inline ops.
16614
16615         * mini.c (move_basic_block_to_end): Fix bug in last patch.
16616
16617         * mini.h (MonoBasicBlock): Reorganize fields a bit.
16618
16619         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
16620
16621         * mini.c: Add support for OP_NOT_TAKEN.
16622
16623         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
16624         structures in registers for pinvoke wrappers.
16625
16626         * mini-amd64.c: Fix warnings.
16627
16628 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
16629
16630         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
16631
16632         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
16633
16634         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
16635         address instead of loading the address from it.
16636
16637         * mini-x86.c: Add support for returning small structs in registers
16638         on Win32. Fixes part of #70864.
16639         
16640 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
16641
16642         * trace.c (get_token): Improve error checking.
16643
16644 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
16645
16646         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
16647
16648 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
16649  
16650         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
16651         it can be reused for MonoClass.
16652         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
16653         _LINKDEMAND.
16654
16655 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
16656
16657         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
16658         instead of a MonoReflectionMethod. The method information wasn't used
16659         when displaying SecurityException details (but will be now).
16660
16661 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
16662
16663         * Makefile.am : windows build fix.
16664
16665 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
16666
16667         * iltests.il: Add new regression test.
16668
16669         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
16670         #72522.
16671
16672 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
16673  
16674         * mini.c: Moved linkdemand check into helper function check_linkdemand
16675         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
16676         LDFTN, LDVIRTFTN).
16677
16678 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
16679
16680         * declsec.c: Added statistics counter for different kinds of 
16681         LinkDemands.
16682         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
16683         (and commented) declaration.
16684         * mini.c: Added statistics counter for security Demand code 
16685         generation. Added display of security statistics.
16686
16687 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
16688
16689         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
16690         Fix compilation errors under gcc-2.95.
16691
16692 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
16693
16694         * mini.c, driver.c: Use the new jit trampoline hashtable
16695
16696 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16697
16698         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
16699
16700 2005-02-11  Martin Baulig  <martin@ximian.com>
16701
16702         * debug-mini.c (mono_debug_close_method): Free the line number array.
16703
16704 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
16705
16706         * aot.c: Break up large methods into smaller ones. Share GOT slots for
16707         icalls.
16708
16709         * mini.h: Bump AOT file format version. 
16710
16711 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
16712
16713         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
16714         APTC and P/Invoke.
16715         * declsec.h: Added macros to get/set lazyly initialized security 
16716         informations about assemblies. Added new enum for different type of
16717         possible LinkDemand violation. Added function to check LinkDemands.
16718         * mini.h: Added a field to MonoCompile to hold any security violation
16719         detected when JITting a method (so it can be thrown later).
16720         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
16721         and CEE_CALLVIRT. Added code to throw exception at the end of
16722         mini_method_compile (note: the exception is unhandled right now).
16723
16724 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
16725
16726         * mini.c, jit-icalls.c: use the managed implementation of
16727         memset for initobj and memset, to avoid managed <-> unmanaged
16728         transitions.
16729
16730 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
16731
16732         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
16733         optimization if it would need a GOT var.
16734
16735         * basic.cs: Add tests for constant propagation and switch statements.
16736
16737         * ssa.c: Fix out-of-range constant propagation and switch statements.
16738
16739 2005-02-09    <vargaz@freemail.hu>
16740
16741         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
16742
16743 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
16744
16745         * cpu-amd64.md (load_membase): Fix max length of load_membase.
16746
16747 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16748
16749         * mini.c: update to new signature of mono_class_get_allocation_ftn().
16750
16751 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
16752
16753         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
16754         arithmetic operations.
16755
16756 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
16757
16758         * mini-ppc.c: add a workaround for broken user code that
16759         DllImports vararg functions with non-vararg signatures.
16760
16761 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
16762
16763         * mini.c (mono_jit_compile_method_inner): Add detection and a 
16764         meaningfull error message for assemblies written in Managed C++.
16765
16766         * tramp-amd64.c mini-amd64.h: Add support for 
16767         create_trampoline_from_token ().
16768
16769         * aot.c mini-x86.c abcremoval.c: Applied patch from
16770         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
16771
16772 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
16773
16774         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
16775         which takes a MonoImage/token as parameter instead of a MonoMethod.
16776
16777         * aot.c: Use the new trampoline for initializing vtables.
16778
16779         * aot.c: Add support for ldfld/stfld_remote wrappers.
16780
16781         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
16782         rules for compare <MEM>, IMM.
16783
16784         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
16785
16786         * aot.c: Handle inherited finalizers correctly.
16787
16788 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
16789
16790         * inssel.brg (stmt): Add a missing _setup_... ().
16791
16792         * aot.c: Save some parts of the class state to the AOT file and use it
16793         to recompute that state when a class is initialized.
16794
16795         * mini.c: Install AOT hooks into the runtime.
16796
16797         * mini.h: Bump AOT file format version.
16798         
16799         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
16800         Fixes #72148.
16801
16802         * iltests.il: Add new test.
16803
16804 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
16805
16806         * mini.c: fix typo.
16807
16808 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
16809
16810         * mini.c: setup the statistical profiler in the thread attach
16811         callback to cope with the new single thread code.
16812
16813 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
16814
16815         * mini-ppc.c: ensure we have enough room for the profiler
16816         calls (fixed bug#72084).
16817
16818 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
16819
16820         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
16821         it.
16822
16823 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16824
16825         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
16826
16827 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16828
16829         * ssapre.c: Fixed an issue with down safety (this allows IronPython
16830         to succesfully execute parrotbench).
16831         * ssapre.h: Likewise.
16832
16833 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16834
16835         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
16836         variable for stores to method arguments (fixes a SSAPRE issue).
16837
16838 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16839
16840         * mini.c: handle value types in dup, fixes gen-112.cs.
16841
16842 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
16843
16844         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
16845         sequence for calls in dynamic methods to avoid thunks.
16846
16847 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
16848
16849         * mini.c: correctly remove dynamic methods from the hashtable.
16850
16851 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16852
16853         * driver.c: Disabled SSAPRE until fix the bug that appears
16854         in IronPython's parrotbench.
16855
16856 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
16857
16858         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
16859
16860         * mini.c (mono_method_to_ir): Revert the previous change.
16861         
16862         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
16863         when AOT compiling.
16864
16865         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
16866         mono_jit_info_table_find () etc. when running under valgrind.
16867
16868         * inssel.brg: Fix warnings.
16869
16870         * mini-exceptions.c: Fix warnings.
16871
16872 2005-01-31  Martin Baulig  <martin@ximian.com>
16873
16874         * driver.c (compile_all_methods_thread_main): Don't try to compile
16875         generic methods or anything which has type parameters.
16876
16877 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
16878
16879         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
16880
16881         * TestDriver.cs: Add --verbose flags.
16882
16883         * graph.c ssa.c: Fix 64 bit warnings.
16884         
16885         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
16886         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
16887         Fix 64 bit warnings.
16888
16889         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
16890         variable not spotted by gcc.
16891         
16892         * mini-amd64.c inssel-amd64.brg: Applied patch from  
16893         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
16894         X86_COMPARE_MEMBASE opcodes.
16895
16896         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
16897
16898 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
16899
16900         * *: MonoMethod->signature might be NULL now. You *MUST* use
16901         mono_method_signature.
16902
16903 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16904
16905         * driver.c (compile_all_methods_thread_main): Compile the methods
16906         without invoking cctors.
16907
16908 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16909
16910         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
16911         * basic-calls.cs: test for the above.
16912
16913 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16914
16915         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
16916         MonoJitInfo changes.
16917
16918 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
16919
16920         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
16921         eagerly if it contains dynamic methods.
16922         
16923         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
16924
16925         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
16926         trace, it is now computed by an icall from trace_ips.
16927         
16928         * mini-exceptions.c: Fix a warning.
16929
16930 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
16931
16932         * mini-exceptions.c: don't bother getting stack trace info if
16933         it's not going to be used.
16934
16935 2005-01-27  Raja R Harinath  <rharinath@novell.com>
16936
16937         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
16938         ssapre-mini-ops.h.
16939
16940 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
16941
16942         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
16943
16944         * aot.c: Avoid calling mono_method_get_header () if not needed.
16945
16946         * mini.h: Bump AOT file format version.
16947         
16948         * mini.c (mono_emit_native_call): Allocate a GOT var here.
16949
16950         * mini.c (mono_print_tree): Print more info for calls.
16951
16952 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
16953
16954         * declsec.h: Remove warning by adding missing include for marshal.h
16955
16956 2005-01-26  Martin Baulig  <martin@ximian.com>
16957
16958         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
16959         `ip' twice.
16960
16961 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
16962
16963         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
16964         flags.
16965
16966         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
16967
16968         * aot.c (mono_compile_assembly): Fix a warning.
16969
16970 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
16971
16972         * declsec.c: Look for security attributes on the original MonoMethod 
16973         (and not the wrapped one). This fix permissions on icalls.
16974
16975 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16976
16977         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16978
16979         * mini.c (mono_allocate_stack_slots): Add a fixme.
16980
16981         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16982
16983 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16984
16985         * inssel.brg: optimize casts of sealed types (more
16986         optimizations waiting for fixes in remoting).
16987
16988 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16989
16990         * inssel.brg (stmt): Add another dummy rule.
16991
16992         * driver.c: Fix warnings.
16993
16994         * driver.c (mono_main): If running under valgrind, instruct glib to use
16995         the system allocation functions so valgrind can track the memory
16996         allocated by the g_... functions.
16997
16998         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
16999
17000         * mini-ops.h: Add OP_DUMMY_STORE opcode.
17001
17002         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
17003
17004         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
17005         variables in try regions.
17006
17007         * mini.c (mini_method_compile): Don't disable optimizations on large
17008         methods when AOT compiling.
17009
17010         * mini.c (mono_allocate_stack_slots): New arch independent method to 
17011         allocate stack slots. Not yet used.
17012
17013 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
17014
17015         * debug-mini.c (mono_debug_close_method): Plug some leaks.
17016
17017 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
17018
17019         * mini-ppc.c: make the branch info relative as the code
17020         buffer can be reallocated.
17021
17022 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
17023
17024         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
17025         * driver.c: Removed the AOT/security restriction. Now initialize the
17026         security manager (in metadata) if --security is used.
17027         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
17028         rather than the pointer to declarative security, when AOT is used.
17029
17030 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
17031
17032         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
17033         basic blocks, reduced intrinsic exception throwing code size.
17034
17035 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
17036
17037         * driver.c (mini_usage): Reorder the usage screen.
17038
17039 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
17040
17041         * mini.c (mono_resolve_patch_target): Fix warning.
17042
17043 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
17044
17045         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
17046         previous patch.
17047
17048         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17049
17050         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
17051         breaks the amd64 build.
17052
17053         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
17054         register allocation. Fixes #71454.
17055
17056         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17057
17058         * arrays.cs: Add new regression test.   
17059
17060 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17061
17062         * ssapre.c: Turned usage of snprintf to GString.
17063         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
17064         (I left it on by mistake in my previous commit).
17065
17066 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
17067
17068         * mini.c, cfold.c, basic-calls.cs: preserve side effects
17069         on cond branch optimization (fixes bug# 71515).
17070
17071 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17072
17073         * abcremoval.c: Fixed bug 71062.
17074         * abcremoval.h: Likewise.
17075
17076 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17077
17078         * mini.c: Added a new functionality to optimize_branches, the removal
17079         of useless basic blocks, and fixed some problem in the removal of
17080         critical edges; some utility functions added for both purposes.
17081         * ssapre.c: Added complex expression support, and fixed bug 70637.
17082         * ssapre.h: Likewise.
17083         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
17084         enabled in SSAPRE.
17085         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
17086         * driver.c: Re-enabled SSAPRE.
17087
17088 2005-01-19  Martin Baulig  <martin@ximian.com>
17089
17090         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
17091         the result of mono_get_method_constrained().
17092
17093 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
17094
17095         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
17096         manager.
17097
17098 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
17099
17100         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
17101         be detected.  Fixes #59296.
17102
17103 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17104
17105         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
17106         which can happen. Fixes #71361.
17107
17108 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17109
17110         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
17111         manager.
17112
17113 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17114
17115         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
17116         appdomain-unload.exe to fail.
17117         
17118         * mini.c: Fix some memory leaks.
17119
17120 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
17121
17122         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
17123         Fixed bug and sped up some codepaths.
17124
17125 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17126
17127         * mini.c: Fix some memory leaks.
17128
17129         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
17130         conversion.
17131
17132         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
17133
17134         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
17135         #71320.
17136
17137         * iltests.il: Add regression test for #71320.
17138
17139 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
17140
17141         * mini.c (mono_codegen): Fix installation of profiler hooks.
17142
17143         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
17144
17145 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17146
17147         * mini.h, mini.c, cfold.c: optimize access to enum
17148         readonly fields, too. Eval conditional branches if possible
17149         to perform unreachable code removal in more cases.
17150
17151 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
17152
17153         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
17154
17155         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
17156         code manager.
17157
17158         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
17159         WinXP DEP. Fixes #71244.
17160
17161 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
17162
17163         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
17164
17165 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
17166
17167         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
17168
17169 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
17170
17171         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
17172         changes.
17173
17174         * mini.h: Bump AOT version.
17175
17176         * mini.h (MonoCompile): Change exvar to a hash table.
17177
17178         * mini.c: Allocate a separate exvar for each handler block.
17179
17180         * mini.c: Get rid of the computation of filter_lengths, its not needed.
17181
17182         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
17183         ex var with the pending exception and only throw if the two are equal.
17184         Fixes #68552.
17185         
17186         * exceptions.cs: Add tests for rethrow and nested catch clauses.
17187
17188         * mini-x86.c: Fix warnings.
17189
17190         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
17191         used by all the ports now.
17192
17193         * aot.c: Add write-symbols and save-temps options.
17194
17195 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17196
17197         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
17198
17199 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
17200
17201         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
17202         operations.
17203
17204         * tramp-s390.c: Check vtable slot belongs to the domain.
17205
17206         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
17207         as per other platforms.
17208
17209         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
17210
17211 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
17212
17213         * driver.c: we don't run the Main() code in a subthread anymore.
17214
17215 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
17216
17217         * mini.c: added experimental rtc support in the statistical
17218         profiler: if the user has the permission, more accurate statistics
17219         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
17220         The MONO_RTC value must be restricted to what the linux rtc allows:
17221         power of two from 64 to 8192 Hz.
17222
17223 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17224
17225         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
17226
17227 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
17228
17229         * mini-ppc.c: better icache flush for smp.
17230
17231 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
17232
17233         * mini-amd64.c (emit_move_return_value): Fix memory leak.
17234
17235         * mini-x86.c (get_call_info): Add the get_call_info () code from the
17236         amd64 port, not yet used.
17237
17238 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17239
17240         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
17241         a struct type.
17242
17243 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
17244
17245         * driver.c: Added --security option to activate the security manager.
17246         Right now this will allow code generation for declarative demands and
17247         is disabled when AOT is specified.
17248         * mini.c: Add code generation for declarative security demands.
17249         * mini.h: Add mono_use_security_manager as an extern gboolean.
17250
17251 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17252
17253         * aot.c (mono_compile_assembly): Speed up compilation a bit by
17254         emitting more dense assembly code.
17255
17256         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
17257         exception throwing stuff.
17258
17259 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
17260
17261         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
17262         dead code.
17263
17264         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
17265         left in by mistake.
17266
17267         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
17268         fixed.
17269
17270         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
17271
17272         * tramp-*.c: Only patch vtable slots if the object is in the current
17273         domain. Fixes appdomain-unload.exe.
17274
17275         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
17276         
17277         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
17278         x86 branch.
17279
17280 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17281
17282         * mini.c (reverse_branch_op): New helper function.
17283
17284         * mini.c (optimize_branches): Run the new optimization only on 
17285         platforms which support it. Also reverse all kinds of branches.
17286
17287         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
17288
17289         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
17290         a throw statement.
17291
17292         * mini.c (optimize_branches): Reverse not-equals branches if the false
17293         bblock is a throw. This happens a lot of time with argument checking in
17294         corlib.
17295
17296         * mini.c (mono_codegen): Add support for placing basic blocks after
17297         the function epilogue.
17298
17299         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
17300         function epilogue.
17301         
17302 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
17303
17304         * mini.c (setup_stat_profiler): Only set this up if the platform
17305         supports ITIMER_PROF.
17306
17307 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17308
17309         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
17310         previous patch.
17311
17312         * inssel.brg: Fix a warning.
17313
17314 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
17315
17316         * mini.c: added support for statistical profiler 
17317         (run with: --profile=default:stat).
17318
17319 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
17320
17321         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
17322
17323         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
17324
17325         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
17326         related to global registers from the amd64 port.
17327
17328 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
17329
17330         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
17331
17332         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
17333         with global registers.
17334         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
17335
17336         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
17337
17338 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
17339
17340         * debug-mini.c (encode_value): Fix off-by-one.
17341
17342         * aot.c (encode_value): Likewise.
17343
17344         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
17345
17346 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
17347
17348         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
17349         AOT.
17350
17351         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
17352         
17353         * aot.c (emit_method_info): Increase size of temp buffer.
17354
17355         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
17356         the AOT case.
17357
17358 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
17359
17360         * aot.c (emit_method_info): Fix build.
17361         
17362         * aot.c: Further rework of the AOT file format to reduce the size of
17363         the method info data.
17364
17365         * mini.h: Bump AOT file format version.
17366
17367 2004-12-27  Martin Baulig  <martin@ximian.com>
17368
17369         * mini.c (mini_get_method): New static method; call
17370         mono_get_method_full() and mono_get_inflated_method().
17371         (mono_method_to_ir): Use mini_get_method() instead of
17372         mono_get_method_full(). 
17373
17374 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
17375
17376         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
17377
17378 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
17379
17380         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
17381
17382         * inssel-amd64.brg: Add some optimization rules.
17383
17384 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
17385
17386         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
17387         standard not GC'd stuff is fine.
17388
17389 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
17390
17391         * aot.c: Rework the AOT file format to get rid of most of the global
17392         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
17393
17394         * mini.h: Bump AOT file format version.
17395         
17396 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
17397
17398         * mini.h: Bump AOT file format version.
17399
17400         * aot.c (mono_aot_is_got_entry): New function to determine if an 
17401         address is inside a GOT.
17402
17403         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
17404
17405         * cpu-pentium.md: Increase the maximum size of some instructions which
17406         might involve a got access.
17407         
17408         * mini.c (get_method_from_ip): Another debug helper function.
17409
17410         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
17411         when got var accesses are created during the decompose phase.
17412
17413         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
17414
17415         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
17416         argument mini_compile_method and to MonoCompile, and use this to
17417         determine whenever a given method is compiled for AOT. This allows the
17418         other methods compiled during AOT compilation to be free of AOT stuff,
17419         so the backends does not need to add special support for them by
17420         creating a fake GOT etc.
17421
17422         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
17423         longer needed.
17424
17425 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17426
17427         * mini.c (mono_method_to_ir): It turns out that some of the
17428         x-appdomain wrappers are lax with types, so just ignore this for
17429         all wrappers.
17430
17431         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
17432         at the vtable->klass. If it is non-shared code we can just use the
17433         vtable.
17434
17435 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
17436
17437         * mini-ppc.c: access MonoDomain from tls, too.
17438
17439 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
17440
17441         * declsec.c: Removed unused variable (and related warning ;-)
17442
17443 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17444
17445         * iltests.il: New test for LDELEMA on an array of ref types.
17446
17447         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
17448         all ldelema's on reftypes.
17449         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
17450         it was the wrong place to put it.
17451
17452         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
17453         register to pop to make this cleaner, at the request of Paolo.
17454
17455 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
17456
17457         * mini-ops.h (OP_GETHASHCODE): New op.
17458
17459         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
17460
17461         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
17462         operation.
17463
17464         For a microbenchmark, this reduces the cost of Hashtable.get_Item
17465         by 25%.
17466         
17467         * mini-x86.c (mono_arch_output_basic_block): Rather than
17468
17469         add ebp, 4
17470
17471         Emit
17472
17473         pop edx
17474
17475         The first is 3 bytes while the second is 1. This saves 36 kb on
17476         mscorlib, quite a big saving. When bootstraping mcs, I was able to
17477         see a small boost because of icache locality.
17478
17479         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
17480
17481 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
17482
17483         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
17484         started code sharing with the generic code.
17485
17486 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
17487
17488         * mini-ppc.c, cpu-g4.md: added code for direct access to
17489         tls data slots.
17490
17491 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
17492
17493         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
17494          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
17495         to OP_TLS_GET.
17496
17497 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
17498
17499         * declsec.c|h: Added functions to cache the declarative stack modifiers
17500         in MonoJitInfo and to create a security frame from a MonoJitInfo 
17501         structure.
17502         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
17503         created. Register internal calls for System.Security.SecurityFrame::
17504         _GetSecurityFrame and _GetSecurityStack.
17505         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
17506         the definitions for the new stack walk/callback mechanism.
17507         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
17508         first security frame for LinkDemands and InheritanceDemands) and
17509         GetSecurityStack for Demands. Both use the new mono_walk_stack code
17510         from lupus.
17511         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
17512         walk initialization (lupus).
17513
17514 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
17515
17516         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
17517         idiom.
17518         (handle_loaded_temps): Do not create a temporary variable for
17519         things that we know are temps. They will never be modified.
17520         (mono_spill_call): Set MONO_INST_IS_TEMP
17521         (mono_emulate_opcode): ditto
17522         (emit_tree): ditto
17523         (mono_method_to_ir.CEE_DUP): ditto
17524
17525 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
17526
17527         * mini.c (type_to_eval_stack_type): Make this handle the void type
17528         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
17529         (emit_tree): use ip_in_bb to special case some common idioms
17530         Update all callers to pass in the IP.
17531         (mono_method_to_ir): Make CEE_CALL* do the above as well.
17532
17533         This gives us a nice 2% speedup in mcs bootstrap.
17534
17535         * mini-x86.c (peephole_pass): Peephole pass to make
17536         mov  [foo], eax
17537         push [foo]
17538
17539         into
17540
17541         mov [foo], eax
17542         push eax
17543
17544         * mini.c (ip_in_bb): new method.
17545         (mono_method_to_ir): use this method rather than doing the hash
17546         lookup ourselves.
17547
17548         * linear-scan.c (mono_linear_scan): When expiring actives, you
17549         don't need to keep around variables that expire on this
17550         instruction. This makes it so that:
17551              a = b + 1
17552         will turn into:
17553              store (ebx add (ebx, 1))
17554         which will become
17555              add ebx, 1
17556
17557 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
17558
17559         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
17560         combination to avoid doing two copies. Fix up problems with previous
17561         patch.
17562
17563         * mini.c: Fix 64 bit warnings.
17564
17565         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
17566
17567 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
17568
17569         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
17570         changes from the x86 code.
17571
17572         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
17573
17574 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
17575
17576         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
17577         throwing code to reduce its size, unify the AOT and non-aot code and 
17578         get rid of relocations in the AOT case.
17579
17580         * mini-x86.h mini.c exceptions-x86.c 
17581         (mono_arch_get_throw_corlib_exception): New arch specific function to 
17582         raise corlib exceptions which doesn't require relocations in the 
17583         caller.
17584
17585         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
17586
17587 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
17588
17589         * mini.c (mono_emit_method_call): Only allocate the got var when it is
17590         needed.
17591
17592         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
17593         in the AOT case.
17594
17595 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17596
17597         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
17598         with add function when used from Inc/dec atomic 
17599         functions. Re-enabled optimization on x86.
17600         * mini-ops.h: renamed atomic_add functions to
17601         allow _add to match the Interlocked::Add and
17602         _add_next to match Interlocked::Inc/Dec.
17603
17604 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
17605
17606         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
17607         linking of BBs to the end BB, and enabled SSAPRE also with
17608         consprop and copyprop (which was prevented by that bug).
17609
17610 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17611
17612         * mini-x86.c: disabling the Interlocked optimizing code. 
17613
17614 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
17615
17616         * aot.c (load_aot_module): Move reading of got_addr after the AOT
17617         file version check.
17618         
17619 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17620
17621         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
17622         interlocked optimization due lack of support on x86, rewrote 
17623         exchange to take into account that base may be in eax.
17624         
17625         xsp works again; activated Interlocked optimizing code.
17626         
17627 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
17628
17629         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
17630
17631 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
17632
17633         * mini-ops.h: Add new opcodes.
17634
17635         * mini.h: Add new patch types. Add got_var to MonoCompile.
17636
17637         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
17638         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
17639         make it work with all kinds of patchable code.
17640
17641         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
17642         address of the GOT, and referencing entries in the GOT.
17643
17644         * mini.c: Add code to load the GOT address if needed by an opcode.
17645
17646         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
17647         independent AOT code on the x86 using an elf-style Global Offset Table.
17648
17649 2004-12-14  Raja R Harinath  <rharinath@novell.com>
17650
17651         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
17652
17653 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17654
17655         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
17656         when running xsp.
17657
17658 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
17659
17660         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
17661         of Interlocked:Increment/Decrement/Add as inline ops.
17662         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
17663
17664 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
17665
17666         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
17667         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
17668
17669 2004-12-12  Duncan Mak  <duncan@ximian.com>
17670
17671         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
17672         again. `patch_info->table_size' is no longer valid after Zoltan's
17673         commit #37636.
17674
17675 2004-12-12  Martin Baulig  <martin@ximian.com>
17676
17677         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
17678         if we are the "real" method, ie. not an inlined method inside it.
17679
17680 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
17681
17682         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
17683         before we look in the special fields table. This fixes
17684         ../tests/thread-static-init.cs.
17685
17686 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17687
17688         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
17689         for Array get_Rank and get_Length. Fixes bug #70465.
17690
17691 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
17692
17693         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
17694         separate structure to reduce the size of MonoJumpInfo.
17695
17696 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
17697
17698         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
17699
17700 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
17701
17702         * mini.c (mini_get_inst_for_method): Changed to allow ports
17703         to return a MonoInst instead of opcode 
17704         (renamed mini_get_opcode_for_method to better reflect the new functionality)
17705         
17706         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
17707         Allow ports to return a created MonoInst instead of op-code, will enable
17708         new optimizations.
17709         (renamed mini_get_opcode_for_method to better reflected the functionality)
17710
17711 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
17712
17713         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
17714
17715 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
17716
17717         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
17718         Fixes #69985.
17719
17720 2004-12-08  Martin Baulig  <martin@ximian.com>
17721
17722         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
17723         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
17724
17725 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
17726
17727         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
17728         correctly.
17729
17730         * exceptions.cs: Disable some tests which depend on properties of x86 fp
17731         arithmetic.
17732
17733 2004-12-08  Raja R Harinath  <rharinath@novell.com>
17734
17735         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
17736
17737 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
17738
17739         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
17740         bug introduced by the previous patch.
17741
17742 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
17743
17744         * mini-ppc.c, objectc.cs: handle large structs passed by value
17745         (fixes bug #69972).
17746
17747 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
17748
17749         * mini-ppc.c: OP_ARGLIST implementation from
17750         Geoff Norton  <gnorton@customerdna.com>.
17751
17752 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
17753
17754         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
17755         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
17756
17757 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
17758
17759         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
17760
17761 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17762
17763         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
17764         support.
17765
17766 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
17767
17768         * mini-sparc.c: Zero out localled-ed memory.
17769
17770         * iltests.il: Add tests for zeroing out localloc-ed memory.
17771
17772 2004-12-04  Martin Baulig  <martin@ximian.com>
17773
17774         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
17775         mono_method_get_signature_full().       
17776
17777 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
17778
17779         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
17780         and some utility functions (always for SSAPRE), integrated SSAPRE.
17781         * mini.h: Likewise.
17782         * driver.c: Added ssapre option.
17783         * ssa.c: Small fix on OP_ARG handling.
17784         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
17785         * Makefile.am: Likewise.
17786
17787 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
17788
17789         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
17790         now in the xp code.
17791
17792         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
17793         icall.
17794
17795 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17796
17797         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
17798         
17799         * cpu-s390.md : Increase instruction length of oparglist.
17800
17801         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
17802
17803 2004-11-30  Martin Baulig  <martin@ximian.com>
17804
17805         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
17806         virtual generic methods.  We call a special helper_compile_generic_method()
17807         icall to retrieve the method from the vtable, inflate and compile
17808         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
17809
17810         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
17811
17812 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
17813
17814         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
17815
17816 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
17817
17818         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
17819         Fixes #69929.
17820
17821 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
17822
17823         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
17824         platforms with PIC aot.
17825
17826 2004-11-28  Martin Baulig  <martin@ximian.com>
17827
17828         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
17829         Fixes gen-112.cs.
17830
17831 2004-11-28  Martin Baulig  <martin@ximian.com>
17832
17833         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
17834         the result of mono_type_get_underlying_type() to check whether
17835         we're byref.
17836
17837 2004-11-26  Martin Baulig  <martin@ximian.com>
17838
17839         * mini.c
17840         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
17841         in the g_assert().
17842
17843 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
17844
17845         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
17846         the same way as the other arguments so they won't get clobbered.
17847
17848         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
17849         calls through R11 since it is clobbered by the trampoline code.
17850
17851 2004-11-26  Raja R Harinath  <rharinath@novell.com>
17852
17853         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
17854         pick up in-tree mscorlib.dll.
17855
17856 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
17857
17858         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
17859
17860         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
17861         runtime data/code are now stored in a table similar to the GOT in ELF. 
17862         This allows the code itself to be position independent.
17863
17864         * aot.c: Fix loading of referenced assemblies after the lazy assembly
17865         loading changes.
17866
17867         * aot.c: Attach ELF type (object/function) directives to all global
17868         symbols.
17869
17870         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
17871
17872         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
17873
17874         * mini-amd64.h: Turn on PIC AOT code.
17875
17876         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
17877         returning the offset within an OP_AOTCONST instruction where the GOT
17878         offset needs to be added.
17879
17880         * mini.h: Bump AOT file format version.
17881
17882 2004-11-25  Martin Baulig  <martin@ximian.com>
17883
17884         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
17885         uninflated generic methods.
17886
17887 2004-11-25  Martin Baulig  <martin@ximian.com>
17888
17889         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
17890
17891 2004-11-24  Martin Baulig  <martin@ximian.com>
17892
17893         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
17894         original klass (this only applies for generic instances).
17895
17896 2004-11-24  Martin Baulig  <martin@ximian.com>
17897
17898         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
17899         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
17900         that array).
17901
17902 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
17903
17904         * mini.c (mono_method_to_ir): Disable inlining for methods containing
17905         localloc. Fixes #69678.
17906
17907         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
17908         
17909 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
17910
17911         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
17912         used SSE registers on pinvoke calls. Fixes #69774.
17913
17914 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
17915
17916         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
17917         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
17918
17919 2004-11-23  Raja R Harinath  <rharinath@novell.com>
17920
17921         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
17922         Refer directly to the mcs/ tree.
17923
17924 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17925
17926         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
17927         Check if a trampoline for a synchronized method is required. 
17928
17929 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
17930
17931         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
17932         with localloc if needed. Throe arithmetric exception in
17933         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
17934         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
17935
17936 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
17937
17938         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
17939         types before switching on type.  Fixes #69622.
17940
17941 2004-11-19  Raja R Harinath  <rharinath@novell.com>
17942
17943         * Makefile.am (check-local): New.  Integrate into 'make check'.
17944         (MCS,RUNTIME): Define using in-tree mono and mcs.
17945         (ILASM): New.
17946         (%.exe): Use $(ILASM).
17947
17948 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
17949
17950         * mini-ppc.c: adjust initial prolog size (bug #69691).
17951
17952 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
17953
17954         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
17955         #69664.
17956
17957 2004-11-17  Raja R Harinath  <rharinath@novell.com>
17958
17959         * Makefile.am (clean-local): Rename from 'clean'.
17960
17961 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17962
17963         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
17964         to mono_arch_is_int_overflow. 
17965         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
17966         SIGFPE events.
17967
17968 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
17969
17970         * declsec.c|h: New files to support declarative security attributes.
17971         Added function to check if a method has (applicable) security.
17972         * mini.c|h: Add check for declarative security attributes in
17973         mono_method_check_inlining.
17974         * Makefile.am: Added declsec.c and declsec.h to the build.
17975
17976 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
17977
17978         * mini.c, mini.h: update to keep dynamic code info per-domain.
17979
17980 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
17981
17982         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
17983         (mini_init): Get rid of it from here too.
17984
17985 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
17986
17987         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
17988         implemented OP_RETHROW (patch by Geoff Norton
17989         <gnorton@customerdna.com>).
17990
17991 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
17992
17993         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
17994         between appdomains.  Fixes appdomain-unload on PPC.
17995
17996 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
17997
17998         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17999         mini-exceptions.c: handle the new wrapper types.
18000         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
18001         token value as a MonoClass* when compiling a wrapper.
18002         mono_jit_create_remoting_trampoline now takes an additional
18003         MonoRemotingTarget parameter.
18004         
18005 2004-11-10  Martin Baulig  <martin@localhost>
18006
18007         * mini.c (mono_method_to_ir): Use `generic_container->context'
18008         rather than creating a new one.
18009
18010 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18011
18012         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
18013
18014         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
18015
18016 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
18017
18018         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
18019         the experimental aot cache stuff.
18020
18021 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18022
18023         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18024         mini-exceptions.c: update to exception clause structure changes.
18025
18026 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18027
18028         * exceptions-x86.c (throw_exception): Fix warnings.
18029
18030         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
18031         for OP_RETHROW.
18032
18033 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18034
18035         * exceptions-sparc.c (get_throw_exception): Really fix this.
18036
18037 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
18038
18039         * tramp-*.c: we no longer support icalls without wrappers, so
18040         a bit of code can be removed here
18041
18042 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
18043
18044         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
18045         patch.
18046
18047         * cpu-sparc.md: Add op_rethrow.
18048
18049         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
18050
18051         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
18052
18053         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
18054         * mini-ops.h: Add OP_RETHROW.
18055
18056         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
18057
18058         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
18059
18060 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
18061         
18062         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
18063         Makes the output much easier to read
18064
18065 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
18066
18067         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
18068         prevents another huge leak when compiling with ssa. Secondly, the
18069         performance of doing this rather than freeing the lists is much
18070         better. GList does a lock every time you allocate a list link,
18071         so that it can use a memory pool. So, it is better to just use
18072         a memory pool of our own.
18073         
18074         * ssa.c, linear-scan.c: replace g_list_remove_link with
18075         g_list_delete.  The remove one does not free the GList, so we were
18076         leaking memory. On -O=all --compile-all with corlib, this cut down
18077         3 MB of allocations.
18078
18079 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
18080
18081         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
18082
18083         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
18084
18085         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
18086         into a new function mono_create_jit_trampoline ().
18087
18088 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
18089
18090         * trace.c (get_spec): Allow tracing of classes without a namespace.
18091
18092 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
18093
18094         * mini.c: Fix pointer overwrite in mini_method_compile.
18095
18096 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
18097
18098         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
18099         The darwin ABI needs some special handling for 1 and 2 byte structs
18100         Lets use lbz/lhz instead of lwz everywhere.
18101         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
18102         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
18103         Use stb/sth for the former, and put the latter always on stack instead of in
18104         argument registers.
18105
18106 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
18107
18108         * trace.c (is_filenamechar): Add '_'.
18109
18110 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
18111
18112         * mini-s390.c: Fix prolog length to allow for large trace requirements.
18113
18114         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
18115
18116 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
18117
18118         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
18119         depends on libmonogc. Fixes #68805.
18120
18121 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
18122
18123         * mini.c (mono_jit_free_method): Provide extra information for
18124         this error.  Currently this leaks, but will be turned into a
18125         developer option in the future.
18126
18127 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
18128
18129         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
18130
18131 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
18132
18133         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
18134         boundary. Fixes reading of PATCH_INFO_R4 and R8.
18135         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
18136
18137 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
18138
18139         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
18140         trampolines for AOT code.
18141
18142 2004-10-22    <vargaz@freemail.hu>
18143
18144         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
18145         constructed types. Fixes #68136.
18146
18147 2004-10-21  Martin Baulig  <martin@ximian.com>
18148
18149         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
18150         if it returns true, unwind the stack to the call instruction.
18151
18152 2004-10-21    <vargaz@freemail.hu>
18153
18154         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
18155
18156         * mini.h: Bump AOT version number.
18157
18158         * objects.cs: Add another test for unbox trampolines.
18159
18160         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
18161         valuetype methods.
18162
18163 2004-10-20    <vargaz@freemail.hu>
18164
18165         * driver.c: Add SHARED to the set of optimizations tested.
18166
18167         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
18168
18169         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
18170         used by CEE_NEWARR.
18171
18172         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
18173
18174 2004-10-20  Martin Baulig  <martin@ximian.com>
18175
18176         * mini-exceptions.c (mono_handle_exception): Call
18177         mono_debugger_handle_exception() to tell the debugger about
18178         catch/finally clauses.
18179
18180 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
18181
18182         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
18183
18184         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
18185         #68447.
18186
18187 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
18188
18189         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
18190         methods as their native size, fixed bug #57543, #57545.
18191         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
18192         This saves a temporary register and mullw call down into 1 (minor perf
18193         increase for cases like sum = sum * 5;  This use to translate into:
18194             li r11,5
18195             mullw r28,r28,r11
18196         It now translates to
18197             mulli r28,r28,5
18198
18199 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
18200
18201         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
18202         #68388.
18203
18204 2004-10-11  Martin Baulig  <martin@ximian.com>
18205
18206         * mini.c (mono_method_to_ir): If we're a generic method, get the
18207         MonoGenericContainer from our MonoMethodNormal and create a
18208         MonoGenericContext from it.
18209
18210 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
18211
18212         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
18213
18214         * basic-long.cs: Add test for checked i8->i2 cast.
18215
18216 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18217
18218         * inssel-ppc.brg: added a couple of speedup rules.
18219
18220 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
18221
18222         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
18223         to speed up rebuilds.
18224
18225 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18226
18227         * mini-s390.c: Minor fix to OP_OR_IMM.
18228
18229 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
18230
18231         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
18232         better. Fixes appdomain-unload.exe on sparc.
18233
18234 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
18235
18236         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
18237         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
18238         see bug 67324.
18239
18240 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
18241
18242         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
18243
18244 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
18245
18246         * mini.c: Always generate a field read/write wrapper for members
18247         of the class MarshalByRefObject since the actual instance could
18248         be a CBO.
18249
18250 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
18251
18252         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
18253
18254 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
18255
18256         * driver.c mini.h trace.c: Move the setting of the main assembly into
18257         a separate function called mono_trace_set_assembly () and call it after
18258         actually loading the main assembly. Fixes #66872.
18259
18260 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
18261
18262         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
18263         using the code manager.
18264
18265 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
18266
18267         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
18268
18269 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
18270
18271         * cpu-amd64.md: Fix bug in previous patch.
18272         
18273         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
18274         #66650.
18275
18276 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
18277
18278         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18279         mini-exceptions.c: updates for changed stack walk interface.
18280
18281 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18282
18283         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
18284
18285 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
18286
18287         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
18288
18289 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
18290
18291         * driver.c (mini_regression_list): Do not call mono_assembly_close 
18292         since assemblies can't be unloaded.
18293         
18294 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18295
18296         * cpu-amd64.md: Fix more instruction lengths.
18297
18298         * cpu-amd64.md: Fix lengths of some instructions.
18299
18300 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
18301
18302         * inssel.brg: Make the array ldelema check aot friendly.
18303
18304 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18305
18306         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
18307
18308         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
18309
18310 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
18311
18312         * mini-x86.c: Fix build.
18313
18314         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
18315         mono_type_get_underlying_type () helper function to simplify code.
18316         
18317 2004-09-09  Martin Baulig  <martin@ximian.com>
18318
18319         * mini-amd64.c: Don't access `type->data.klass' directly, call
18320         mono_class_from_mono_type() instead since the type may be a
18321         generic instance.
18322
18323 2004-09-09  Martin Baulig  <martin@ximian.com>
18324
18325         * mini-amd64.c (get_call_info): Fix support for generic instances.
18326         (add_valuetype): Use mono_class_from_mono_type() to get the class
18327         since we can be a generic instance.
18328
18329 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
18330
18331         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
18332
18333 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18334
18335         * liveness.c: reset spill costs on each scan: bug 62107
18336
18337 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
18338
18339         * exceptions-sparc.c (mono_arch_find_jit_info): remove
18340         unnecessary line that doesn't compile
18341
18342 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
18343
18344         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
18345         trampolines, make them call an error function so people can fix their
18346         code.
18347
18348 2004-09-06  Martin Baulig  <martin@ximian.com>
18349
18350         * mini.c (mono_method_to_ir): When initializing locals, handle a
18351         generic instances like a valuetype if it's a valuetype and like a
18352         class if it's a class.
18353
18354 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18355
18356         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
18357         stack. Fixes #64674.
18358
18359         * exceptions.cs: Add test for unwinding of call arguments.
18360
18361 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
18362
18363         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
18364         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
18365         set the carry/borrow flag). The sparc and s390 implementations
18366         can now use optimized versions (and simplify the code). ppc bugfixes.
18367
18368 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18369
18370         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
18371
18372 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
18373
18374         * inssel-amd64.brg: Remove leftover 32 bit rule.
18375
18376         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
18377
18378 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
18379
18380         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
18381         mono_arch_find_jit_info functions into a new function. Fix a memory
18382         leak.
18383
18384         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
18385         refactored code.
18386         
18387 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18388
18389         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
18390         as well.
18391         
18392         * exceptions.cs: Add array size tests.
18393
18394         * mini.c: Allocate a separate icall wrapper for each arity of 
18395         mono_array_new_va. Fixes #59509.
18396
18397         * exceptions.cs: Add testcase for 64578.
18398
18399         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
18400
18401         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
18402         
18403 2004-09-02  Martin Baulig  <martin@ximian.com>
18404
18405         * mini.c (mono_method_to_ir): When initializing the locals, call
18406         handle_initobj() on the generic instance itself, not its
18407         underlying type.
18408
18409 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18410
18411         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
18412         MonoJitInfo for dynamic methods.
18413
18414         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
18415
18416         * mini.c: Add support for freeing JIT data for dynamic methods.
18417         
18418 2004-09-01  Martin Baulig  <martin@ximian.com>
18419
18420         * mini-x86.c (is_regsize_var): Added support for generic
18421         instances.
18422         (mono_arch_emit_prolog): Make this compile again, use
18423         `x86_push_imm_template (code)'.
18424
18425 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
18426
18427         * mini-x86.c: make all push_imm instructions that get
18428         patched always emit the long form
18429
18430 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
18431
18432         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
18433         in a per-domain hash.
18434
18435         * mini-amd64.c (merge_argument_class_from_type): Handle generic
18436         types.
18437
18438 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
18439
18440         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
18441         work.
18442         
18443         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
18444         work.
18445
18446         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
18447         Beginnings of SSE2 support.
18448
18449         * exceptions.cs: Add more tests for checked int<->uint casts.
18450
18451 2004-08-28  Martin Baulig  <martin@ximian.com>
18452
18453         * mini-x86.c (mono_arch_instrument_epilog): Added support for
18454         generic instances.
18455
18456         * mini.c
18457         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
18458         Handle generic instances recursively.
18459
18460 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18461
18462         * iltests.il: test for conv.u8 on a constant
18463
18464 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18465
18466         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
18467         LCONV_x4 (shrun_32 (membase)).
18468
18469 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18470
18471         * inssel-x86.brg: c&p rules for push/setret of long
18472
18473 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
18474
18475         * inssel-x86.brg: c&p rules for compare (base, regvar) and
18476         compare (regvar, base)
18477
18478         * inssel-x86.brg: more burg love
18479
18480         * inssel.brg: more cleanup
18481
18482         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
18483
18484 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
18485
18486         * basic-long.cs, basic-calls.cs: new tests for optimization.
18487
18488 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
18489
18490         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
18491         patch.
18492
18493 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
18494
18495         * mini-amd64.c (read_tls_offset_from_method): Add another case.
18496         
18497 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
18498
18499         * inssel.brg (mini_emit_memcpy): use 
18500         NO_UNALIGNED_ACCESS to disable memcpy optimization
18501
18502 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
18503
18504         * mini-amd64.c: Handle generic types in various places.
18505
18506         * mini.c (mono_method_to_ir): Handle generic types in init locals.
18507
18508 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
18509
18510         * mini.c (handle_box): Fix warning.
18511
18512         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
18513
18514         * mini-amd64.h: Enable the emit_state optimization.
18515
18516         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
18517
18518         * mini-amd64.c: Add some new 64 bit peephole opts.
18519
18520         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
18521
18522         * cpu-amd64.md: sreg1 of div instructions must be %rax.
18523
18524         * mini-amd64.c: Register allocator fixes.
18525
18526         * mini.c: Add an optimization to emit_state to avoid allocation of new
18527         registers on some platforms.
18528
18529 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
18530
18531         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
18532
18533         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
18534         allocation. Fixes #63085.
18535
18536         * basic-long.cs: Add new regression test.
18537
18538         * mini-amd64.c: Register allocator improvements.
18539
18540 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
18541
18542         * mini-amd64.c (read_tls_offset_from_method): Add another code
18543         sequence.
18544
18545         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
18546         instruction sequence for nullifying class init trampolines.
18547
18548         * objects.cs: Add new regalloc test.
18549
18550         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
18551
18552 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
18553
18554         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
18555         
18556         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
18557         arguments.
18558
18559         * driver.c: Fix profiling after TLS changes.
18560         
18561         * driver.c (mono_main): Set mono_stats.enabled if needed.
18562
18563         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
18564         CEE_BOX.
18565
18566 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
18567
18568         * mini-x86.c: use a 1 op rather than a 2 op tls access
18569         instruction -> faster.
18570
18571 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
18572
18573         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
18574         x86 backend.
18575
18576 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
18577
18578         * exceptions-sparc.c (throw_exception): fix typo
18579
18580 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18581
18582         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
18583         set tree->dreg correctly with tls. Allow any
18584         register to be used.
18585
18586         * mini-x86.c (read_tls_offset_from_method): add new code
18587         generation pattern seen with GCC.
18588
18589
18590 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18591
18592         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
18593         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18594         exceptions-sparc.c: fix some performance issues in exception
18595         handling and setting of the stack trace for exceptions that were
18596         already thrown.
18597
18598 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18599
18600         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
18601         x86 backend.
18602         
18603         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
18604         registers.
18605
18606 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18607
18608         This patch inlines tls access, when possible.
18609         
18610         * mini.h: new arch functions for TLS intrinsics.
18611         All platforms updated with a stub.
18612
18613         * mini.c: use the new intrinsics
18614
18615         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
18616         arch specific intrinsic for tls variables
18617
18618 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18619
18620         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
18621         under windows.
18622
18623 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18624
18625         * mini.c: thread local allocation
18626
18627 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
18628
18629         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
18630
18631         * Makefile.am: Link against the static version of libmonogc.
18632         
18633         * Makefile.am: Link the static versions of the convenience libraries
18634         into the mono executable.
18635
18636         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
18637
18638 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
18639
18640         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
18641         on integer overflow.
18642
18643         * mini-amd64.c: Reorganize function call code.
18644
18645         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
18646
18647 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18648
18649         * inssel-x86.brg: use xor eax,eax.
18650         
18651         * basic.cs: new tests
18652
18653 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18654
18655         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
18656         in exception throwing code.
18657         
18658 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18659
18660         * inssel-x86.brg: use xor esi,esi.
18661
18662 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18663
18664         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
18665         can trace methods compiled during mini_init () too.
18666
18667         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
18668         CEE_CONV_U4.
18669
18670 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18671
18672         * Makefile.am: static link on x86 (r=zoltan)
18673
18674 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18675
18676         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
18677         code since it causes some programs to fail.
18678
18679 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
18680
18681         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
18682
18683 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
18684
18685         * mini.c: ovfops_op_map - add STACK_OBJ case for
18686         CONV_I 
18687         * basic.cs: add test_0_pin_string as test
18688         case for above.
18689
18690 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
18691
18692         * Makefile.am: build C# if srcdir != builddir
18693
18694 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18695
18696         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
18697         fall-through blocks.
18698
18699 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18700
18701         * driver.c: enable loop by default again and include abcrem in -O=all.
18702
18703 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
18704
18705         * iltests.il: Add some localloc tests.
18706
18707         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
18708
18709         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
18710         Fixes #62574.
18711
18712         * inssel-amd64.brg: Add some optimizations.
18713
18714         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
18715         for gcc-3.4.
18716
18717         * Makefile.am: Statically link mono against libmono on AMD64.
18718         
18719         * mini-amd64.c inssel-amd64.brg: Optimizations.
18720
18721 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
18722
18723         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
18724
18725         * tramp-amd64.c: Patch calling code in trampolines.
18726
18727 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
18728
18729         * mini-amd64.c: pinvoke struct passing fixes.
18730
18731 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
18732
18733         * mini-sparc.c: redo change, make mono_arch_cpu_init call
18734         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
18735
18736 2004-08-05  Duncan Mak  <duncan@ximian.com>
18737
18738         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
18739         CEE_LDELEM_ANY.
18740
18741 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18742
18743         * mini-amd64.c (emit_move_return_value): Move return value for normal
18744         calls too.
18745
18746 2004-08-05  Martin Baulig  <martin@ximian.com>
18747
18748         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
18749         `type->type'; just modify `type' itself when dealing with enums
18750         and generic instances.
18751         (check_call_signature): Make `simple_type' a `MonoType *'.
18752
18753 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18754
18755         * mini.c: Use OP_PADD to add offsets to addresses.
18756
18757         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
18758
18759 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
18760
18761         * mini-sparc.c (mono_arch_emit_epilog): fix check
18762         for folding last op into restore instruction
18763
18764 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18765
18766         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
18767         helper methods using the code manager.
18768         
18769         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
18770
18771         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
18772
18773 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18774         
18775         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
18776           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
18777
18778         * mini-s390.c: fix tail processing
18779
18780 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
18781
18782         * mini-ppc.c: mul.ovf.un exception name fix.
18783
18784 2004-08-03  Martin Baulig  <martin@ximian.com>
18785
18786         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
18787         instances; before jumping to `handle_enum', also modify `ptype'.
18788
18789 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
18790
18791         * cpu-sparc.md: fcall maximal length too small.
18792
18793 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
18794
18795         * mini-amd64.c mini.h: Add initial support for passing/returning 
18796         structures to/from pinvoked methods.
18797
18798 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
18799
18800         * mini-ppc.c: reg allocator fix.
18801
18802 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
18803
18804         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
18805
18806         * inssel.brg: Optimize memset on 64 bit machines.
18807
18808         * mini-amd64.c: Fix some vararg cases.
18809
18810 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18811
18812         * mini-s390.c: Corrected macro in emit_float_to_int
18813
18814         * s390-abi.cs: Tests to exercise the s390 ABI
18815
18816 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18817
18818         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
18819         caller saved regs.
18820
18821         * basic.cs: Add a test for add.ovf.un.
18822
18823 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
18824
18825         * mini-sparc.c: add case for OP_IDIV_UN
18826
18827 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18828
18829         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
18830         
18831         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
18832
18833 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
18834
18835         * basic.cs: regression tests.
18836
18837         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
18838         regressions.
18839
18840 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18841
18842         * basic.cs: Add a new test.
18843
18844         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
18845         and AOT. Various fixes and optimizations.
18846
18847         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
18848
18849 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
18850
18851         * mini-ppc.c: make sure temp regs are not used for global reg
18852         allocation.
18853
18854 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
18855
18856         * cpu-sparc.md: conv_i8 fix for 64bits
18857
18858         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
18859
18860 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
18861         
18862         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
18863         add opcode for cmp BYTE PTR [eax], imm.
18864
18865         * inssel.brg: Make memcpy and memset takes bases.
18866
18867 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18868
18869         * *-amd64.*: More AMD64 work.
18870         
18871 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18872
18873         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
18874         add a compare-not-equal opcode.
18875         
18876 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
18877
18878         * mini.c: Use mono_init_from_assembly instead of mono_init.
18879         
18880 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18881
18882         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
18883
18884         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
18885
18886         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
18887
18888         * inssel.brg: 64 bit fixes.
18889
18890         * mini.h (MonoCallInst): Add some AMD64 specific data.
18891
18892         * mini.h: Add some OP_P opcodes.
18893
18894 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18895
18896         * basic.cs: tests for 61797 and 61740
18897
18898 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
18899
18900         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
18901         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
18902
18903 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
18904
18905         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
18906
18907         * *-amd64*.*: Ongoing AMD64 work.
18908
18909 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
18910
18911         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
18912
18913         * *-amd64*: Ongoing AMD64 work.
18914
18915         * mini-arch.h: Add AMD64 support.
18916
18917         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
18918
18919         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
18920
18921         * mini-ops.h: Add new opcodes.
18922
18923         * Makefile.am: Add AMD64 support.
18924
18925         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
18926         rules into the inssel-long*.brg files.
18927
18928         * *-amd64.*: Add beginnings of AMD64 backend.
18929
18930 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
18931
18932         * mini.c (print_dfn): commenting out the code that prints
18933         the cil. With -O=deadce, this makes -v -v crash.
18934         
18935         * cpu-pentium.md: make checkthis have a length of 2
18936
18937 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
18938
18939         * mini-sparc.h: fix implementations of __builtin
18940         functions for Sun compiler for V9.
18941
18942 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
18943
18944         * mini.c: use the new stelem.ref wrapper
18945         * exceptions.cs, arrays.cs: new stelem.ref tests
18946
18947 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18948
18949         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
18950         new XSP should work with these changes).
18951
18952 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
18953         
18954         * inssel-{long32,x86,}.brg: trivial optimizations.
18955         
18956 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
18957
18958         * mini.c: load value when emitting box operation in
18959         constrained calls.
18960
18961 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
18962
18963         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
18964         is one byte shorter than cmp DWORD PTR [eax], 0.
18965
18966 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18967
18968         * inssel-ppc.brg: arguments on the stack are always
18969         relative to the stack pointer (spotted by Neale Ferguson).
18970
18971 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18972
18973         * exceptions-x86.c: delay appending the method name to the trace until
18974         after mono_jit_info_table_find is called, as this gets the real
18975         MonoMethod.
18976
18977 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
18978
18979         * aot.c: register roots
18980
18981 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18982
18983         * aot.c : I could just use PLATFORM_WIN32 flag.
18984
18985 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18986
18987         * aot.c : Reverting the previous fix. This time it broke linux build.
18988
18989 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18990
18991         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
18992
18993 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
18994
18995         * mini.c (handle_stack_args): Remove some more debugging code.
18996         
18997         * mini.c (handle_stack_args): Remove debug output left in by mistake.
18998
18999         * driver.c mini.h aot.c: Allow additional options to be specified with
19000         --aot and pass them to mono_compile_assembly.
19001
19002         * aot.c: Add experimental code to AOT compile all loaded assemblies
19003         on demand and save the code into a cache in the filesystem.
19004
19005         * aot.c: Add support for more wrapper methods.
19006         
19007         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
19008         58863.
19009
19010         * cpu-*.md: Remove removed opcodes.
19011
19012         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
19013         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
19014         related icalls to marshal.c.
19015
19016 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
19017
19018         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
19019
19020         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
19021
19022         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
19023
19024 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
19025         * liveness.c: If liveness is recomputated we need to reset the information
19026         for each variable. This way, if the liveness range has been narrowed
19027         by optimizations that happened after the last computation, we can return
19028         a smaller range.
19029         
19030         For example, if you have
19031         
19032         {
19033                 int i = 0;
19034                 
19035                 // Tons of code that does not affect i
19036                 
19037                 i = foo ();
19038                 ...
19039         }
19040         
19041         i = 0 is dead code and will be removed by SSA. However, when
19042         linear scan gets to the code, i will still appear to be live
19043         throughout the entire block. This prevents good register allocation.
19044
19045 2004-07-06  Martin Baulig  <martin@ximian.com>
19046
19047         * debug-mini.c (mono_debug_init_method): Allow
19048         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
19049         (mono_debug_add_icall_wrapper): New method.
19050
19051         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
19052
19053 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
19054
19055         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
19056         optimization.
19057
19058 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
19059
19060         * aot.c (mono_aot_load_method): Fix loading of debug info.
19061
19062 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19063
19064         * aot.c: Add logging support.
19065
19066 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19067
19068         * mini.h: Add prototype for mono_print_method_from_ip.
19069
19070         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
19071
19072         * inssel.brg: 64 bit fixes.
19073
19074         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
19075         inssel-long32.brg.
19076
19077         * Makefile.am: Add SPARC64 support.
19078
19079 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19080
19081         * aot.c: Fix alignment problems on 32 bit platforms.
19082
19083 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19084
19085         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
19086         SPARC64.
19087
19088         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
19089         problems.
19090
19091         * mini.h: Bump AOT file version. Some 64 bit fixes.
19092
19093 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19094
19095         * inssel-sparc.brg: Add new rule to avoid register moves.
19096
19097         * inssel.brg: Add ldind_to_load_membase helper function.
19098
19099 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
19100
19101         * mini.c: OffsetToStringData intrinsic.
19102         
19103 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19104
19105         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
19106
19107         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
19108         regression tests.
19109
19110         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
19111 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19112
19113         * mini.c: reinstated mono_compile_get_interface_var()
19114         on x86, too, since the change breaks the Gtk# build there as well.
19115
19116 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19117
19118         * driver.c: remove loop from the default optimizations: it seems to
19119         interact badly with some of the other options (see bug #60613).
19120
19121 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
19122
19123         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
19124         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
19125
19126 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
19127
19128         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
19129         vararg-using methods.
19130
19131 2004-06-21  Martin Baulig  <martin@ximian.com>
19132
19133         * mini/mini-exceptions.c
19134         (mono_handle_exception): Added `gpointer original_ip' argument.
19135         After calling mono_unhandled_exception(), call
19136         mono_debugger_unhandled_exception() and if that returns true,
19137         restore the context and return.
19138
19139 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19140
19141         * mini-ppc.c: prefer the use of relative branches so
19142         they won't need to be patched in aot code (patch from Patrick Beard).
19143
19144 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19145
19146         * aot.c: patch from Patrick Beard to make the output assembly
19147         more correct for the MacOSX assembler. Small tweak to
19148         generate sane images on Linux/PPC, too.
19149
19150 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19151
19152         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
19153         case until bug #59509 is fixed (shows up in #60332).
19154
19155 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19156
19157         * mini.c: make sure the needed wrappers are compiled, too, with
19158         precomp.
19159
19160 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
19161
19162         * driver.c: remove NPTL reference in --version output.
19163
19164 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19165
19166         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
19167         generate valid assembly for the Mach-O assembler.
19168
19169 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19170
19171         * driver.c: don't include abcrem in the all optimization specifier
19172         since it slows down jit compilation too much for now.
19173
19174 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
19175
19176         * mini.c: use BIGMUL only if both operands have the same signage.
19177         * iltests.il: Test for bug 60056. (errors related to signage in
19178         BIGMUL).
19179
19180         r=lupus.
19181
19182 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
19183
19184         * mini.c, aot.c: memory leak fixes.
19185
19186 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19187
19188         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
19189
19190 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
19191
19192         * Makefile.am: remove the -static hack completely, it links in
19193         statically glib as well.
19194
19195 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
19196
19197         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
19198         * exceptions.cs: make it compile with new mcs/csc.
19199
19200 2004-06-03 Massimiliano Mantione <massi@ximian.com>
19201         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
19202         and added relevant test case.
19203
19204 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19205
19206         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
19207         regressions in gtk-sharp.
19208
19209 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
19210
19211         * exceptions.cs: New regression tests.
19212
19213         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
19214
19215 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
19216
19217         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
19218
19219 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
19220
19221         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
19222
19223         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
19224
19225 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
19226
19227         * mini.c (mono_jit_runtime_invoke): Init class in this
19228         method instead of trusting mono_jit_compile_method to
19229         do the work (because wrappers can be in object class)
19230
19231 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
19232
19233         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
19234
19235         * basic-long.cs: New regression test.
19236
19237 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
19238
19239         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
19240         and div/rem checks.
19241
19242 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
19243
19244         * Makefile.am: fix miguel's change to build mono statically against
19245         libmono (track build dependencies).
19246
19247 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19248
19249         * cfold.c: Some glib versions do not have G_MININT32.
19250
19251 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
19252
19253         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
19254         with precision of tan, atan, sin and cos, and implemented related
19255         regressions tests (fixes bug 54467, but one new problem appeared and
19256         is not fixed yet).
19257
19258 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19259
19260         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
19261
19262         * exceptions.cs: Add test for constant folding && division by zero.
19263
19264         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
19265         since driver.c is in libmono too, so the optimization was useless.
19266
19267         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
19268         variable to driver.c so the compiler can emit more efficient code to
19269         access them.
19270
19271 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19272
19273         * Makefile.am: don't distribute generated inssel.[ch] files.
19274
19275 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
19276
19277         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
19278         into the default appdomain. Fixes #58707.
19279
19280         * jit-icalls.c: Remove the broken approximation for truncl, doing
19281         no conversion is better.
19282
19283         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
19284         Fixes #58863.
19285
19286 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19287
19288         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
19289         of the mcrxr instruction which is not available on some processors
19290         even if it's documented to be. Implement add and sub overflow correctly
19291         (still not complete for long unsigned). Speed up icalls a bit.
19292
19293 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
19294
19295         * mini.c (mono_jit_compile_method_with_opt): Make sure that
19296         we run .cctor in the current domain instead of target_domain.
19297         
19298         Fixes bug #58558, .cctor not being called in -O=shared.
19299
19300 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19301
19302         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
19303
19304 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
19305
19306         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
19307         which can be done with an imm8, do it that way.
19308         (mono_arch_output_basic_block): ditto for a jmp
19309         (mono_arch_emit_prolog): Computate maximum offset of a label.
19310
19311 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
19312
19313         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
19314         now tries to allocate prefered physical reg's for virtual
19315         regs. This reduces the number of emited spills/loads with
19316         20-30% on our core assemblies.
19317
19318 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19319
19320         * jit-icalls.c: truncl() is not needed and trunc() is
19321         the correct thing to do anyway (bug #58287).
19322
19323 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
19324
19325         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
19326         if available.
19327
19328 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
19329
19330         * driver.c: enable loop optimizations by default.
19331
19332 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19333
19334         * mini-x86.c: fix calc of max loop size when aligning loops start.
19335
19336 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
19337
19338         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
19339         the stack.
19340
19341 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
19342
19343         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
19344         should set carry.
19345
19346         * basic-long.cs: Add tests for add/subtract of immediates with carry.
19347
19348         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
19349         
19350         * mini.c (inline_method): Allways inline some wrappers even if the cost
19351         is too large. Fixes #58785.
19352
19353         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
19354         
19355 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
19356
19357         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
19358         (crichton@gimp.org). Beginning of support for sparc/linux.
19359
19360         * mini-sparc.c: Optimize retrieval of LMF address.
19361
19362 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
19363
19364         * exceptions-ppc.c:  handle alloca in methods with clauses.
19365
19366 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
19367
19368         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
19369
19370 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
19371
19372         * mini.c: Delegate most of the abort signal work to 
19373           mono_thread_request_interruption, which also handles Stop and Suspend
19374           states.
19375
19376 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
19377
19378         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
19379         supports the save/restore lmf opcodes.
19380
19381 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
19382
19383         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
19384         by gcc-3.4 as well.
19385
19386         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
19387
19388 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19389
19390         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
19391         methods which contain array accesses.
19392
19393         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
19394         boundaries. Fixes #58537.
19395
19396         * iltests.il: Add regression test for #58537.
19397
19398 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19399
19400         * mini-x86.c (mono_arch_local_regalloc): Last part of
19401         fix for bug #58633 (releasing register to early).
19402
19403 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
19404
19405         * basic-long.cs: Add new regression test.
19406
19407 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19408
19409         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
19410         register too early on the chain.
19411
19412 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19413
19414         * mini.c (create_helper_signature): Use a helper function to reduce
19415         the code which needs to be written. Also set the calling convention of
19416         icalls on windows. Fixes #57840.
19417
19418 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19419
19420         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
19421         exceptions-ppc.c: added helper function to get the instruction address
19422         from a signal handler context.
19423
19424 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19425
19426         * helpers.c: use g_get_tmp_dir. Invokes happyness 
19427         from gonzalo.
19428
19429 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19430
19431         * helpers.c: Add new env variable to pass args to objdump.
19432         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
19433
19434 2004-05-17  Radek Doulik  <rodo@ximian.com>
19435
19436         * Makefile.am (common_sources): added abcremoval.h so it get
19437         disted and daily mono packages on go-mono.com will build again
19438
19439 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
19440
19441         * abcremoval.c: Fixed coding style, added copyright header.
19442
19443         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
19444
19445         * mini.h: Added prototype for abc removal main function.
19446
19447         * build_relations_propagation_table.pl: Added copyright header.
19448
19449 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
19450
19451         * basic-long.cs: reg test for complex ceq_long bug.
19452
19453 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
19454
19455         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
19456         reg in long and clob case (bug #58343). Fixed/added comments.
19457
19458 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
19459
19460         * mini.c (mono_jit_runtime_invoke): Follow new convention
19461         of calling the invoke method with an function pointer.
19462
19463 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
19464
19465         * ChangeLog: Fix author of memory leak patch.
19466
19467 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
19468
19469         * Makefile.am: fix make dist as well...
19470
19471
19472 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
19473
19474         * cfold.c: Made so that conversions from pointer to int4 are no-ops
19475         on archs where pointers are 4 bytes long.
19476
19477         * Makefile.am: Added abcremoval.c source file.
19478
19479         * abcremoval.c: Added abcremoval.c.
19480
19481         * abcremoval.h: Added abcremoval.h.
19482
19483         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
19484
19485         * inssel.brg: Enabled bounds check removal.
19486
19487         * mini.c: Added support for abcrem optimization.
19488
19489         * mini.h: Added abcrem optimization label.
19490
19491         * driver.c: Added support for abcrem optimization.
19492
19493         * propagated_relations_table.def: Added propagated_relations_table.def.
19494
19495 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
19496
19497         * mini.c, cfold.c: fix style.
19498
19499 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19500
19501         * mini.c: handle issue with the low-level implementation of
19502         some long opcodes (bug #54209).
19503
19504 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
19505
19506         * basic.cs: test for my new cmov stuff.
19507
19508 2004-05-13      Patrik Torstensson
19509
19510         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
19511         opt and added peephole documentation.
19512
19513 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
19514
19515         * tramp-ppc.c: rewrote the generic trampoline code.
19516
19517 2004-05-11      Patrik Torstensson
19518
19519         * mini-x86.c: optimize long shl/shr asm code (one less branch)
19520
19521 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
19522
19523         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
19524
19525         * mini.h mini.c dominators.c: Applied patch from Derek Woo
19526         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
19527
19528         * mini.c: Add new icalls for AsAny marshalling.
19529
19530 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19531
19532         * tramp-ppc.c, mini-ppc.c: more cleanups.
19533
19534 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19535
19536         * mini.c: no warnings.
19537
19538 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19539
19540         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
19541
19542 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
19543
19544         * mini.c: In the thread abort signal handler, if the thread is in the
19545         process of being stoped, don't throw the Abort exception, just stop the
19546         thread.
19547
19548 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
19549
19550         * tramp-ppc.c: removed old code.
19551
19552 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19553
19554         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
19555         do some simple speed optimizations on ppc.
19556
19557 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
19558
19559         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
19560         and large offsets in load/store.
19561
19562 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
19563
19564         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
19565         it causes regressions.
19566
19567 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
19568
19569         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
19570         support.
19571
19572 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19573
19574         * jit-icalls.c: remove warnings.
19575         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
19576         speedups for unsafe code.
19577
19578 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
19579
19580         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
19581
19582 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
19583
19584         * basic-calls.cs: Add new regression test.
19585
19586         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
19587         more portable.
19588
19589         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
19590
19591         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
19592         is no longer used.
19593
19594 2004-05-06      Patrik Torstensson
19595
19596         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
19597         long reg allocation in any reg (not only eax:edx) and implemented 
19598         long shl/shr ops in asm instead of helpers.
19599
19600 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
19601
19602         * mini-sparc.h: Fix warnings.
19603
19604         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
19605         stack.
19606
19607         * mini-exceptions.c (mono_handle_exception): Call the filter in a
19608         separate statement for clarity.
19609
19610         * mini-sparc.c: Update status.
19611
19612 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
19613
19614         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
19615         here.
19616
19617 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19618
19619         * inssel-ppc.brg: another small pre-release workaround:
19620         we don't do overflow detection for long_sub_un.
19621
19622 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19623
19624         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
19625         (also works around a weird ppc bug: 57957).
19626
19627 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
19628
19629         * tramp-ppc.c: trampoline fixes.
19630
19631 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
19632
19633         * mini-ppc.c: fixed typos.
19634
19635 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19636
19637         * mini-ppc.c, exceptions-ppc.c: more code saves registers
19638         at the top of the stack. Fixed typos. Use a frame registers
19639         for all the methods with exception clauses.
19640
19641 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19642
19643         * exceptions-ppc.c: restore fp registers.
19644
19645 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19646
19647         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
19648         order from the stack top (moved the stack room to save the
19649         return value for trace after the param area). Fixed corruption
19650         in restoring registers on unwind.
19651
19652 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19653
19654         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
19655
19656 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19657
19658         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
19659         and prolog/epilog for methods that use it. Allow
19660         enough param area room for varargs methods. Fix miguel's
19661         breakage in exception handling.
19662
19663 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19664
19665         * Makefile.am: run genmdesc only on current arch.
19666
19667 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19668
19669         * exceptions-x86.c:
19670         * mini-x86.h: fix the build on windows.
19671
19672 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
19673
19674         * 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.
19675
19676         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
19677
19678         * mini-exceptions.c: New file.
19679         
19680         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
19681         Move some parts of the x86 exception handling code to an 
19682         arch-independent file so it can be shared with other ports.
19683
19684 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
19685
19686         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
19687
19688 2004-04-26  David Waite  <mass@akuma.org>
19689
19690         * driver.c: remove comma from end of enumeration declaration
19691
19692 2004-04-26  Jackson Harper  <jackson@ximian.com>
19693
19694         * driver.c: parse config file before loading first assembly. This
19695         allows the user gac to be enabled/disabled. 
19696         
19697 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
19698
19699         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
19700         simpler mechanism: we do not care what is encoded initially
19701         (branch absolute or relative), we care about the code and its
19702         target.  I kept the old code for reference for now.
19703
19704         The new code tries first to determine if the jump is anywhere in
19705         the -/+32 absolute meg range, if it succeeds, it encodes using the
19706         absolute branch;  If not, it tried to find something in the
19707         relative range, if not, it uses the handle_thunk code. 
19708
19709 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
19710
19711         * exceptions-ppc.c: use the correct ip register on macosx.
19712
19713 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
19714
19715         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
19716
19717 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
19718
19719         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
19720         Raise exception on integer divide by zero by hand since the hw
19721         doesn't support it. Handle NaNs in FP compares.
19722
19723 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
19724
19725         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
19726         code reducing duplication between the platforms and enabled
19727         signal exception handling (on linux for now).
19728
19729 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
19730
19731         * exceptions-ppc.c: more macosx support.
19732
19733 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19734
19735         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
19736
19737 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
19738
19739         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
19740
19741 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19742
19743         * iltests.il: more tests.
19744
19745 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
19746
19747         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
19748         vars as well.
19749
19750 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19751
19752         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
19753
19754 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
19755
19756         * liveness.c: Mark variables as volatile in all basic blocks reachable
19757         from exception clauses.
19758
19759 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
19760
19761         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
19762         inlining.
19763
19764 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19765
19766         * iltests.il, basic.cs: more tests for regalloc.
19767
19768 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19769
19770         * iltests.il: Some tests for register allocation modifications
19771         I have locally.
19772
19773 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
19774
19775         * exceptions.cs: Add regression test for bug #56782.
19776
19777         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
19778         original stack trace if an exception is rethrown. Fixes #56782. Oh,
19779         the beauty of fixing the same thing in 5 different files...
19780
19781 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
19782
19783         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
19784         methods.
19785
19786 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
19787
19788         * mini.c: Add support for STRWLPARRAY marshalling convention.
19789
19790 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19791
19792         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
19793         to init the context to setup the regs pointer).
19794
19795 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19796
19797         * exceptions-ppc.c: more exceptions work.
19798
19799 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19800
19801         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
19802         not allowed.
19803
19804 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
19805
19806         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
19807         can use the memory directly.
19808
19809         * cpu-pentium.md: Update documentation from a post from Zoltan. 
19810
19811         add x86_add_membase, x86_sub_membase, x86_mul_membase
19812
19813 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
19814
19815         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
19816         GENERAL_REGS they were also hardcoded for all PPC ports.
19817
19818         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
19819
19820         Remove hard-coded limit for floating point registers, use
19821         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
19822
19823         Notice that in MacOS X calling conventions you can fit a lot more
19824         floating point values in registers, so I should update the PInvoke
19825         test to excercise the passing of floating point values on the
19826         stack (currently broken).
19827         
19828 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
19829
19830         * tramp-ppc.c (create_trampoline_code): Added
19831         JUMP_TRAMPOLINE_SIZE. 
19832         (ppc_magic_trampoline): Follow the pattern from
19833         x86_magic_trampoline: if code is set to zero, return. 
19834         (create_trampoline_code): Always pass MonoMethod to the jump
19835         trampoline, before it was passing a null.
19836         (mono_arch_create_jump_trampoline): Implement the jump stub, could
19837         share the code with mono_arch_create_jit_trampoline. 
19838
19839         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
19840         implemented.
19841         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
19842         implemented.  
19843
19844         * cpu-g4.md: Added length for jmp instruction, the worst case
19845         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
19846         for save_lmf).
19847
19848 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
19849
19850         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
19851
19852 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
19853
19854         * mini.c: Only set bblock->real_offset when adding a new bblock, and
19855         before each IL instruction.
19856
19857         * mini.c (CEE_BOX): Fix warnings.
19858
19859 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19860
19861         * mini.c: removed a few unused vars and extra whitespace.
19862
19863 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
19864
19865         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
19866         checks.
19867         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
19868         index.
19869         (OP_GETCHR): use the above
19870         (CEE_LDELEMA): use the above.
19871
19872         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
19873         version of the generic impl.
19874         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
19875         (CEE_LDELEMA): use the above.
19876
19877 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19878
19879         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
19880         Fixes #56317.
19881
19882         * iltests.il: Added new regression test for #56317.
19883
19884 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19885
19886         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
19887         under NetBSD. Fixes #56450.
19888
19889         * liveness.c (update_gen_kill_set): Fix previous patch.
19890
19891 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19892
19893         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
19894
19895 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
19896
19897         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
19898         ldsfld and ldsflda.
19899
19900         * inssel-sparc.brg: Add more optimizations.
19901
19902         * mini-sparc.c: Replace multiply/divide with shifts if possible.
19903
19904 2004-04-01  Martin Baulig  <martin@ximian.com>
19905
19906         * mini.c (handle_box): New static function; moved the
19907         implementation of CEE_BOX here.
19908         (mono_method_to_ir): Added `constrained_call' variable.
19909         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
19910         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
19911         mono_method_get_constrained() to get the method.
19912
19913 2004-04-01  Martin Baulig  <martin@ximian.com>
19914
19915         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
19916         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
19917         (mono_method_to_ir): We don't need these macros anymore since
19918         mono_class_get_full() already takes care of it. 
19919
19920 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19921
19922         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
19923         use @function (as doesn't accept #function here) and check the return
19924         value of system and stop if fails.
19925
19926 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19927
19928         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
19929
19930 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
19931
19932         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
19933
19934         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
19935
19936         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
19937         #56223.
19938
19939         * basic-long.cs: Add test for negation of Int64.MinValue.
19940
19941 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
19942
19943         * mini-sparc.c: Update status.
19944
19945         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
19946
19947         * exceptions-sparc.c: Fix return value in filters.
19948
19949         * inssel-sparc.brg: Fix register allocation in some rules.
19950
19951 2004-03-28  Martin Baulig  <martin@ximian.com>
19952
19953         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
19954         if neccessary.  
19955
19956 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
19957
19958         * mini-x86.c (mono_arch_patch_code): Fix warnings.
19959         
19960         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
19961         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
19962         remove unused conv_u4 opcode.
19963
19964         * mini-x86.c: Remove valgrind workaround since it slows down things
19965         even when mono is not run under valgrind.
19966
19967 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
19968
19969         * mini-sparc.c: Update status.
19970
19971         * inssel-sparc.brg: Add some optimizations.
19972
19973         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
19974         future delay slot filling. Add support for varargs, tail calls and JMP.
19975
19976         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
19977         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
19978
19979         * inssel.brg: Fix register allocation in OP_ARGLIST.
19980
19981         * inssel.brg: Fix warnings.
19982
19983 2004-03-25  Martin Baulig  <martin@ximian.com>
19984
19985         * mini.c (inflate_generic_field): Removed.
19986         (mini_get_method): Removed, use mono_get_method_full(),
19987         (mini_get_class): Removed, use mono_class_get_full().
19988         (mono_method_to_ir): Pass our generic context to
19989         mono_field_from_token().        
19990
19991 2004-03-25  Martin Baulig  <martin@ximian.com>
19992
19993         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
19994         of a `MonoMethod *'.
19995         (mini_get_method): Take a `MonoGenericContext *' instead
19996         of a `MonoMethod *'.
19997         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
19998         a new local variable called `generic_context' which holds the
19999         current `MonoGenericContext *'; use it to lookup things.
20000
20001 2004-03-24  Martin Baulig  <martin@ximian.com>
20002
20003         * mini.c (mini_get_class): New static method; if we're inside a
20004         generic instance, inflate the class if neccessary.
20005         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
20006
20007 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * iltests.il: New regression test for #55976.
20010
20011         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
20012         #55976.
20013
20014 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20015
20016         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
20017         output.
20018
20019 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20020
20021         * liveness.c: Consider SSA stores as well as loads when making vars
20022         volatile.
20023
20024         * exceptions.cs: New regression tests for register allocation.
20025         
20026 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
20027
20028         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
20029         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
20030           domain lock only to protect puntual access to data structures.
20031           Added access lock for sighash, jit_icall_hash_name, 
20032           jit_icall_hash_addr and domain->code_mp.
20033
20034 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * driver.c: Print SIGSEGV handling method.
20037
20038         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
20039
20040         * mini.c (setup_jit_tls_data): Handle case when this is called
20041         multiple times for a thread.
20042
20043         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
20044         is different from fbxx_un. Fixes #54303. Also use constants instead of
20045         magic numbers in a lot of places.
20046
20047 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
20048
20049         * exceptions.cs: Fix cctor test when --regression is used.
20050
20051 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
20052
20053         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
20054         for Linux/ppc.
20055
20056 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20057
20058         * inssel-ppc.brg: fixed register assignments for some rules.
20059
20060 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20061
20062         * exceptions.cs: Add test for exceptions in static constructors.
20063
20064         * mini.c (mono_jit_compile_method_with_out): Move the calling of
20065         static constructors outside the domain lock. Fixes #55720.
20066
20067 2004-03-17  Martin Baulig  <martin@ximian.com>
20068
20069         * mini.c (get_generic_field_inst): Removed, this'll never happen.
20070         (inflate_generic_field): Take the `MonoMethod *' instead of the
20071         `MonoClass *' and added support for generic method.
20072         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
20073         have a `field->parent->gen_params', only inflate the field if it's
20074         an open constructed type.
20075
20076 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20077
20078         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
20079         exception object instead of the preconstructed ones.
20080
20081 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20082
20083         * mini.c: reverted changed to sigsegv_signal_handler commited
20084         accidentally in the previous patch.
20085
20086 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20087
20088         * mini.c:
20089         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
20090         running --aot with an old assembly.
20091
20092 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
20093
20094         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
20095         point values.
20096
20097         * mini-sparc.c: Add support for v9 branches with prediction.
20098
20099 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
20100
20101         * mini.c (mini_init): #warning is GNUC only
20102
20103         * mini-sparc.h: implement __builtin_frame_address
20104         and __builtin_return_address for Sun C compiler
20105
20106 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
20109
20110 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
20111
20112         * basic-calls.cs: Add test for unaligned byref long argument passing.
20113
20114         * mini-ops.h: Add sparcv9 compare and branch instructions.
20115
20116         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
20117         v9 instructions if we have a v9 cpu.
20118
20119         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
20120         registers for global allocation.
20121
20122         * exceptions-sparc.c: Fixes.
20123         
20124 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * liveness.c (mono_analyze_liveness): Optimized version.
20127
20128         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
20129
20130         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
20131         sparc work.
20132
20133         * basic-float.cs basic-calls.cs: New regression tests.
20134
20135 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
20136
20137         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
20138         sigaltstack implementation.
20139
20140         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
20141         
20142         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
20143         stuff if SIGSEGV_ON_ALTSTACK is not defined.
20144
20145 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
20146
20147         * mini.c: Fix warnings.
20148         
20149         * mini.c (mono_resolve_patch_target): New function which contains the
20150         arch independent part of the patching process.
20151
20152         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
20153         patching code to a separate function.
20154
20155 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
20156
20157         * mini.c (add_signal_handler): ifdef out on Windows
20158
20159 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
20160
20161         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
20162         cpu-sparc.md: Add exception handling support + other fixes.
20163
20164         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
20165         typed GC detection in --version.
20166
20167         * basic.cs exceptions.cs: New regression tests.
20168
20169         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
20170         the arch specific code can store data during a compilation.
20171
20172         * mini-ops.h: Add OP_SETFRET.
20173
20174         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
20175         function, register a separate icall for each arity, so the icalls can
20176         get a wrapper.
20177         
20178         * mini.c (mono_print_tree): Print negative offsets in a more readable
20179         form.
20180         
20181         * mini.c: Make signal handling work on sparc.
20182         
20183         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
20184
20185         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
20186
20187         * jit-icalls.c: Emulate truncl by aintl on solaris.
20188
20189         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
20190
20191 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
20192
20193         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
20194
20195 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
20196
20197         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
20198         a MarshalByRef type, inline a method that performs the check, taking into
20199         account that the object can be a proxy. Also implemented tow new opcodes:
20200         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20201         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
20202         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20203
20204 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
20205
20206         * mini-ppc.c: if a relative branch displacement is too big
20207         but it points to and area reachable with an absolute branch, 
20208         avoid the thunks.
20209
20210 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
20211
20212         * mini.c: optimize small copies in cpblk.
20213
20214 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
20215
20216         * basic-calls.cs basic-float.cs: New regression tests.
20217
20218         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
20219         negative offsets from %fp. Implement localloc. Fix local register 
20220         allocation. Fix the case when the this argument needs to be saved to
20221         the stack. Implement some missing opcodes.
20222
20223 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
20224
20225         * mini.c (mini_method_compile): Reenable global regalloc in methods
20226         with exception handlers.
20227
20228         * linear-scan.c (mono_varlist_sort): Fix warning.
20229
20230         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
20231
20232         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
20233         regalloc costs.
20234
20235         * liveness.c: Make all variables uses in exception clauses volatile, to
20236         prevent them from being allocated to registers. Fixes #42136.
20237
20238 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
20239
20240         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
20241         causes regressions.
20242
20243         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
20244         argument to mono_arch_regalloc_cost.
20245
20246         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
20247         precisely.
20248
20249 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
20250
20251         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
20252         Make the cost of allocating a variable to a register arch dependent.
20253
20254         * basic-calls.cs: Fix compilation of tests.
20255         
20256         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
20257         helper function to cut back on the number of #ifdefs needed.
20258
20259         * mini-ppc.c: Fix compilation.
20260
20261         * basic-calls.cs: New regression tests.
20262
20263         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
20264
20265         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
20266         of l0 since that is callee saved.
20267
20268         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
20269         to virtual calls.
20270
20271         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
20272         of delay instruction.
20273
20274         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
20275
20276         * mini.h (MonoCallInst): Add 'virtual' flag.
20277
20278         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
20279
20280 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
20281
20282         * *.cs: New regression tests.
20283
20284         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
20285         work.
20286
20287         * mini.c (mono_runtime_install_handlers): Fix build.
20288
20289         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
20290         'signal_stack_size' members.
20291
20292         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
20293         alternate signal stack.
20294
20295         * exceptions-x86.c: Add stack overflow handling.
20296
20297         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
20298         functions to arch independent code.
20299
20300         * mini.c (mono_print_tree): Print more detailed info for load_membase
20301         opcodes.
20302         
20303 2004-02-23  Martin Baulig  <martin@ximian.com>
20304
20305         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
20306
20307 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20308
20309         * mini-x86.c: fixed reg allocation for div/rem.
20310
20311 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
20312
20313         * driver.c (mono_main): Report some configuratio options on --version.
20314
20315 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
20316
20317         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
20318         low in the address space. Correctly flush memory in thunks where we
20319         output native code.
20320
20321 2004-02-20  Martin Baulig  <martin@ximian.com>
20322
20323         * mini.c (mini_get_method): New static method; inflate all generic
20324         methods and methods in open generic instances.
20325         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
20326         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
20327
20328 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20329
20330         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
20331
20332         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
20333
20334 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
20335
20336         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
20337
20338         * mini-sparc.c (flushi mono_arch_output_basic_block): make
20339         it compile using Sun's compiler.
20340
20341 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20342
20343         * 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.
20344
20345         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
20346
20347 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20348
20349         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
20350         code.
20351         * mini-ppc.c: handle calls outside of the allowed range with thunks
20352         allocated using the code manager.
20353         * tramp-ppc.c: use the code manager to hold generated native code.
20354         Fixed the magic trampoline to just patch vtable entries.
20355
20356 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
20357
20358         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
20359         independent file.
20360
20361 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
20362
20363         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
20364         PPC.
20365
20366         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
20367         if we have a working __thread implementation.
20368
20369         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
20370         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
20371
20372 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
20373
20374         * mini-x86.c: Fix compilation under gcc 2.
20375         
20376 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
20377
20378         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
20379         contains a call to the wrapped function.
20380
20381         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
20382         OP_<CALL>_IMM opcodes, and use them under X86.
20383         
20384         * mini.c (mono_jit_find_compiled_method): Fix warning.
20385
20386         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
20387
20388         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
20389
20390         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
20391         functionality to mini.c.
20392
20393         * mini.c (mono_create_jump_trampoline): New function to create a jump
20394         trampoline. Return a compiled method instead of a trampoline if it
20395         exists. Add a cache for jump trampolines.
20396
20397         * mini.c (mono_jit_find_compiled_method): New function to return a
20398         compiled method if it exists.
20399
20400         * mini-x86.c: Call mono_create_jump_trampoline instead of 
20401         mono_arch_create_jit_trampoline.
20402
20403         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
20404         a jump trampoline. Fixes #52092.
20405         
20406 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
20407
20408         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
20409         which is not up-to-date. Add check_corlib_version () instead.
20410
20411         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
20412         have to call it.
20413         
20414         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
20415         since newer valgrind versions do not need it.
20416
20417         * mini.c (mono_jit_compile_method_with_opt): New helper function to
20418         compile a method with a given set of optimizations.
20419
20420         * mini.c: Compile icall wrappers on-demand instead of at startup.
20421
20422         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
20423         wrapper for an icall.
20424
20425 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
20426
20427         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
20428         #54063.
20429
20430         * iltests.il: Add test for non-empty stack before switch instruction.
20431
20432 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
20433
20434         * mini.c: Add support for new stringbuilder marshalling conventions.
20435
20436         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
20437
20438 2004-02-01  Martin Baulig  <martin@ximian.com>
20439
20440         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
20441         in `ginst->mtype_argv'.
20442
20443 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
20444
20445         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
20446         facilitate grepping.
20447
20448 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
20449
20450         * mini.c: fixed buglet in initobj generic implementation for references.
20451
20452 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
20453
20454         * Makefile.am: make the version script conditional.
20455         * jit-icalls.c: handle missing truncl().
20456
20457 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
20458
20459         * exceptions.cs: Add more tests for double->int conversion.
20460
20461         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
20462         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
20463
20464 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
20465
20466         * driver.c: make --verbose --version emit an error
20467         if the loaded corlib doesn't match the runtime version.
20468
20469 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
20470
20471         * mini-ppc.h: export ppc_patch().
20472         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
20473         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
20474         on par or better than on MacOSX.
20475
20476 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
20477
20478         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
20479         mono_lookup_pinvoke_call.
20480
20481         * mini-x86.c: Under windows, the default pinvoke calling convention is
20482         stdcall. Fixes #52834.
20483
20484         * mini.c (optimize_branches): Add an upper bound to the number of
20485         iterations to prevent infinite loops on strange loops. Fixes #53003.
20486
20487 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
20488
20489         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
20490         and ISINST. Fixes #52093.
20491
20492         * objects.cs (test_0_vector_array_cast): New tests.
20493         
20494 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
20495
20496         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
20497         checking in Array.Set ().
20498
20499         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
20500         #52590.
20501
20502         * object.cs (test_0_multi_array_cast): New regression test.
20503
20504 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
20505
20506         * exceptions-ppc.c: fix build on Linux/PPC.
20507
20508 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
20509
20510         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
20511         running under valgrind.
20512         (x86_magic_trampoline): Fix build bustage.
20513
20514         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
20515         negative values as well. This is needed for the encoding of the line number
20516         info, since sometimes the line numbers are not in increasing order.
20517
20518 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
20519
20520         * cpu-pentium.md (localloc): Increase the size of the localloc 
20521         instruction since it is a loop under Win32.
20522
20523         * debug-mini.c (record_line_number): Get rid of unneccesary memory
20524         allocation.
20525
20526 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
20527
20528         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
20529         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
20530         Max Horn (max@quendi.de). Fix file names in comments.
20531
20532 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
20533
20534         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
20535         avoid stack overflow.
20536         (replace_usage): Avoid uninitialized variable warnings.
20537
20538         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
20539         and taking the address of valuetype variables.
20540
20541 2004-01-03  Patrik Torstensson
20542
20543         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
20544         for other purposes than FP later on.
20545
20546 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
20547
20548         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
20549         of tail calls.
20550
20551 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20552
20553         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
20554
20555 2003-12-30  Patrik Torstensson <p@rxc.se>
20556
20557         * mini-x86.h: Decreased number of availiable fp regs.
20558         Solves corner cases with FP spilling.
20559
20560 2003-12-23  Patrik Torstensson <p@rxc.se>
20561
20562         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
20563         for floating point stack tracking / spilling on x86. 
20564         Fixes bug #49012.
20565         
20566         * basic-float.cs: added float mul overflow test.
20567
20568 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
20569
20570         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
20571
20572 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
20573
20574         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
20575         supports for cond branches that overflow the immediate
20576         overflow offset. mcs can compile simple programs.
20577
20578 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
20579
20580         * exceptions-ppc.c: exception handling support wip:
20581         finally handlers get run on exception.
20582
20583 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
20584
20585         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
20586         profiling.
20587
20588 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
20589
20590         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
20591         initial support for stack walking and unwinding.
20592
20593 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
20594
20595         * driver.c (mono_main): Make corlib-out-of-sync message more 
20596         descriptive. Also remove verify_corlib call.
20597
20598 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20599
20600         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
20601         not overlap with other call's arguments, too.
20602
20603 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
20604
20605         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
20606         move to arch-specific code the choice of arch-specific
20607         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
20608         * mini.c: ensure emulation calls will not interleave
20609         with other calls.
20610
20611 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
20612
20613         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
20614         the magic trampoline stack frame is dropped before executing
20615         the new method.
20616
20617 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20618
20619         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
20620         and integer to fp conversions. Added support for overflowing
20621         arguments on the stack. Reserve a couple more registers as temps.
20622         Added support for aot compilation (as output still needs to be
20623         tweaked, though).
20624
20625 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
20626
20627         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
20628         Don't overwrite return register in some corner cases.
20629
20630 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
20631
20632         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
20633         static constructors when AOT compiling.
20634
20635         * driver.c (mono_main): Call mono_check_corlib_version.
20636
20637 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20638
20639         * cpu-g4.md, basic.cs: fixed div target register.
20640
20641 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
20642
20643         * mini-ppc.c, basic.cs: shl_imm fix with test.
20644
20645 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
20646
20647         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
20648         structures by value. Misc fixes.
20649         * objects.cs: more tests.
20650
20651 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
20652
20653         * mini-ppc.c: lconv.ovf.i implemented.
20654
20655 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20656
20657         * mini.c:
20658         (mini_init): don't error out if someone already called g_thread_init.
20659
20660 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
20661
20662         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
20663         to be any type per the spec. Fix abnormal memory usage when
20664         the same object is repeatedly thrown.
20665
20666 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
20667
20668         * mini.c: check for overruns in IL code.
20669
20670 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
20671
20672         * TODO: Add/remove some todo entries.
20673
20674 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
20675
20676         * driver.c (mono_main): Call mono_verify_corlib.
20677
20678 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
20679
20680         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
20681         This has been moved to mini.c
20682         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
20683         type being casted is marshalbyref it could be a proxy, so instead of
20684         emitting the type check code, emit a call to a runtime method that will
20685         perform the check by calling CanCastTo if needed.
20686
20687 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
20688
20689         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
20690         methods with large stack frames under Win32.
20691
20692 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
20693
20694         * Makefile.am: Distribute regression tests.
20695
20696         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
20697         at the end instead of inserting each variable into the sorted list.
20698
20699         * linear-scan.c (mono_varlist_sort): New helper function.
20700         
20701 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
20702
20703         * mini.c: ensure arguments and locals are within bounds.
20704
20705 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
20706
20707         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
20708         related fixes.
20709
20710 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
20711
20712         * mini.c (mono_cprop_copy_values): Fix crash.
20713
20714         * aot.c: Set verbosity back to 0.
20715         
20716 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20717
20718         * regalloc.c: complete memory leak fix by Laurent Morichetti
20719         (l_m@pacbell.net).
20720
20721 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
20722
20723         * driver.c (main_thread_handler): Revert the previous patch.
20724
20725         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
20726         under valgrind.
20727
20728         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
20729         memory from the memory pool.
20730
20731         * driver.c (main_thread_handler): Turn on all optimizations when
20732         --aot is used.
20733
20734         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
20735         an array for better performance.
20736
20737         * regalloc.c (mono_regstate_assign): Fix memory leak.
20738
20739         * debug-mini.c (mono_debug_serialize_debug_info): New function to
20740         serialize the debug info.
20741
20742         * debug-mini.c (mono_debug_add_aot_method): New function to load the
20743         debug info from the serialized representation.
20744
20745         * aot.c: Save debug info into the generated file and load it when 
20746         loading a method.
20747
20748         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20749
20750 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
20751
20752         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
20753         More FP-related fixes.
20754
20755 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
20756
20757         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
20758         and register allocation buglet. Hello world now runs.
20759
20760 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
20761
20762         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
20763         * tramp-ppc.c: fixed class init trampoline.
20764         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
20765
20766 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
20767
20768         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
20769         mini.c: more ppc changes/fixes.
20770
20771 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
20772
20773         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
20774         Also optimize the case when the arguments are the same in the caller 
20775         and in the callee.
20776
20777         * iltests.il: Add tests for tail calls with valuetype arguments.
20778
20779 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
20780
20781         * mini-ppc.c: fixes for struct return type.
20782
20783 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
20784
20785         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
20786         mono_spillvar_offset() to arch-specific code.
20787
20788 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
20789
20790         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
20791
20792 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
20793
20794         * exceptions-x86.c: Fix stack space leaks.
20795         
20796         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
20797         registers from the lmf if the method has save_lmf set.
20798
20799 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
20800
20801         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
20802         of icall wrappers into InvokeInDomain, since these are now per-domain.
20803
20804 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
20805
20806         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
20807         make some opcode emulation and intrinsic ops enabled/disabled 
20808         according to the architecture. More fixes.
20809
20810 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
20811
20812         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
20813
20814 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
20815
20816         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
20817         arch-specific handling for 'this' and struct return type to
20818         arch-specific code.
20819
20820 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20821
20822         * aot.c: prevent divide by zero error when reporting (it happened with
20823         Accessibility.dll).
20824
20825 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
20826
20827         * mini.h (inst_switch): Remove unused macro.
20828
20829 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20830
20831         * aot.c:
20832         (load_aot_module): free 'info->methods' and 'info' properly. No more
20833         "free(): invalid pointer blah" messages when you have an old aot
20834         compiled assembly.
20835
20836 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
20837
20838         * jit-icalls.c, mini.c: Added support for context static fields.
20839
20840 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
20841
20842         * mini.c (mono_method_blittable): Methods which set LastError are not 
20843         blittable either. Fixes #51108.
20844         
20845 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
20846
20847         * mini.c: flush icache.
20848         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
20849
20850 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
20851
20852         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
20853
20854 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
20855
20856         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
20857         safe on IA32.
20858
20859         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
20860         vararg calls.
20861
20862         * inssel.brg (CEE_MKREFANY): Fix AOT case.
20863
20864 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
20865
20866         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
20867         instruction when the result is discarded.
20868
20869         * iltests.il (test_0_div_regalloc): New regression test.
20870
20871         * arrays.cs: Fix compilation error.
20872
20873 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
20874
20875         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
20876         float rules to inssel-x86.brg: sane architectures with FP registers
20877         don't need to implement these rules.
20878
20879 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20880
20881         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
20882
20883 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20884
20885         * mini.h, inssel-long32.brg: fixed endianess issues in int64
20886         implementation of 32 bit systems.
20887
20888 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20889
20890         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
20891         (Jeroen Zwartepoorte).
20892
20893 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
20894
20895         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
20896         the caller and the callee matches.
20897         
20898         * mini.c (mono_method_to_ir): Add comment.
20899
20900         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
20901         signbit is missing on some platforms.
20902
20903 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
20904
20905         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
20906
20907         * mini.c (setup_jit_tls_data): Call the new function.
20908         
20909         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
20910
20911         * mini-x86.c: Add experimental support for fast access to the lmf
20912         structure under NPTL/Linux 2.6.x.
20913
20914 2003-11-06  Martin Baulig  <martin@ximian.com>
20915
20916         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
20917         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
20918         the debugger.
20919
20920 2003-11-02  Martin Baulig  <martin@ximian.com>
20921
20922         * mini.c (inflate_generic_field): New static method.
20923         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
20924         generic instance and the field is declared in a generic type, call
20925         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
20926
20927 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
20928
20929         * mini.h mini.c (mono_method_same_domain): New function to return
20930         whenever the caller and the callee are in the same domain.
20931
20932         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
20933
20934 2003-10-30  Martin Baulig  <martin@ximian.com>
20935
20936         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
20937         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
20938         method parameters.
20939         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
20940         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
20941
20942 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
20943
20944         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
20945         propagation.
20946
20947         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
20948         object here, so it is in the correct appdomain etc.
20949
20950 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
20951
20952         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
20953         already done.
20954         (mono_method_to_ir): Avoid freeing the type created returned from
20955         mono_type_create_from_typespec, since it is put into an internal cache
20956         by the function. Fixes pointer.exe.
20957
20958         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
20959         trampolines for icalls and pinvokes as well. Fixes #33569.
20960
20961 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
20962
20963         * mini.c: Update after appdomain changes.
20964
20965         * mini.c (mono_jit_compile_method_inner): Allways compile native
20966         method wrappers in the root domain, since there can only be one
20967         instance of them, whose address is stored in method->info.
20968
20969 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
20970
20971         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
20972         environment variable. Instead detect automatically whenever running
20973         under valgrind using the magic macro RUNNING_ON_VALGRIND from
20974         valgrind.h.
20975
20976 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
20977
20978         * trace.c, trace.h: New files that implement the new trace option
20979         parsing. 
20980
20981         * driver.c: Document new --trace options.
20982
20983         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
20984         mini-x86.c: Apply:
20985
20986         -       if (mono_jit_trace_calls)
20987         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
20988
20989         * mini.h: prototypes.
20990         
20991 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
20992
20993         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
20994
20995         * mini.c inssel.brg: Implement typedefbyref opcodes.
20996
20997         * mini.c (mono_jit_compile_method): Remove unused local variable.
20998
20999         * mini.c (mono_jit_compile_method_inner): Ditto.
21000         
21001 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
21002
21003         * tramp-x86.c (x86_class_init_trampoline): Fix build.
21004         
21005         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
21006
21007 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
21008
21009         * mini.c (mono_no_aot): Remove unused global variable.
21010
21011         * mini.c: Thread safety fixes.
21012
21013 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
21014
21015         * mini.c (mono_create_class_init_trampoline): Add a lock around
21016         class_init_hash_addr.
21017
21018         * arrays.cs (test_0_newarr_emulation): Add new regression test for
21019         #30073.
21020
21021         * mini.c: Decompose the NEWARR instruction before decomposing its
21022         arguments. Fixes #30073.
21023
21024 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
21025
21026         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
21027         convention.
21028
21029 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
21030
21031         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
21032
21033         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
21034
21035         * driver.c: Add support for compiling icall wrappers to --compile.
21036
21037 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
21038
21039         * inssel.brg: The empty value in class->interface_offsets is -1, not
21040         0. Fixes #49287.
21041
21042 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
21043
21044         * objects.cs: New test for 'is' operator on an array of interfaces.
21045
21046 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21047
21048         * tramp-ppc.c: update trampoline code to support jumps
21049         and class initialization.
21050
21051 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
21052
21053         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
21054
21055         * inssel.brg (OP_UNBOXCAST): Fix #46027.
21056
21057         * inssel.brg (OP_UNBOX): Remove unused rule.
21058
21059         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
21060         region instead of one for each method. Fixes #47813.
21061
21062 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
21063
21064         * exceptions.cs (test_0_nested_finally): New regression test for
21065         nested exception handlers.
21066
21067         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
21068
21069         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
21070
21071         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
21072         inlining.
21073
21074         * mini.c (mono_method_check_inlining): Make the inlining limit 
21075         configurable by an environment variable.
21076         
21077         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
21078
21079         * mini.h: Bump AOT file version.
21080
21081         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
21082         token, store the image along with the token, since the token might not 
21083         refer to the same image as the method containing the relocation, 
21084         because of inlining.
21085
21086 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
21087
21088         * mini.c (mono_precompile_assemblies): New function to compile
21089         all methods in all loaded assemblies.
21090
21091         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
21092
21093         * regalloc.h regalloc.c (MonoRegState): Change the type of 
21094         iassign and fassign to int*, since they can contain large negative
21095         values if the register is spilled. Also added some comments. Fixes
21096         #45817.
21097
21098         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
21099         under Win32. Fixes #42964.
21100
21101 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
21102
21103         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
21104
21105         * aot.c: Added support for AOT compiling methods which contain calls
21106         to wrappers. Currently, only remoting-invoke-with-check wrappers are
21107         handled.
21108         
21109         * driver.c (compile_all_methods): Run the compilation in a thread
21110         managed by mono. Fixes #44023.
21111
21112         * mini.c (mono_codegen): Print full method name in verbose output.
21113
21114         * mini-x86.c (mono_arch_patch_code): Fix warning.
21115         
21116         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
21117         jumps, since the method we are jumping to might be domain-specific.
21118
21119         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
21120
21121 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21122
21123         * inssel.brg: string chars are unsigned.
21124
21125 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
21126
21127         * TODO: New todo item.
21128
21129         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
21130         which calls mono_runtime_class_init and patches the call site to
21131         avoid further calls.
21132         (mono_arch_create_class_init_trampoline): New arch specific function 
21133         to create a class init trampoline.
21134         (create_trampoline_code): Generalized so it can create
21135         class init trampolines as well.
21136
21137         * mini.c (helper_sig_class_init_trampoline): New helper variable.
21138         (mono_create_class_init_trampoline): New function to create and cache
21139         class init trampolines.
21140         (mono_find_class_init_trampoline_by_addr): New function to lookup the
21141         vtable given the address of a class init trampoline. Used by the
21142         patching process.
21143         (mono_codegen): Generate a call to a trampoline instead of
21144         mono_runtime_class_init in LDSFLD[A].
21145         (mono_codegen): Add relocations for the new trampoline.
21146         
21147         * mini.h mini-x86.c aot.c: Added a new relocation type: 
21148         MONO_PATCH_INFO_CLASS_INIT.
21149
21150         * mini.h: Bump AOT version number.
21151
21152         * aot.c: Create a copy of the loaded code instead of using the original
21153         so methods which call each other will be close in memory, improving
21154         cache behaviour.
21155         
21156         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
21157         patch since it breaks the regression tests.
21158         
21159         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
21160         for the register saving instruction sequence since the 
21161         frame_state_for function in glibc 2.3.2 don't seem to detect it.
21162
21163 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
21164
21165         * TODO: Fix todo item && remove another.
21166
21167 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
21168
21169         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
21170         previous checkin.
21171
21172         * aot.c: Moved the check for MONO_LASTAOT into the initialization
21173         function of the module.
21174
21175         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
21176         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
21177         --no-aot command line option.
21178
21179 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
21180
21181         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
21182         by Bernie Solomon (bernard@ugsolutions.com).
21183
21184         * inssel.brg: Refactor the interface offset table related code into
21185         its separate functions and add support for the AOT case.
21186
21187 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
21188
21189         * aot.c (mono_aot_get_method_inner): Fix memory leak.
21190         
21191         * aot.c: Added mono_aot_verbose variable and made all debugging
21192         output depend on the value of this variable.
21193
21194         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
21195         method_label and info_label.
21196
21197         * mini.h mini-x86.c aot.c: Added a new relocation type 
21198         MONO_PATCH_INFO_IID for klass->interface_id.
21199
21200         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
21201         the MonoJitInfo structure.
21202
21203         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
21204         a non-root appdomain in shared mode.
21205
21206 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21207
21208         * aot.c: make aot loader less verbose. Remove free of unused variable.
21209
21210 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
21211
21212         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
21213
21214         * .cvsignore: Added *.dll.
21215
21216         * mini.c (mono_print_tree_nl): New function callable while debugging.
21217
21218         * mini.c (mono_print_code): Export this.
21219
21220         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
21221         patched code.
21222
21223 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
21224
21225         * mini.h (MonoCompile): Added 'jit_info' field.
21226
21227         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
21228         the cfg structure, since it is needed by the AOT compiler.
21229
21230         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21231
21232         * aot.c: A major rewrite. Changes include:
21233         - save exception tables for methods which have them.
21234         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
21235         to g_module_symbol.
21236         - reworked the file format so it is now much smaller and needs
21237         fewer relocation entries.
21238         
21239 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21240
21241         * aot.c (load_aot_module): Fix build bustage on platforms without
21242         Boehm GC.
21243
21244 2003-09-04  Martin Baulig  <martin@ximian.com>
21245
21246         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
21247
21248 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21249
21250         * TODO: Some new optimization ideas.
21251
21252         * aot.c: Move AOT module loading logic here from mono_assembly_open.
21253
21254         * aot.c: Save the optimization flags used to compile the code into
21255         the AOT module.
21256
21257         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
21258         support emitting domain specific code.
21259         
21260         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
21261         no longer domain neutral. It can be made domain neutral by compiling 
21262         with --optimize=shared.
21263
21264         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
21265         between appdomains.
21266
21267         * driver.c mini.h mini.c: New --no-aot debugging option which disables
21268         loading of AOT code.
21269
21270         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
21271         
21272         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
21273         if there is no domain neutrality information.
21274
21275 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
21276
21277         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
21278         format version into the generated library.
21279
21280         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
21281         callee method into the caller since one of them could be shared.
21282
21283         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
21284         system exceptions from AOT code now works.
21285
21286         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
21287         method if it is domain neutral and the callee is not.
21288
21289         * graph.c (cfg_emit_one_loop_level): Fix warning.
21290
21291 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
21292
21293         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
21294         last checkin.
21295
21296 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
21297
21298         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
21299         is needed  by code which is executed before mono_runtime_init ().
21300         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
21301         
21302         * mini.c (mono_thread_abort): Fix warning.
21303         (mono_jit_compile_method): Call static constructor in the AOT case too.
21304
21305         * aot.c (mono_compile_assembly): Fix warning.
21306
21307 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21308
21309         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
21310
21311 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
21312
21313         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
21314
21315         * cpu-pentium.md: Fix the length of call opcodes so they include the
21316         ESP restoring instruction. Fixes #47968.
21317
21318 2003-08-28  Martin Baulig  <martin@ximian.com>
21319
21320         * mini-x86.c (mono_arch_call_opcode): Added support for
21321         MONO_TYPE_GENERICINST.
21322
21323         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
21324
21325 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
21326
21327         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
21328         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
21329
21330         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
21331         metadata_section.
21332
21333 2003-08-26  Martin Baulig  <martin@ximian.com>
21334
21335         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
21336         when reporting an error, set this to the actual error location.
21337         (mono_method_to_ir): Report the correct error location if
21338         get_basic_blocks() returned an error.
21339
21340 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
21341
21342         * mini.c (mono_type_blittable): OBJECT is not blittable.
21343         (mono_method_blittable): Methods which have marshalling descriptors
21344         are not blittable either. Fixes #47842.
21345
21346 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
21347
21348         * driver.c mini.c: Use an environment variable instead of a global 
21349         variable. Also fix the build.
21350
21351         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
21352         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
21353         reporting this. 
21354
21355         * driver.c mini.c: Added --with-valgrind option to turn off some
21356         code which prevents mono from running under valgrind.
21357
21358         * mini.c (mono_emit_call_args): Fixed warning.
21359
21360         * mini.c (mono_emulate_opcode): Fixed warning.
21361
21362 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21363
21364         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
21365         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
21366         regalloc.c, regalloc.h: specify available registers in arch-specific
21367         code and support floats in the regallocator (patch by Laurent Morichetti 
21368         <l_m@pacbell.net>)
21369
21370 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21371
21372         * mini.c: mono_thread_current() can be called only after
21373         mono_runtime_init(): rearrange code to not call it early on.
21374
21375 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21376
21377         * mini.c: allocate jump tables in the code mempools.
21378
21379 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21380
21381         * mini.c, mini.h: make sure per-thread data allocated by the jit is
21382         freed.
21383
21384 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
21385
21386         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
21387         12 to 16.  This fixes bug #47453.
21388
21389
21390 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21391
21392         * mini-ppc.c: fixed indexed load and unsigned compares.
21393
21394 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
21395
21396         * mini.c: reenabled installation of handler for
21397           thread abort signal.
21398
21399 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21400
21401         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
21402         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
21403         until it's fixed and actually useful.
21404
21405 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21406
21407         * inssel-long32.brg: couple more opcodes implemented.
21408
21409 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21410         
21411         * mini-sparc.c: Even more opcodes implemeted.
21412
21413 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
21414
21415         * mini-sparc.c: More opcodes implemented.
21416
21417 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
21418
21419         * mini-sparc.c: More opcodes implemented.
21420
21421 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21422
21423         * inssel-sparc.brg: Add some needed rules.  Direct
21424         copy from PPC.
21425         * Makefile.am: Use inssel-sparc.brg
21426         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
21427         an assert happy for now.
21428
21429 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
21430
21431         * mini-sparc.c: Fixed compile errors.
21432         * exceptions-sparc.c: Same.  We now produce a mono binary 
21433         on sparc-linux.  Yea.
21434
21435 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
21436
21437         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
21438         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
21439         They compile, but do not work.
21440
21441 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21442
21443         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
21444         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
21445         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
21446         (ct@gentoo.org).
21447
21448 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21449
21450         * mini.c: more opcodes implemented and better support for generics.
21451
21452 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21453
21454         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
21455         * mini.c, mini.h: first cut at generics support: some new instructions 
21456         added and changed the behaviour of some of the existing ones.
21457
21458 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
21459
21460         * mini.c: Removed definition of metadata_shared mutex here.
21461
21462 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
21463
21464         * mini-x86.c: make vararg calls work for instance methods.
21465
21466 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21467
21468         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
21469         returns the arguments in a separte list, now.
21470
21471 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21472
21473         * aot.c, mini.c: updates for array type representation changes.
21474
21475 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
21476
21477         * mini.c: register function to perform jit shutdown.
21478
21479 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21480
21481         * mini.c: use a faster allocator if possible.
21482
21483 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21484
21485         * aot.c: some cleanups and portability changes.
21486
21487 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21488
21489         * mini.c: use faster allocation for CEE_BOX if possible.
21490
21491 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
21492
21493         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
21494         Moved inlined mempcy code to its own function so that is can be
21495         reused. Added an inline memset function as well (optimized initobj).
21496         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
21497
21498 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21499
21500         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
21501
21502 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
21503
21504         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
21505         arch code can setup the cpu for CLR execution, if needed.
21506         We use it on x86 to set the precision of FP operations.
21507
21508 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21509
21510         * mini.c: disable some optimizations if we can guess they'll cost too
21511         much for a given method.
21512
21513 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21514
21515         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
21516         
21517 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21518         * mini.h mini.c mini-x86.c: Added instruction level coverage 
21519         info collection support.
21520
21521 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21522
21523         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
21524         is now implemented in the profiling API. Get rid of a couple of
21525         unnecessary global variables.
21526
21527 2003-06-15  Nick Drochak <ndrochak@gol.com>
21528
21529         * basic-long.cs: tests for negative values for bigmul, and unsigned.
21530         * cpu-g4.md: add op_bigmul and op_bigmul_un
21531         * cpu_pentium.md: add op_bigmul_un
21532         * inssel-long32.brg: add rule for unsigned bigmul
21533         * mini-ops.h: define OP_BIGMUL_UN
21534         * mini-x86.c: THE BUG: handle (un)signed properly
21535         * mini.c: choose unsigned opcode if needed.
21536         This set of patches fixes bug #44291
21537
21538 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
21539
21540         * mini.c (optimize_branches): improved to handle all kinds of
21541         conditional branches.
21542
21543 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21544
21545         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
21546         don't raise exceptions.
21547
21548 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21549
21550         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
21551         to arch-specific files.
21552
21553 2003-06-09  Martin Baulig  <martin@ximian.com>
21554
21555         * Makefile.am (libs): Added $(LIBGC_LIBS).
21556
21557 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
21558
21559         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
21560         and OP_ATAN (fixes bug#44293).
21561
21562 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
21563
21564         * Makefile.am, mini-x86.c: rename cpu description array to
21565         pentium_desc, since some compilers define the 'pentium' preprocessor
21566         symbol.
21567
21568 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
21569
21570         * mini.c (mini_select_instructions): add explicit branch if the
21571         following block is not the false target of a conditional branch -
21572         we need this with any optimization that reorder or remove bblocks
21573
21574         * mini.c (optimize_branches): bug fixes
21575
21576 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
21577
21578         * mini.c (mono_method_to_ir): inline static readonly fields
21579
21580         * ssa.c (fold_tree): start cfold support for long (very simple
21581         cases only)
21582
21583         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
21584
21585 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21586
21587         * inssel.brg: fixed memcpy (bug #44219).
21588
21589 2003-06-05  Dick Porter  <dick@ximian.com>
21590
21591         * driver.c: Set the glib log levels to not abort if g_message
21592         recurses.
21593
21594         g_set_prgname() has to happen before mini_init() so that the
21595         process handle gets the info.
21596         
21597 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21598
21599         * driver.c: add intrins to the default optimizations to get wider
21600         exposure.
21601
21602 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21603
21604         * mini.h: some large basic blocks will overflow a 16-bit
21605         integers for symbolic registers.
21606
21607 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21608
21609         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
21610         (mono_arch_output_basic_block): fix bug 43499 
21611
21612 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21613
21614         * mini.c: kill duplicated definition of mono_debug_format.
21615
21616 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21617
21618         * mini-x86.c, arrays.cs: fixed register allocation bug.
21619
21620 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21621
21622         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
21623
21624         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
21625
21626 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21627
21628         * mini.c:
21629         (print_method_from_ip): also print source location information if
21630         available.
21631
21632 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
21633
21634         * mini.c (mono_find_block_region): bug fix in region code
21635         (mini_method_compile): enable removing unreachable code again, but
21636         only in methods without exception clauses.
21637
21638 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
21639
21640         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
21641         Implemented arglist opcode and handling of TypedReference type.
21642         Fixed x86 call convention when a structure is returned.
21643         Minimal support for calling static vararg methods.
21644
21645 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
21646
21647         * mini.c (mini_method_compile):  always remove unreachable code,
21648         because the code in them may be inconsistent  (access to dead
21649         variables for example).
21650
21651 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21652
21653         * driver.c, debug-mini.c: warning fixes.
21654
21655 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
21656
21657         * Makefile.am, jit.h, mini.h: install header for embedding mono.
21658
21659 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
21660
21661         * mini.c: thread-static fields are registered in mono_class_vtable(),
21662         so ensure the function is called before checking for them.
21663
21664 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
21665
21666         * mini.c (optimize_branches): fix for bug 43586
21667
21668         * jit-icalls.c (mono_llmult_ovf): added an additional check for
21669         overflow (fixes Bug #43639)
21670
21671 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21672
21673         * mini.c, objects.cs: allow the use of stobj for primitive types.
21674
21675 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21676
21677         * mini.c: be less strict about argument checking until we support
21678         running the verifier.
21679
21680 2003-05-27  Nick Drochak <ndrochak@gol.com>
21681
21682         * basic-long.cs: tests for (ulong)int * (ulong)int also
21683         * mini.c: use the same trick for (ulong)int * (ulong)int
21684
21685 2003-05-27  Nick Drochak <ndrochak@gol.com>
21686
21687         * basic-long.cs: add regression test for (long)int * (long)int
21688         * cpu-pentium.md: add op_bigmul specification
21689         * inssel-long32.brg: add OP_BIGMUL rule
21690         * mini-ops.h: add OP_BIGMUL
21691         * mini-x86.c: register allocator: handle case where src1 needs to be
21692         in EAX.
21693         * mini.c: substitute special BIGMUL opcode in the tree for 
21694         (long)int * (long)int
21695
21696 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21697
21698         * jit-icalls.c: call the type ctor on field access if needed.
21699
21700 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21701
21702         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
21703         to a method (including results of ldelema, bug#43207).
21704
21705 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
21706
21707         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
21708         colors to show exception handler blocks.
21709
21710         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
21711         (fix for pinvoke7.cs).
21712
21713 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21714
21715         * mini.h, mini.c: ensure correct initialization order for types that
21716         require it. Prepare for lazy compilation of jit icall wrappers.
21717         Provide a name for opcode emulation to reduce unneeded mallocing.
21718
21719 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
21720
21721         * mini-x86.c: better register restoring code and profiling
21722         support for tail calls.
21723
21724 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21725
21726         * mini.h, driver.c: prepare for leaf methods optimization.
21727
21728 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21729
21730         * mini.c: get targets of branches before converting a method.
21731
21732 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
21733
21734         * mini.c (optimize_branches): added some experimental code (disbaled) 
21735
21736 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
21737
21738         * mini.c (optimize_branches): fix branch to branch optimization 
21739
21740         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
21741
21742         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
21743
21744         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
21745
21746         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
21747         if needed.
21748
21749 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
21750
21751         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
21752         enable use of interface variables again.
21753
21754         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
21755         I1 to registers because there is no simply way to sign extend 8bit
21756         quantities in caller saved registers on x86.
21757
21758         * inssel-float.brg: set costs of some rules to 2 so
21759         that monobure always select the arch. specific ones if supplied,
21760         regardless of the order we pass the files to monoburg.
21761
21762 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21763
21764         * mini.c, mini-x86.c: since the magic trampoline for jumps
21765         can't patch the code directly, we do it as soon as the
21766         method gets compiled.
21767
21768 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21769
21770         * mini-x86.c, mini.h: introduce a new patching method
21771         to support CEE_JMP and tail calls.
21772         * mini.c: obey tail.call. Don't precompile methods target
21773         of CEE_JMP.
21774         * tramp-x86.c: new trampoline code to handle methods
21775         reached through a jump.
21776
21777 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
21778
21779         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
21780         bit values to registers
21781
21782 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
21783
21784         * mini.c (mono_compile_get_interface_var): share interface
21785         variables if possible.
21786
21787 2003-05-16  Martin Baulig  <martin@ximian.com>
21788
21789         * debug-mini.c (mono_init_debugger): New function to initialize
21790         the debugger.  This is not in the debugger since it needs to
21791         access some of mini's internals.
21792
21793 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
21794
21795         * mini.c (mono_method_to_ir): inlining fixes/cleanups
21796
21797 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
21798
21799         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
21800         for value type handling.
21801
21802 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
21803
21804         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
21805         (mono_method_check_inlining): enable inlining of all kinds of wrappers
21806
21807 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
21808
21809         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
21810           the constructor through a proxy.
21811
21812 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21813
21814         * jit-icalls.c, inssel.brg: fixes to array element address
21815         calculations.
21816
21817 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
21818
21819         * mini-x86.c (is_regsize_var): allocate pointer to registers
21820
21821 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21822
21823         * driver.c: fixed typo, added intrins to the set of optimizations
21824         tested with regressions.
21825
21826 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21827
21828         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
21829         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
21830         test case.
21831
21832 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
21833
21834         * inssel.brg: remove some common pop instructions without side effects
21835
21836 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21837
21838         * inssel-x86.brg: fixed thinko in int to double conversions.
21839
21840 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21841
21842         * mini.c, jit-icalls.c: added runtime thread-static variable support.
21843
21844 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21845
21846         * inssel-long32.brg: two more missing instructions.
21847
21848 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
21849
21850         * mini.c (mono_emit_call_args): set the cil_code for all arguments
21851         if not already set.
21852
21853 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
21854
21855         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
21856         correctly.
21857
21858         * basic-float.cs: Added tests for negative zero.
21859
21860 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21861
21862         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
21863         a couple of missing operations for long casts, with test cases.
21864
21865 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21866
21867         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
21868
21869 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
21870
21871         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
21872         code size estimation.
21873
21874 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
21875
21876         * mini.c (mono_jit_create_remoting_trampoline): make it work with
21877         abstract methods (fix bug 42542)
21878
21879         * aot.c: add ability to handle array types
21880         
21881 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
21882
21883         * mini.c: Call the _specific versions of the object allocation
21884         functions if possible.
21885
21886 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
21887
21888         * driver.c: call setlocale ().
21889
21890 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21891
21892         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
21893         windows build.
21894
21895 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21896
21897         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
21898
21899         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
21900         wrappers (fix bug 42122)
21901
21902 2003-05-04  Martin Baulig  <martin@ximian.com>
21903
21904         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
21905
21906         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
21907         s/mini_set_defaults/mono_set_defaults/g.
21908
21909 2003-05-04  Martin Baulig  <martin@ximian.com>
21910
21911         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
21912
21913 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21914
21915         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
21916         (reported by Don Roberts).
21917
21918 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21919
21920         * mini.c: temporarily work around two bugs for this release.
21921
21922 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21923
21924         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
21925         that contains -export-dynamic and it makes using the ld script
21926         useless.
21927         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
21928
21929 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21930
21931         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
21932         specific cpu.
21933
21934 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21935
21936         * mini.c: make sure leave calls all the needed finally blocks,
21937         even when the target jumps out of multiple exception clauses.
21938
21939 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21940
21941         * ldscript, Makefile.am: add linker script to reduce the number of
21942         exported symbols (should also fix the issues with libwine defining
21943         some of the same symbols in io-layer).
21944
21945 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
21946
21947         * driver.c (mini_main): Avoid assertion when no file name is given on 
21948         the command line.
21949
21950 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
21951
21952         * driver.c: added --version/-V command line option.
21953         Added the inline optimization in the regression tests.
21954
21955 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21956
21957         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
21958         to the type in the method signature (fixes bug#42134).
21959
21960 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
21961
21962         * mini.c: when inlining, check this is not null only when needed (bug #42135).
21963
21964 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
21965
21966         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
21967
21968 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21969
21970         * driver.c: fixed bug #42100.
21971
21972 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21973
21974         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
21975
21976 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21977
21978         * mini.c: moved most of the code required to do inlining to its own
21979         function so it can be reused. Inline also ctors if appropriate.
21980
21981 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21982
21983         * Makefile.am: Link with -export-dynamic so shared libs loaded by
21984         the runtime can call mono API functions.
21985
21986 2003-04-27  Martin Baulig  <martin@ximian.com>
21987
21988         * debug-mini.c (mono_debug_init_method): Added
21989         `guint32 breakpoint_id' argument; if the method has a breakpoint,
21990         send a notification to the debugger.
21991
21992         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
21993         running in the Mono Debugger, just pass the breakpoint number to
21994         mono_debug_init_method().
21995
21996         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
21997
21998 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
21999
22000         * mini.c: allow some more unsafe compares.
22001
22002 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22003
22004         * mini-x86.c, Makefile.am: make distcheck works (partially from
22005         a patch by Richard Lee <r.h.lee@attbi.com>).
22006         * regset.c, regset.h: removed, they are unused.
22007
22008 2003-04-25  Dick Porter  <dick@ximian.com>
22009
22010         * driver.c: Usage reports the name as 'mono' not 'mini'
22011         * exceptions-x86.c: Build and run on freebsd
22012
22013 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
22014
22015         * Makefile.am: install the program with the 'mono' name and
22016         the library as libmono instead of mini and libmini.
22017
22018 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22019
22020         * driver.c: provide the APIs for the embedding interface of the old jit.
22021
22022 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
22023
22024         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
22025
22026 2003-04-23  Martin Baulig  <martin@ximian.com>
22027
22028         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
22029
22030         * driver.c: Added `--debug' command line argument to enable
22031         debugging support.
22032
22033 2003-04-23  Martin Baulig  <martin@ximian.com>
22034
22035         * debug.[ch]: Removed.  The code is now in
22036         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
22037
22038         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
22039         last six months.
22040
22041 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
22042
22043         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
22044
22045 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22046
22047         * mini.c:
22048         (mini_cleanup): moved mono_runtime_cleanup call after the call to
22049         mono_domain_finalize.
22050         (mini_method_compile): use mono_method_profile* if the the option is
22051         enabled.
22052
22053 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22054
22055         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22056         methods with their wrapper.
22057
22058         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22059         methods with their wrapper.
22060
22061         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
22062         their wrapper.
22063
22064         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
22065         wrapper.
22066
22067         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
22068         methods.
22069
22070 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
22071
22072         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
22073
22074 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
22075
22076         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
22077         of the mempool. This is slightly faster and uses less memory
22078
22079 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22080
22081         * mini.c: avoid O(n) allocation for variables.
22082
22083 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22084
22085         * mini.c: handle items on the stack after inlining methods.
22086
22087 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22088
22089         * mini.c: make the method->opcode optimization dependent
22090         on MONO_OPT_INSTRINS and do it lazily.
22091
22092 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22093
22094         * driver.c: print overall results at the end of regression run.
22095
22096 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
22097
22098         * inssel.brg: don't overwrite symbolic registers.
22099
22100 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22101
22102         * inssel-x86.brg: fix conversion from long to float.
22103
22104 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
22105
22106         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
22107
22108 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22109
22110         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
22111
22112         * driver.c: Added --print-vtable option as in the old JIT.
22113
22114 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22115
22116         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
22117
22118 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
22119
22120         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
22121
22122 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22123
22124         * mini.c regalloc.c regalloc.h: Fix memory leak.
22125
22126 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
22127
22128         * aot.c (mono_aot_get_method): register all used strings
22129
22130 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22131
22132         * mini.c: always intern strings references with ldstr at compile time.
22133
22134 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22135
22136         * Makefile.am: add BUILT_SOURCES.
22137
22138 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22139
22140         * driver.c: give a better error message when the assembly to execute
22141         doesn't have an entry point.
22142
22143 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
22144
22145         * Makefile.am: added hack for automake
22146
22147         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
22148         correct sematics.
22149
22150         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
22151
22152 22003-04-07  Martin Baulig  <martin@ximian.com>
22153
22154         * Makefile.am: Added Makefile.am.
22155
22156         * debugger-main.c: Removed, this is now in the debugger where it
22157         belongs.
22158
22159         * mini.pc.in: Call this package `mini' for the moment.
22160
22161
22162
22163
22164
22165
22166
22167
22168
22169
22170
22171
22172
22173
22174