074334cf7ebf555520081ad80c68fe159ddb3190
[mono.git] / mono / mini / ChangeLog
1 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
2
3         * image-writer.c: Add support for emitting the image into a memory buffer.
4
5         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
6
7         * aot-compiler.c: Add support for registering debug info with GDB using the
8         new JIT debugging interface in GDB 7.0. It can be turned on by setting
9         MONO_XDEBUG to 'gdb'.
10
11 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
12
13         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
14         each instance of Comparer<T>.
15
16         * generics.cs: Add a new test.
17
18 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
19
20         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
21         when using full-aot.
22
23 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
24
25         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
26         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
27         a variable to hold the stack slot used by the int<->float conversion opcodes.
28
29         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
30
31 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
32
33         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
34         mono_runtime_capture_context () without calling mono_runtime_invoke ().
35         (can_marshal_struct): Skip structures with auto layout.
36
37         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
38
39 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
40
41         * mini-sparc.c: Fix the handling of enums with base type long.
42
43         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
44
45         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
46         instead of using type->data.klass as the later doesn't work with generics.
47
48 2009-09-25  Mark Probst  <mark.probst@gmail.com>
49
50         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
51         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
52         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
53         works differently now and we don't handle it in the JIT anymore.
54
55         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
56         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
57         the Thread class split.
58
59 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
60
61         * driver.c: Don't run tests with the obsolete treeprop optimization.
62
63         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
64         variable volatile. Fixes #541577.
65
66         * basic-calls.cs: Add a new test.
67
68         * basic-long.cs: Remove tests which are now in basic-calls.cs.
69
70 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
71
72         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
73         work/required with recent iphone sdk versions.
74
75         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
76         structures.
77
78         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
79         in the VCALL decomposition code.
80
81 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
82
83         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
84
85         * basic.cs: Add a test.
86
87         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
88         generic invokes.
89
90         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
91         searches all the domains of the current thread.
92
93         * exceptions-<ARCH>.c: Use it. Fixes #539394.
94
95 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
96
97         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
98         so catching exceptions thrown in the same method works. Fixes exception17.exe.
99
100         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
101         for non-jit trampolines.
102
103         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
104
105         * aot-compiler.c (add_wrappers): Ditto.
106
107         * mini-arm.c: Implement support for passing vtypes and floats, and increase
108         the size of the param area used by dyn_call to 6 which covers the majority of
109         methods.
110
111         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
112
113         * mini-arm.c: Implement support for passing/receiving
114         longs and receiving floats in the dyn_call code.
115
116         * mini-amd64.c: Implement support for receiving vtypes in registers in
117         the dyn_call code.
118
119         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
120         the dyn_call code.
121
122 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
123
124         * mini-arm.c (get_call_info): Return more precise information in
125         ArgInfo->regtype.
126         (dyn_call_supported): Use the information in CallInfo.
127
128         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
129
130         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
131         code.
132
133         * mini-arm.c: Update after the dyn_call api changes.
134
135         * mini.c (mini_create_jit_domain_info): Register a destructor function
136         for the runtime_invoke_hash.
137
138         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
139         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
140         this function.
141         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
142         (dyn_call_supported): Simplify this by using get_call_info ().
143         (mono_arch_dyn_call_free): New destructor function.
144
145         * generics.cs: Remove a printf.
146
147         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
148
149         * mini-arm.c: Add support for enum return values and passing a few arguments
150         on the stack.
151         
152         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
153         dyn invoke.
154
155         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
156
157         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
158         the dynamic invoke wrappers.
159
160         * mini-arm.c: Implement OP_DYN_CALL for arm.
161
162         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
163         supported by the dynamic runtime invoke wrapper.
164
165         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
166         runtime invoke wrapper.
167
168         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
169         if possible when running with full-aot.
170
171         * mini-ops.h: Add OP_DYN_CALL opcode.
172
173         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
174         with dynamic arguments lists similar to libffi.
175
176 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
177
178         * method-to-ir.c: Fix the previous change on 64 bit platforms.
179         
180         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
181         to NEWARR.
182
183         * iltests.il.in: Add a new test.
184         
185 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
186
187         * aot-compiler.c (add_generic_instances): Add more instances of
188         GenericEqualityComparer.
189
190 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
191
192         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
193
194 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
195
196         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
197         comments on some functions that now can fail.
198
199 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
200
201         * Makefile.am: Add Info.plist to EXTRA_DIST
202
203 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
204
205         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
206         static synchronized wrappers. Fixes #539500.
207
208 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
209
210         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
211         properly.
212
213 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
214
215         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
216         lmf before calling filter clauses as well. Fixes #539550.
217
218         * exceptions.cs: Add a test.
219         
220 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
221
222         * aot-compiler.c (add_generic_class): Add instances of
223         Array.GetGenericValueImpl as well.
224
225         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
226         can be tested too.
227
228         * generics.cs: Add a fullaot linq test.
229
230 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
231
232         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
233         reg r1 on arm.
234
235 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
236
237         * mini-trampolines.c (mono_delegate_trampoline) : Call
238           mono_cominterop_get_invoke if the delegate target object
239           is a COM object.
240
241         Code is contributed under MIT/X11 license.
242
243 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
244
245         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
246         internal call is defined outside platform code. Reduce code 
247         duplication with existing [Method|Field]AccessException
248
249 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
250
251         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
252         if the return value is a small struct passed on regs.
253
254 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
255
256         * cpu-arm.md mini-arm.c: Remove unused opcodes.
257
258         * mini-codegen.c: Enable the cpu description validation for arm.
259
260 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
261
262         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
263         test which depends on structs to objects.cs.
264         
265         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
266         require object model related stuff working.
267
268         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
269
270         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
271
272         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
273         against the instruction metadata in mini-ops.h. amd64 only for now.
274
275         * mini-ops.h: Fix some instruction descriptions.
276
277         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
278         unused instructions.
279
280 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
281
282         * exceptions.cs: Add a new test.
283
284 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
285
286         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
287
288 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
289
290         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
291         skip empty phi opcodes.
292         
293         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
294         correctly by zero extending after loads. Skip methods containing calls
295         to the monitor enter/exit trampolines.
296
297         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
298         when calling mono_thread_force_interruption_checkpoint ().
299
300         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
301
302         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
303         64 bit thunks.
304         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
305
306         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
307         bootstrap could run.
308
309 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
310
311         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
312
313 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
314
315         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
316         of the method to
317         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
318         LLVM might be very short.
319
320         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
321         in OP_THROW/RETHROW.
322
323         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
324         alignment on osx.
325
326 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
327
328         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
329         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
330         LLVM might be very short.
331
332 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
333
334         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
335         the alignment for the value of sp.
336
337 2009-09-01  Geoff Norton  <gnorton@novell.com>
338
339         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
340         managed wrappers in full aot.
341
342 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
343
344         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
345
346 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
347
348         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
349
350 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
351
352         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
353
354         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
355         saved info.
356
357         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
358
359         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
360         depend on the info MonoMethodHeader which could be missing in IL stripped
361         assemblies.
362
363 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
364
365         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
366         they are only 4 byte aligned.
367
368 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
369
370         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
371         was done previously, since using SP causes too many problems.
372
373         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
374         frames without a frame pointer works.
375
376         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
377         global register in methods with calls, since the calls can go through
378         a static rgctx trampoline which doesn't save it.
379
380 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
381
382         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
383
384 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
385
386         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
387
388 2009-08-18  Christian Hergert  <chris@dronelabs.com>
389
390         * method-to-ir.c: Fix warnings for uninitialized variables.
391
392 2009-08-18  Christian Hergert  <chris@dronelabs.com>
393
394         * mini-exceptions.c:
395         * aot-compiler.c: Fix printf warnings.
396
397 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
398
399         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
400         Add GetGenericValueImpl<string>.
401         
402         * aot-compiler.c (add_generic_instances): Add instances of
403         GenericEqualityComparer<T> for primitive types. Only emit the array
404         wrappers into the mscorlib image.
405
406 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
407
408         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
409         the methods_loaded array using amodule->info->nmethods.
410
411         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
412         (MONO_AOT_FILE_VERSION): Bump this.
413
414         * aot-compiler.c: Emit more generic instances allowing some parts of linq
415         to work.
416
417         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
418         MonoJitInfo doesn't belong to its methods aot image.
419
420 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
421
422         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
423
424         * mini-arm.c: Fix warnings.
425         
426         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
427
428         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
429         supports it.
430
431 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
432
433         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
434         avoid clobbering IP.
435
436         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
437         hold the trampoline argument, so its initial value is available during
438         debugging.
439
440 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
441
442         * exceptions-arm.c:
443         * exceptions-hppa.c:
444         * mini.c:
445         * exceptions-s390x.c:
446         * exceptions-mips.c:
447         * exceptions-ppc.c:
448         * exceptions-sparc.c:
449         * exceptions-alpha.c:
450         * aot-runtime.c:
451         * mini-trampolines.c:
452         * exceptions-x86.c:
453         * exceptions-s390.c: add and use #define's instead of sizeof()
454         for MonoJitInfo and MonoJitInfoTable.
455
456 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
457
458         * tramp-arm.c:
459         * tramp-amd64.c:
460         * tramp-ppc.c:
461         * tramp-x86.c: use a #define instead of sizeof() for a few
462         structures that use a zero-length array.
463
464 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
465
466         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
467         case when the method is dynamic. Fixes #529238.
468
469 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
470
471         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
472         of asserting when a method is JIT compiled in full-aot mode.
473
474 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
475         
476         Contributed under the terms of the MIT/X11 license by
477         Jerry Maine <crashfourit@gail.com>.
478         
479         * fixed wrong dates in changelog.
480
481 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
482         
483         Contributed under the terms of the MIT/X11 license by
484         Jerry Maine <crashfourit@gail.com>.
485
486         * basic-simd.cs: added test for packed double square root.
487         * cpu-amd64.md: added opcode info for packed double square root.
488         * cpu-x86.md: added opcode info for packed double square root.
489         * mini-ops.h: added IR opcode for packed double square root.
490         * mini-x86.c: added IR to native translation code for packed double square root.
491         * mini-amd64.c: removed todo for packed double square root.
492         * simd-intrinsics.c: added method to IR opcode converstion for
493         packed double square root.
494
495 2009-08-03 Jerry Maine <crashfourit@gmail.com>
496
497         Contributed under the terms of the MIT/X11 license by
498         Jerry Maine <crashfourit@gail.com>.
499
500         * mini-amd64.c: Added a change to help tell the difference as 
501         to what perpose the xmm register is being used--mainly to help
502         with debuging.
503         * mini-amd64.h: Changed callee regs to use 15 out of 16 
504         (one used for special cases) xmm registers for both fp
505         and simd ops. Added define to turn on new feature in the regalloc
506         that allows fp and simd ops to share the xmm regs happily.
507         * codegen.c: Added code to detect for which perpose an xmm reg is
508         being used (fp or simd) and to translate back and forth to the
509         correct logical reg bank (fp or simd) for 'spill load's.
510
511 2009-08-03 Jerry Maine <crashfourit@gmail.com>
512
513         Contributed under the terms of the MIT/X11 license by
514         Jerry Maine <crashfourit@gail.com>.
515
516         * basic-simd.cs: Added tests for stressing the regalloc when running with
517         16 simd regs and when simd and fp ops share the same reg bank.
518
519 2009-08-01  Mark Probst  <mark.probst@gmail.com>
520
521         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
522         in shared generic code, we might have to look up the class in the
523         RGCTX.  If we use the class directly, compute its GC descriptor.
524
525 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
526
527         * mini.c (mono_jit_runtime_invoke): Fix a warning.
528
529 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
530
531         * mini.c (mono_jit_runtime_invoke): Initialize the class and
532         check for errors. Fixed the case when the class with the Main
533         method is broken.
534
535 2009-07-31 Jerry Maine <crashfourit@gmail.com>
536
537         Contributed under the terms of the MIT/X11 license by
538         Jerry Maine <crashfourit@gail.com>.
539
540         * cpu-amd64.md: Fixed simple bug in machine discrition file.
541
542 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
543
544         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
545
546 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
547
548         * method-to-ir.c: Fix naming of stelem and ldelem.
549
550 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
551
552         * driver.c (main_thread_handler): Check that the assembly loaded
553         matches the filename when doing AOT.
554
555 2009-07-30  Mark Probst  <mark.probst@gmail.com>
556
557         * mini.c: get_ip_from_sigctx installer has been removed, so don't
558         call it anymore.
559
560         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
561         utils/mono-sigcontext.h).
562
563         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
564         #ifdef.
565
566 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
567
568         * mini.c (mono_codegen):
569         Call profiler hook to keep track of method code buffers.
570
571 2009-07-27  Mark Probst  <mark.probst@gmail.com>
572
573         * method-to-ir.c: Invoke write barriers for the
574         Interlocked.(Compare)Exchange JIT intrinsics.
575
576 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
577
578         * Makefile.am (version.h): Fix issues when built out of tree.
579         Remove some redundant 'grep's piped through 'sed's.
580
581 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
582
583         This patch is contributed under the terms of the MIT/X11 license
584
585         * mini-ppc.c (mono_arch_output_basic_block):
586         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
587         for bits 32-47 with signed load/store diplacements for bits
588         48-63.  Use prefered base/offset order for indexed form.
589         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
590         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
591         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
592         OP_LOADI2_MEMBASE): Same.
593         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
594         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
595         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
596         indexed form.
597         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
598         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
599         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
600         OP_LOADI1_MEMINDEX): Same
601         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
602         OP_STORER8_MEMINDEX): Same
603         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
604         computations.
605         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
606         for bits 32-47 with signed load/store diplacements for bits
607         48-63.  Use prefered base/offset order for indexed form.
608
609 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
610
611 This patch is contributed under the terms of the MIT/X11 license
612
613         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
614         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
615         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
616         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
617         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
618         cfg->stack_usage to avoid size warnings.
619         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
620         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
621         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
622         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
623         to convert.
624         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
625         after code varible is initialized.
626         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
627         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
628         (mono_arch_emit_epilog): 
629         Move Use ppc_load32 for cfg->stack_usage to avoid size
630         warnings.
631
632 2009-07-24  Mark Probst  <mark.probst@gmail.com>
633
634         * method-to-ir.c: The write barrier doesn't do the store anymore,
635         so we have always to emit it.  Also, emit the wbarrier after the
636         store.
637
638 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
639
640         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
641         for argument count 3 too.
642
643 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
644
645         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
646         the caller handle the exceptions.
647         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
648         method. Fixes #524498.
649
650 2009-07-22  Geoff Norton  <gnorton@novell.com>
651
652         * mini-exceptions.c: Fix build on ia64.
653
654 2009-07-22  Mark Probst  <mark.probst@gmail.com>
655
656         * mini-exceptions.c (ves_icall_get_frame_info): Use write
657         barriers.
658
659 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
660
661         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
662         code.
663
664 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
665
666         * basic-simd.cs (Main): Pass args to the test driver.
667
668 2009-07-20  Geoff Norton  <gnorton@novell.com>
669
670         * mini-x86.h: Fix the x86 version guards to use Apple's
671         properly defined macros.
672
673 2009-07-20  Geoff Norton  <gnorton@novell.com>
674
675         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
676         aligned access.
677
678 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
679
680         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
681         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
682         the information which is needed for invokes, so only one locking+hash table
683         lookup is needed.
684
685         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
686         
687         * aot-compiler.c (add_generic_instances): Emit instances of 
688         GenericComparer<T> for primitive types.
689
690 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
691
692         * mini-posix.c: Fix linux build.
693
694 2009-07-19  Geoff Norton  <gnorton@novell.com>
695
696         * mini.h: Add prototypes for mono_runtime_syscall_fork and
697         mono_gdb_render_native_backtraces
698         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
699         so we implement the sane semantics to the runtime here
700         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
701         so we need to call it differently (mono_gdb_render_native_backtraces)
702         * mini-posix.c: Move the old semantics from mini.c to the prototypes
703         here for default implementations.
704         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
705         support Apple's weird syscall (SYS_fork) implementation and not busy
706         loop in abort() on native crashes on OSX anymore.
707
708 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
709
710         * aot-runtime.c (load_method): Change the handling of the
711         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
712         are used.
713
714         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
715
716 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
717
718         * mini.c (mono_patch_info_equal): Revert the last change for now as it
719         seems to break the aot tests.
720         
721         * mini.c (mono_patch_info_equal): Fix the handling of 
722         MONO_PATCH_INFO_RGCTX_FETCH.
723
724 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
725
726         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
727
728         * mini.c (mono_patch_info_hash): Fix the handling of 
729         MONO_PATCH_INFO_INTERNAL_METHOD.
730         (mono_patch_info_equal): Ditto.
731
732 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
733
734         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
735         in a few places.
736         
737         * mini-llvm.c: Add some infrastructure for AOT support.
738
739 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
740
741         * mini-llvm-cpp.c: Update to the latest llvm api.
742         
743         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
744         option to false to prevent llvm from installing signal handlers which
745         trip up the gc.
746         
747 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
748
749         * cpu-x86.md:
750         * cpu-amd64.md: Revert previous change as those instructions
751         take 2 separate arguments. Remember to read the arch docs more
752         carefully next time.
753
754 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
755
756         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
757
758 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
759
760         * mini-ppc.c: exploit multiple load/store units if available (rest of
761         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
762         http://bugzilla.novell.com/show_bug.cgi?id=487846).
763
764 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
765
766         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
767         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
768
769 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
770
771         * cpu-x86.md: Fix missing clobbering from trancendental simd
772         ops.
773
774         * cpu-amd64.md: Same.
775
776 2009-07-14 Jerry Maine <crashfourit@gmail.com>
777
778         Contributed under the terms of the MIT/X11 license by
779         Jerry Maine <crashfourit@gail.com>.
780
781         * basic-simd.cs: Added tests for single and doulble indexers.
782
783         * cpu-amd64.md: Added simd opcode information.
784
785         * mini-amd64.c: Added IR to native simd generation code.
786         Added simd register names and function that returns them.
787
788         * mini-amd64.h: Added marcos to turn on simd code compilation in
789         amd64. Added max simd register count marco. Added caller/callee
790         register mask marcos. Added marcos to use simd register bank.
791
792         * mini.h: Added helper marco for shufling dwords and simple
793         floats.
794
795 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
796
797         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
798
799         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
800
801         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
802         the length of the native code as well.
803
804         * basic-simd.cs: Add a test for #521662.
805
806 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
807
808         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
809
810 2009-07-13  Mark Probst  <mark.probst@gmail.com>
811
812         * mini.c: Register function for getting the IP from a signal
813         context with metadata.
814
815 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
816
817         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
818         call a generic class init trampoline if needed. Fixes #519336.
819
820         * generics.cs: Add a test.
821         
822 2009-07-09  Mark Probst  <mark.probst@gmail.com>
823
824         * method-to-ir.c: When doing a call which might be remote from
825         shared generic code to other shared code with open type arguments,
826         get the remoting invoke wrapper from the RGCTX and do an indirect
827         call to it.
828
829 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
830
831         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
832         after the unbox trampoline in the full-aot case.
833
834 2009-07-02  jonas echterhoff <jonas@unity3d.com>
835         
836         * mini.c: Move initialization of jit_mutex before debugger initialization
837         
838         to avoid crashes.
839         
840         
841         * Info.plist: added Info.plist and link flag to enable the mono executable
842         to access other processes. Requires codesigning of the executable to work.
843         
844         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
845         
846         compile on OS X.
847         
848
849 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
850
851         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
852
853 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
854
855         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
856         when the generic instance is an instantiation of a subclass of the
857         methods class. Fixes #517166.
858
859 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
860
861         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
862         code.
863
864         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
865         AOTed code.
866
867         * CMakeLists.txt: Add minimal support for installation.
868
869 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
870
871         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
872         determine whenever a method is directly callable to a separate function.
873
874         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
875         needed ones as a result of the previous change.
876
877         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
878         type of register arrays.
879
880         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
881         type of register arrays.
882
883 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
884         
885         Contributed under the terms of the MIT/X11 license by
886         Jerry Maine <crashfourit@gail.com>.
887
888         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
889
890 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
891
892         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
893
894 2009-06-24  Neale Ferguson <neale@sinenomine.net>
895
896         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
897         dump of structure return value. Fix some formatting.
898         * cpu-s390x.md: Fix lengths of instruction sequences.
899         * mini-s390.c: Minor formatting changes.
900
901 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
902
903         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
904         Use sigaction on freebsd as well.
905
906 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
907
908         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
909         uses #ifdef on it.
910         
911         * mini.c (mini_init): Revert a change which breaks cross-compilation.
912
913 2009-06-22  Mark Probst  <mark.probst@gmail.com>
914
915         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
916
917 2009-06-22  Mark Probst  <mark.probst@gmail.com>
918
919         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
920
921 2009-06-20  Martin Baulig  <martin@ximian.com>
922
923         * debug-mini.c
924         (MonoDebuggerThreadFlags): New enum typedef.
925         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
926         (mono_debugger_thread_created): Added `gpointer func' argument;
927         initialize the new `thread_flags' field.
928
929 2009-06-18  Martin Baulig  <martin@ximian.com>
930
931         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
932         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
933
934         * debug-debugger.c
935         (mini_debugger_set_attach_ok): New function; sets the attach-ok
936         flag in `MONO_DEBUGGER__info.runtime_info'.
937
938         * driver.c
939         (mono_main): Call mini_debugger_set_attach_ok() if generics
940         sharing is disabled.
941
942 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
943
944         * aot-compiler.c (add_wrappers): Fix a warning.
945
946         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
947         the ppc load/store macro changes.
948
949 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
950
951         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
952
953         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
954         not just the got symbol.
955
956         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
957         on ppc.
958
959         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
960         ppc.
961         
962         * aot-compiler.c: Remove some fixmes.
963
964         * driver.c (mono_main): Print a helpful message when cross-compiling.
965
966         * mini.c (mini_init): Disable signal handlers when cross-compiling.
967
968         * method-to-ir.c (initialize_array_data): Do the optimization if the
969         target byte order is little endian, instead of the host byte order.
970
971         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
972         wrappers into the mscorlib image, Emit a unique plt symbol for each
973         image, emit symbols for plt entries.
974
975         * image-writer.c (img_writer_emit_symbol_size): New function to emit
976         a .size directive.
977         
978 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
979
980         * aot-compiler.c (add_wrappers): Avoid calling 
981         mono_marshal_get_type_info () since it can assert for some types.
982
983         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
984         ldtoken are used inside wrappers.
985
986         * helpers.c: Add support for prefixing tools with the arch name.
987
988         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
989         quantities when using ilp32.
990
991         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
992         spill slots. Use sizeof(mgreg_t) for the spill slot size.
993
994         * image-writer.c: Use .long on ilp32.
995
996         * aot-compiler.c: Use 32 bit loads on ilp32.
997         
998 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
999
1000         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
1001
1002         * mini-ops.h: Use TARGET_POWERPC define for consistency.
1003
1004         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
1005
1006         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
1007         second got slot of every aot image.
1008         
1009         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
1010         aot on platforms with function pointers.
1011
1012         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
1013         support for aot/full aot on ppc/ppc64.
1014         
1015         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
1016         arguments which are needed on ppc.
1017
1018         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
1019         argument.
1020
1021         * mini-trampolines.c aot-runtime.c: Update after the above changes.
1022         
1023         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
1024
1025         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
1026
1027         * aot-compiler.c (emit_got_info): Fix reading unused memory.
1028
1029         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
1030
1031 2009-06-17  Geoff Norton  <gnorton@novell.com>
1032
1033         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
1034
1035 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
1036
1037         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
1038         to control whenever the dwarf writer is in xdebug or aot mode.
1039         (emit_class_dwarf_info): Use a separate abbrev for structures without
1040         children.
1041
1042         * aot-compiler.c: Pass the appending parameter to 
1043         mono_dwarf_writer_create ().
1044
1045         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
1046         falls through to its next bblock. Fixes #513931.
1047
1048         * iltests.il: Add a test.
1049
1050         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
1051         infor even if emit_line is FALSE, as the apple linker seems to require it.
1052
1053         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
1054
1055         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
1056         gcc does.
1057         (emit_fde): Ditto.
1058
1059 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
1060
1061         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
1062         mips build.
1063
1064 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
1065
1066         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
1067         'has_call_handler' fields.
1068
1069         * method-to-ir.c (mono_method_to_ir): Set them if needed.
1070
1071         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
1072         first bblock if not needed. Fixes #512790.
1073         
1074 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1075
1076         * aot-compiler.c (mono_compile_assembly): Fix a warning.
1077         
1078         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
1079         wrappers.
1080
1081         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
1082         remoting-invoke-with-check wrappers, which are not needed when running with
1083         full-aot, since it doesn't support remoting.
1084         
1085 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1086
1087         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
1088
1089         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
1090         method info, it is not used anymore.
1091
1092         * mini.h: Bump AOT file format version.
1093         
1094         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
1095         word smaller.
1096
1097         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
1098         change above.
1099         
1100         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
1101
1102         * mini.h: Bump AOT file format version.
1103         
1104 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1105
1106         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
1107         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
1108         iphone.
1109
1110         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
1111         of CKFINITE and FBGE for VFP.
1112
1113 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
1114
1115         * aot-compiler.c: Don't align code to 16 bytes on arm.
1116         
1117         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
1118         before the methods they belong to.
1119
1120         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
1121         the full-aot case if possible, since the trampoline will be called right 
1122         away.
1123
1124         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
1125         trampolines to 1024 after the change above.
1126
1127         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
1128         trampoline to save 8 bytes per trampoline.
1129
1130         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
1131         change above.
1132
1133 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1134
1135         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
1136
1137 2009-06-08  Martin Baulig  <martin@ximian.com>
1138
1139         * debug-mini.c
1140         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1141         (_mono_debugger_throw_exception): Don't make this static.
1142         (_mono_debugger_unhandled_exception): Likewise.
1143         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1144
1145         * debug-mini.c
1146         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1147         (_mono_debugger_throw_exception): Add function prototype.
1148         (_mono_debugger_unhandled_exception): Likewise.
1149
1150         * mini-exceptions.c
1151         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1152         arg; return the first exception handler if the exception is caught
1153         and we're running inside the debugger.
1154         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1155         improve exception handle inside runtime-invoke, check whether the
1156         exception is actually caught in the method being invoked and not
1157         by the runtime-invoke-wrapper.
1158
1159 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1160
1161         * image-writer.c: Improve support for the osx assembler.
1162
1163         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
1164         support them.
1165
1166 2009-06-08  Martin Baulig  <martin@ximian.com>
1167
1168         * debug-mini.c
1169         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1170         (_mono_debugger_throw_exception): Don't make this static.
1171         (_mono_debugger_unhandled_exception): Likewise.
1172         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1173
1174         * debug-mini.c
1175         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1176         (_mono_debugger_throw_exception): Add function prototype.
1177         (_mono_debugger_unhandled_exception): Likewise.
1178
1179         * mini-exceptions.c
1180         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1181         arg; return the first exception handler if the exception is caught
1182         and we're running inside the debugger.
1183         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1184         improve exception handle inside runtime-invoke, check whether the
1185         exception is actually caught in the method being invoked and not
1186         by the runtime-invoke-wrapper.
1187
1188 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
1189
1190         * image-writer.c (append_subsection): Don't align subsections of the
1191         debug_line section as a workaround.
1192
1193         * dwarfwriter.c: Emit line number info in the AOT case as well.
1194
1195 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
1196
1197         This patch is contributed under the terms of the MIT/X11 license
1198
1199        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
1200        code_len <= code_size
1201
1202 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
1203
1204         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
1205
1206 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
1207
1208         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
1209         invoke wrappers, we now use trampolines instead.
1210
1211 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1212
1213         * mini-darwin.c: The exception thread must not be registered with
1214         the GC.
1215
1216 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1217
1218         * mini-gc.c: Disable the code because it makes SGen crash.
1219
1220 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
1221
1222         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
1223         instead of asserting.
1224
1225 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1226
1227         * aot-compiler.c (mono_compile_assembly): Move the creation of the
1228         output file after the code has been compiled.
1229
1230 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
1233
1234 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1235
1236         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
1237         entries distinction to simplify the code.
1238
1239         * mini.h: Bump AOT file format version.
1240         
1241 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
1242
1243         * objects.cs: Fix the signature of one of the tests.
1244
1245         * mini.c (mini_create_ftnptr): New helper function, moved here from
1246         object.c.
1247         (mini_get_addr_from_ftnptr): Ditto.
1248         (mini_init): Install the new helpers.
1249
1250 2009-05-28  Martin Baulig  <martin@ximian.com>
1251
1252         Correctly initialize the debugger when embedding Mono.
1253
1254         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
1255         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
1256         see documentation in mini_debug_running_inside_mdb().
1257
1258         * debug-debugger.c
1259         (mini_debug_running_inside_mdb): New function to check whether
1260         we're running inside mdb.
1261
1262         * mini.c (mini_init): Call mini_debugger_init() if we're running
1263         inside the debugger.
1264
1265         * driver.c (mono_main): Moved the call to mini_debugger_init()
1266         into mini_init() to make this work when embedding Mono.
1267
1268         * debug-debugger.c (mini_debugger_init): Warn about duplicate
1269         calls to mini_debugger_init().
1270
1271         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
1272         mono_debugger_main() -> mini_debugger_main() and put them inside a
1273         `MONO_DEBUGGER_SUPPORTED' conditional.
1274
1275 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
1276
1277         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
1278         this is no longer in use.
1279         * mini.h: Same.
1280
1281 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
1282
1283         * mini-sparc.c (add_outarg_load): Fix the sparc build.
1284
1285         * aot-compiler.c (emit_method_code): Always write out C style symbols for
1286         methods.
1287
1288 2009-05-27  Martin Baulig  <martin@ximian.com>
1289
1290 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1291
1292         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
1293         long_conv_to_r_un to 64 bits.
1294
1295         * cpu-x86.md: Increase the instruction size due to the changes.
1296
1297         * iltests.il.in: Add regression test.
1298
1299         Fixes #467201.
1300
1301 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1302
1303         * objects.cs: Move the previous test from basic.cs to here.
1304
1305 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1306
1307         * basic.cs: Add regression test for #506915.
1308
1309 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1310
1311         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
1312         optimization we must check the bb of the first byte of stobj as
1313         it's the only one set in cil_offset_to_bb.
1314
1315         Fixes #506915.  
1316
1317 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
1318
1319         * image-writer.c: Fix pointer directive on ppc64.
1320
1321 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
1322
1323         * image-writer.c (asm_writer_emit_section_change): Avoid using
1324         .bss subsections on ppc too.
1325
1326 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
1327
1328         * image-writer.c: Fix the definition of TARGET_ASM_....
1329         
1330         * image-writer.c: Fix the emission of assembler directives in the last
1331         change.
1332
1333         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
1334         exception throwing code to accomodate ppc64.
1335
1336         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
1337         size to work on ppc64 too.
1338
1339         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
1340         too.
1341
1342         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
1343         the assembler dialect instead of using platform specific defines.
1344
1345 2009-05-22  Geoff Norton  <gnorton@novell.com>
1346
1347         * mini-arm.c (get_call_info): If a structure is split between the stack
1348         and argument registers, we should not advance the stack pointer by the entire
1349         native size, but just by the amount that spilled.
1350
1351 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
1352
1353         * mini-arm.c (get_call_info): Handle structures with alignment requirements
1354         correctly.
1355
1356 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1357
1358         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
1359         wrappers normally.
1360         
1361         * aot-compiler.c (add_extra_method): Fix up the collection of extra
1362         methods so wrapper don't get added twice.
1363         (add_generic_instances): Don't add methods of arrays.
1364
1365         * generics.cs: Mark one test as !FULLAOT.
1366
1367 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1368
1369         * mini-x86.c (emit_move_return_value): Remove unused vars.
1370
1371 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1372
1373         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
1374         decomposing 8 bytes structs into a LCALL.
1375
1376         * mini-x86.c (emit_move_return_value): We no longer push the vtype
1377         pointer for where to store the returned regs.
1378
1379         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
1380         state the concern.
1381
1382         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
1383
1384 2009-05-20  Miguel de Icaza  <miguel@novell.com>
1385
1386         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
1387         without getenv.
1388
1389 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1390
1391         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
1392
1393         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
1394         generics.
1395
1396 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
1397
1398         * local-propagation.c (mono_local_cprop): Avoid local propagation
1399         across paired add/sub if the first instruction dest reg is it's
1400         source reg. For example:
1401
1402         int_add_imm R12 <- R12 [1] clobbers: 1
1403         int_sub_imm R42 <- R12 [1] clobbers: 1
1404
1405         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
1406         maintain the math identify.
1407
1408         Fixes #505375.
1409
1410 2009-05-20  Andreia Gaita  <avidigal@novell.com>
1411
1412         * Makefile.am: avoid going on the network just to get the revision,
1413         use git log instead
1414
1415 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
1416
1417         Fixed estimate for short branches on amd64 (they were off mark, and
1418         enabling call prolog-epilog instrumentations caused assertions).
1419         * mini.h (struct MonoBasicBlock): added max_length field to hold the
1420         estimate for the maximum length of this basic block.
1421         * mini-amd64.c:
1422         - mono_arch_emit_prolog: compute max_length for each basic block
1423           (instead of max_offset), and inflate size estimate also for entry bb
1424           in case of code instrumentation.
1425         - mono_arch_output_basic_block: get rid of "cpos" (the current
1426           estimated "position" in the code), and always use "offset" instead,
1427           which is accurate; at the beginning of the function quickly recompute
1428           max_offset for all the remaining blocks, starting from the current
1429           cfg->code_len (which is correct, and not estimated) and using the
1430           estimated block lengths computed previously.
1431
1432 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
1433
1434         * exceptions-ppc.c: Remove the caching from the trampoline creation 
1435         functions, it is already done in the caller.
1436
1437         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
1438
1439         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
1440         MONO_ARCH_GSHARED_SUPPORTED define.
1441
1442         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
1443
1444         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
1445         function.
1446
1447 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
1448
1449         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
1450         call to mono_marshal_get_rgctx_invoke ().
1451
1452         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
1453         mono_marshal_get_static_rgctx_invoke (), all platforms which support
1454         gshared use the static rgctx trampolines now.
1455         
1456         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
1457         platform supports it.
1458
1459 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1460
1461         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
1462
1463         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
1464
1465 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1466
1467         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
1468
1469         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
1470         for ppc.
1471
1472 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
1473
1474         Made it possible for mono_arch_instrument_epilog to preserve
1475         argument registers, otherwise instrumenting the "epilogue" before
1476         a tail call would clobber them.
1477         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
1478         if like mono_arch_instrument_epilog but with an additional parameter
1479         that states if argument registers must be preserved.
1480         * mini.c: implemented mono_arch_instrument_epilog as a call to
1481         mono_arch_instrument_epilog_full without asking to preserve argument
1482         registers (this makes the existing code work as usual).
1483         * mini-amd64.c:
1484         - mono_arch_instrument_epilog: add parameter to transform it into
1485         mono_arch_instrument_epilog_full, and preserve argument registers
1486         when required.
1487         - mono_arch_output_basic_block, OP_TAILCALL case: call
1488         mono_arch_instrument_epilog_full.
1489         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
1490         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
1491         only transformed mono_arch_instrument_epilog into
1492         mono_arch_instrument_epilog_full.
1493
1494 2009-05-15  Geoff Norton  <gnorton@novell.com>
1495
1496         * mini-darwin.c: This works on arm now.
1497
1498 2009-05-14  Geoff Norton  <gnorton@novell.com>
1499
1500         * jit.h, driver.c: Allow full-aot to be decided programatically by the
1501         embedding api.
1502
1503 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1504
1505         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
1506         label names.
1507
1508         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
1509         wrappers during full aot mode correctly.
1510
1511         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
1512         methods correctly.
1513
1514         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
1515         mono_metadata_type_hash ().
1516
1517 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
1518
1519         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
1520         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
1521         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
1522         Removed MONO_INST_BRLABEL from the instruction flags, and the
1523         remaining code that used it, because we do not support branches inside
1524         basic blocks (and branch target labels) anymore.
1525         * Makefile.am: As part of the above cleanup, remove reference to
1526         BURG files which don't exist anymore.
1527
1528 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
1529
1530         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
1531         osx.
1532
1533         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
1534         to use mono_arch_throw_corlib_exception.
1535
1536         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
1537         mono_arch_throw_corlib_exception for throwing corlib exceptions.
1538
1539         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
1540         domain mempool.
1541
1542         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
1543
1544         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
1545         for the got to make debugging easier and to avoid confusing it with the
1546         system got.
1547         
1548         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
1549         method so a breakpoint can be set when using gdb.
1550
1551 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
1552
1553         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
1554         on mono_method_get_imt_slot ().
1555
1556         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
1557         num_decodes variables.
1558
1559         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
1560         change as it doesn't seem to work.
1561         
1562         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
1563         wrappers.
1564
1565 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
1566
1567         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
1568         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
1569
1570         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
1571         builder when using full aot.
1572
1573         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
1574         here, it is already handled.
1575         
1576         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
1577         correctly for IMT.
1578
1579         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
1580
1581         * mini-arm.h: Enable IMT for full aot.
1582         
1583         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
1584         arch doesn't support it.
1585
1586         * mini.c (mini_init): Don't disable IMT for full aot if the
1587         architecture supports it.
1588
1589         * mini.h (MonoAotTrampoline): New enum containing the different types
1590         of 'numerous' trampolines.
1591         (MONO_AOT_FILE_VERSION): Bump this.
1592
1593         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
1594         static rgctx trampolines. Add support for full-aot IMT thunks.
1595
1596         * mini-amd64.h: Enable IMT for full aot.
1597
1598         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
1599         to exclude tests belonging to a category.
1600
1601         * generics.cs: Mark some tests with a !FULLAOT category.
1602
1603         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
1604         generics tests.
1605
1606 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
1607
1608         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
1609         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
1610         (emit_plt): Fix a warning.
1611
1612 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
1613
1614         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
1615         back into aot-compiler.c to a place where the other functions shared by
1616         the runtime and aot compiler are.
1617         
1618         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
1619         as done previously, instead of in MonoAotFileInfo, since pointers might have
1620         alignment requirements.
1621
1622         * mini.h: Bump AOT file format version.
1623
1624 2009-05-10  Miguel de Icaza  <miguel@novell.com>
1625
1626         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
1627         that is used at runtime from the aot-compiler.c, this makes it
1628         work on setups that remove the AOT compiler from the output
1629         image. 
1630
1631 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
1632
1633         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
1634         PPC.
1635
1636         * mini-ppc.h: Enable static rgctx trampolines for ppc.
1637
1638         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
1639
1640         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
1641         stuff to mono_arch_decompose_long_opts ().
1642         (mono_decompose_opcode): Remove some dead code.
1643
1644 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
1645
1646         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
1647         cmethod can be null for quite a some reasons.
1648
1649 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
1650
1651         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
1652
1653 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
1654
1655         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
1656
1657 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
1658
1659         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
1660         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
1661         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
1662         calls returning structures by addr on amd64.
1663
1664         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
1665
1666         * iltests.il.in: Restructure the tail call tests a bit.
1667         
1668 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
1669
1670         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
1671         for virtual methods too.
1672
1673 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
1674
1675         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
1676         due to regression in verifying System.dll.
1677
1678 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
1679
1680         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
1681         in dynamic methods.
1682
1683         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
1684         instances.
1685
1686         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
1687         g_str_hash () which can change.
1688
1689         * driver.c (mini_regression): Disable optimizations not supported by
1690         the cpu. Fixes #500019.
1691
1692         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
1693         build.
1694
1695 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
1696
1697         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
1698         to the latest LLVM code.
1699
1700 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
1701
1702         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
1703
1704 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
1705
1706         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
1707         x86/amd64.
1708
1709         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
1710         no longer saving offsets, so just save the patch types along with the other
1711         info.
1712         * aot-runtime.c (load_patch_info): Update after the changes to 
1713         encode_patch_list ().
1714         (decode_got_entry): Removed, merged into load_patch_info ().
1715         (is_shared_got_patch): Removed, call the same function from
1716         aot-compiler.c.
1717
1718         * mini.h: Bump aot file format version.
1719         
1720         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
1721         half-finished no-dlsym code.
1722
1723         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
1724         option.
1725
1726         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
1727         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
1728
1729 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
1730
1731         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
1732         buffer length to work with AOT code.
1733
1734         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
1735         ldfld/stfld opcodes.
1736
1737         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
1738         as it is not used.
1739
1740         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
1741
1742         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
1743
1744         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
1745         LLVM API.
1746
1747         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
1748         if needed. Don't decompose long operations when using llvm.
1749
1750 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
1751
1752         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
1753         PAGESIZE constant.
1754
1755         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
1756
1757 2009-05-03  Martin Baulig  <martin@ximian.com>
1758
1759         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
1760         mono_debugger_insert_method_breakpoint() since the class init
1761         handler we're inserting at the top of the method already gives us
1762         a notification.
1763
1764 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
1765
1766         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
1767         to mono_arch_decompose_long_opts () for x86 and arm.
1768
1769 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
1770
1771         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
1772         TARGET_AMD64 here.
1773
1774 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
1775
1776         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
1777         JIT code.
1778
1779 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
1780
1781         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
1782         number of trampolines used in full-aot mode.
1783
1784         * aot-compiler.c: Add an ntrampolines option to set the number of 
1785         trampolines emitted in full-aot mode.
1786
1787 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
1788
1789         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
1790         a volatile load. Get rid of get_tempname (), llvm assigns names
1791         automatically.
1792
1793         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
1794         builder function.
1795
1796         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
1797         a value.
1798
1799         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
1800         level 1.
1801
1802         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
1803         to the same register as a fixed sreg2. Fixes #497271.
1804
1805         * iltests.il.in: Add a new test.
1806
1807 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
1808
1809         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
1810         stack, since pushes complicate exception handling.
1811
1812         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
1813         the stack if they are passed using moves.
1814
1815         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1816
1817         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
1818         when using llvm.
1819
1820         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
1821         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
1822         of FMOVE if it is an R4.
1823
1824 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
1825
1826         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
1827
1828         * mini.h (LLVMCallInfo): New structure to store calling convention 
1829         information for the LLVM back end similar to the CallInfo structures in 
1830         the back-ends.
1831
1832         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
1833         call information in a format usable by LLVM.
1834         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
1835
1836         * method-to-ir.c (mono_emit_call_args): Emit calls using 
1837         mono_llvm_emit_call () when compiling using LLVM.
1838
1839         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
1840         comments to all functions. Fix memory leaks. Add a public init/cleanup
1841         function.
1842
1843         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
1844
1845         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
1846         mono_array_new_va () jit icall.
1847         
1848 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
1849
1850         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
1851         multiple machine description files to be specified.
1852         * mini-ops.h: fixes for cross-compilation.
1853
1854 2009-04-22  Miguel de Icaza  <miguel@novell.com>
1855
1856         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
1857         some porting work.
1858
1859 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
1860
1861         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
1862         to prevent asserts in various passes. Fixes #497220.
1863
1864 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
1865
1866         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
1867         a racy assert.
1868
1869         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
1870         table to avoid duplicates.
1871
1872         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1873         
1874         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
1875         option is used.
1876
1877 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1878
1879         * mini.c (mini_method_verify): Fail fulltrust code if the exception
1880         is for method or field access.
1881
1882 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
1883
1884         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
1885         a Value to stdout.
1886
1887         * mini-llvm.c (mono_llvm_emit_method): Use it.
1888         
1889         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
1890         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
1891         on volatile values.
1892
1893         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
1894         synchronized methods.
1895
1896         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
1897
1898         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
1899
1900         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
1901         OP_LOADI8_MEM.
1902
1903         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
1904         allowing some options to be set dynamically.
1905
1906 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
1907
1908         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
1909         unconditional branch.
1910
1911         * mini.h (MonoTrampolineType): Add new trampoline type 
1912         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
1913         compiled code.
1914
1915         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
1916         function.
1917
1918         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
1919         creation function.
1920
1921         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
1922         is enabled. Instead, use the llvm vcall trampoline.
1923         
1924         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
1925
1926         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
1927         
1928         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
1929         functions.
1930
1931         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
1932         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
1933
1934         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
1935         OP_IA64_CSET opcode.
1936
1937         * mini.c: Fix a warning.
1938
1939         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
1940         THROW to the appropriate llvm type.
1941
1942 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
1943
1944         * mini.c (mini_method_compile): Add statistics for methods JITted
1945         with/without LLVM.
1946
1947 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1948
1949         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
1950         OP_IA64_CMP_<cond>_IMM opcodes.
1951
1952 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1953
1954         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
1955         corlib exceptions.
1956
1957         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
1958         correctly.
1959
1960         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
1961         GENERICINST.
1962
1963 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
1964
1965         * mini-exceptions.c : add thread id to EXCEPTION trace message.
1966
1967 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1968
1969         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
1970         support.
1971
1972         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
1973         rgctx invoke trampolines for x86.
1974
1975         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
1976         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
1977         (mono_arch_get_vcall_slot): Simplify this.
1978
1979 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
1982         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
1983
1984 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1985
1986         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
1987         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
1988
1989         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
1990
1991         * liveness.c (visit_bb): Remove a needless assert.
1992
1993 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
1994
1995         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
1996         full aot support to the arch specific code.
1997
1998         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
1999
2000         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
2001
2002         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
2003         
2004         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
2005         collect information about the delegate invoke impl trampolines.
2006
2007         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
2008         to save trampolines during full-aot mode.
2009
2010         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
2011         creation function which returns a trampoline which sets the rgctx
2012         argument.
2013         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
2014         wrapper if possible.
2015         (mono_delegate_trampoline): Ditto.
2016
2017         * mini.c (mono_jit_runtime_invoke): Ditto.
2018
2019         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
2020         
2021         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
2022
2023         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2024         
2025 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
2026
2027         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
2028         just setting the opcode to OP_NOP.
2029
2030 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
2031
2032         * mini.c (mini_method_compile): Put the last change inside an 
2033         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
2034         
2035         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
2036         and extend live ranges to cover the whole method when using xdb.
2037
2038         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
2039         do it in the trampolines.
2040
2041         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
2042         needed.
2043
2044         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
2045         
2046         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
2047         call code in full-aot mode since IMT is disabled there.
2048         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
2049         new JIT no longer has that restriction.
2050
2051         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2052
2053         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
2054         a more compact format.
2055         (mono_aot_wrapper_name): New function to return a unique name for a
2056         wrapper method, also used by the AOT runtime.
2057
2058         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
2059         aot-compiler.c.
2060
2061         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
2062         when a ICollection<T> etc is encountered.
2063         (add_generic_instances): Process method arguments/locals too.
2064         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
2065         trampoline names.
2066
2067         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
2068         
2069 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
2070
2071         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
2072
2073         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
2074
2075         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
2076         representing the result of the decomposition. Nullify instructions
2077         instead of setting them to OP_NOP since nops can't have registers
2078         set.
2079
2080 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
2081
2082         * aot-compiler.c (mono_compile_assembly): Split this huge function into
2083         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
2084         info. Strip 'mapping symbols' on ARM.
2085
2086         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
2087         
2088         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
2089         this with the native genmdesc.
2090
2091 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
2092
2093         * aot-runtime.c:  Fixing the MSVC build.
2094
2095         Code is contributed under MIT/X11 license.
2096
2097 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
2100         JITted code depends on it.
2101
2102 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2103
2104         * aot-compiler.c: Use new MonoGenericParam accessors.
2105
2106 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2107
2108         Reduce memory usage and improve correctness wrt MonoGenericParam
2109         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
2110         handing.  Avoid allocating MonoGenericParams, but use the ones in
2111         the container itself.
2112
2113 2009-04-07  Miguel de Icaza  <miguel@novell.com>
2114
2115         * tasklets.c: Return exceptions in the out argument.
2116
2117 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2118
2119         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
2120         opcode. Use pointer types in more places instead of casting them to 
2121         integers.
2122
2123         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
2124         optimizations.
2125         (mono_llvm_optimize_method): New helper function to optimize a method.
2126
2127         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
2128         widening code so it could be called from more places.
2129         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
2130         code paths in the call opcodes.
2131
2132 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
2133
2134         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
2135
2136 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
2137
2138         * dwarfwriter.c: Use _ to separate class name 
2139         components as gdb can't handle '.'. Represent reference variables
2140         as 'class <NAME>&'.
2141         
2142         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
2143
2144         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
2145         
2146         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
2147
2148         * gc-test.cs: New file with GC stack marking tests.
2149         
2150         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
2151         negative numbers for vfp.
2152
2153         * basic-float.cs: Add a test.
2154         
2155 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
2156
2157         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
2158
2159 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
2160
2161         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
2162         part of tasklet/continuation support.
2163
2164 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
2165
2166         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
2167         amd64 opcodes inside an ifdef.
2168
2169         * dwarfwriter.c: Emit inheritance information for classes, emit fields
2170         of complex types.
2171         
2172         * dwarfwriter.c (emit_type): Emit the class info for classes.
2173
2174 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
2175
2176         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
2177
2178         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
2179
2180         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
2181
2182         * ssa.c (mono_ssa_compute): Fix some memory leaks.
2183
2184 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
2185
2186         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
2187
2188         * mini-llvm.c: Update comments.
2189
2190         * mini.h (COMPILE_LLVM): New macro.
2191
2192         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
2193
2194         * ssa.c (mono_ssa_compute): Ditto.
2195         
2196         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
2197         the unwind ops from a DWARF FDE.
2198
2199         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
2200         methods by extracting the dwarf unwind ops from the unwind info generated
2201         by LLVM.
2202         
2203         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
2204         calls.
2205
2206         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
2207         addressing modes.
2208
2209 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
2210
2211         * Makefile.am (llvm_sources): Enable this.
2212
2213         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
2214         failing back to the JIT if something cannot be handled.
2215
2216         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
2217         compiling with LLVM.
2218
2219         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
2220         compiling with LLVM.
2221
2222         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
2223         compiling with LLVM.
2224
2225         * mini-ops.h: Add a few opcodes needed by LLVM.
2226
2227         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
2228         has no unwind info.
2229
2230         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
2231         backend.
2232
2233         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
2234
2235         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
2236
2237 2009-04-01  Mark Probst  <mark.probst@gmail.com>
2238
2239         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
2240         ridiculously large methods.
2241
2242 2009-03-31  Martin Baulig  <martin@ximian.com>
2243
2244         * debug-debugger.c (debugger_remove_breakpoint): Call
2245         mono_debugger_remove_class_init_callback ().
2246
2247 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
2248
2249         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
2250         right before emitting code, not at the start.
2251
2252         * mini.c (mono_postprocess_patches): Extract this into a separate function
2253         from mono_codegen ().
2254
2255         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
2256         byref types correctly.
2257
2258 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
2259
2260         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
2261         by the last change.
2262
2263 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
2264
2265         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
2266         indirect calls, this avoids problems where get_vcall_slot () would get
2267         confused by the native code for the instruction preceeding the call.
2268         (mono_arch_get_vcall_slot): Simplify this.
2269         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
2270
2271         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
2272         register allocator now seems to depend on them instead of the data in
2273         cpu-<ARCH>.md.
2274
2275         * mini.c (mini_method_compile): Throw the correct type of exception if
2276         mono_method_get_header () fails because of a loading error.
2277
2278 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * mini.c (mini_method_compile): Clear the loader error if the method
2281         header cannot be decoded.
2282
2283         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
2284         interface methods on proxies correctly.
2285
2286         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
2287         this argument for vtype methods. Add precise liveness info for arguments.
2288
2289         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
2290         LIVERANGE_START/END opcodes.
2291
2292         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
2293         for arguments and values in registers.
2294
2295 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
2296
2297         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
2298         return a valuetype. Fixes #487518.
2299
2300         * iltests.il: Add a test.
2301         
2302         * aot-compiler.c: Use mono_thread_create () to create helper threads.
2303
2304         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
2305         closed over a null reference correctly.
2306
2307 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
2310
2311 2009-03-25  Mark Probst  <mark.probst@gmail.com>
2312
2313         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
2314         allocated to the same registers as fixed sregs.
2315
2316 2009-03-24  Mark Probst  <mark.probst@gmail.com>
2317
2318         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
2319         ATOMIC_CAS_IMM ops.
2320
2321         * method-to-ir.c: Handle more cases for
2322         Interlocked.CompareExchange.
2323
2324         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
2325         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
2326         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
2327
2328 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
2329
2330         * aot-runtime.c (decode_method_ref): Fix a warning.
2331
2332         * unwind.c (mono_unwind_frame): Ditto.  
2333
2334 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2335
2336         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
2337         (mono_compile_assembly): Enable the binary writer for full-aot as well.
2338
2339         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
2340         fix the handling of large values in the ALU_PC_G0_NC relocation.
2341
2342 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2343
2344         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
2345
2346 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2347
2348         * method-to-ir.c (mono_spill_global_vars): Support for ternary
2349         ops.
2350
2351 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2352
2353         * method-to-ir.c: MINI_OP3 needs a comma.
2354
2355         * method-to-ir.c, mini.h, mini.c: Remove
2356         mono_init_op_sreg_counts ().
2357
2358 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2359
2360         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
2361         OP_JMP.
2362         
2363         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
2364         assertion.
2365
2366         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
2367
2368         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
2369         code somewhat.
2370
2371 2009-03-21  Mark Probst  <mark.probst@gmail.com>
2372
2373         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
2374         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
2375         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
2376         operations.
2377
2378 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
2379
2380         * driver.c: Change location of gc_wrapper.h.
2381
2382         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
2383         inside finally clauses correctly. Fixes #485721.
2384
2385         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
2386         after the change above.
2387
2388         * exceptions.cs: Add a test.
2389         
2390 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2391
2392         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
2393
2394         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
2395         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
2396         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
2397
2398         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
2399         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
2400
2401 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
2402
2403         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
2404         Simplify logic for ensure_method_is_allowed_to_call_method. 
2405         Handle wrappers on callers.
2406
2407 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2408
2409         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
2410         them don't run yet.
2411
2412         * basic-simd.cs: Fix the names of some test methods.
2413
2414 2009-03-18  Geoff Norton  <gnorton@novell.com>
2415
2416         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
2417
2418 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
2419
2420         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
2421
2422 2009-03-17  Jb Evain  <jbevain@novell.com>
2423
2424         * driver.c: remove now uneeded call to mono_gc_base_init before
2425         mono_profiler_load.
2426
2427 2009-03-17  Jb Evain  <jbevain@novell.com>
2428
2429         * dwarfwriter.c (token_handler): handle more cases.
2430
2431 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
2432
2433         * method-to-ir.c: Remove more dead code (that was required only
2434         because of method_is_safe). Fix compiler warnings.
2435
2436 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
2437
2438         * method-to-ir.c: Remove unneeded/useless method_is_safe
2439         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
2440
2441 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
2442
2443         * mini.c (mini_method_compile): Print the method been compiled with
2444         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
2445         for people not familiar with the runtime.
2446
2447 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
2448
2449         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
2450         a managed object which is later put into a GList. Return its class instead.
2451
2452         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
2453         stack slots when using sgen.
2454
2455 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
2456
2457         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
2458
2459 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
2460
2461         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
2462         > so it works on the first vreg as well.
2463
2464 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
2465
2466         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
2467         trigger randomly.
2468
2469         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
2470         
2471         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
2472         implement GArray.
2473
2474 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
2475
2476         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
2477         native->IL offset mapping.
2478
2479 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
2480
2481         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
2482
2483         * basic.cs: Add a test.
2484
2485 2009-03-11  Mark Probst  <mark.probst@gmail.com>
2486
2487         * mini-x86.c (mono_arch_output_basic_block): Use different
2488         registers in case the ones we want to overwrite are used by the
2489         other operand.  Fixes regression in #480807.
2490
2491 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
2492
2493         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
2494
2495         * dwarfwriter.c (emit_line_number_info): The line number info for
2496         IL code was off by one. Fix that.
2497
2498         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
2499         stack.
2500
2501 2009-03-09  Mark Probst  <mark.probst@gmail.com>
2502
2503         Contributed under the terms of the MIT/X11 license by Steven
2504         Munroe <munroesj@us.ibm.com>.
2505
2506         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
2507         Fixes #483462.
2508
2509 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
2510
2511         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
2512         as well.
2513
2514 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
2517         the delegate ctor handling code. Fixes #482638.
2518         
2519         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
2520         #481458.
2521
2522         * iltests.il.in: Add a test.
2523         
2524         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
2525         mini-posix.c.
2526
2527 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2528
2529         * mini-trampolines.c (mono_create_jump_trampoline): If the method
2530         is shared generic code, return the trampoline, even if the method
2531         has already been compiled.  Fixes #479763.
2532
2533         * mini.c, mini.h: New function
2534         mono_jit_find_compiled_method_with_jit_info() which is the same as
2535         mono_jit_find_compiled_method() but also returns the jit info.
2536
2537 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2538
2539         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
2540         for methods which actually have one.  For all other methods, make
2541         sure the this argument var is live the whole method.
2542
2543         * mini.c (mini_method_compile): Every shared method has a
2544         this/vtable/mrgctx info.  Fixes #480807.
2545
2546 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2547
2548         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
2549         generic/imt thunks where some entries branch through the vtable,
2550         while other entries branch directly.
2551
2552 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
2555
2556         * mini-windows.c: Ditto.
2557         
2558         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
2559         ctors.
2560
2561 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
2562
2563         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
2564         down an assert.
2565
2566 2009-03-04  Mark Probst  <mark.probst@gmail.com>
2567
2568         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
2569         #481403.
2570
2571 2009-03-04  Mark Probst  <mark.probst@gmail.com>
2572
2573         * exceptions-x86.c: Include debug-mini.h - fixes build.
2574
2575 2009-03-04  Martin Baulig  <martin@ximian.com>
2576
2577         * debug-mini.c: Clean up the exception API and add documentation.
2578         (mono_debugger_handle_exception): New public method; this is
2579         called when throwing an exception or encountering an unhandled one.
2580         (mono_debugger_call_exception_handler): Formerly known as
2581         mono_debugger_handle_exception(); this is used to tell the
2582         debugger that we're about to invoke an exception handler.
2583
2584 2009-03-04  Martin Baulig  <martin@ximian.com>
2585
2586         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
2587         ../metadata/mono-debug-debugger.c; save and reset exception state.
2588
2589 2009-03-02  Martin Baulig  <martin@ximian.com>
2590
2591         * debug-mini.c: Moved the debugger exception handling here from
2592         ../metadata/mono-debug-debugger.c.
2593
2594         * debug-mini.h
2595         (MonoDebuggerExceptionAction): New exception typedef.
2596
2597         * debug-mini.c
2598         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
2599
2600         * exceptions-amd64.c
2601         (mono_amd64_throw_exception): Use the new debugger exception
2602         handling code.
2603
2604         * mini-exceptions.c
2605         (mono_handle_exception_internal): Don't call
2606         mono_debugger_unhandled_exception() here.
2607
2608 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * mini.c aot-compiler.c: Update after the changes to 
2611         mono_marshal_get_runtime_invoke ().
2612
2613         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
2614         Virtual generic methods might not have method->slot set, work around
2615         that.
2616
2617         * generics.cs: Add a test.
2618
2619 2009-03-02  Geoff Norton  <gnorton@novell.com>
2620
2621         * mini.c:
2622         * driver.c: Allow signal chaining of SIGFPE as well.
2623
2624 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
2625
2626         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
2627         this since it now receives the method not its generic context in the
2628         IMT reg.
2629
2630         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
2631         generic/imt thunks where some entries branch through the vtable, while
2632         other entries branch directly.
2633
2634         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
2635
2636         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
2637         support for interface methods as well.
2638
2639         * mini-trampolines.c: Add support for virtual generic methods in interfaces
2640         using the normal IMT thunks.
2641
2642         generics.cs: Add new tests.
2643         
2644         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
2645         the generic inst to the generic imt thunks. This fixes AOT support, 
2646         improves consistency with the normal IMT thunks, and makes it easier to
2647         add support for interface generic virtual methods later.
2648
2649         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
2650         
2651 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * driver.c (mono_set_signal_chaining): New public API function to enable
2654         signal chaining on POSIX platforms.
2655
2656         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
2657         (si@lindenlab.com) to implement signal chaining. The original patch was
2658         contributed under the MIT X/11 license:
2659         https://bugzilla.novell.com/show_bug.cgi?id=318894
2660
2661 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
2662
2663         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
2664         too until it can be made to run on amd64.
2665
2666 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
2667
2668         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
2669         to  get_generic_context_from_code () + get_call_info () if possible.
2670
2671 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
2672
2673         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
2674         suspend-on-sigsegv functionality.
2675
2676         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
2677         to suspend when a native SIGSEGV is received. This is useful for debugging
2678         crashes which don't happen under gdb, since a live process contains more
2679         information than a core file.
2680
2681         * mini-exceptions.c (mono_print_thread_dump): Use 
2682         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
2683
2684         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
2685
2686         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
2687         
2688         * basic-float.cs: Disable the tests which currently fail on amd64.
2689
2690         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
2691         value to mono_arch_patch_callsite () to fix crashes.
2692         
2693         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
2694
2695 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
2696
2697         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
2698         nop code by patching the call address to point to the nullified class init
2699         trampoline, as the former does not seem to be safe on SMP machines.
2700
2701 2009-02-23  Mark Probst  <mark.probst@gmail.com>
2702
2703         * mini-ops.h: Fix the argument types for a few x86 opcodes where
2704         they were wrong.
2705
2706 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
2707
2708         * basic-float.cs basic-calls.cs: Fix warnings.
2709
2710 2009-02-22  Mark Probst  <mark.probst@gmail.com>
2711
2712         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
2713         correct frame pointer in the LMF.  Should fix #478394.
2714
2715 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
2718
2719         * image-writer.c: Make the binary writer less verbose.
2720
2721 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
2722
2723         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
2724         are called from runtime invoke wrappers.
2725
2726 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
2727
2728         * cpu-ppc.md (store_memindex): Increase the size of this.
2729
2730 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2731
2732         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2733
2734         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
2735
2736         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
2737         OP_LCONV_TO_R_UN.
2738
2739         Last fix for of #467201.
2740
2741
2742 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2743
2744         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2745
2746         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
2747         and long_conv_to_r8_2:
2748
2749         Fixed part of #467201.
2750
2751 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2752
2753         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2754
2755         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
2756         conversion to 32 bits.
2757
2758         * cpu-x86.md: Increase the size of int_conv_to_r4.
2759
2760         * basic-float.cs: Add a test for this.
2761
2762         Fixed part of #467201.
2763
2764 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2765
2766         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2767
2768         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
2769         conversion to 64 bits.
2770
2771         * basic-float.cs: Add a test for this.
2772
2773         Fixed part of #467201.
2774
2775 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2776
2777         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2778
2779         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
2780         This behavior is compatible with MS.
2781
2782         * iltest.il.in: Add a test for this.
2783
2784         Fixed part of #467201.
2785
2786 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2787
2788         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2789
2790         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
2791         change the precision of the value.
2792
2793         * cpu-x86.md: Define len for float_conv_to_r4.
2794
2795         * basic-float.cs: Add a test for this.
2796
2797         Fixed part of #467201.
2798
2799 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
2800
2801         * mini.c: Adjust locking order to the new semantics where the loader lock
2802         comes first.
2803
2804 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2805
2806         * aot-runtime.c:
2807         * mini-amd64.c:
2808         * mini-arm.c:
2809         * mini-ia64.c:
2810         * mini-mips.c:
2811         * mini-ppc.c:
2812         * mini-sparc.c:
2813         * mini-trampolines.c:
2814         * mini-x86.c:
2815         * mini.c:
2816         * tramp-alpha.c:
2817         * tramp-amd64.c:
2818         * tramp-arm.c:
2819         * tramp-hppa.c:
2820         * tramp-ia64.c:
2821         * tramp-mips.c:
2822         * tramp-ppc.c:
2823         * tramp-s390.c:
2824         * tramp-s390x.c:
2825         * tramp-sparc.c:
2826         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
2827
2828 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
2829
2830         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
2831         as it is incorrect.
2832
2833 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2834
2835         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
2836         for cctors if needed.
2837
2838 2009-02-17  Mark Probst  <mark.probst@gmail.com>
2839
2840         * mini-ppc.c: Fix build on Darwin.
2841
2842 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2843
2844         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
2845         version instead of 3 as valgrind doesn't like version 3.
2846
2847         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2848
2849         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
2850         usable for hashing methods.
2851         (emit_extra_methods): Use the new hash to avoid putting every method in the
2852         same hash bucket.
2853
2854         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
2855
2856         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
2857         whenever a method ref could match a method.
2858         
2859         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
2860         test to fail.
2861         
2862         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
2863         methods refs.
2864
2865         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
2866
2867         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
2868         the encoding buffer.
2869
2870         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
2871         mono_method_get_header () on inflated methods as an optimization.
2872
2873 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2874
2875         * ssa.c (fold_ins): Fix another crash if the instruction following the
2876         switch was optimized away.
2877
2878 2009-02-16  Mark Probst  <mark.probst@gmail.com>
2879
2880         Contributed under the terms of the MIT/X11 license by Steven
2881         Munroe <munroesj@us.ibm.com>.
2882
2883         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
2884
2885 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
2888         around the mono_domain_alloc calls, it is now done by the functions
2889         themselves.
2890
2891         * aot-compiler.c (compile_method): Only add wrappers referenced by
2892         the method if compiling with full AOT.
2893         (mono_compile_assembly): Error out if --aot=full is specified on
2894         a platform where it is not supported.
2895
2896         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
2897         on ARM too.
2898
2899         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
2900         AOT support.
2901
2902         * aot-runtime.c (load_named_code): Handle 
2903         mono_arm_throw_exception_by_token.
2904
2905         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
2906
2907         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
2908         unaligned.
2909
2910         * Makefile.am (fullaotcheck): Exit if a test fails.
2911
2912         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
2913         on ARM.
2914         (mono_compile_assembly): Handle the assembler failing.
2915
2916         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
2917         accepting subsections of .bss.
2918
2919         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
2920         was optimized away.
2921
2922         * aot-compiler.c: Remove some unused includes.
2923         
2924         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
2925         now in MonoImageWriter.
2926
2927         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
2928         code sequence which matches a non-virtual call. Fixes #472654.
2929
2930 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
2931
2932         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
2933         xdebug code.
2934         
2935         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
2936         use the image/dwarf writers directly.
2937
2938         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
2939         field.
2940
2941         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
2942         MonoDwarfWriter.
2943
2944         * image-writer.h: Fix some typos.
2945
2946         * dwarfwriter.h dwarfwriter.c: New files.
2947         
2948         * aot-compiler.c: Extract the DWARF info writing functionality into a 
2949         separate module.
2950
2951         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
2952         argument to return unwind info.
2953
2954         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
2955
2956         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
2957         
2958         * aot-runtime.c (decode_method_ref): Add a case for 
2959         MONO_AOT_METHODREF_WRAPPER_NAME.
2960
2961         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
2962         for AOT.
2963
2964         * aot-compiler.c (encode_method_ref): Use the new constants.
2965
2966         * aot-runtime.c (decode_method_ref): Ditto.
2967
2968         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
2969         be compiled, not the icall itself.
2970
2971 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
2972
2973         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
2974         using decode_method_ref ().
2975
2976         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
2977         convert it to an in32. Fixes #475859.
2978
2979         * arrays.cs: Add a test.
2980
2981 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2982
2983         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
2984         OP_LCONV_TO_U2.
2985
2986         * basic-long.cs: Add a test.
2987
2988 2009-02-12  Mark Probst  <mark.probst@gmail.com>
2989
2990         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
2991         remove the frame pointer in leaf methods which don't receive any
2992         arguments, don't throw exceptions and don't do dynamic stack
2993         allocations.
2994
2995 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2996
2997         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
2998         the fail_tramp changes. Hopefully fixes #475132.
2999
3000 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
3001
3002         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
3003         instead of mono_metadata_signature_dup_full.
3004
3005 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3006
3007         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
3008         for processing jump tables. Fixes #473787.
3009
3010 2009-02-11  Mark Probst  <mark.probst@gmail.com>
3011
3012         * mini-generic-sharing.c: mini_method_get_context() just calls
3013         mono_method_get_context_general() now.
3014
3015         * mini.c, mini.h: Moved get_object_generic_inst(),
3016         construct_object_context_for_method() and
3017         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
3018
3019 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
3020
3021         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
3022         basic block fell through to its successor bblock without a branch. Fixes
3023         #474718.
3024
3025         * iltests.il.in: Add a test.
3026         
3027         * aot-compiler.c (encode_method_ref): Encode methods of array types.
3028         (can_encode_patch): We can now handle arrays of generic parameters and
3029         array methods.
3030
3031         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
3032
3033         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
3034         the AOT file to avoid some #ifdefs in aot-runtime.c
3035
3036         * mini.h: Bump AOT file format version.
3037
3038 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3039
3040         * Makefile.am (fullaotcheck): Make this run the tests.
3041
3042         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
3043
3044 2009-02-10  Mark Probst  <mark.probst@gmail.com>
3045
3046         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
3047         individually.  Fixes #473482.
3048
3049 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3050
3051         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
3052
3053 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
3054
3055         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
3056         (mono_compile_assembly): Hush compile warnings about
3057         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
3058         code path.
3059
3060 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3061
3062         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
3063
3064         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
3065
3066         * aot-compiler.c: Fix arm support.
3067
3068         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
3069         img_writer_emit_unset_mode () function.
3070
3071         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
3072         (mono_unwind_get_dwarf_pc_reg): Ditto.
3073
3074         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
3075         Move almost all platform specific code to a set of arch_ functions, 
3076         and document them to ease porting.
3077         
3078         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
3079
3080         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
3081
3082         * aot-compiler.c: Extract the image writing functionality into a separate
3083         module to reduce the size of this file.
3084
3085 2009-02-09  Geoff Norton  <gnorton@novell.com>
3086
3087         * mini-s390.c: Fix the signature of emit_sig_cookie.
3088
3089 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
3090
3091         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
3092
3093         * aot-runtime.c (is_shared_got_patch): Ditto.
3094
3095         * aot-runtime.c (load_named_code): Cope with the fact that 
3096         decode_got_entry () won't decode the patch fully if its corresponding got
3097         entry is already filled.
3098         
3099         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
3100         Initialize *ji.
3101         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
3102
3103         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
3104         as the moving pointer instead of 'buf' for consistency with the rest of the
3105         codebase.
3106         (mono_arch_create_monitor_exit_trampoline): Ditto.
3107
3108         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
3109         generic_class_init trampolines.
3110         (add_generic_class): Extract some code from add_generic_instances () into a
3111         separate function so it can be called from other places too.
3112         (compile_method): Call add_generic_class () for the classes of inflated methods
3113         referenced by the method.
3114         (can_encode_patch): Allow references to generic parameters.
3115
3116         * aot-runtime.c: Add support the patches required by the new trampolines.
3117         
3118         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
3119         support.
3120
3121         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
3122         full-aot support.
3123
3124         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
3125         this from get_throw_pending_exception, make the signature full aot compatible.
3126
3127         * Makefile.am (fullaotcheck): New target to run full-aot tests.
3128
3129         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
3130
3131         * exceptions.cs: Add a test.
3132
3133 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3134
3135         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
3136         use the DWARF_DATA_ALIGN constant instead.
3137
3138         * exception-<ARCH>.c: Update after the above change.
3139
3140         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
3141         dwarf unwinder.
3142
3143         * mini-arm.c: Enable the dwarf unwinder.
3144
3145         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
3146         instead of mono_class_setup_vtable ().
3147
3148 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3149
3150         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
3151         dwarf unwinder.
3152
3153         * mini-x86.h: Enable the dwarf unwinder.
3154
3155 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
3156
3157         Fix mcs/tests/test-7.cs
3158         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
3159         2009-02-03.
3160
3161 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
3162
3163         * mini.c (print_jit_stats): Remove some unused statistics.
3164
3165 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3166
3167         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
3168
3169 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3170
3171         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
3172         the method we get from mono_object_get_virtual_method() because
3173         that function does it properly, now.
3174
3175 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3176
3177         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
3178         opcodes. Fixes #472775.
3179
3180 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3181
3182         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
3183         fact that mono_find_jit_info() sometimes returns the context
3184         corresponding to the jit info in new_ctx.  Fixes #472600.
3185
3186 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3187
3188         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
3189         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
3190         klass->enum_basetype directly.
3191
3192         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
3193         enum subtypes.
3194
3195         * unwind.c: Avoid 0 sized arrays.
3196
3197 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3198
3199         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
3200         size on systems with 64k pages. Fixes #471389.
3201
3202 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3203
3204         Contributed under the terms of the MIT/X11 license by Steven
3205         Munroe <munroesj@us.ibm.com>.
3206
3207         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
3208         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
3209         necessary.
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         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
3217         comparison fix.
3218
3219         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
3220         The trampoline can be longer on PPC64.
3221
3222 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3223
3224         Contributed under the terms of the MIT/X11 license by Steven
3225         Munroe <munroesj@us.ibm.com>.
3226
3227         * mini-ppc.c: Compiler warning fixes and trivial code
3228         simplifications.
3229
3230 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3231
3232         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
3233         ins->dreg which could be a hardware register, not a vreg.
3234
3235         * aot-compiler.c (emit_method_dwarf_info): Ditto.
3236         
3237         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
3238         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
3239
3240         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
3241         
3242         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
3243         ->dreg, that is not the vreg we are looking for.
3244
3245         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
3246
3247         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
3248         LIVERANGE_END.
3249
3250         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
3251         strange crashes.
3252
3253 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
3254
3255         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
3256
3257         * aot-compiler.c (emit_line_number_info): Fix line number emission when
3258         the line diff is 0.
3259
3260         * aot-compiler.c: Add xdebug support on x86.
3261
3262         * unwind.c: Add x86 support.
3263         
3264         * aot-compiler.c (emit_exception_debug_info): Control the emission of
3265         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
3266
3267         * mini.c (mini_method_compile): Ditto.
3268         
3269         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
3270         the variable index.
3271
3272         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
3273         which mimic .push_section/.pop_section in GAS.
3274         
3275         * aot-compiler.c: Emit precise live range information for variables.
3276
3277         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
3278
3279         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
3280         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
3281         them.
3282
3283         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
3284         the live ranges of variables.
3285
3286         * mini.h (struct MonoMethodVar): Add two fields containing the live range
3287         of the variable in terms of native offsets.
3288
3289 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
3290
3291         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
3292         
3293 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3294
3295         Contributed under the terms of the MIT/X11 license by Steven
3296         Munroe <munroesj@us.ibm.com>.
3297
3298         * exceptions-ppc.c (restore_regs_from_context): Correct operand
3299         order (offset then base reg) for ppc_load_multiple_regs.
3300         (emit_save_saved_regs) Correct operand order for
3301         ppc_store_multiple_regs.
3302         (mono_arch_get_call_filter): Correct operand order for
3303         ppc_load_multiple_regs.
3304
3305         * mini-ppc.c (emit_memcpy): Fix operand order for
3306         ppc_load_reg_update and ppc_store_reg_update.
3307         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
3308         (mono_arch_emit_epilog): Correct operand order for
3309         ppc_load_multiple_regs.
3310
3311         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
3312         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
3313
3314 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3315
3316         * cpu-ppc64.md: Fixed storer4_memindex length.
3317
3318 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
3319
3320         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
3321         line number info.
3322         
3323         * aot-compiler.c (emit_line_number_info): Optimize this.
3324
3325 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
3326
3327         * aot-compiler.c: Disassemble tokens in the IL disassembly.
3328         
3329         * aot-compiler.c: Add debug info for methods without debug info by
3330         emitting an IL file and having the line number info referencing that file.
3331
3332         * aot-compiler.c: Optimize the size of the generated line number info.
3333
3334         * aot-compiler.c: Emit line number info in xdebug mode.
3335
3336         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
3337         million arguments.
3338
3339 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
3340
3341         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
3342
3343         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
3344         is used.
3345
3346 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3347
3348         * basic-calls.cs: Test for the weird crash found on arm.
3349         
3350 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3351
3352         * cpu-arm.md: Increase the size of storer8_membase_reg and
3353         loadr8_membase_reg to 24 bytes to accomodate the extra add.
3354
3355         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
3356         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
3357         reg to LR otherwise we'll be loading/storing from just the offset.
3358
3359 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3360
3361         Question: if we are storing gint32's inside the "*native_offset",
3362         should we change the signature to "gint32 *native_offset" to
3363         ensure that we do not have type definition problems?
3364         
3365         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
3366         an int * as this is what the other function expects, causes
3367         problems with Freescale's compiler that defined int32_t to be a
3368         long and makes int incompatible 
3369
3370 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3371
3372         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
3373         filename conflict with bjam.
3374
3375 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3376
3377         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
3378         as it might use decomposed ops.
3379
3380 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3381
3382         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
3383
3384         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
3385         is defined.
3386
3387         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
3388
3389         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
3390         offsets.
3391
3392         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
3393         way registers are stored in MonoContext on arm.
3394
3395         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
3396         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
3397
3398         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
3399
3400         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
3401
3402         * mini.c (mini_init): Register mono_isfinite.
3403
3404         * jit-icalls.c (mono_isfinite): New jit icall.
3405
3406         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
3407         
3408         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
3409         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
3410         the parent frame.
3411
3412 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3413
3414         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
3415         separate frame and stack pointers, so we must use FP to find the register
3416         spill area.
3417         The FP reg is retrieved from the MonoContext::regs array.
3418
3419 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3420
3421         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
3422         as FPA requires it.
3423
3424 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3425
3426         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
3427         return R4 and R8 when not running under softfloat.
3428
3429         Fixes basic-calls.exe
3430
3431 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3432
3433         * mini-arm.c: Implement some overflow opcodes.
3434
3435 2009-01-29  Miguel de Icaza  <miguel@novell.com>
3436
3437         * ssa.c: handle another alloca.h
3438
3439         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
3440         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
3441         MONO_ARCH_USE_SIGACTION. 
3442
3443         * aot-runtime.c, mini-exceptions.c: Replace platform define with
3444         capability defines.
3445
3446         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
3447
3448         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
3449         PPC targets as sigaction does not exist on all platforms, define
3450         this on a per-platform basis.
3451
3452         Instead of erroring out if the platform is not defined, include
3453         mini-ppc-os.h, and expect that the OS specific setting provides
3454         the required information.   
3455
3456 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3457
3458         * aot-compiler.c: Fix --enable-minimal=aot.
3459
3460 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3461
3462         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
3463         previous change.
3464
3465 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
3466
3467         * exceptions-arm.c: Fix warnings.
3468
3469         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
3470         ARM.
3471
3472         * mini-x86.c: Fix --enable-minimal=jit build.
3473
3474         * mini.c: Really fix --enable-minimal=jit build.
3475         
3476         * mini.c (construct_object_context_for_method): Move this outside
3477         the DISABLE_JIT block to fix the --enable-minimal=jit build.
3478
3479         "Backported" of r124984 from 2.0 branch.
3480         
3481         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
3482
3483         "Backport" of r124977 + r124978 from 2.0 branch.
3484         
3485         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
3486         to avoid calling mono_exception_from_token () from the throw trampoline.
3487         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
3488         for throwing corlib exceptions, this fixes full-aot support for corlib
3489         exceptions.
3490
3491         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
3492
3493 2009-01-29  Miguel de Icaza  <miguel@novell.com>
3494
3495         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
3496         part of the changes to split the code in mini into operating
3497         system specific files.
3498
3499         This patch was done by copying mini.c to the respective files to
3500         preserve SVN history.
3501
3502 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
3503
3504         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
3505
3506 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
3507
3508         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
3509         remoting-invoke-with-check wrappers of shared methods.
3510
3511         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
3512
3513 2009-01-27  Mark Probst  <mark.probst@gmail.com>
3514
3515         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
3516         optimization if the top of stack is the last instruction in the
3517         bblock.  Otherwise it might have been used after its definition.
3518         Fixes #469742.
3519
3520 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
3521
3522         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
3523         method as well when get_vcall_slot () fails to match a code sequence.
3524
3525         * mini-arm.c: Fix the android build, which doesn't have
3526         __aeabi_read_tp.
3527
3528 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3529
3530         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
3531         the s390x build.
3532
3533 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
3534
3535         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
3536
3537 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3538
3539         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
3540         and put its id into jinfo->used_regs. This is only used on amd64,
3541         which is currently the only platform generating unwind info.
3542
3543         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
3544         the dwarf unwinder. This is required to correctly handle async exceptions
3545         like thread abort and stack overflows, which can happen while a method
3546         is in the middle of its prolog or epilog.
3547         
3548         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
3549         the unwind info belonging to an AOTed method.
3550
3551         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
3552         into cfg->unwind_ops.
3553         
3554         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
3555
3556         * mini.c (mini_init): Call mono_unwind_init ().
3557         (mini_cleanup): Call mono_unwind_cleanup ().
3558
3559         * unwind.c: Add functions for managing a set of unwind info entries, allowing
3560         unwind info to be shared between methods.
3561
3562         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
3563         saved in the LMF.
3564
3565         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
3566         get_throw_pending_exception () to avoid initialization races.
3567
3568         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
3569         mono_arch_exceptions_init () function.
3570
3571         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
3572
3573 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
3574
3575         * mini.c (mono_get_domain_intrinsic): New helper function.
3576         (mono_get_thread_intrinsic): Ditto.
3577
3578         * mini-arm.c mini-ia64.c: Use the new helper functions.
3579         
3580         * method-to-ir.c (mono_method_to_ir): Fix the comment for
3581         the last constrained_call change, since it is needed in the non-AOT
3582         case as well.
3583
3584         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
3585         
3586         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
3587         mono_get_lmf_addr () on arm eabi linux.
3588
3589 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
3590
3591         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
3592         code sequence which matches a non-virtual call.
3593
3594 2009-01-23  Mark Probst  <mark.probst@gmail.com>
3595
3596         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
3597         stack pointer (r1).
3598
3599 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
3600
3601         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
3602         runtime-invoke wrappers, since they are also shared based on signature.
3603
3604 2009-01-22  Mark Probst  <mark.probst@gmail.com>
3605
3606         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
3607         info from the (correct) context.
3608
3609 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
3610
3611         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
3612         
3613         * unwind.c (mono_unwind_frame): New function to unwind through a frame
3614         using dwarf unwinding info. Not yet used.
3615
3616         * mini.c (mini_init): When using xdebug, disable freeing of domains.
3617
3618 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3619
3620         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
3621         descriptors.
3622
3623         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
3624         special case and handle mono_arch_delegate_invoke_impl() returning
3625         function descriptors.
3626
3627         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
3628         trampolines return function descriptors, too.
3629
3630 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3631
3632         * method-to-ir.c (handle_alloc): Avoid generic instances in the
3633         out_of_line optimization.
3634
3635 2009-01-21  Martin Baulig  <martin@ximian.com>
3636
3637         * mini.h
3638         (MonoCompile): Added `disable_deadce_vars' to disable removing
3639         unused variables.
3640
3641         * mini.c
3642         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
3643         inside the debugger.
3644
3645         * liveness.c (mono_analyze_liveness): Don't remove any unused
3646         variables if `cfg->disable_deadce_vars' is set.
3647
3648 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3649
3650         * method-to-ir.c: Only apply exception constructor optimization if
3651         the the method actually belongs to an exception class.  Fixes
3652         #467456.
3653
3654 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3655
3656         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
3657         change inside a #ifdef __mono_ppc64__.
3658
3659         * aot-compiler.c (compile_method): Remove the previous limitation.
3660
3661         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
3662         on type variables in AOTed code.
3663         
3664         * aot-compiler.c (compile_method): Skip generic methods having type 
3665         constraints on their generic parameters.
3666
3667         * aot-compiler.c (compile_method): Check for methods which cannot be
3668         encoded inside RGCTX_FETCH patches as well.
3669
3670         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
3671         build.
3672
3673 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3674
3675         * method-to-ir.c: Force the vtable variable in shared generic code
3676         for the case that they might show up on a stack trace where they
3677         are needed.
3678
3679         * mini-exceptions.c: Save and use generic sharing info as well as
3680         IP in stack traces to resolve shared generic instantiations.
3681
3682 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
3683
3684         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
3685         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
3686
3687 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3688
3689         * method-to-ir.c: Do generic sharing for array constructors.
3690
3691 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
3692
3693         * mini-exceptions.c (mono_print_thread_dump): Add information
3694         about the thread state using wapi_current_thread_desc.
3695
3696 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
3697
3698         * basic-simd.cs: Tests for the new constructors. 
3699
3700 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
3701
3702         * mini-ops.h: Added OP_EXPAND_*
3703
3704         * cpu-x86.md: Same.
3705
3706         * mini-x86.c (mono_arch_output_basic_block): Same.
3707         
3708         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
3709
3710 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
3711
3712         * iltests.il.in: Add a test for #467385.
3713
3714 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
3715
3716         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
3717         thread been cleaned up is not the same currently in execution.
3718
3719         Fixes appdomain-unload crashes on windows, osx and linux variants
3720         without the __thread keyword.
3721
3722 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
3723
3724         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
3725         (koush@koushikdutta.com). Implement this for android.
3726
3727         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
3728         begins with a digit.
3729
3730         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
3731         mono_marshal_get_write_barrier ().
3732
3733 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
3734
3735         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
3736         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
3737         that pass them on a register pair.
3738
3739         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
3740         test was crashing due to that.
3741
3742 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
3743
3744         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
3745         trampoline code. Include ucontext.h only if available.
3746
3747 2009-01-15  Mark Probst  <mark.probst@gmail.com>
3748
3749         * mini.c: mono_domain_lookup_shared_generic() takes an open method
3750         and doesn't check whether it's sharable, like it was before
3751         removing the shared generics hash.  This brings IronPython
3752         performance back to what it was before that change.
3753
3754 2009-01-14  Mark Probst  <mark.probst@gmail.com>
3755
3756         * method-to-ir.c: Handle delegate invocation optimization earlier,
3757         otherwise it would be handled (much more slowly) by the
3758         final/sealed optimization.
3759
3760 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
3761
3762         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
3763         domain is not set. Fixes #465864.
3764
3765 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3766
3767         * method-to-ir.c: Don't stop sharing of generic methods with catch
3768         clauses - we already handle those.
3769
3770 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3771
3772         * mini.c, mini.h: lookup_generic_method() is now
3773         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
3774         making the shared_generics_hash obsolete.
3775
3776 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3777
3778         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
3779         use the red zone.  Make room on the stack first and then use it,
3780         not the other way around.
3781
3782 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
3783
3784         * mini.c (mini_init): Call mono_xdebug_init ().
3785
3786         * aot-compiler.c (mono_xdebug_init): Make this non-static.
3787
3788 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
3789
3790         * TestDriver.cs: Add an --iter argument to run tests multiple times.
3791
3792         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
3793         trampolines.
3794
3795         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
3796         debug+unwind info for trampolines.
3797
3798         * mini.c (mono_create_unwind_op): New helper function.
3799
3800         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
3801
3802 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
3803
3804         * aot-compiler.c: Fix the build.
3805
3806 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
3807
3808         * Makefile.am: Update dtrace-prelink.sh location.
3809
3810 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
3811
3812         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
3813         optimization. Fixes #464520.
3814
3815 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
3816
3817         * mini-amd64.c : Adding code to save/restore non-volatile registers
3818            on Winx64.
3819
3820         * exceptions-amd64.c : Adding code to save/restore non-volatile 
3821           registers on Winx64.
3822
3823         Contributed under MIT/X11 license.
3824
3825 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
3826
3827         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
3828         __GNUC_MINOR__ which can break when the major version changes.
3829
3830 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
3831
3832         * basic-simd.cs: Add tests for usage of the sizeof opcode.
3833
3834 2009-01-07  Geoff Norton  <gnorton@novell.com>
3835
3836         * helpers.c:  Allow mono -v -v -v to work on darwin.
3837
3838 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
3839
3840         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
3841           pattern. 
3842
3843         Contributed under MIT/X11 license.
3844
3845 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
3846
3847         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
3848         instead of directly accessing type->data.klass. Fixes #462016.
3849         (mono_allocate_stack_slots_full): Ditto.
3850
3851         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
3852         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
3853
3854         * aot-compiler.c (emit_plt): Fix ARM build.
3855
3856 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
3857
3858         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
3859         
3860         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
3861         change.
3862
3863         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
3864         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
3865         #463357.
3866
3867         * iltests.il.in: Add a regression test.
3868
3869 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3870
3871         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
3872
3873 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3874
3875         * basic-simd.cs: Add a regression test for #462457.
3876
3877 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3878
3879         * mini-ops.h: Add a definition of XPHI.
3880
3881         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
3882
3883         * ssa.c (op_phi_to_move): Handle XPHI.
3884
3885         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
3886
3887         Fixes #462457
3888
3889 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3890
3891         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
3892
3893 2008-12-31  Geoff Norton  <gnorton@novell.com>
3894
3895         * mini-ppc.c: The prolog size allocated can be too small for darwin
3896         ppc32 under certain circumstances.  Also fix a small logic bug.
3897
3898 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
3899
3900         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
3901         while loading AOT methods.
3902
3903         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
3904         since only the former is nulled out after a successful cast. This prevents
3905         crashes with rethrown exceptions when using --debug=casts.
3906
3907 2008-12-24  Mark Probst  <mark.probst@gmail.com>
3908
3909         * mini.h: New macro for checking whether a method is final,
3910         i.e. whether the method or its class is marked final.
3911
3912         * method-to-ir.c: Use the new macro for all final-checks
3913         consistently.  Fixes the crash in the System.ServiceModel tests.
3914
3915 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3916
3917         * mini-exceptions.c (get_exception_catch_class): Corrected another
3918         overly strict assertion.
3919
3920 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3921
3922         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
3923         Clobbering it is not allowed because the caller might use it as
3924         the vtable register in the interface call.
3925
3926 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3927
3928         * mini-exceptions.c (get_exception_catch_class): Corrected an
3929         overly strict assertion.
3930
3931 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
3932         
3933         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
3934
3935         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
3936
3937         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
3938
3939         * cpu-mips.md: correct lengths for certain long_ opcodes.
3940
3941         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
3942
3943         * 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().
3944         
3945 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3946
3947         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
3948         
3949 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3950         
3951         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
3952         
3953 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3954
3955         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
3956         next basic block.
3957         
3958 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
3959
3960         * 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
3961
3962         * 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)
3963         
3964 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
3965         
3966         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
3967         
3968 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
3969
3970         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
3971         gshared code. Fixes #458947.
3972
3973         * generics.cs: Add a test.
3974
3975 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3976         
3977         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3978         
3979         * mini-mips.c: first pass n32 code generation.
3980
3981         * mini-mips.h: datatypes and defines for n32 support.
3982
3983         * exceptions-mips.c: first pass n32 code generation.
3984         
3985         * tramp-mips.c: first pass n32 code generation.
3986         
3987         * cpu-mips.md: add long_ opcodes.
3988         
3989 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3990
3991         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3992
3993         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3994         
3995         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3996         
3997         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3998
3999         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4000
4001         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4002
4003         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4004
4005         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4006
4007         * helpers.c: for mips/n32, don't pass -mips32 to objdump
4008
4009 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
4010
4011         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
4012
4013 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
4014
4015         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
4016
4017 2008-12-12  Mark Probst  <mark.probst@gmail.com>
4018
4019         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
4020         descriptors for helper functions directly in front of the code.
4021
4022 2008-12-11  Mark Probst  <mark.probst@gmail.com>
4023
4024         * method-to-ir.c: Removed an unnecessary assertion.
4025
4026 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4027
4028         * method-to-ir.c: Merge SGEN changes from the old JIT.
4029
4030 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4031
4032         * driver.c (compile_all_methods_thread_main): Handle failure of
4033         mono_get_method ().
4034
4035 2008-12-10  Mark Probst  <mark.probst@gmail.com>
4036
4037         * mini-ppc.c: Merged with mini-ppc64.c.
4038
4039         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
4040
4041         * Makefile.am: Use the same sources for PPC and PPC64.
4042
4043         * mini-ppc64.c: Removed.
4044
4045 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4046
4047         * branch-opts.c (remove_block_if_useless): Extract fall through detection
4048         code to mono_bb_is_fall_through.
4049         
4050         * branch-opts.c (mono_remove_critical_edges): Same.
4051
4052 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4053
4054         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
4055         expect that an OP_BR_REG will be there.
4056
4057 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4058
4059         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
4060         for the many branch ops. The original check miss OP_BR_REG.
4061
4062         Fixes #457574.
4063         
4064 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4065
4066         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
4067
4068 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4069
4070         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
4071         while holding the aot lock.
4072
4073 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4074
4075         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
4076         
4077 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4078
4079         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
4080           to release all runtime callable wrappers held by the runtime.
4081
4082         Contributed under MIT/X11 license.
4083
4084 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4085
4086         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
4087           for Winx64.
4088
4089         Contributed under MIT/X11 license.
4090
4091 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4092
4093         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
4094         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
4095
4096 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4097
4098         * cpu-mips.md: fix ckfinite length
4099
4100         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
4101         (mono_arch_lowering_pass): cleanup, rearrange for clarity
4102         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
4103         
4104 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
4105
4106         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
4107         
4108 2008-12-08  Geoff Norton  <gnorton@novell.com>
4109
4110         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
4111         size by 8 bytes as well.
4112
4113 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4114
4115         * basic-simd.cs: Fix method names for Vector16b.
4116         
4117 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4118
4119         * basic-simd.cs: Fix method names for Vector16sb.
4120
4121 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4122
4123         * basic-simd.cs: Fix method names for Vector8us.
4124         
4125 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4126
4127         * basic-simd.cs: Fix method names for Vector8s.
4128         
4129 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4130
4131         * basic-simd.cs: Fix method names for Vector4ui.
4132
4133 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4134
4135         * basic-simd.cs: Fix method names for Vector2l.
4136
4137 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4138
4139         * basic-simd.cs: Fix method names for Vector2d.
4140
4141 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4142
4143         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
4144         that are extension methods.
4145
4146 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4147
4148         * basic-simd.cs: Fix method names for Vector4f.
4149
4150 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
4151
4152         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
4153         as such. Fixes #456669.
4154
4155 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4156
4157         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
4158         
4159 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4160
4161         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
4162         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
4163         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
4164         (mips_adjust_stackframe): handle FP spills
4165                 
4166         * mini-ops.h: add mips_mtc1_s2
4167         
4168         * cpu-mips.md: add mips_mtc1_s2
4169         
4170 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
4171
4172         * unwind.c: New file, move the unwind info encoding functions here from
4173         aot-compiler.c, so they could be used at runtime too.
4174
4175 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4176
4177         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
4178         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
4179         
4180 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4181
4182         * mini-mips.c: cleanup warnings
4183         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
4184         (mips_adjust_stackframe): handle case of taking the address of stack locals
4185         
4186 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4187
4188         * aot-compiler.c: Implement a few functions missing from the asm writer.
4189         (emit_method_code): Only write symbols for methods when using the bin
4190         writer, since the assembler can't deal with the characters in our method
4191         names.
4192
4193         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
4194
4195         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
4196         call.
4197
4198         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
4199         a bit to also restore %rax.
4200
4201 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4202
4203         * mini-ppc.c: Some simple merges from mini-ppc64.c.
4204
4205 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4206
4207         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
4208         arguments.
4209
4210 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4211
4212         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
4213
4214         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
4215         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
4216
4217         * exceptions-ppc64.c: Removed.
4218
4219         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
4220
4221 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4222
4223         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
4224         tramp-ppc64.c.
4225
4226         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
4227
4228         * tramp-ppc64.c: Removed.
4229
4230 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4231
4232         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
4233         the TYPESPEC table.
4234
4235 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4236
4237         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
4238
4239         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
4240         mini-ppc.h instead of mini-ppc64.h.
4241
4242         * mini-ppc64.h: Removed.
4243
4244 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4245
4246         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
4247         
4248         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
4249         
4250 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4251
4252         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
4253         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
4254         code easier.
4255
4256 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4257
4258         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
4259
4260 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4261
4262         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
4263
4264 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4265
4266         * basic-simd.cs: Tests for operator == and != on Vector4f.
4267
4268 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4269
4270         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
4271
4272         * simd-intrinsics.c: Kill useless enum.
4273
4274 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4275
4276         * cpu-mips.md: add long_conv_to_ovf_i4_2
4277         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
4278
4279 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4280
4281         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
4282         
4283         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
4284
4285 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4286
4287         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
4288         
4289 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4290
4291         * basic-simd.cs: Add tests for new methods.
4292
4293 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4294
4295         * simd-intrinsics.c: Add support for operator == and !=
4296         on Vector4(u)i.
4297
4298         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
4299
4300 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4301
4302         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
4303
4304 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
4305
4306         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
4307
4308         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
4309         MONO_PATCH_INFO_ICALL_ADDR.
4310
4311         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
4312
4313         * aot-compiler.c: Resurrect full-aot support.
4314
4315 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4316
4317         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
4318         
4319 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4320
4321         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
4322         
4323 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
4324
4325         * basic-simd.cs: Fix tests to work under ppc.
4326         Remove tests for methods that will be removed.
4327
4328 2008-12-03  Mark Probst  <mark.probst@gmail.com>
4329
4330         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
4331         generic type (via a typedef or typeref) correctly.
4332
4333 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
4334
4335         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
4336         diagnose an assertion failure.
4337
4338 2008-12-02  Mark Probst  <mark.probst@gmail.com>
4339
4340         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
4341         Fix trampoline size.
4342
4343         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
4344         conversion opcodes are implemented natively instead via emulation.
4345
4346 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4347
4348         * cpu-mips.md: remove mips_xori
4349
4350         * mini-ops.h:  remove mips_xori
4351
4352         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
4353
4354         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
4355         
4356         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
4357         
4358 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4359
4360         * cpu-mips.md: fix instruction lengths.
4361
4362         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
4363
4364         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
4365
4366         * mini-ops.h: fix slti / sltiu op profiles.
4367         
4368 2008-12-02  Martin Baulig  <martin@ximian.com>
4369
4370         * method-to-ir.c (mono_method_to_ir): Disable debugging
4371         information for the init locals block to make the debugger stop
4372         after all locals have been initalized.
4373
4374 2008-12-02  Martin Baulig  <martin@ximian.com>
4375
4376         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
4377         running inside the debugger.
4378
4379 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
4380
4381         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
4382         is enabled.
4383
4384         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
4385         alu->alu imm optimization which only shows if deadce is disabled.
4386
4387         * aot-compiler.c: Rename the function names for the binary and asm writers
4388         so they can coexist in the same process. Rework the xdebug code to use the
4389         asm writer. This avoids the need to call into the runtime to dump the
4390         debugging info. Add more debugging info for types.
4391
4392         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
4393
4394         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
4395         cpu description tables, they can't occur in cpu-<ARCH>.md.
4396
4397         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
4398         the stack in CEE_LDFLDA. Fixes #450542.
4399
4400         * generics.cs: Add a new test.
4401
4402 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4403
4404         * mini-ops.h: updated MIPS opcodes
4405         * mini-mips.c: decompose long opts
4406         * mini-mips.h: decompose long opts
4407         
4408 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
4409
4410         * cpu-mips.md: fix length on int_rem_un
4411         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
4412         
4413 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
4414
4415         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
4416
4417         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
4418
4419 2008-11-29  Martin Baulig  <martin@ximian.com>
4420
4421         * mini-exceptions.c (mono_handle_native_sigsegv): Check
4422         mono_debug_using_mono_debugger() in addition to the
4423         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
4424
4425 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4426
4427         * mini-ops.h: updated more MIPS opcodes
4428         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
4429         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
4430         
4431 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4432
4433         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
4434
4435 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4436
4437         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
4438         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
4439         * mini-ops.h: correct selected mips opcode entries
4440         
4441 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4442
4443         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
4444         make them work.
4445
4446 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4447
4448         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
4449
4450 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4451
4452         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
4453         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
4454         * mini-mips.h: disable IMT
4455         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
4456         
4457 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4458
4459         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
4460
4461 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4462
4463         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
4464
4465 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
4466
4467         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
4468         consistency.
4469
4470 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4471
4472         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
4473         for Set/GetVector aligned versions.
4474
4475 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4476
4477         * basic-simd.cs: Add tests for Get/SetVector.
4478
4479 2008-11-27  Mark Probst  <mark.probst@gmail.com>
4480
4481         * mini.c: Removed g_slist_append_mempool().  Now in
4482         metadata/mempool.c.
4483
4484 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4485
4486         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
4487         size properly and make the bounds check optional.
4488
4489         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
4490         for SetVector and IsAligned.
4491
4492 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
4493
4494         * mini.c: Remove unused mono_normalize_opcodes () function.
4495
4496 2008-11-26  Mark Probst  <mark.probst@gmail.com>
4497
4498         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
4499         using the new atomic add ops now.
4500
4501         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
4502         add.
4503
4504 2008-11-26  Mark Probst  <mark.probst@gmail.com>
4505
4506         * mini-ppc64.c: Several fixes.
4507
4508 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4509
4510         * cpu-mips.md: added jump_table
4511         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
4512
4513 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4514
4515         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
4516
4517 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4518
4519         * mini-ops.h: corrected a handful of MIPS opcodes.
4520
4521 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4522
4523         * aot-compiler.c: MIPS to use ELF writer
4524
4525 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4526
4527         * mini-codegen.c: remove MIPS specific assert.
4528
4529 2008-11-25  Mark Probst  <mark.probst@gmail.com>
4530
4531         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
4532         fixes.  PPC64 now passes most of the runtime regressions.
4533
4534 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
4535
4536         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
4537         volatile intervals a bit.
4538
4539 2008-11-24  Mark Probst  <mark.probst@gmail.com>
4540
4541         * basic-long.cs: New test case.
4542
4543 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
4544
4545         * mini.c (mini_method_compile): Disable globalra for large methods for 
4546         now.
4547
4548         * regalloc2.c (order_moves): Add fp support.
4549
4550         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
4551         source bblock ends with an OP_BR_REG.
4552
4553         * ratests.cs: Add a new test.
4554
4555 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4556
4557         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
4558         sharing.  PPC64 now passes generics.exe.
4559
4560 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4561
4562         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
4563
4564 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
4565
4566         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
4567         memory when mono_jit_info_table_find () can't find the method in the
4568         LMF case.
4569
4570         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
4571         AOTed code too.
4572         
4573         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
4574         writer too.
4575
4576 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4577
4578         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
4579         Several fixes.  PPC64 now runs exceptions.exe and
4580         devirtualization.exe.
4581
4582 2008-11-22  Mark Probst  <mark.probst@gmail.com>
4583
4584         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
4585         arrays.exe and basic-math.exe.
4586
4587 2008-11-22  Mark Probst  <mark.probst@gmail.com>
4588
4589         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
4590         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
4591
4592 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4593
4594         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
4595
4596 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4597
4598         * method-to-ir.c: Move bounds checking macros to ir-emit.h
4599
4600         * ir-emit.h: Move macros from method-to-ir.c to here.
4601
4602 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4603
4604         * mini-ops.h: Correct the long simd ops to use LREG.
4605
4606 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
4607
4608         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
4609         
4610         * mini-ops.h: Correct the dreg type of a few long opcodes.
4611
4612         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
4613         Add netbsd support.
4614
4615 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
4616
4617         * mini-ppc.c: remove negative stack references in epilog
4618         for platforms that don't support the red zone.
4619
4620 2008-11-21  Mark Probst  <mark.probst@gmail.com>
4621
4622         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
4623         point regs.  Now PPC64 passes basic-calls.exe.
4624
4625 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4626
4627         * basic-simd.cs: Add tests for accessors of Vector2l.
4628
4629 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4630
4631         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
4632
4633         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
4634         
4635         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
4636
4637 2008-11-21  Mark Probst  <mark.probst@gmail.com>
4638
4639         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
4640         PPC64 passes basic-long.exe.
4641
4642 2008-11-20  Mark Probst  <mark.probst@gmail.com>
4643
4644         * decompose.c: Decompose carry and overflow add on PPC64 like on
4645         other 64 bit archs.  Don't decompose sub at all on PPC64.
4646
4647         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
4648         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
4649         basic-long.exe.
4650
4651 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4652
4653         * basic-simd.cs: Add tests for accessors of Vector2d.
4654
4655 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4656
4657         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
4658
4659         * cpu-x86.md: Same.
4660
4661         * mini-x86.c (mono_arch_output_basic_block): Same.
4662         
4663         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
4664
4665 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4666
4667         * basic-simd.cs: Add tests for accessors of Vector4f.
4668
4669 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4670
4671         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
4672
4673         * cpu-x86.md: Same.
4674
4675         * mini-x86.c (mono_arch_output_basic_block): Same.
4676         
4677         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
4678
4679 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4680
4681         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
4682
4683 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4684
4685         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
4686
4687         * cpu-x86.md: Same.
4688
4689         * mini-x86.c (mono_arch_output_basic_block): Same.
4690         
4691         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
4692
4693 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4694
4695         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
4696
4697 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4698
4699         * simd-intrinsics.c: Enable setters for Vector16sb.
4700
4701 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4702
4703         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
4704
4705         * cpu-x86.md: Same.
4706
4707         * mini-x86.c (mono_arch_output_basic_block): Same.
4708         
4709         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
4710
4711 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
4712
4713         * simd-intrinsics.c: Implement setter for Vector8us.
4714
4715 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
4716
4717         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
4718         for dead variables.
4719
4720 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
4721
4722         * mini-ppc.c: remove references to the red zone in the prolog
4723         (for systems that don't support it).
4724
4725 2008-11-19  Mark Probst  <mark.probst@gmail.com>
4726
4727         * cpu-ppc64.md: Fixed a few instruction lengths.
4728
4729         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
4730         now.
4731
4732 2008-11-19  Mark Probst  <mark.probst@gmail.com>
4733
4734         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
4735         basic.exe now.
4736
4737 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
4738
4739         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
4740
4741 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
4742
4743         * mini-ops.h: Added OP_INSERT_I2.
4744
4745         * cpu-x86.md: Same.
4746
4747         * mini-x86.c (mono_arch_output_basic_block): Same.
4748         
4749         * simd-intrinsics.c: Implement setter for Vector8s.
4750
4751         * simd-methods.h: Add the names of get setters of Vector8s.
4752
4753 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
4754
4755         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
4756         
4757         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
4758         parameters.
4759
4760         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
4761
4762 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4763
4764         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
4765         for PPC64.  An empty program runs now.
4766
4767 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
4768
4769         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
4770
4771         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
4772         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
4773         info for JITted code is emitted into a shared library, loadable into gdb.
4774
4775 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4776
4777         * Makefile.am: Changes to build PPC64.
4778
4779         * mini-arch.h: Include mini-ppc64.h on PPC64.
4780
4781 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4782
4783         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
4784         in PPC code up to r119147.
4785
4786 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4787
4788         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
4789         cpu-ppc64.md: Changes for PPC64.
4790
4791         Based on code submitted by andreas.faerber@web.de at
4792         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
4793         X11/MIT license.
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: Copied from the corresponding PPC files from
4799         r118846.
4800
4801 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
4802
4803         * mini-ops.h: Added OP_ROUND.
4804
4805         * cpu-x86.md: Added round.
4806
4807         * mini-x86.c: Added support for intrinsicing Math.Round (double).
4808
4809         * basic-math.cs: Added test_0_round to test rounding.
4810
4811         Contributed under MIT/X11 license.
4812
4813 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
4814
4815         * aot-compiler.c : Fix the Winx64 build.
4816
4817         Contributed under MIT/X11 license.
4818
4819 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4820
4821         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
4822         in OP_EXTRACT_R8 to avoid possible stack corruption.
4823
4824 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4825
4826         * mini-ops.h: Added OP_EXTRACT_R8/I8.
4827
4828         * cpu-x86.md: Added extract_r8.
4829
4830         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
4831         
4832         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
4833         a couple of OP_EXTRACT_I4.
4834
4835         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
4836
4837         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
4838
4839 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4840
4841         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
4842         and not 4.1. 
4843
4844 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4845
4846         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
4847         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
4848
4849         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
4850         are not needed any more.
4851
4852         * mini.h: Remove the unused INS_LIST macros.
4853
4854         * mini.c (mini_method_compile): Remove a disable globalra case which is no
4855         longer needed.
4856
4857         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
4858         ir-emit.h.
4859
4860         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
4861         mono_alloc_ireg () instead.
4862
4863         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
4864         macros.
4865
4866         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
4867         on amd64.
4868
4869         * aot-runtime.c (load_aot_module): Disable AOT when running under
4870         CAS.
4871
4872         * mini-amd64.h: Change the monitor fastpath defines to check for
4873         !PLATFORM_WIN32 so they work on *bsd too.
4874
4875         * mini.h mini.c mini-hhpa.c: Remove more unused code.
4876
4877         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
4878
4879         * mini.h (MonoCompile): Remove new_ir flag.
4880
4881         * regalloc.h regalloc.c: Remove unused code.
4882
4883         * cpu-*.md: Remove more unused opcodes.
4884
4885         * simple-cee-ops.h simple-mini-ops.h: Removed.
4886
4887         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
4888         
4889 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4890
4891         * aliasing.h: Removed.
4892
4893         * *.c: Remove references to aliasing.h and inssel.h.
4894
4895         * mini.c: Remove additional unused functions.
4896
4897         * mini-ops.h cpu-*.md: Remove unused opcodes.
4898
4899 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4900
4901         Remove the old JIT code.
4902
4903         * inssel*.brg: Removed.
4904
4905         * ssa.c abcremoval.c aliasing.c: Removed.
4906
4907         * ssa2.c: Renamed to ssa.c.
4908
4909         * abcremoval2.c: Renamed to abcremoval.c.
4910
4911         * *.c: Removed all !cfg->new_ir code.
4912
4913         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
4914         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
4915
4916         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
4917         
4918 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4919
4920         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
4921         to simplify the code and cut back on the number of global symbols in the AOT
4922         file.
4923         
4924         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
4925
4926 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
4927
4928         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
4929         with the got/got_info tables.
4930
4931         * mini.h: Bump AOT file format version.
4932         
4933         * unwind.h: New file, contains definitions for stack unwinding.
4934
4935         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
4936         to cfg->unwind_ops.
4937         
4938         * aot-compiler.c: Generalize the emitting of unwind information to use the
4939         information in cfg->unwind_ops.
4940
4941         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
4942
4943         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
4944         AOT method frames. Enable writing symbols for methods by default.
4945
4946 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
4947
4948         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
4949         and make it work with vectors of element sizes 1, 2 and 4.
4950
4951         * simd-intrinsics.c: Enable getter for all vectors with element size
4952         1, 2 or 4.
4953
4954         * simd-methods.h: Add the names of other getters.
4955
4956         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
4957
4958         * cpu-x86.md: Same.
4959
4960         * mini-x86.c: Same.
4961
4962 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
4963
4964         * mini-ppc.h: portability fix.
4965
4966 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4967
4968         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
4969         buggy and will overwrite it.
4970
4971 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4972
4973         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
4974         Use it to emit local symbols for all methods so AOTed methods show up with
4975         their full name in gdb/valgrind output.
4976
4977 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
4978
4979         * mini-ppc.c: portability fixes.
4980
4981 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4982
4983         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
4984         entries out of the if (!generic_shared...) code so it is always done.
4985         (mono_class_init_trampoline): Do the patching when running under valgrind
4986         too, newer versions of valgrind have no problems with it.
4987
4988 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4989
4990         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
4991         further sections.
4992
4993 2008-11-13  Mark Probst  <mark.probst@gmail.com>
4994
4995         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
4996         filters.
4997
4998 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4999
5000         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
5001
5002 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5003
5004         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
5005
5006         * cpu-x86.md: Same.
5007
5008         * mini-x86.c: Same.
5009
5010         * simd-intrinsics.c: Same.
5011
5012 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5013
5014         * simd-intrinsics.c: Enable constructor intrinsics for all types.
5015
5016 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5017
5018         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
5019         to work with more Vector types.
5020
5021 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5022
5023         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
5024         store the elemens directly instead of using and intermediate.
5025
5026 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5027
5028         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
5029
5030         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
5031         to preserve %eax for aot plt trampolines.
5032
5033         * aot-compiler.c (compile_method): Don't skip synchronized methods.
5034         (encode_method_ref): Flag synchronized methods so they won't go through
5035         the AOT trampoline.
5036
5037         * aot-compiler.c: Additional work to support AOTing synchronized methods/
5038         wrappers.
5039
5040         * cpu-ia64.md (jmp): Increase max length.
5041
5042 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5043
5044         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
5045         open generic classes.
5046
5047         * aot-compiler.c: Enable the ELF writer on ELF platforms.
5048
5049         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
5050         box+brtrue optimization since it causes test failures on x86.
5051
5052 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5053
5054         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
5055
5056         * cpu-x86.md: Same.
5057
5058         * mini-x86.c: Same.
5059
5060         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
5061         for simd ctor values. 
5062
5063         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
5064         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
5065
5066 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5067
5068         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
5069         LogicalRightShift.
5070
5071         * simd-instrincs.c: Same.
5072
5073         * basic-simd.cs: Same.
5074
5075 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5076
5077         * ratests.cs: Add more tests.
5078
5079         * regalloc2.c (add_spill_code): Handle more corner cases.
5080
5081 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5082
5083         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
5084         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
5085         both the source an destination of an instruction.
5086
5087 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5088
5089         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
5090         wapihandles.c: more portability changes.
5091
5092 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
5093
5094         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
5095         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
5096         safe to execute in a signal handler and the kernel provides better
5097         the info in /proc/self/smaps. Avoid the assert on sigaction during
5098         cleanup.
5099
5100 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5101
5102         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
5103         do the bblock linking hack if it is actually needed.
5104
5105         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
5106         up linking.
5107
5108         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
5109         crash problem is fixed.
5110
5111         * branch-opts.c (mono_remove_critical_edges): Link up newly added
5112         bblocks.
5113
5114         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
5115         for catch clauses.
5116         (mini_method_compile): Set the starting value of next_vreg to 
5117         MAX_IREGS + MAX_FREGS when using globalra.
5118
5119         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
5120         filter clauses with BB_EXCEPTION_HANDLER.
5121
5122         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
5123
5124 2008-11-10  Mark Probst  <mark.probst@gmail.com>
5125
5126         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
5127         space for stdcall.  Fixes regressions on Win32.
5128
5129 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
5130
5131         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
5132         bblocks.
5133         (linear_scan): Remove an assert which doesn't seem to be needed.
5134
5135         * local-propagation.c (mono_local_deadce): Avoid a call to
5136         MONO_DELETE_INS which would screw up the instruction linking.
5137
5138         * mini.c (mono_decompose_op_imm): Make this work with globalra.
5139
5140         * regalloc2.c: Upgrade to work the current JIT code.
5141
5142 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
5143
5144         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
5145         case.
5146
5147         * aot-runtime.c: Remove some dead code.
5148
5149         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
5150         consistency.
5151         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
5152
5153         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
5154         trampolines using sscanf since atoi doesn't work on large unsigned values.
5155
5156         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
5157         Initialize code_size.
5158
5159 2008-11-08  Mark Probst  <mark.probst@gmail.com>
5160
5161         * method-to-ir.c (mini_emit_inst_for_method): Make
5162         Interlocked.CompareExchange work for Int arguments on 32 bit
5163         archs, as well.
5164
5165 2008-11-07  Mark Probst  <mark.probst@gmail.com>
5166
5167         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
5168
5169 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
5170
5171         * main.c Fix MSVC build.
5172
5173         Contributed under MIT/X11 license.
5174
5175 2008-11-06  Mark Probst  <mark.probst@gmail.com>
5176
5177         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
5178         alignment larger than 8 bytes are aligned correctly, too.
5179
5180         * mini.c: Honor the min_align field of MonoClass when laying out
5181         the stack.
5182
5183 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
5184
5185         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
5186
5187         * aot-compiler.c (emit_plt): Fix a warning.
5188         
5189         * aot-compiler.c: Implement ARM support in the binary writer.
5190
5191 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5192
5193         * basic-simd.cs: Add test for getter with byref arg.
5194         Fix the naming of a few tests.
5195         Add missing checks to a test.
5196
5197 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5198
5199         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
5200
5201         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
5202         most of the full-aot support for monitor enter/exit trampolines.
5203
5204         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
5205         enter/exit trampoline creation functions.
5206
5207         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
5208         make dist.
5209
5210 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
5211
5212         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
5213         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
5214         implement the needed functionality without adding crap to the runtime.
5215
5216 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5217
5218         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
5219         non-x86 builds.
5220
5221         * mini.c (mono_build_date): New global version holding the build date in
5222         string format.
5223         
5224         * Makefile.am (buildver.c): Generate a file containing the build date.
5225
5226         * main.c: Set the build date from the generated file.
5227
5228         * mini.c (mono_get_runtime_build_info): New helper function returning build
5229         information in a string format.
5230         
5231         * driver.c (mono_main): Print the build date in --version.
5232
5233         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
5234         file when the bind-to-runtime-version option is used.
5235
5236 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5237
5238         * simd-intrinsics.c: Fix bug when using getters and byref args. 
5239
5240 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5241
5242         * simd-methods.h: Rename prefetch methods.
5243
5244         * simd-intrinsics.c: Same.      
5245
5246 2008-11-05  Mark Probst  <mark.probst@gmail.com>
5247
5248         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
5249         sizes.
5250
5251 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * aot-compiler.c: Use the bundled elf header files instead of depending on
5254         the system one.
5255         
5256         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
5257         mempool.
5258
5259         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
5260         on every call.
5261
5262 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
5263
5264         * cpu-x86.md: Add store nta ops.
5265
5266         * mini-ops.h: Same.
5267
5268         * mini-x86.c: Same.
5269
5270         * mini.h: Add an enum for simd prefetch modes.
5271
5272         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
5273         of store. Use the changed code to support store nta.
5274
5275         * simd-intrinsics.c: Add prefetch ops for all vector types.
5276
5277 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5278
5279         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
5280         threads.
5281         
5282         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
5283         names.
5284
5285         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
5286         trampolines.
5287
5288 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5289
5290         * mini-x86.c: Fixed commit.
5291
5292 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5293
5294         * aot-compiler.c (emit_plt): Align the plt section only on x86.
5295
5296 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5297
5298         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
5299         and MONITOR_EXIT, for the ASM fastpaths.
5300
5301         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
5302         available.
5303
5304         * mini.c, patch-info.h: Signature and patch infos for
5305         Monitor.Enter/Exit trampolines.
5306
5307         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
5308
5309         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
5310         Monitor.Enter/Exit ASM fastpath for Linux.
5311
5312 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5313
5314         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
5315
5316         * objects.cs: Add a new test.
5317         
5318         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
5319
5320         * aot-runtime.c (load_method): Run class initialization in the PLT case even
5321         if MONO_LOG_LEVEL is set.
5322
5323         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
5324
5325         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
5326
5327         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
5328         
5329         * aot-compiler.c: Change the relocation code to use virtual addresses instead
5330         of file offsets. Align the sections belonging to the data segment to 
5331         PAGESIZE.
5332
5333 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5334
5335         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
5336         elf.h. Port it to amd64.
5337
5338 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5339
5340         * driver.c: Enable SIMD by default.
5341
5342 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5343
5344         * cpu-x86.md: Add prefetch op.
5345
5346         * mini-ops.h: Same.
5347
5348         * mini-x86.c: Same.
5349
5350         * mini.h: Add an enum for simd prefetch modes.
5351
5352         * simd-methods.h: Add prefetch function names.
5353
5354         * simd-intrinsics.c: Add prefetch ops for all vector types.
5355
5356 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5357
5358         * aot-compiler.c (emit_bytes): Speed this up a little.
5359
5360 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
5361
5362         * aot-compiler.c: Add JIT time etc. statistics.
5363         
5364         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
5365
5366         * mini.h (MonoCompile): Add 'got_offset' field.
5367
5368         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
5369         method_got_offsets array.
5370
5371         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
5372         wrappers.
5373
5374         * aot-compiler.c (compile_method): Add generic method instances referenced
5375         by the method to the list of methods to be compiled, this is required so if
5376         A<T> references B<T>, and another assembly references A<int>, then it will
5377         also get a copy of B<int>.
5378
5379         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
5380         when checking for monitor enter/exit.
5381
5382 2008-10-30  Mark Probst  <mark.probst@gmail.com>
5383
5384         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
5385         for Monitor.Enter and Monitor.Exit if enabled.
5386
5387         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
5388         Solaris.
5389
5390 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
5391
5392         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
5393         of an OP_MOVE. Fixes #440046.
5394
5395         * basic-long.cs: Add a new test.
5396
5397 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5398
5399         * mini.h: Add synchronization note for the managed counter-part.
5400
5401         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
5402         returns the simd caps of the current cpu.
5403
5404 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5405
5406         * basic-simd.cs: Remove Console.WriteLine.
5407
5408 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5409
5410         * basic-simd.cs: New tests for Vector2ul.
5411
5412 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5413
5414         * simd-intrinsics.c: Add new vector type Vector2ul.
5415
5416 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5417
5418         * basic-simd.cs: New tests for Vector2l.
5419
5420 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5421
5422         * cpu-x86.md: Add long version of most packed int ops.
5423
5424         * mini-ops.h: Same.
5425
5426         * mini-x86.h: Same.
5427
5428         * simd-intrinsics.c: Add new vector type Vector2l.
5429
5430 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5431
5432         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
5433
5434         * simd-methods.h: Remove SN_op_BitwiseXor.
5435
5436 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
5437
5438         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
5439         alignment.
5440
5441 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5442
5443         * basic-simd.cs: Test for Vector2d.
5444
5445         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
5446         value.
5447
5448 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5449
5450         * cpu-x86.md: Add double version of all packed float ops.
5451
5452         * mini-ops.h: Same.
5453
5454         * mini-x86.h: Same.
5455
5456         * simd-intrinsics.c: Add new vector type Vector2d.
5457
5458         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
5459
5460         * simd-methods.h: Add Duplicate.
5461
5462 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5463
5464         * basic-simd.cs: Test for packing with signed saturation.
5465
5466 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
5467
5468         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
5469         found in the TYPESPEC table.
5470
5471 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
5472
5473         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
5474         too.
5475
5476         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5477
5478         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
5479         instead of the RVA, since the RVA can be changed by tools like the cil 
5480         stripper.
5481
5482         * method-to-ir.c (mono_method_to_ir2): Ditto.
5483
5484         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
5485         (deserialize_variable): Ditto.
5486
5487 2008-10-25  Martin Baulig  <martin@ximian.com>
5488
5489         * debug-mini.c (write_variable): Use
5490         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
5491
5492 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5493
5494         * cpu-x86.md: Add unsigned variants of packd and packw.
5495
5496         * mini-ops.h: Same.
5497
5498         * mini-x86.h: Emit the right instruction for packd and packw.
5499         Add unsigned variants of packd and packw.
5500
5501         * simd-intrinsics.c: Packd and packw were used in place of their
5502         unsigned variants. Change that.
5503         Add intrinsics for (Signed)PackWithSignedSaturation.
5504
5505         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
5506
5507 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5508
5509         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
5510
5511 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5512
5513         * mini-ops.h: Remove dword packed add/sub with saturation ops.
5514
5515         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
5516
5517         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
5518         sse instructions.
5519
5520         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
5521
5522 2008-10-24  Mark Probst  <mark.probst@gmail.com>
5523
5524         * method-to-ir.c, mini.c: Special casing for the synchronized
5525         wrapper for the ldtoken+GetTypeFromHandle case.
5526
5527 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
5528
5529         * mini.c (mono_replace_ins): Move this to branch-opts.c.
5530
5531         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
5532         created/split bblocks.
5533
5534 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5535
5536         * mini-ops.h: Add packed signed mul high.
5537         
5538         * cpu-x86.md: Same.
5539
5540         * mini-x86.c (mono_arch_output_basic_block): Same.
5541
5542         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
5543
5544         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
5545
5546 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5547
5548         * basic-simd.cs: Tests for Vector16sb.
5549
5550 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
5551
5552         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
5553
5554 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
5555
5556         * mini-ops.h: Add packed signed min, max and compare greater.
5557         
5558         * cpu-x86.md: Same.
5559
5560         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
5561         saturation.
5562
5563         * simd-methods.h: Add CompareGreaterThan.
5564
5565         * simd-methods.h: Remove CompareEquals.
5566
5567         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
5568
5569         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
5570
5571         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
5572         CompareEqual.
5573
5574 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
5575
5576         * basic-simd.cs: Fix tests due to change in the API.
5577
5578 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5579
5580         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
5581
5582 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5583
5584         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
5585
5586         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
5587         inst_offset as this has invalid values for LDADDR.
5588
5589 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5590
5591         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
5592
5593         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
5594
5595 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5596
5597         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
5598         for accessing field->data.
5599
5600 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5601
5602         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
5603
5604 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5605
5606         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
5607
5608         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
5609
5610 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5611
5612         * dominators.c (mono_compute_natural_loops): Allocate GList enties
5613         from the cfg mempool.
5614
5615 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
5616
5617         * basic-simd.cs: Tests for new methods in Vector8us.
5618
5619 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
5620
5621         * mini-ops.h: Add multiply and store high.
5622         
5623         * cpu-x86.md: Same.
5624
5625         * mini-x86.c (mono_arch_output_basic_block): Same.
5626
5627         * simd-methods.h: Same.
5628
5629         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
5630         and CompareEqual.
5631
5632 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
5633
5634         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
5635         mono_class_setup_vtable ().
5636
5637         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
5638         mono_class_get_vtable_entry () for accessing klass->vtable.
5639
5640         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
5641
5642         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
5643         found.
5644
5645         * method-to-ir.c (mono_save_token_info): Don't save references made from
5646         wrappers.
5647
5648         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
5649         of generic instances.
5650
5651         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
5652
5653 2008-10-19  Mark Probst  <mark.probst@gmail.com>
5654
5655         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
5656         OP_JMP depends on the method signature.  Calculate it properly.
5657
5658 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
5659         
5660         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
5661         called directly.
5662
5663         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
5664         instances.
5665         (emit_extra_methods): Add another table mapping method indexes to 
5666         offsets in the extra_method_info table.
5667
5668         * mini.h: Bump AOT file format version.
5669         
5670         * aot-runtime.c: Merge most of the code from mono_aot_get_method
5671         and mono_aot_get_method_from_token () into one function.
5672
5673 2008-10-19  Mark Probst  <mark.probst@gmail.com>
5674
5675         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
5676         separate counter.
5677
5678 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
5679
5680         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
5681         methods.
5682
5683         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
5684         disable_aot.
5685
5686         * mini.c (mono_patch_info_equal): Compare the generic context as well.
5687
5688         * mini.h: Bump aot file format version.
5689
5690         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
5691         AOT file can contain native code for methods which are not in the METHOD
5692         table. Generate code for non-sharable generic instances of generic methods
5693         found in the METHODSPEC table.
5694         
5695         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
5696         encoding generic type handles.
5697
5698         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
5699         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
5700
5701         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
5702         macros + MONO_ADD_INS.
5703
5704         * mini.c (mono_jump_info_token_new2): New function which takes a generic
5705         context as well.
5706
5707         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
5708
5709         * mini.h: Bump aot file format version.
5710
5711         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
5712
5713 2008-10-17  Mark Probst  <mark.probst@gmail.com>
5714
5715         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
5716         platforms, with definable stack alignment value.  Set to 16 now
5717         for all platforms.
5718
5719         * mini.c, mini.h, driver.c: Command line option for disabling
5720         stack alignment.
5721
5722 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5723
5724         * basic-simd.cs: Tests for new methods in Vector4ui.
5725
5726 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5727
5728         * mini-ops.h: Add packed int shuffle.
5729         
5730         * cpu-x86.md: Same.
5731
5732         * mini-x86.c (mono_arch_output_basic_block): Same.
5733
5734         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
5735         extract mask, max, min, shuffle.
5736
5737         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
5738
5739 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5740
5741         * basic-simd.cs: Tests for new methods in Vector8us.
5742
5743 2008-10-17  Mark Probst  <mark.probst@gmail.com>
5744
5745         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
5746         RuntimeTypeHandle, not a TypedReference.
5747
5748 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
5749
5750         * simd-intrinsics.c: remove relocations.
5751
5752 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
5753
5754         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
5755         optimizations from the x86 backend.
5756
5757 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
5758
5759         * simd-methods.h, simd-intrinsics.c: debloat method names and
5760         prepare for no relocations.
5761
5762 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5763
5764         * mini-ops.h: Add packed min/equal and sum of absolute differences.
5765         
5766         * cpu-x86.md: Same.
5767
5768         * mini-x86.c (mono_arch_output_basic_block): Same.
5769
5770         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
5771         extract mask, max, min and sum of absolute differences.
5772
5773         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
5774         method name.
5775
5776 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5777
5778         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
5779         Renamed one test for consistency.
5780
5781 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5782
5783         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
5784         fix to the code that deal with other blocks.
5785
5786 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5787
5788         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
5789
5790 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5791
5792         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
5793         that deals with vreg interference. Explicitly check for OP_LDADDR to be
5794         able to process the source reg.
5795
5796 2008-10-16  Martin Baulig  <martin@ximian.com>
5797
5798         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
5799
5800         * inssel.brg: Add `OP_HARD_NOP'.
5801
5802         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
5803
5804         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
5805         `OP_HARD_NOP' instruction when running inside the debugger.
5806
5807         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
5808         `OP_HARD_NOP' instruction when running inside the debugger.
5809
5810 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5811
5812         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
5813         now works. The issue with the regalloc tripping up no longer
5814         happens.
5815
5816         * simd-intrinsics.c (load_simd_vreg): Same.
5817
5818 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5819         
5820         * basic-simd.cs: Tests for new Vector8ui methods.
5821
5822 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5823
5824         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
5825         only for type. This fixes crashes where MonoInst::klass is checked
5826         for ops of type != VTYPE or OBJ.
5827
5828         * simd-intrinsics.c (load_simd_vreg): Same.
5829
5830 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5831
5832         * mini-ops.h: Add ops for packed shuffle/max/avg and
5833         extract mask.
5834         
5835         * cpu-x86.md: Same.
5836
5837         * mini-x86.c (mono_arch_output_basic_block): Same.
5838
5839         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
5840         extract mask.
5841
5842         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
5843         to emit extract mask op.
5844
5845         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
5846         to emit word shuffles.
5847
5848 2008-10-15  Mark Probst  <mark.probst@gmail.com>
5849
5850         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
5851         the largest alignment needed by a variable, but at least
5852         sizeof(gpointer).
5853
5854 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5855
5856         * basic-simd.cs: Tests for the fixes in the last commit.
5857
5858 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5859
5860         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
5861         no longer handles STACK_PTR input.
5862
5863         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
5864
5865         * simd-intrinsics.c (load_simd_vreg): New function that works like 
5866         get_simd_vreg   but handles STACK_PTR input.
5867
5868         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
5869         as the input can be an arbitrary pointer.
5870
5871         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
5872         LDADDR local optimization directly otherwise use a store op.
5873
5874 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5875
5876         * basic-simd.cs: Tests for dup low and dup high.
5877
5878 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5879
5880         * mini-ops.h: Add dup low and dup high ops.
5881         
5882         * cpu-x86.md: Same.
5883
5884         * mini-x86.c (mono_arch_output_basic_block): Same.
5885
5886         * simd-intrinsics.c (vector4f_intrinsics): Same.
5887
5888 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5889
5890         * basic-simd.cs: Tests for recently added functionality.
5891
5892 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5893
5894         * mini-ops.h: Add remaining sse1 fp ops.
5895         
5896         * cpu-x86.md: Add remaining sse1 fp ops.
5897
5898         * mini-x86.c (mono_arch_output_basic_block): Same.
5899
5900         * mini.h: Add enum for simd FP compare conditions.
5901
5902         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
5903
5904         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
5905         so the backed can generate the appropriate op.
5906
5907 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5908         This patch squeese one more byte from the SimdIntrinsc struct.
5909
5910         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
5911         a a shift amount intead of simply or'ing it.
5912
5913         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
5914
5915         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
5916         byte so we can have an aditional flags field without increasing struct size.
5917
5918         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
5919         against the simd_supported_versions bitmask.
5920
5921         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
5922
5923 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
5924
5925         * mini.c: remove rawbuffer code (the only use here is unsafe because
5926         it takes locks during signal handling and the kernel now provides much
5927         better info in proc/pid/smaps these days).
5928
5929 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
5930
5931         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
5932         OP_X86_PUSH_OBJ. Fixes #434620.
5933
5934         * objects.cs: Add a test.
5935         
5936 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
5937
5938         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
5939         that the packuswb/packusdw don't work with unsigned numbers for what
5940         would be negative numbers in signed format.
5941
5942         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
5943         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
5944
5945         * mini-ops.h: Add doubleword forms of many ops and packing ones.
5946
5947         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
5948
5949         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
5950
5951         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
5952
5953         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
5954         add more ops.
5955
5956         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
5957         version as the enum in mini.h.
5958
5959         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
5960         for sse3 ops, check the simd_version field if present. This way the code
5961         works with all versions of sse.
5962
5963 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5964
5965         * simd-intrinsics.c: Fixed intrinsic name typo.
5966
5967         * mini.h: Added missing simd exported function.
5968
5969         * basic-simd.cs: Added tests for Vector4ui.
5970         Fixed broken test for Vector16b.
5971
5972 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
5973
5974         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
5975         the max length to 64.
5976
5977 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5978
5979         * method-to-ir.c: Only do the fast virtual generic method call for
5980         non-wrapper methods.
5981
5982         * mini.h, mini-trampolines.c: The new generic virtual remoting
5983         trampoline handles virtual method calls via the vtable (as done by
5984         the fast virtual generic method calls) to remoting proxies.
5985
5986         * mini.c (mono_jit_create_remoting_trampoline): For generic
5987         methods reate a generic virtual remoting trampoline.
5988
5989         * mini-amd64.h: Enable fast virtual generic method calls again.
5990
5991 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5992
5993         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
5994         restore registers when doing tail calls.
5995
5996 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5997
5998         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
5999         Vector4ui.
6000
6001 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6002
6003         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
6004
6005 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6006
6007         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
6008
6009 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6010
6011         * basic-simd.cs: Retrofit for API changes.
6012
6013 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6014
6015         * mini-ppc.c: Handle integer stack arguments for tail calls.
6016
6017 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6018
6019         * optflags-def.h: Removed sse3 optimization.
6020
6021         * driver.c: Same.
6022
6023         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
6024         sse3.
6025
6026         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
6027
6028         * mini.h: Added enumeration with simd versions.
6029
6030         * simd-intrinsics.c (emit_intrinsics): Use the new static var
6031         for detecting SSE3.
6032
6033         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
6034
6035         * mini.c (mini_init): Call mono_simd_intrinsics_init.
6036
6037 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6038
6039         * basic-simd.cs: Added tests for Vector8u and Vector16u.
6040
6041         * basic-simd.cs: Fixed test naming.
6042
6043 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6044
6045         * mini-ops.h: Added ops for packed and saturated math, shifts
6046         and packing/unpacking.
6047
6048         * cpu-x86.md: Added descriptors for the above ops.
6049
6050         * mini-x86.c: Added code to emmit the above ops.
6051
6052         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
6053
6054 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
6055
6056         * aot-compiler.c (compile_method): Enable AOT for generic code.
6057
6058         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
6059
6060 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
6061
6062         * mini.c: add a workaround for a common screwup that ends up blamed
6063         to mono (other processes blocking signal delivery).
6064
6065 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6066
6067         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
6068         in the LDFLD/STFLD opcodes. Fixes #432673.
6069
6070         * iltests.il.in: Add a new test.
6071
6072 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
6073
6074         * mini-arm.c: attach the thread in unmanaged->managed transitions
6075         using delegates (bug #433148).
6076
6077 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6078
6079        * basic-simd.cs: Use new ShuffleSel constants.
6080
6081 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6082
6083         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
6084
6085         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
6086         only disable simd intrinsics if no sse2 is detected.
6087
6088         * optflags-def.h: Added sse3.
6089
6090         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
6091         is disabled.
6092
6093 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6094
6095         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
6096         when adding delegate-invoke wrappers.
6097
6098 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6099
6100         * Makefile.am: Reenable the simd tests.
6101
6102 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6103
6104         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
6105           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
6106           other vreg is allocated to that hreg.
6107
6108         Contributed under MIT/X11 license.
6109
6110 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6111
6112         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
6113         yet checked in.
6114
6115 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6116
6117         * basic-simd.cs: New test suite for SIMD intrinsics.
6118
6119         * Makefile.am: Added new tests.
6120
6121 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6122
6123         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
6124
6125         * mini-ops.h: Same.
6126
6127         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
6128
6129         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
6130         using SSE2 aware opcodes.
6131
6132         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
6133         is enabled, this code path is only reachable if conversion ops are emmited after
6134         mono_method_to_ir.
6135
6136         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
6137
6138         This optimization saves 6 bytes per conversion against the old version.
6139
6140 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6141
6142         * aot-compiler.c (compile_method): Don't skip methods referencing 
6143         generic methods without a corresponding entry in token_info_hash, since
6144         encode_method_ref () can handle all generic methods now.
6145
6146         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
6147         generic context is set.
6148         
6149         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
6150         generic sharing of LDTOKEN.
6151
6152 2008-10-06  Mark Probst  <mark.probst@gmail.com>
6153
6154         * mini-amd64.h: Temporarily disabled fast virtual generic method
6155         calls because it breaks the System.Runtime.Remoting tests.
6156
6157 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6158
6159         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
6160
6161         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
6162         so inlining actually works.
6163         (check_inline_caller_method_name_limit): Ditto.
6164
6165 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
6166
6167         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
6168         64 bit safety (from Olaf Hering and Andreas Farber).
6169
6170 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6171         
6172         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
6173         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
6174         unused virtual call support code.
6175
6176         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
6177         
6178         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
6179         which can't use aot trampolines.
6180         (decode_patch): Don't create aot trampolines for methods which can't use
6181         them.
6182
6183         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
6184         use aot trampolines.
6185
6186         * mini.h: Bump AOT image format version.
6187         
6188 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
6189
6190         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
6191         to save_token_info () since cmethod is inflated for constrained calls.
6192
6193         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
6194
6195 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
6196
6197         * Makefile.am: Add build rules for ppc64.
6198         This avoids the build failing at pedump with unresolved symbols
6199         due to lack of arch_sources. Instead it will now fail earlier
6200         due to lack of cpu-ppc64.md.
6201
6202         Contributed under MIT/X11 license.
6203
6204 2008-10-04  Mark Probst  <mark.probst@gmail.com>
6205
6206         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
6207         tail calls.
6208
6209         * iltests.il.in: Add test case for tail call with many arguments.
6210
6211 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6212
6213         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
6214         to the fast virtual generic method code until the aot case is fixed.
6215
6216 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6217
6218         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
6219
6220 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6221
6222         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
6223         thunks.
6224
6225 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6226         
6227         * simd-intrinsics.c: Forgot to add this one.
6228
6229         * mini-codegen.c: Fix macro in case SIMD is not supported.
6230
6231 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6232         
6233         This patch land initial JIT support for simd intrinsics.
6234
6235         * mini-x86.h: Added new define to make --enable_minimal work on x86.
6236
6237         * Makefile.am: Added simd-intrinsics.c
6238
6239         * simd-intrinsics.c: New file with simd instrinsic related
6240         code.
6241
6242         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
6243
6244         * cpu-x86.md: Add simd related instructions.
6245
6246         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
6247
6248         * driver.c: Added two new --regression variants.
6249
6250         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
6251
6252         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
6253
6254         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
6255         extract some complicated logic to helper functions.
6256
6257         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
6258
6259         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
6260
6261         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
6262         the specialized simplification pass.
6263
6264         * method-to-ir.c (mono_spill_global_vars): Use new macro.
6265
6266         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
6267
6268         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
6269         table.
6270
6271         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
6272         if MONO_ARCH_NEED_SIMD_BANK is defined.
6273
6274         * mini-ops.h: Added the new simd ops.
6275
6276         * mini-x86.c: Added mono_arch_xregname.
6277
6278         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
6279
6280         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
6281
6282         * mini-x86.h: Define simd related MONO_ARCH macros.
6283
6284         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
6285
6286         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
6287
6288         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
6289         MONO_CLASS_IS_SIMD to deal with simd related IR.
6290
6291         * mini.h (MonoInst): Added spill_var to the backend union.
6292
6293         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
6294
6295         * mini.h: Added forward declarations of the new simd fuctions.
6296
6297         * optflags-def.h: Added new optimization names SIMD.
6298
6299         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
6300
6301         * regalloc.h: Added support for working with 3 register banks.
6302
6303         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
6304
6305         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
6306
6307 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
6308
6309         * mini-exceptions.c: remove 64 bit related ifdef clutter.
6310
6311 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6312
6313         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
6314         instead of one on 64 bit systems.
6315
6316         * method-to-ir.c: Remove unused includes.
6317
6318 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
6319
6320         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
6321         cfg->used_int_regs, since the two are different on arm.
6322
6323 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6324
6325         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
6326         mono_method_get_vtable_index() to get the vtable index.
6327
6328 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6329
6330         * method-to-ir.c (mono_method_to_ir2): Don't create native
6331         wrappers for array methods, because they're never called (and if
6332         they were called they wouldn't work).
6333
6334 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6335
6336         * method-to-ir.c (mono_method_to_ir2): Array methods are
6337         special-cased and must not be invoked indirectly via the (M)RGCTX
6338         when generic sharing is turned on.  Fixes #431413.
6339
6340 2008-10-01  Mark Probst  <mark.probst@gmail.com>
6341
6342         * method-to-ir.c: When generic sharing is active, call
6343         non-interface virtual generic methods via the standard trampoline.
6344
6345         * mini-trampolines.c: Handle virtual generic shared methods.
6346
6347         * mini.h, mini-x86.c, mini-x86.h: New argument for
6348         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
6349         method thunks and which is the trampoline to call if the lookup
6350         fails.  Enable the virtual generic method thunk for x86.
6351
6352         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
6353         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
6354         argument but assert that it's NULL, because these archs don't yet
6355         implement the virtual generic method thunk.  Changes in the IMT
6356         thunk data structures.
6357
6358 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
6359
6360         * aot-compiler.c (emit_globals): Avoid invalid characters in
6361         the static linking symbol.
6362
6363         * objects.cs: Add a test for the range check optimization. Fix warnings.
6364
6365         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
6366         optimization from the current JIT.
6367
6368         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
6369         later in decompose_array_access_opts () to allow more optimizations.
6370
6371         * method-to-ir.c (mono_handle_soft_float): Rename this to 
6372         mono_decompose_soft_float () for consistency.
6373
6374         * mini-ops.h: Fix arguments of OP_STRLEN.
6375
6376         * method-to-ir.c (save_cast_details): Extract the cast details saving code
6377         into a separate function.
6378         (reset_cast_details): Ditto.
6379         (handle_unbox): Save cast details. Fixes #431254.
6380
6381         * method-to-ir.c: Remove some obsolete FIXMEs.
6382
6383 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6384
6385         * ir-emit.h (alloc_dreg): Write a warning before crashing.
6386
6387 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6388
6389         * mini-codegen.c: More work on macros to make them
6390         ready for multiple regbanks.
6391
6392 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6393
6394         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
6395
6396         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
6397
6398 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6399
6400         * mini-codegen.c (mono_spillvar_offset): Proper support for
6401         multiple regbanks.
6402
6403 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6404
6405         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
6406         the stack overflow changes.
6407
6408 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6409
6410         * mini-codegen.c: Make all bank macros depend on reg_bank.
6411
6412         * mini-codegen.c (mono_local_regalloc): Make free mask
6413         initialization regbank aware.
6414
6415 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6416
6417         * mini-codegen.c (mono_local_regalloc): Extract callee
6418         mask selection to a function and make it regbank aware.
6419
6420 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6421
6422         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
6423         code to deal with many regbanks.
6424
6425 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6426
6427         * mini-codegen.c: More fp->regbank changes.
6428
6429 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6430
6431         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
6432         of a hardcoded constant.
6433
6434 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6435
6436         * method-to-ir.c (type_from_stack_type): Fix typo.
6437
6438 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
6439
6440         * mini-ia64.c (emit_move_return_value): Convert float return values to
6441         double.
6442
6443         * objects.cs: Add a new test.
6444         
6445         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
6446         VARARG methods to fix an assert later.
6447
6448         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
6449         end so it at least compiles.
6450
6451 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
6452
6453         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
6454
6455 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
6456
6457         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
6458         optimization to a new function (emit_optimized_ldloca_ir) and enable
6459         it for both ldloca and ldloca_s.
6460
6461 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
6462
6463         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
6464         gshared CASTCLASS code.
6465
6466         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
6467         amd64, where the libc stack unwinder encounters stack frames referring to
6468         native code in unmapped memory.
6469
6470         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
6471         sharing.
6472
6473         * generics.cs: Add new test.
6474
6475 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
6476
6477         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
6478         add a check that one of the ARM_FPU_ constants is defined.
6479
6480         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
6481         
6482         * mini-exceptions.c: Fix build on non-altstack platforms.
6483
6484         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
6485         sharing of vtypes.
6486
6487         * ir-emit.h: Add a comment to NEW_PCONST.
6488
6489         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
6490
6491         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
6492
6493         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
6494         after the changes to MonoJitDomainInfo.
6495
6496 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6497
6498         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
6499
6500 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6501
6502         * mini-ppc.c: Compiler warning fixes.
6503
6504 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6505
6506         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
6507         for pinvokes.
6508
6509 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6510
6511         * exceptions-ppc.c, mini-ppc.h: Compile
6512         mono_arch_handle_altstack_exception() on Darwin, too.
6513
6514 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6515
6516         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
6517         work on archs which don't have generic sharing implemented, only
6518         without the vtable_arg.
6519
6520 2008-09-26  Mark Probst  <mark.probst@gmail.com>
6521
6522         * mini.c: Added comment explaining why delegate ctor icall
6523         wrappers are compiled.
6524
6525 2008-09-26  Mark Probst  <mark.probst@gmail.com>
6526
6527         * mini.c: Don't produce trampolines to delegate ctor icall
6528         wrappers but compile them upfront.
6529
6530 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
6531
6532         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
6533         runtime-set function when going back to managed code. Currently this
6534         is used to set back the protection on the soft ovf pages and/or to
6535         throw the stack overflow exception that happened in unmanaged code.
6536
6537 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
6538
6539         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
6540         runtime-set function when going back to managed code. Currently this
6541         is used to set back the protection on the soft ovf pages and/or to
6542         throw the stack overflow exception that happened in unmanaged code.
6543
6544 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6545
6546         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
6547         the support code for restoring stack protection after stack overflows
6548         that happen in unmanaged code. Don't set the exec permission on the
6549         soft overflow area.
6550
6551 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
6552
6553         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
6554         delegate->method_ptr is set. Fixes #428054.
6555
6556 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
6557
6558         * tests.cs: Rename to ratests.cs.
6559
6560         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
6561         emit_get_rgctx_... functions.
6562
6563 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6564
6565         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
6566
6567 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6568
6569         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
6570         before asserting that method is sharable.
6571
6572 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6573
6574         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
6575         whether method needs a static RGCTX wrapper used instead of
6576         complex conditions.
6577
6578         * generic-sharing.c, mini.h: A few functions moved to
6579         metadata/generic-sharing.c.
6580
6581 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6582
6583         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
6584         Generic code sharing for value types, which essentially means
6585         treating value type methods like static methods.  The RGCTX is
6586         passed in the same way.
6587
6588 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
6589
6590         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
6591         opcode when creating multi-dimensional arrays of open types.
6592
6593         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
6594         open generic types.
6595
6596         * generics.cs: Add a test.
6597
6598         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
6599
6600 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
6601
6602         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
6603
6604         * mini.c (mini_method_compile): Set it when running under the debugger. 
6605
6606         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
6607         vreg optimization if the flag is set.
6608
6609         * driver.c (mono_main): Add --attach= option to pass options to
6610         the attach agent.
6611
6612         * mini.c (sigquit_signal_handler): Start the attach agent.
6613
6614         * ssapre.c: Disable this to save space since it is not yet ported to
6615         linear IR.
6616
6617         * regalloc2.c: Disable this to save space.
6618
6619         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
6620
6621 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
6622
6623         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
6624         the -v option useful again.
6625
6626 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
6627
6628         * mini-amd64.c (mono_arch_output_basic_block): Add support for
6629         --break-at-bb.
6630
6631         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
6632         arrays of arrays. Fixes #428406.
6633
6634         * method-to-ir.c (mini_emit_castclass): Ditto.
6635
6636         * objects.cs: Add new test.
6637         
6638 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
6639
6640         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
6641         was wrong at it choked against target_type_is_incompatible for byref types.
6642
6643 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
6644
6645         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
6646         places.
6647
6648 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
6649
6650         * mini-exceptions.c: update a few more exceptions-related counters.
6651
6652 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
6653
6654         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
6655         new functions to allocate from persistent mempools.
6656
6657 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
6658
6659         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
6660         multiple register banks in the future.
6661
6662         * mini-codegen.c (mono_local_regalloc): Fix a warning.
6663
6664 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
6665
6666         * mini.c (type_to_eval_stack_type): Remove duplicated function.
6667
6668         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
6669
6670         * mini.h: Export type_to_eval_stack_type.
6671
6672         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
6673         is only ins->klass of byref types.
6674
6675 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
6676
6677         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
6678         (mini_emit_memcpy2): Ditto.
6679
6680         * mini-amd64.c: Fix a warning.
6681
6682 2008-09-21  Mark Probst  <mark.probst@gmail.com>
6683
6684         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
6685         linking.
6686
6687 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
6688
6689         * method-to-ir.c: Extract stloc micro-optimization to a
6690         function and apply it to all cases.
6691
6692 2008-09-19  Mark Probst  <mark.probst@gmail.com>
6693
6694         * method-to-ir.c: Don't fail generic code sharing in cases we
6695         already support.
6696
6697 2008-09-18  Mark Probst  <mark.probst@gmail.com>
6698
6699         * mini-ppc.c: Handle structs in tailcalls on Darwin.
6700
6701 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
6702
6703         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
6704         implementation.
6705
6706 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
6707
6708         * trace.c: make tracing more useful and correct, with per-thread
6709         id and indent info.
6710
6711 2008-09-15  Mark Probst  <mark.probst@gmail.com>
6712
6713         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
6714         doing a method call and the argument is an R4.
6715
6716 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
6717
6718         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
6719         generic methods.
6720
6721 2008-09-13  Mark Probst  <mark.probst@gmail.com>
6722
6723         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
6724
6725 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
6726
6727         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
6728         (MONO_JUMP_TABLE_FROM_INS): Ditto.
6729
6730 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
6731
6732         * driver.c: Add a --agent argument (not supported yet) to load managed
6733         agent assemblies before loading the main assembly, similarly to how the
6734         Java VM handles agents.
6735
6736 2008-09-11  Mark Probst  <mark.probst@gmail.com>
6737
6738         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
6739         function to do stack layout of local variables.
6740
6741 2008-09-11  Mark Probst  <mark.probst@gmail.com>
6742
6743         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
6744         calculation.
6745
6746 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
6747
6748         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
6749         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
6750         JIT if DISABLE_JIT is defined.
6751
6752         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
6753         defined.
6754
6755 2008-09-10  Mark Probst  <mark.probst@gmail.com>
6756
6757         * iltests.il.in: Disable the fconv test on PPC (the result is
6758         undefined according to ECMA).
6759
6760 2008-09-10  Mark Probst  <mark.probst@gmail.com>
6761
6762         * iltests.il.in: Enable tail call tests for PPC.
6763
6764         * mini.h: Add variable for storing incoming valuetype argument
6765         addresses for tail calls.
6766
6767         * mini-ppc.c: Implement valuetype arguments and return values for
6768         tailcalls on Linux.
6769
6770 2008-09-09  Mark Probst  <mark.probst@gmail.com>
6771
6772         * mini-ppc.c: Partially implement tail calls (struct arguments and
6773         return values not supported).
6774
6775         * method-to-ir.c: Enable tail calls on PPC.
6776
6777 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
6778
6779         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
6780         runtime-invoke wrappers to work around the problem of them getting
6781         assigned to a random class.
6782
6783         * aot-runtime.c (mono_aot_get_method): Ditto.
6784         
6785 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
6786
6787         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
6788         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
6789
6790 2008-09-07  Mark Probst  <mark.probst@gmail.com>
6791
6792         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
6793         until they're implemented properly.
6794
6795         * exceptions-ppc.c: Use arch-independent exception-handling code
6796         instead of custom one.
6797
6798         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
6799         for Linear IR.
6800
6801         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
6802
6803         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
6804         applies when __powerpc__ is defined.
6805
6806 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
6807
6808         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
6809         methods to their code to avoid computing the full name of wrappers and
6810         doing a lookup in a string hash table.
6811
6812 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
6813
6814         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
6815         we identify bblocks before method_to_ir () is ran.
6816
6817         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
6818         Also avoid optimizing branches pointing to themselves.
6819
6820         * mini.c (mini_method_compile): Ditto. Fixes #422947.
6821
6822 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
6823
6824         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
6825
6826 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
6827
6828         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
6829         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
6830         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
6831         'buf'.
6832
6833         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
6834         jumped to the same entry in plt_jump_table.
6835
6836 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
6837
6838         * method-to-ir.c (initialize_array_data): Handle field with RVA from
6839         dynamic images.
6840
6841 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
6842
6843         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
6844         other assignment can be if converted. Saves 1.5% on corlib size and fixes
6845         #421807.
6846
6847 2008-08-29  Geoff Norton  <gnorton@novell.com>
6848
6849         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
6850         segment, and doesn't properly handle .space as .text.  Fixes
6851         AOT Mach/ARM
6852
6853 2008-08-29  Geoff Norton  <gnorton@novell.com>
6854
6855         * mini.c: Disable the mach exception handler when running on 
6856         ARM
6857
6858 2008-08-29  Geoff Norton  <gnorton@novell.com>
6859
6860         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
6861         globals on Darwin/ARM
6862
6863 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
6864
6865         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
6866         since too many things depend on it. Instead, call 
6867         mono_runtime_set_no_exec ().
6868         
6869         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
6870         the new JIT.
6871
6872         * aot-compiler.c: Add an 'asm-only' AOT option.
6873
6874         * mini.c: Avoid initializing the runtime when doing AOT compilation.
6875                 
6876         * aot-compiler.c (compile_method): Disable gshared support for now as it
6877         doesn't yet work.
6878
6879 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6880
6881         * mini-amd64.h : Fix a compiler warning.
6882
6883         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
6884           Changed to use a callback function to retrieve the unwind info.
6885           This avoids problems observed when code blocks were removed by
6886           unloading an app domain.
6887
6888         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
6889           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
6890           to work properly.
6891
6892         Contributed under MIT/X11 license.
6893
6894 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6895
6896         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
6897           case to keep the stack aligned to 8.
6898
6899         Contributed under MIT/X11 license.
6900
6901 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
6904         avoid repeated linear searches.
6905
6906 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
6907
6908         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
6909         methods it can't handle.
6910         
6911         * aot-compiler.c (add_method): Avoid adding a method twice.
6912         (add_wrappers): Add runtime invoke wrappers for all methods.
6913
6914         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
6915         function to create an aot-compatible version of this trampoline.
6916
6917         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
6918
6919 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
6920
6921         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
6922
6923         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
6924         with a generic sharing failure.
6925
6926         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
6927
6928         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
6929         CEE_RETHROW. Fixes #419634.
6930
6931         * mini.c (mono_method_to_ir): Ditto.
6932
6933         * exceptions.cs: Add a new test.
6934         
6935         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
6936         to mono_type_stack_size_internal () since some callers might not pass in
6937         an rgctx.
6938
6939         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
6940         instrument_prolog. Fixes #419878.
6941
6942         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
6943         doubles in soft float mode volatile.
6944
6945 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
6946
6947         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
6948
6949         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
6950         to handle soft float correctly.
6951
6952         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
6953         the fast path.
6954
6955         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
6956
6957         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
6958         to sp, since the generics catch code requires it.
6959
6960         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
6961         copying.
6962
6963         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
6964         mono_arch_emit_imt_argument ().
6965
6966         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
6967
6968         * mini-arm.c tramp-arm.c: Generic sharing updates.
6969
6970 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
6971
6972         * mini-arm.c: Fix the arm build.
6973
6974         * generic-sharing.c (mini_type_get_underlying_type): New helper function
6975         handling enums, generic instances and generic sharing.
6976         (mini_type_stack_size_full): Ditto.
6977
6978         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
6979         
6980         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
6981
6982         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
6983
6984         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
6985         trampolines.
6986
6987         * mini-arm.c: Various small generic sharing changes.
6988
6989         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
6990         this for x86.
6991         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
6992         custom code.
6993
6994         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
6995         helper function to return a generic class init trampoline.
6996
6997         * method-to-ir.c mini.c: Use it.
6998         
6999         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
7000         arch-specfic function to return a generic class init trampoline.
7001
7002         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
7003         the GENERIC_CLASS_INIT custom code.
7004
7005         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
7006         a fatal error, not a sharing failure.
7007
7008         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
7009         needed.
7010
7011         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
7012         trampoline argument from MONO_ARCH_VTABLE_REG.
7013
7014         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7015         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7016         argument, and pass the vtable in VTABLE_REG.
7017
7018         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7019         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7020         argument, and pass the vtable in VTABLE_REG.
7021         (mono_arch_create_trampoline_code_full): Remove some special casing for
7022         the rgctx fetch trampoline.
7023
7024         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
7025         Fixes #419273.
7026
7027         * iltests.il: Add a test for it.
7028
7029 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
7030
7031         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
7032
7033         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
7034         no longer needed.
7035
7036         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
7037         use mono_jit_info_table_find () to avoid recursion.
7038         (mono_delegate_trampoline): Add a sync wrapper here.
7039
7040         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
7041         here.
7042
7043         * mini.c (mono_method_to_ir): Ditto.
7044         
7045         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
7046         add_sync_wrapper argument. Don't add a sync wrapper here.
7047         (mono_create_jump_trampoline): Don't add a sync wrapper here.
7048
7049         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
7050         
7051 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7052
7053         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
7054           of nonvolatile registers back from MonoContext to CONTEXT.
7055
7056         Contributed under MIT/X11 license.
7057
7058 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7059
7060         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
7061           arguments on Winx64 there are only 4 argument registers.  For this
7062           logic to work the last argument must be pulled from the stack.  
7063
7064         Contributed under MIT/X11 license.
7065
7066 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
7067
7068         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7069
7070         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
7071         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
7072         encode/decode_method_ref ().
7073
7074         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
7075
7076         * aot-runtime.c (decode_patch): Ditto.  
7077
7078         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
7079         MONO_PATCH_INFO_METHOD.
7080
7081         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
7082         MonoGenericJitInfo.
7083
7084         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
7085         MonoGenericJitInfo.
7086
7087         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
7088
7089         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
7090         one from the caller.
7091
7092         * aot-runtime.c (decode_generic_inst): New function to decode and
7093         return a interned generic inst.
7094         (decode_klass_ref): Use it.
7095         (decode_method_ref): Ditto.
7096
7097         * aot-compiler.c (emit_exception_debug_info): Save 
7098         jinfo->has_generic_jit_info too.
7099
7100 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7101
7102         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
7103
7104         * iltests.il.in: Add a test for fconv_to_i.
7105
7106         * liveness.c: Disable the liveness2 pass for now to save space.
7107
7108         * regalloc2.c: Include mempool-internals.h to fix warnings.
7109
7110         * aot-compiler.c (encode_method_ref): Encode the context of generic
7111         instance methods.
7112
7113         * aot-runtime.c (decode_method_ref): Inflate generic methods using
7114         the context saved in the aot file.
7115
7116         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7117
7118         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
7119
7120         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
7121         volatile so they won't be optimized away.
7122
7123 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
7124
7125         * ssa.c:
7126         * ssa2.c:
7127         * mini.c:
7128         * regalloc2.c:
7129         * dominators.c: Remove duplicated functions that now are in
7130         mempool-internals.h.
7131
7132 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7133
7134         * aot-compiler.c: Fix warnings.
7135
7136         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
7137
7138         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
7139
7140         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
7141         as the patch type.
7142
7143         * mini.c (mono_resolve_patch_target): Ditto.
7144         
7145         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
7146         (encode_klass_ref): Add support for encoding VARs/MVARs.
7147
7148         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
7149
7150         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
7151         the handling of the got entries into a separate 'decode_got_entry' function.
7152         Add support for RGCTX_FETCH.
7153
7154         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
7155         clobbered by the trampoline code.
7156
7157         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
7158         not clobbered by the indirect calling code.
7159
7160 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7161
7162         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
7163         to fix the build.
7164
7165 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
7166
7167         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
7168         signature using the compilation mempool otherwise we would leak it.
7169
7170 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7171
7172         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
7173         mono_emit_abs_call ().
7174
7175         * patch-info.h: Add GENERIC_CLASS_INIT.
7176
7177         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
7178
7179         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
7180         as their target as a near call.
7181
7182         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
7183         ABS handling code.
7184         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
7185
7186         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
7187         call to a runtime function described by a patch.
7188
7189         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
7190         mono_emit_abs_call, this has the advantage that the ABS handling code in
7191         mono_codegen () can handle them both, and can handle other stuff in the
7192         future without additional code.
7193
7194         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
7195         entry.
7196         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
7197         abs addresses.
7198
7199         * mini.h: Add missing bblock related prototypes.
7200
7201         * mini.h (MonoCompile): Remove unused reverse_inst_list and
7202         reverse_inst_list_len fields.
7203
7204         * mini.c: Refactor this file a bit by moving branch optimizations to 
7205         branch-opts.c.
7206
7207         * method-to-ir.c: Merge generic sharing changes missed earlier.
7208
7209         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
7210
7211         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
7212         shared patches. Process METHODCONST as a shared patch.
7213
7214         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
7215         as it crashes on the 2.0 mscorlib.
7216
7217         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
7218         to cause crashes.
7219         
7220         * aot-compiler.c: Use is_plt_patch () in a few additional places.
7221         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
7222         by IMT.
7223
7224         * aot-compiler.c: Reorganize the got handling code to be a bit more
7225         understandable.
7226
7227 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7228
7229         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
7230         mono_patch_info_equals/hash, and use it to massively simplify
7231         get_plt_index ().
7232
7233         * mini.c (mono_patch_info_hash): Simplify this and add support for
7234         more patch types.
7235
7236         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
7237
7238         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
7239         handling code, since an offset is not enough to identify a trampoline.
7240
7241         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
7242
7243 2008-08-17  Mark Probst  <mark.probst@gmail.com>
7244
7245         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
7246
7247         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
7248
7249         * mini-ops.h: Argument and result types for OVF_CARRY ops.
7250
7251         * decompose.c: PPC decompositions for various ops.
7252
7253         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
7254
7255 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7256
7257         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
7258         call the generic trampoline code using a call, instead of a jump, to
7259         remove some special casing from the generic trampoline code.
7260
7261         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
7262         (mono_codegen): Ditto.
7263
7264         * aot-compiler.c aot-runtime.c: Ditto.
7265
7266         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
7267
7268         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
7269         helper function to find the offset corresponding to a lazy fetch trampoline.
7270
7271         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
7272         when doing generic sharing.
7273
7274         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
7275         places.
7276         
7277         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
7278         mini-trampolines.c to be with the other trampoline creation functions.
7279
7280         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
7281         as it is equal to method->signature in most cases, add a 
7282         mono_emit_method_call_full variant which takes a signature and an imt
7283         argument as well.
7284
7285 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
7286
7287         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
7288         to this function, since it could be computed easily from the method 
7289         argument.
7290         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
7291         more.
7292
7293         * method-to-ir.c mini.c: Remove references to 
7294         compile_generic_method_wo_context.
7295
7296         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
7297         generic method calls.
7298         
7299         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
7300         dimensional non-szarrays.
7301
7302         * mini.c (mini_init): Register mono_array_new_1.
7303
7304         * jit-icalls.c (mono_array_new_1): New jit icall.
7305
7306         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
7307         pointing to the method.
7308
7309         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
7310         method addresses belonging to METHOD_JUMP patches in the 
7311         jump_target_got_slot_hash.
7312         (mono_aot_load_method): Ditto.
7313
7314         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
7315         METHOD_JUMP patches.
7316
7317         * mini.c (mini_create_jit_domain_info): New helper function which 
7318         initializes/frees domain->runtime_info.
7319         (mini_free_jit_domain_info): Ditto.
7320         (mini_init): Install the domain hook functions with the runtime.
7321
7322         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
7323         information maintained by the JIT.
7324
7325         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
7326         insertion into jump_table_hash into mono_codegen (), also implement proper
7327         locking.
7328
7329         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
7330         tail calls, it is already done by the aot code.
7331         
7332         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
7333         mechanism on amd64.
7334
7335         * iltests.il.in: Make the jmp test a bit more complex.
7336
7337         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
7338         generic instances which doesn't have a token.
7339
7340         * aot-runtime.c (decode_method_ref): Ditto.
7341         
7342         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
7343         can handle this case now.
7344         (handle_box): Ditto.
7345
7346 2008-08-15  Geoff Norton  <gnorton@novell.com>
7347
7348         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
7349         debugging check.
7350
7351 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
7352
7353         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
7354         calling generic methods.
7355
7356         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
7357
7358         * aot-runtime.c (decode_patch_info): Ditto.
7359
7360         * mini.c (mono_resolve_patch_target): Ditto.
7361         
7362         * patch-info.h: Add METHOD_RGCTX.
7363
7364         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
7365
7366 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
7367
7368         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
7369         arguments in registers.
7370
7371         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
7372         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
7373
7374         * mini.c (mini_method_compile): Abort aot compilation for generic
7375         methods if generic sharing is disabled.
7376         
7377         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
7378         an mrgctx.
7379
7380         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
7381         requiring an mrgctx.
7382
7383         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
7384         store instructions when converting a vcall to a normal call.
7385
7386         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
7387         mono_arch_find_jit_info.
7388
7389 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
7390
7391         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
7392         avoid calling mono_method_full_name () for every method even if the
7393         env var is not set.
7394         (check_inline_caller_method_name_limit): Ditto.
7395
7396 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7397
7398         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
7399         assemblies in one run.
7400
7401         * aot-compiler.c (mono_compile_assembly): Only print out a count of
7402         skipped methods if it is not 0.
7403
7404         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
7405
7406 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7407
7408         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
7409           MONO_ARCH_HAVE_UNWIND_TABLE.
7410
7411         Contributed under MIT/X11 license.
7412
7413 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7414
7415         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
7416           from default optimizaton list on Winx64.
7417
7418         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
7419
7420         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
7421           the LMF from the MonoJitTlsData structure.
7422
7423         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
7424
7425         Contributed under MIT/X11 license.
7426
7427 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7428
7429         * mini.c (sigsegv_signal_handler): Fix the build.
7430
7431         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
7432         assembly->aot_module.
7433
7434         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
7435         hash table. This simplifies and speeds up a lot of code, and fixes support
7436         for .netmodules.
7437
7438         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
7439         with the runtime.
7440
7441         * mini-exceptions.c: Ditto.
7442         
7443         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
7444         'native_offset' argument, since these are computed in the 
7445         mono_find_jit_info () function.
7446
7447         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
7448         is used by exceptions-ppc.c.
7449
7450         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
7451         mono_arch_find_jit_info ().
7452         
7453         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
7454         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
7455         generic code in mini-exceptions.c.
7456
7457 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
7458
7459         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
7460
7461         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
7462         
7463         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
7464         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
7465         called while holding the loader lock. Fixes #415608.
7466         (mono_aot_get_method_from_token_inner): Ditto.
7467
7468 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
7469
7470         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
7471         to reduce differences between this and the generic implementation in
7472         mini-exceptions.c.
7473         (ves_icall_get_frame_info): Ditto.
7474
7475         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
7476
7477         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
7478         longer neccesarry.
7479
7480         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
7481         mono_arch_get_call_filter () and make it non-static, for consistency with the
7482         other architectures.
7483
7484 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
7485
7486         * mini.c:
7487         * local-propagation.c:
7488         * mini-x86.c: Correct the name of arch defines.
7489
7490 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
7491
7492         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
7493         NO_EMULATE_LONG_SHIFT_OPS define.
7494
7495 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
7498         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
7499
7500         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
7501         MACH fixes. Merged from the 2.0 branch.
7502
7503         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
7504
7505         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
7506         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
7507
7508         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
7509
7510         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
7511         mono_marshal_get_native_wrapper () signature changes.
7512
7513 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
7514
7515         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
7516         conversion bug under arm.
7517
7518 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
7519
7520         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
7521
7522         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
7523         with overflow checking.
7524
7525 2008-08-05  Marek Habersack  <mhabersack@novell.com>
7526
7527         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
7528         to the genmdesc.pl file
7529
7530 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
7531
7532         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
7533         arg_array in the soft-float versions of the LOAD/STORE macros.
7534
7535         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
7536         implementation.
7537
7538         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
7539
7540 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
7541
7542         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
7543         a float HFA. Fixes #413621.
7544
7545 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
7546
7547         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
7548         frame_size to args_size. Fixes build.
7549
7550 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
7551
7552         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
7553         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
7554
7555         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
7556         the stack are not unaligned. Fixes #413247.
7557         
7558 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
7559
7560         * mini.c: update jitted methods performance counters.
7561
7562 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7563
7564         * mini-exceptions.c: increase the exceptions thrown performance
7565         counter in mono_handle_exception ().
7566
7567 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
7568
7569         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
7570         can work with netmodules.
7571
7572 2008-07-28  Geoff Norton  <gnorton@novell.com>
7573
7574         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
7575         regression tests.
7576
7577 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
7578
7579         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
7580         correct place.
7581
7582 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
7583
7584         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
7585           The float param registers and other param registers must be the 
7586           same index on Windows x64.
7587
7588         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
7589           ArgValuetypeAddrInIReg argument case.  Setting the argument
7590           op to OP_VTARG_ADDR (OP_REGOFFSET)).
7591
7592         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
7593           variable computed above as the copy length for arguments of storage
7594           type ArgValuetypeAddrInIReg.
7595
7596         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
7597           ArgValuetypeAddrInIReg argument case.  This case will rely on
7598           mono_arch_emit_outarg_vt to emit the correct code later in the process.
7599
7600         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
7601           a 32 byte stack allocation for all calls.  We will omit the adjustment for
7602           jump and tail call instructoins as they do not follow the typical call behavior.
7603
7604         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
7605           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7606           local variable and pass the local variable by reference to the called method.
7607
7608         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
7609           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
7610           of a struct is passed in a register it must be saved with the other
7611           volatile argument on the stack.
7612
7613         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
7614           frame pointer the stack adjustment value must be saved to the unwind 
7615           info structure.
7616
7617         Contributed under MIT/X11 license.
7618
7619 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
7620
7621         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
7622         which got lost in the merge.
7623
7624 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
7625
7626         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
7627         build.
7628
7629         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
7630         
7631         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
7632         icalls, since they won't be patched.
7633
7634         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
7635         different code sequence when running under valgrind to prevent some valgrind
7636         errors.
7637
7638         * iltests.il.in: Add new regression test.
7639
7640         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
7641         end with a throw.
7642
7643         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
7644         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
7645
7646         * iltests.il.in: Add new test.
7647
7648         * aot-compiler.c: Fix some warnings.
7649
7650         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
7651         Fixes #412494.
7652
7653 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
7654
7655         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
7656         (mini_usage_jitdeveloper): Add a missing --wapi option.
7657
7658 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7659
7660         * mini-codegen.c: Simplify the is_fp macros.
7661         (free_up_ireg): Remove, use free_up_reg instead.
7662         (free_up_reg): Fix the fp case.
7663
7664 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
7665
7666         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
7667         lowered earlier.
7668
7669         * exceptions-x86.c: Merge some changes which seemed to have got lost
7670         in the linear-ir merge.
7671
7672         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
7673
7674         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
7675         long vreg volatile even if the variable was already created.
7676
7677         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
7678         volatile variables.
7679
7680 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
7681
7682         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
7683
7684         * mini.c (mono_jit_compile_method_inner): Add support for 
7685         MONO_EXCEPTION_BAD_IMAGE.
7686
7687         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
7688         mini_method_get_context () returns NULL. Fixes #356531.
7689
7690         * mini.c (mono_method_to_ir): Ditto.
7691         
7692         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
7693         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
7694
7695 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7696
7697         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
7698         in the LDFTN implementation.
7699
7700 2008-07-25  Mark Probst  <mark.probst@gmail.com>
7701
7702         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
7703         code, patch calls to icalls, too, even if they're not in the
7704         shared generic code hash.  Fixes #411962.
7705
7706 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7707
7708         * cpu-x86.md: Increase the length of the fcall opcodes.
7709
7710         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
7711         calls returning floats.
7712
7713         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
7714         on NEWARR.
7715         
7716         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
7717         missed earlier.
7718
7719         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
7720         into the domain->method_code_hash.
7721
7722         * aot-compiler.c: Fix win32 build.
7723
7724         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
7725         
7726         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
7727         gshared NEWARR implementation.
7728
7729         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
7730
7731         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
7732         can be used outside of method_to_ir.
7733
7734         * mini.h (MonoCompile): Add arg_types field.
7735
7736         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
7737         
7738         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
7739         the values of the local arg_array and param_types array.
7740
7741 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
7742
7743         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
7744         got accesses might only get generated later when NEWOBJ is decomposed.
7745         
7746         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
7747         looking up the native code of the target method when a delegate is called
7748         for the first time.
7749
7750         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
7751         optimization.
7752
7753         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
7754
7755         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
7756         AOT work on platforms without a working dlsym implementation.
7757
7758         * mini.h: Bump AOT image format version.
7759         
7760 2008-07-24  Mark Probst  <mark.probst@gmail.com>
7761
7762         * mini-exceptions.c: Free a MonoType with
7763         mono_metadata_free_type() instead of g_free().
7764
7765         * aot-runtime.c: Free a MonoType.
7766
7767 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
7768
7769         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
7770         optimization.
7771
7772         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
7773         fp stack on x86.
7774
7775 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
7776         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
7777         profiler hook.
7778
7779 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
7780
7781         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
7782         NEWOBJ calls on valuetypes.
7783
7784         * iltests.il.in: Add new test.
7785
7786         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
7787
7788 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
7789
7790         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
7791         is no longer needed.
7792
7793         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
7794         non register sized integer arguments.
7795         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
7796         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
7797         emit_memcpy2 ().
7798
7799         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
7800         CEE_MONO_RETOBJ.
7801         
7802         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
7803         two a binop with different sized arguments is emitted.
7804
7805         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
7806         instruction in the ins==NULL case.
7807
7808 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
7809
7810         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
7811
7812         * mini-x86.c: Fix osx build.
7813
7814         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
7815         opcodes as well.
7816
7817         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
7818         instruction for non int sized variables.
7819
7820         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
7821         implementation.
7822
7823 2008-07-23  Robert Jordan  <robertj@gmx.net>
7824
7825         * method-to-ir.c: Fix MSVC build.
7826
7827 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
7828
7829         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
7830         a non int sized type, widen it to an int since newer versions of gcc seem to
7831         generate code which needs this.
7832
7833         * ssa2.c abcremoval2.c: Fix warnings.
7834
7835         * *: Merge the Linear IR branch.
7836
7837         The original branch is at trunk/branches/vargaz/mini-linear-il, and
7838         the ChangeLog file there describes all the changes done over the years. 
7839         Further documentation can be found at www.mono-project.com/Linear_IL.
7840
7841 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
7842
7843         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
7844           The float param registers and other param registers must be the 
7845           same index on Windows x64.
7846
7847         Contributed under MIT/X11 license.
7848
7849 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
7850
7851         * mini.c: Make the previous fix GC safe.
7852
7853 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
7854
7855         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
7856
7857 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
7858
7859         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
7860           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
7861           ArgValuetypeAddrInIReg instead.
7862
7863         Contributed under MIT/X11 license.
7864
7865 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
7866
7867         * mini-codegen.c (get_register_spilling): Fix a warning.
7868
7869 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
7870
7871         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
7872         for types which the initialization fails. Raises the provided exception
7873         at the right stop after cleanup.
7874
7875 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
7876
7877         * aot-compiler.c: Free most of the memory allocated during compilation.
7878
7879         * mini.c (mini_parse_debug_options): Fix a leak.
7880         
7881         * mini.c (mini_method_compile): Don't add the method to the jit info tables
7882         during aot compilation.
7883
7884 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
7885
7886         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
7887         it has too much register pressure.
7888
7889 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
7890
7891         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
7892
7893 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7894
7895         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7896         on x86.
7897
7898         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7899         on amd64 similar to the way it is done on arm.
7900
7901         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7902
7903         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
7904         consistency, normalize error messages, avoid loading aot-only modules in
7905         normal mode.
7906
7907         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
7908         for consistency.
7909
7910         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
7911
7912 2008-07-11  Martin Baulig  <martin@ximian.com>
7913
7914         * debug-debugger.h
7915         (MonoDebuggerInfo): Add `interruption_request'.
7916
7917 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7918
7919         * aot-compiler.c (emit_plt): Remove some dead code.
7920
7921         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
7922
7923         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
7924         return the plt info offset belonging to a given plt entry.
7925
7926         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
7927         mono_aot_get_plt_info_offset.
7928         
7929         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
7930         similar to the amd64 code by makeing jumps through a separate jump table 
7931         instead of embedding the jump addresses into the code.
7932
7933 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
7934
7935         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
7936         method.
7937
7938 2008-07-10  Martin Baulig  <martin@ximian.com>
7939
7940         * mini.c (mini_method_compile): Disable generics sharing when
7941         running in the debugger.
7942
7943 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7944
7945         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
7946
7947         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
7948         the local register allocator from running out of registers on x86 when 
7949         using aot.
7950
7951 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
7952
7953         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
7954         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
7955         C4146.
7956
7957         Contributed under MIT/X11 license.
7958
7959 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7960
7961         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
7962         speed up the assembler.
7963
7964 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7965
7966         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
7967         support.
7968
7969         * mini.c: Move the soft float handling macros a bit earlier, add 
7970         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
7971         place.
7972
7973         * mini.h: Add prototype for mono_arch_fixup_jinfo.
7974
7975         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
7976         read-only to help catch code allocation requests.
7977         
7978         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
7979         and turn it off when using --aot-only or when compiling with --aot=full.
7980
7981         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
7982         jump table for switches from the normal domain mempool, not the code
7983         manager.
7984
7985         * mini-trampolines.c (get_unbox_trampoline): New function to return an
7986         unbox trampoline which handles aot-only mode too.
7987
7988         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
7989         an AOTed unbox trampoline.
7990
7991         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
7992
7993 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7994
7995         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
7996         ""
7997
7998         Contributed under MIT/X11 license.
7999
8000 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8001
8002         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
8003           the unwind information for the method at the end of the allocated block.
8004           
8005         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
8006           MonoCompileArch to hold the unwind info for SEH on Winx64
8007         
8008         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
8009           frame pointer info for the method being compiled.
8010           
8011         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
8012           the call to mono_exception_from_token.
8013           
8014         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
8015           storing the method prolog information in a format that the Winx64 SEH can understand.  This
8016           information is stored a the end of the method block because it is all 32-bit offset based.
8017
8018         Contributed under MIT/X11 license.
8019
8020 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8021
8022         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
8023
8024         * wapihandles.c: Fix warnings.
8025
8026         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
8027         mode.
8028
8029         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
8030         mono_jit_compile_method in aot-only mode since that calls the type 
8031         initializer.
8032         
8033         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
8034         get_delegate_invoke_impl in aot-only mode.
8035
8036         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
8037
8038 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
8039
8040         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
8041
8042         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
8043         is on by default.
8044
8045         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
8046
8047         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
8048         init trampoline from the AOT file as well.
8049
8050         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
8051         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
8052         code.
8053
8054         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
8055         mono_init.
8056
8057         * exceptions-amd64.c: Add _full variants for the remaining exception code
8058         creation functions as well, allow emission of relocatable code, remove
8059         caching since that is now done by the caller.
8060
8061         * mini-exceptions.c: Add _full variants for the remaining exception code
8062         creation functions as well, add aot-only support.
8063
8064         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
8065         if we can determine a proper token for them.
8066         (add_wrappers): Add a few more wrappers.
8067         (emit_method_code): Remove some dead code.
8068         (emit_trampolines): Emit exception code too.
8069
8070         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
8071
8072         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
8073         mono_array_new_va which avoids varargs.
8074
8075         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
8076
8077         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
8078         mono_arch_create_specific_trampoline () in all places.
8079
8080         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
8081         a bit so it can be used for other things as well.
8082         
8083         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
8084         on demand as well.
8085
8086         * exceptions-amd64.c: Rename the caching from the exception code creation
8087         functions, it is done by the caller instead.
8088         
8089         * exceptions-amd64.c: Change the signature of the exception code creation 
8090         functions to allow the creation of relocatable code later.
8091
8092         * mini-exceptions.c: Add a set of functions to query the various 
8093         runtime-generated exception functions.
8094
8095         * mini.c mini-exceptions.c: Use the newly added functions instead of the
8096         mono_arch_.. () functions.
8097         
8098 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8099
8100         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
8101
8102         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
8103
8104         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
8105         (mini_get_vtable_trampoline): Ditto.
8106
8107         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
8108         code in the AOT case by returning the code size and a list of relocations to
8109         the caller.
8110
8111         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
8112
8113 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
8114
8115         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
8116           clean the stack.
8117
8118         Contributed under MIT/X11 license.
8119
8120 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8121
8122         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
8123         so the buffer size can be computed correctly. Fixes #404735.
8124
8125         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
8126         normally as cfg->debug_info is already freed.
8127
8128 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
8129
8130         * mini-amd64.c: For calls returning vtypes in registers, don't store
8131         the return address on the stack, instead allocate a separate local for
8132         it. Fixes #404729.
8133
8134 2008-07-05  Mark Probst  <mark.probst@gmail.com>
8135
8136         * mini-trampolines.c, mini.h: Add an argument to
8137         mono_create_jit_trampoline_in_domain() for turning off the adding
8138         of the sync wrapper.
8139
8140         * mini.c: Use the JIT trampoline without sync instead of
8141         ldftn_nosync in static RGCTX invoke wrappers so that the call can
8142         be patched.
8143
8144 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8145
8146         * driver.c: Turn on GSHARED optimization by default.
8147
8148 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
8149
8150         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
8151         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
8152
8153         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
8154         create a variant of the generic trampoline code callable from AOTed trampolines.
8155
8156         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
8157         trampoline code callable from AOTed trampolines.
8158
8159         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
8160
8161 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8162
8163         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
8164         pass-through manner.
8165
8166         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
8167         and don't fail sharing for them anymore.
8168
8169         * mini-exceptions.c: Handle exceptions in shared generic methods.
8170
8171         * generic-sharing.c: When checking the context of a generic
8172         method, also check its class's context.  Don't treat wrappers as
8173         sharable.
8174
8175         * mini-trampolines.c: Some code factored out to
8176         metadata/generic-sharing.c.  Handle the MRGCTX case.
8177
8178         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
8179         we must deal with the method being of another instantiation of the
8180         class.  Add static rgctx invoke wrappers to generic methods.
8181
8182 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8183
8184         * mini.c: Provide all jit infos of generic shared methods with a
8185         generic jit info.
8186
8187         * mini-exceptions.c: Handle the new situation that a generic info
8188         might be available, but not info about the this/vtable/mrgctx
8189         variable.
8190
8191 2008-07-03  Mark Probst  <mark.probst@gmail.com>
8192
8193         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
8194         generic methods.
8195
8196 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
8197
8198         * dominators.c (check_dominance_frontier): Fix a warning.
8199
8200         * mini.h: Add some missing prototypes.
8201
8202         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
8203
8204         * driver.c (mono_jit_init_version): Correct the comments since the first
8205         argument should be the name of the root domain, not a filename.
8206
8207         * aot-runtime.c (make_writable): Error out if this is called while running
8208         with --aot-only.
8209         (load_aot_module): Ditto.
8210
8211         * aot-compiler.c: Really fix the computation of method indexes.
8212
8213         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
8214         optimizations as this is no longer called frequently.
8215
8216         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
8217         method and the invoke impl code and pass it to the delegate trampoline instead of
8218         just the delegate class.
8219
8220 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
8221
8222         * aot-compiler.c: Fixup the computation of method indexes.
8223         (add_wrappers): Create the base methods of the runtime invoke wrappers using
8224         the method builder infrastructure.
8225
8226         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
8227         has no header.
8228
8229         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
8230         mode, load the method right away instead of creating a trampoline.
8231
8232         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
8233
8234         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
8235         some checks a bit.
8236
8237 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
8238
8239         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
8240         (mono_aot_load_method): Use method_index instead of method->token.
8241
8242         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
8243         can handle icalls etc. properly.
8244
8245         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8246
8247         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
8248
8249         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
8250         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
8251         JIT_ICALL_ADDR patch type.
8252
8253         * patch-info.h: Add JIT_ICALL_ADDR patch type.
8254
8255         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
8256         request flag.
8257         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
8258
8259         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
8260
8261 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
8262
8263         * mini.c: Use domain->jit_code_hash_lock for controlling access to
8264         domain->jit_code_hash.
8265
8266 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
8267
8268         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
8269
8270 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
8273         get_this_arg_from_call, let it compute it when needed.
8274
8275         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
8276         gsctx from code only when needed.
8277
8278         * mini-trampolines.c (get_generic_context): Rename this to 
8279         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
8280         it can be called by the arch backends.
8281
8282         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
8283
8284 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
8285
8286         * driver.c (mono_main): Add experimental --aot-only command line option.
8287
8288         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
8289         set.
8290
8291 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
8292
8293         * driver.c (DllMain): Remove mono_module_handle.
8294
8295         Contributed under MIT/X11 license.
8296
8297 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
8298
8299         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
8300         for emitting methods which are not in the source assembly. Detect and report
8301         failure of assembling+linking.
8302         
8303         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
8304
8305         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
8306
8307 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
8308
8309         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
8310
8311 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
8312
8313         * mini.h: Remove some obsolete prototypes.
8314
8315         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
8316
8317 2008-06-24  Mark Probst  <mark.probst@gmail.com>
8318
8319         * mini.c (get_object_generic_inst): Variable-sized arrays are not
8320         supported by Visual Studio, so use alloca().
8321
8322 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
8323
8324         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
8325         Fixes #402585.
8326
8327 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8328
8329         * mini.c: Fail sharing of a generic method if it contains an open
8330         catch clause (because we don't pass MRGCTXs yet).
8331
8332 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8333
8334         * mini.c: When compiling a method with generic sharing, insert the
8335         method instantiated with an all-Object generic context into the
8336         jit info table, instead of the context of the first instantiation
8337         of the method we happen to compile.
8338
8339 2008-06-18  Martin Baulig  <martin@ximian.com>
8340
8341         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
8342         `major_version' and `minor_version'.
8343
8344 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8345
8346         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
8347         mono_method_is_generic_sharable_impl() takes an additional
8348         argument specifying whether to treat type variables as reference
8349         types.
8350
8351 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8352
8353         * mini.h: Removed obsolete prototypes.
8354
8355 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8356
8357         * mini.c: Don't fail generic sharing for initobj and sizeof - we
8358         already handle them.
8359
8360 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8361
8362         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
8363         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
8364         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
8365         tramp-x86.c: Added a MonoGenericContext* argument to
8366         mono_arch_get_unbox_trampoline() so that it can call other
8367         functions which require it.
8368
8369 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8370
8371         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
8372         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
8373         mono_arch_get_this_arg_from_call() takes a
8374         MonoGenericSharingContext* as well.
8375
8376 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8377
8378         * mini.c: Factor out code for emitting unbox into emit_unbox() and
8379         implement generic sharing of unbox.
8380
8381 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8382
8383         * mini.c: Don't compute the vtable to determine whether a field is
8384         special static, because it might not work for open types.
8385
8386 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8387
8388         * mini.c: Removed the unused token_type and token_source arguments
8389         from get_runtime_generic_context_ptr().
8390
8391 2008-06-17  Marek Habersack  <mhabersack@novell.com>
8392
8393         * mini.c (ADD_BINOP): fix the build
8394
8395 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
8396
8397         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
8398         a widening op.
8399
8400 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8401
8402         * mini.h: Removed class relations enum that's not used anymore.
8403
8404 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8405
8406         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
8407
8408         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
8409         the lazy fetch trampoline access code.
8410
8411 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
8412
8413         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
8414
8415 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
8416
8417         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
8418
8419         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
8420
8421         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
8422
8423 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8424
8425         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
8426         intrinsics.
8427
8428         * mini-ops.h: Add MIN/MAX_UN opcodes.
8429
8430         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
8431         intrinsics.
8432
8433         * basic-math.cs: Add more min/max tests.
8434
8435         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
8436
8437 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8438
8439         * mini.c: Small fix in the prologue of emit_castclass.
8440
8441 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8442
8443         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
8444
8445         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
8446         do not work even for unsigned types. Fixes #400014.
8447
8448         * basic-math.cs: Add regression tests for unsigned Min/Max.
8449
8450 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8451
8452         * mini.c: Added additional context_used argument to several
8453         functions, which will be needed for sharing generic methods.  Use
8454         GET_RGCTX macro wherever appropriate.  Declare only one
8455         context_used in mono_method_to_ir().
8456
8457 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8458
8459         * mini.c, generic-sharing.c: Removed generic class relations.
8460
8461         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
8462         functions due to MRGCTX changes.
8463
8464 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8465
8466         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
8467         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
8468         with calculated IMT.
8469
8470         * mini.c: Generic sharing of calls via generic interfaces.
8471
8472         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
8473         generic method with non-constant MonoGenericContext*.  Instead,
8474         the context is taken out of the method itself.
8475
8476 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8477
8478         * mini.c: Generic sharing of ldvirtftn.
8479
8480 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8481
8482         * mini.c: Generic sharing of ldftn.
8483
8484 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8485
8486         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
8487
8488 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8489
8490         * mini.c: Generic sharing of the special case of ldtoken followed
8491         by a call to GetTypeFromHandle.
8492
8493 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8494
8495         * mini.c: Generic sharing of box for nullable types.
8496
8497 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8498
8499         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
8500         are passed on the stack. Fixes #324807.
8501
8502 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
8503
8504         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
8505         for the ArgValuetypeAddrInIReg case.
8506
8507         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
8508         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
8509
8510         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
8511         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8512         local variable and pass the local variable by reference to the called method.
8513           
8514         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
8515         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
8516
8517         Contributed under MIT/X11 license.
8518
8519 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
8520
8521         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
8522
8523         * debug-mini.c (mono_debug_print_vars): Release memory after printing
8524         everything.
8525
8526 2008-06-10  Martin Baulig  <martin@ximian.com>
8527
8528         * debug-mini.c
8529         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
8530
8531 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
8532
8533         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
8534         possible error when no arguments are passed.
8535
8536         Contributed under MIT/X11 license.
8537
8538 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
8539
8540         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
8541         where the file name is NULL.
8542
8543 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
8544
8545         * mini.c: Fix s390 build.
8546
8547 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
8548
8549         * trace.c (mono_trace_parse_options): Fix warnings.
8550
8551         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
8552
8553 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
8554
8555         * mini.c (remove_block_if_useless): Avoid printing the method name.
8556         
8557         * mini.c: Remove needless setting of ins->cil_code which is now done by 
8558         MONO_INST_NEW.
8559
8560         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
8561         LMF. Not yet used.
8562
8563         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
8564         translated code after it has been patched.
8565
8566 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
8567
8568         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
8569         avoid problems during code patching on SMP systems.
8570         (emit_call): Avoid adding a patch info which is already added by 
8571         emit_call_body.
8572         (mono_arch_emit_exceptions): Ditto.
8573
8574 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
8575
8576         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
8577         MONO_TYPE_ISSTRUCT already checks for it.
8578
8579 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
8580
8581         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
8582           structs with floats on Winx64 the float registers are not used.  
8583           The integer registers are always used..
8584         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
8585           only one register will be used and only if the size of the struct 
8586           is 1,2,4, or 8 bytes.
8587
8588         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
8589           to work for Winx64.
8590
8591         Contributed under MIT/X11 license.
8592
8593 2008-06-05  Martin Baulig  <martin@ximian.com>
8594
8595         * debug-debugger.c (debugger_lookup_class): Also call
8596         mono_class_setup_methods() here; we're only called from RTI.
8597
8598 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
8599
8600         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
8601         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
8602         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
8603         Post-process object files and add dtrace-generated object, if necessary.
8604
8605         Contributed under MIT/X11 license.
8606
8607 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8608
8609         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
8610         element class.
8611
8612         * mini.c: Generic sharing for unbox.any and castclass.
8613
8614 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8615
8616         * mini.c: Ignore tailcall prefix in shared generic code and when
8617         doing calls which require a vtable/rgctx argument.
8618
8619 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8620
8621         * mini.c: Don't free the JIT info.
8622
8623         * driver.c: Changes in the JIT info table testing code.
8624
8625 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
8626
8627         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
8628         interruption. Fix some warnings.
8629
8630         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
8631         interruption_checkpoint.
8632
8633 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
8634
8635         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
8636         from embedding applications.
8637
8638 2008-06-02  William Holmes  <billholmes54@gmail.com>
8639
8640         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
8641           reserving 32 bytes on the stack when making calls. 
8642
8643         Contributed under MIT/X11 license.
8644
8645 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
8646
8647         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
8648         the linear IL branch.
8649
8650         * driver.c: Print out more information for --version on arm.
8651
8652 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
8653
8654         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
8655         bb_exit instead, since out of line bblocks might not actually be emitted
8656         out-of-line.
8657         
8658         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
8659         maximum epilog size for out of line bblocks if tracing is enabled.
8660
8661         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
8662
8663 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
8664
8665         * arrays.cs: Regression tests for allocating arrays with negative sizes.
8666
8667 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
8668
8669         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
8670         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
8671         opcodes.
8672
8673 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
8674
8675         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
8676         the 'value' to store is a constant.
8677
8678         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
8679
8680         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
8681         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
8682
8683 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
8684
8685         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
8686         for accessing method->generic_container.
8687
8688 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
8689
8690         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
8691         
8692         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
8693
8694         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
8695
8696         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
8697         fails.
8698
8699 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
8700
8701         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
8702
8703         * mini.c: Handle the case when mono_class_vtable () fails.
8704
8705 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
8706         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
8707         the stat profiler.
8708
8709 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8710
8711         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
8712         together with domain sharing.
8713
8714 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8715
8716         * mini.c: Treat callvirts to final methods like non-virtual calls
8717         when doing generic sharing, i.e. look them up in the runtime
8718         generic context.
8719
8720 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8721
8722         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
8723         with computed types (for generic sharing).
8724
8725         * mini.c: Generic sharing for mkrefany and refanyval.
8726
8727 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
8728
8729         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
8730         possible.
8731
8732         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
8733         the generic sharing code.
8734         
8735         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
8736         when needed.
8737
8738 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
8739
8740         * mini.h: Remove the declaration of mono_aot_init_vtable ().
8741
8742 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
8743
8744         * driver.c: updated copyright date
8745
8746 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
8747
8748         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
8749         needed.
8750
8751 2008-05-19  Martin Baulig  <martin@ximian.com>
8752
8753         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
8754         pointing to the new `_mono_debug_using_mono_debugger' variable.
8755
8756         * driver.c
8757         (mono_main): Check mono_debug_using_mono_debugger() rather than
8758         the `MONO_INSIDE_MDB' environment variable to check whether we're
8759         inside the debugger.
8760
8761 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
8762
8763         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
8764         argument.
8765
8766 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
8767
8768         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
8769
8770         * mini.c: Added mini_assembly_can_skip_verification. This
8771         function checks if the assembly requested to skip verification. 
8772         Fixes part of #387274.
8773
8774 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
8775
8776         * mini.c (mini_get_method): Disable the check for open generic classes when
8777         using generic sharing.
8778
8779         * generics.cs: Add a test for #387034.
8780
8781         * mini.c (mini_get_method): Check whenever the method class is an open generic
8782         type, and return NULL in that case, causing a verification error. Fixes
8783         #384123.
8784
8785 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8786
8787         * driver.c (mono_main): Revert r102623. The right
8788         thing to do is to enable the verifier under verifiable
8789         unless a --security flag was passed.
8790
8791         We need this non-trivial behavior for --verify-all otherwise
8792         mcs-compileall won't be able to use it. As it needs everything to
8793         be verified under validil.
8794
8795 2008-05-06  Martin Baulig  <martin@ximian.com>
8796
8797         Fix #383749.
8798
8799         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
8800         (mono_debugger_thread_cleanup): Likewise.
8801         (mono_debugger_extended_notification): Likewise.
8802
8803 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8804
8805         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
8806         against both inflated and non-inflated methods. We need to check against the
8807         generic definition for cases where the instantiated method is not visible.
8808         We need to check against the inflated types for cases where the instantiation
8809         changes any super type. This fixes #382986.
8810
8811         Note that this doesn't need to be applied to other parts of mono_method_to_ir
8812         that check for visibiliy as generic params only appears as the type subject
8813         of tokens on call opcodes. Field manipulation and ldftn must always
8814         target an exact type.
8815
8816 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8817
8818         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
8819         if no related --security flag is passed.
8820
8821 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8822
8823         * mini-arch.h: Prepare support for ppc64.
8824
8825         Contributed under MIT/X11 license.
8826
8827 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8828
8829         * aot-runtime.c: Prepare support for ppc64.
8830
8831         Contributed under MIT/X11 license.
8832
8833 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8834
8835         * mini-ops.h: Prepare support for ppc64.
8836
8837         Contributed under MIT/X11 license.
8838
8839 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
8840
8841         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
8842
8843         Contributed under MIT/X11 license.
8844
8845 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
8846
8847         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
8848         assemblies, since aot_name is not a full path, causing us to load MS.NET 
8849         assemblies on windows.
8850
8851 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
8852
8853         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
8854         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
8855         * main.c: Use UTF-8 encoded command line instead of Windows default code
8856         page on Windows to support Unicode.
8857         * driver.c (DllMain): New function for mixed-mode assembly support.
8858         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
8859         export __stdcall functions without decoration.
8860
8861         Contributed under MIT/X11 license.
8862
8863 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8864
8865         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
8866         saving it very early.
8867
8868 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8869
8870         * mini.h, mini.c: Lots of code for accessing the old RGCTX
8871         deleted.  The only way to access the new RGCTX is via the
8872         trampline.
8873
8874         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
8875         vtable instead of the RGCTX to static methods.
8876
8877         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
8878         accessing the new RGCTX.
8879
8880         * generic-sharing.c: There is no separation between self, type
8881         arguments and other types in the RGCTX anymore.
8882
8883 2008-04-25  Jonathan Chambers <joncham@gmail.com>
8884
8885         * mini-amd64.c (add_general): Remove previous stack adjustment.
8886         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
8887         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
8888         for 32 bytes of stack space reserved for all calls.
8889         
8890         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
8891         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
8892         adjustment.
8893         
8894         Code contributed under MIT/X11 license.
8895
8896 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
8897
8898         * mini.c (mini_method_verify): Only verify non-inflated methods, check
8899         against the root definition, peeling out method and type instantiations.
8900         Cache verify success results, code that fails verification is still
8901         checked multiple times.
8902
8903 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
8904
8905         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
8906
8907 2008-04-23  Jonathan Chambers <joncham@gmail.com>
8908
8909         * mini-amd64.c (add_general): Always increment stack on Win64.
8910         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
8911         on Win64.
8912         
8913         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
8914         stack based argument handling on Win64.
8915         
8916         Code contributed under MIT/X11 license.
8917
8918 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
8919
8920         * Makefile.am (version.h): Add support for git-svn.
8921
8922 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
8923
8924         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
8925         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
8926         avoiding allocations and libc functions which might deadlock.
8927         
8928         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
8929         'no-gdb-backtrace' option is set.
8930
8931         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
8932
8933         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
8934
8935 2008-04-21  Martin Baulig  <martin@ximian.com>
8936
8937         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
8938         and `get_lmf_addr'; `notification_address' is no longer a pointer.
8939
8940 2008-04-21  Martin Baulig  <martin@ximian.com>
8941
8942         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
8943         `thread_vtable', `event_handler_ptr' and `event_handler'.
8944
8945 2008-04-21  Martin Baulig  <martin@ximian.com>
8946
8947         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
8948         allows delayed initialization of the `executable_code_buffer' when
8949         attaching.
8950
8951 2008-04-21  Martin Baulig  <martin@ximian.com>
8952
8953         * mini.h (mono_debugger_create_notification_function): Removed.
8954         * tramp-*.c (mono_debugger_create_notification_function): Removed.
8955
8956         * mdb-debug-info64.s
8957         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8958
8959         * mdb-debug-info32.s
8960         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8961
8962         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
8963         currently only works on x86 and x86_64, so don't create it on ppc.
8964
8965 2008-04-21  Martin Baulig  <martin@ximian.com>
8966
8967         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
8968
8969         * mini.c
8970         (mini_method_compile): In the fp elimination check, check
8971         `debug_options.mdb_optimizations' in addition to
8972         mono_debug_using_mono_debugger().       
8973
8974         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
8975         disable some JIT optimizations which are only disabled when
8976         running inside the debugger.
8977         Added `--help-debug' option to describe the debugging options.
8978         (parse_debug_options): New static function to parse the `--debug'
8979         options, so we can easily add more stuff in future.
8980
8981 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
8982
8983         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
8984         the method has no body.
8985
8986 2008-04-19  Jonathan Chambers <joncham@gmail.com>
8987
8988         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
8989         assembly is not allowed in MSVC 64-bit compiler. 
8990         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
8991         as we get floating point exceptions everywhere.
8992         
8993         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
8994         correctly align arguments for call to throw_exception.
8995         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
8996         
8997         Code contributed under MIT/X11 license.
8998
8999 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
9000
9001         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
9002
9003 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
9004
9005         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
9006
9007         * mini-amd64.c (NEW_INS): Set cil_code.
9008
9009         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
9010         from mini-amd64.c so all debugger related logic is in one place.
9011
9012         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
9013         later won't have a random ip assigned to them.
9014
9015 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
9016
9017         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
9018         the arch specific function initializes code_size.
9019         (mono_create_delegate_trampoline): Ditto.
9020
9021         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
9022         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
9023         platforms.
9024
9025         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
9026         running under the debugger.
9027
9028         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
9029         debugger.
9030
9031         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
9032         debugger. Also move the disabling of optimizations here from driver.c.
9033         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
9034         debugger.
9035
9036         * mini.h (MonoCompile): Add a few new flags.
9037
9038 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
9039
9040         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
9041         so the cil_code field of created MonoInst's is properly set.
9042         (mini_select_instructions): Ditto.
9043
9044         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
9045         (MONO_INST_NEW_CALL): Ditto.
9046
9047         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
9048         in many places so the ins->cil_code field is properly initialized.
9049
9050         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
9051         place.
9052
9053 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
9054
9055         * mini.c (mini_method_compile): Print a different message when compiling a 
9056         shared method.
9057         
9058         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
9059         > 1.
9060
9061 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9062
9063         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
9064         SSE2 instructions.
9065
9066         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
9067         
9068 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9069
9070         * mini.c (handle_stack_args): Make this return void since its return value was
9071         never used. Also set cfg->unverifiable for invalid IL instead of calling
9072         G_BREAKPOINT ().
9073
9074 2008-04-10  Mark Probst  <mark.probst@gmail.com>
9075
9076         * mini.c: Make sure "this" is live in catch clauses with type
9077         variables in shared generic code.
9078
9079 2008-04-08  Mark Probst  <mark.probst@gmail.com>
9080
9081         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
9082         generic_class_is_reference_type() to ensure the proper behaviour
9083         when sharing generic code and the type in question is a type
9084         argument.
9085
9086 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9087
9088         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
9089         race conditions when printing thread dumps. Fixes #377738.
9090
9091 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
9092         
9093         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
9094         shows up when both MonoInst arguments can cause aliasig.
9095         There is likely no way in the current JIT to trigger this problem, but
9096         it showed up in the development of generics sharing, when in a new
9097         opcode both args of an OP_GROUP can be aliases (addresses of a local).
9098         When the generics sharing code will be committed, its tests will be
9099         valid also for this bug.
9100
9101 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9102
9103         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
9104         PATCH_INFO_METHOD.
9105
9106         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
9107         NULL.
9108
9109 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
9110
9111         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
9112         use a more detailed exception message for InvalidCastException.
9113
9114         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
9115
9116         * driver.c (mono_main): Add --debug=casts option to turn on better 
9117         InvalidCastException message details.
9118
9119         * mini.c (mini_get_debug_options): New helper function to return the address of
9120         the debug_options variable.
9121
9122         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
9123         the jit_tls TLS variable.
9124
9125         * mini.c (mono_jit_tls): New TLS variable.
9126
9127         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
9128         option is used.
9129
9130 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
9131
9132         * mini.h: Removed verifer related stuff. This code was moved to verify.c
9133
9134         * mini.c: Removed verifer related stuff, code moved to verify.c.
9135
9136         * driver.c: Using code from verify.c instead of mini.c.
9137
9138 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
9139
9140         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
9141         longer valid.
9142
9143 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
9144
9145         * mini.c (check_for_method_verify): Enabling verification of
9146         corlib if mono_verify_all is set. Bugs in the verifier preventing that
9147         have been fixed.
9148
9149 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
9150
9151         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
9152         caller saved registers as well.
9153         
9154         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
9155         saved registers as well.
9156
9157 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
9158
9159         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
9160
9161         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
9162         code.
9163
9164 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
9165
9166         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
9167         to get_call_info.
9168         (get_call_info): Take a gsctx argument instead of 'cfg'.
9169
9170 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
9171
9172         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
9173         mono_verify_all is set.
9174
9175         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
9176
9177         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
9178
9179 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
9180
9181         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
9182         an exception.
9183
9184         * driver.c mini.c mini.h: Add a --verify-all development option to test the
9185         verifier and the code generated by the compiler.
9186
9187 2008-03-25  Mark Probst  <mark.probst@gmail.com>
9188
9189         * mini.c: Generic sharing of the non-nullable case of the box
9190         instruction.
9191
9192 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
9193
9194         * inssel.brg: Fix the build.
9195
9196         * iltests.il.in: Add a test for lconv.ovf.u8.un.
9197
9198 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
9199
9200         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
9201         Array:Address. Fixes #372410.
9202
9203         * iltests.il.in: New tests for readonly prefix.
9204
9205 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
9206
9207         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
9208         mini-trampolines.c.
9209
9210         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
9211         mini-exceptions.c.
9212
9213         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
9214         
9215         * mini.c (mono_decompose_op_imm): New helper function.
9216
9217         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
9218         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9219         return value.
9220
9221         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9222         mono_arch_output_basic_block. Fix warnings.
9223
9224         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
9225         for now.
9226
9227 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
9228
9229         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
9230         since the extra frame is now detected automatically inside the loop.
9231
9232         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
9233         opts which are now in mono_peephole_ins ().
9234         
9235         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
9236
9237         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
9238         frames and skip duplicate managed-to-native frames. Fixes #367665.
9239
9240         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9241         opts which are now in mono_peephole_ins ().
9242         (mono_arch_peephole_pass_2): Ditto.
9243
9244         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
9245
9246         * mini-codegen.c (mono_peephole_ins): New helper function containing the
9247         arch independent peephole optimizations.
9248
9249         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9250         opts which are now in mono_peephole_ins ().
9251
9252         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
9253         
9254         * mini-s390.c (mono_arch_output_basic_block): Fix build.
9255
9256         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
9257         pattern.
9258
9259         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
9260         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
9261         opcode. 
9262
9263 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
9264
9265         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
9266         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9267         return value.
9268
9269         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9270         mono_arch_output_basic_block. Fix warnings.
9271
9272 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9273
9274         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9275         conv.ovf.u.un.
9276
9277 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9278
9279         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9280         conv.ovf.u.un.
9281
9282         * iltests.il: Add new tests.
9283
9284 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
9285
9286         * mini.c: Removed Windows version macros.
9287
9288 2008-03-20  Mark Probst  <mark.probst@gmail.com>
9289
9290         * generic-sharing.c: Put reflection types in the extensible part
9291         of the runtime generic context.
9292
9293         * mini.c: Generic sharing of the GetTypeHandle special case of the
9294         ldtoken instruction.
9295
9296 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9297
9298         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
9299
9300         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
9301         
9302         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
9303         consistency with the other version on the linear IR branch.
9304
9305         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
9306
9307         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
9308
9309         * iltests.il.in: Add new tests.
9310
9311 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
9312
9313         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
9314
9315         * iltests.il.in: Add new tests.
9316
9317 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9318
9319         * mini.c: Two variables with the same name were declared in
9320         nesting contexts and one wasn't initialized.  Fixed.
9321
9322 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9323
9324         * mini.c: Generic sharing of the initobj instruction.
9325
9326 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
9327
9328         * mini.c: make the test to optimize ldtoken from typeof() more
9329         precise.
9330
9331 2008-03-18  Mark Probst  <mark.probst@gmail.com>
9332
9333         * mini.c: Generic sharing of the initobj instruction for reference
9334         types.
9335
9336 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
9337
9338         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
9339         the mono_breakpoint_clean_code() code to perform bound checks.
9340
9341 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
9342
9343         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
9344         mono_arch_patch_callsite() to include the start of the managed method
9345         to be able to perform bound checks.
9346
9347 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9348
9349         * mini.c: Generic sharing for the isinst instruction.
9350
9351 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9352
9353         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9354         inssel-long32-mips.brg: Added opcodes for doing indirect calls
9355         with the runtime generic context argument.
9356
9357         * mini.c: Share calls to several types of unsharable methods by
9358         putting the address of the method code in the runtime generic
9359         context and doing an indirect call.
9360
9361         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9362         to switches.
9363
9364 2008-03-16  Mark Probst  <mark.probst@gmail.com>
9365
9366         * generic-sharing.c: Change due to a change in the runtime genric
9367         context API.
9368
9369 2008-03-15  Martin Baulig  <martin@ximian.com>
9370
9371         * tramp-x86.c
9372         (mono_arch_nullify_class_init_trampoline): Add call to
9373         mono_breakpoint_clean_code() to make things work when running
9374         inside the debugger.
9375
9376         * tramp-amd64.c
9377         (mono_arch_nullify_class_init_trampoline): Add call to
9378         mono_breakpoint_clean_code() to make things work when running
9379         inside the debugger.
9380
9381 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9382
9383         * inssel-long.brg (reg): Fix 64 bit build.
9384
9385 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9386
9387         * mini.c, mini.h: Share static generic code by passing it an
9388         implicit argument pointing to the runtime generic context.
9389
9390         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9391         inssel-long32-mips.brg: New opcodes for calling shared static,
9392         which need to be passed the runtime generic context.
9393
9394         * mini-amd64.c, mini-x86.c: Save the runtime generic context
9395         argument on the stack in the prologue if needed.  New function for
9396         finding the runtime generic context argument from the registers
9397         saved by the trampoline.
9398
9399         * mini-amd64.h, mini-x86.h: Specify which register to use for the
9400         runtime generic context argument.
9401
9402         * tramp-amd64.c: Also restore the register used for the runtime
9403         generic context argument.
9404
9405         * mini-trampoline.c: Resolve shared static calls by consulting the
9406         runtime generic context via the new argument.
9407
9408         * generic-sharing.c: Add an argument to sharability-checking
9409         functions that specifies whether type variables should be treated
9410         as sharable type arguments.
9411
9412         * inssel-x86.brg: Removed a superfluous, buggy rule.
9413
9414         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9415         to switches.
9416
9417 2008-03-14  Martin Baulig  <martin@ximian.com>
9418
9419         * debug-debugger.c (main_thread_handler): Call
9420         mono_runtime_run_main() without sending any notifications.
9421
9422         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
9423
9424 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9425
9426         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
9427
9428 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9429
9430         * tramp-x86.c: Fixed register restore offsets in the trampoline
9431         code for ECX and EDX.
9432
9433 2008-03-12  Geoff Norton  <gnorton@novell.com>
9434
9435         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
9436         different ucontext_t implementations.
9437         * exceptions-arm.c: Use the above defines to get exceptions working on 
9438         iPhone (based on a patch by Luke Howard lukeh@padl.com)
9439         * mini-arm.c: Implement iPhone icache support (based on a patch by
9440         Luke Howard lukeh@padl.com)
9441
9442 2008-03-12  Mark Probst  <mark.probst@gmail.com>
9443
9444         * mini.c: Enable generic sharing of calls to non-static
9445         non-interface non-generic non-value-type methods.
9446
9447         * mini-trampolines.c: Resolve calls from shared generic code.
9448
9449 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
9450
9451         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
9452
9453         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
9454
9455 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
9456
9457         * mini.c: some fixes for the AOT compiler.
9458
9459 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
9460
9461         * cpu-amd64.md: Add clob:1 to some float opcodes.
9462
9463 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
9464
9465         * mini.h: Added MiniVerifierMode enumeration.
9466
9467         * mini.c: Added mini_verifier_set_mode to control
9468         the usage of the new verifier.
9469
9470         * mini.c (mono_method): Integrated the new verifier.
9471
9472         * driver.c: Extended --security option with validil and
9473         verifiable options to activate the new verifier.
9474
9475 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
9476
9477         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
9478         optimization to ctors taking 0 or 2 arguments too.
9479
9480         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
9481         a bit.
9482
9483         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
9484
9485         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
9486
9487 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
9488
9489         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
9490         non-aot case as well.
9491
9492         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
9493
9494         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
9495         changes.
9496
9497         * aot-compiler.c (encode_patch): Ditto.
9498
9499         * mini.h (G_MININT32): Fix the definition of this.
9500
9501 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
9502
9503         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
9504
9505         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
9506
9507 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
9508
9509         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
9510         methods returning vtypes in registers.
9511         (mono_arch_allocate_vars): Ditto.
9512
9513         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
9514
9515         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
9516
9517         * generics.cs: Add a test from the linear IR branch.
9518
9519         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
9520
9521         * mini.c (inline_method): Cache failed inline attempts.
9522
9523 2008-03-04  Mark Probst  <mark.probst@gmail.com>
9524
9525         * mini.c: For shared methods of generic classes put the location
9526         of "this" into the MonoGenericJitInfo.
9527
9528         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
9529         register out of a MonoContext by register number.  Add the generic
9530         sharing context as an argument to mono_arch_find_this_argument().
9531
9532         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
9533         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
9534         for new arch function.
9535
9536         * mini-exception.c: Handle open exception clauses in shared
9537         generic code.
9538
9539         * mini-trampolines.c: Supply additional argument to
9540         mono_arch_find_this_argument().
9541
9542 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
9543
9544         * Makefile.am (regtests): Run the bench.exe tests last.
9545
9546 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
9547
9548         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
9549         a bit.
9550
9551 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
9552
9553         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
9554         with MS.
9555
9556         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
9557         
9558         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
9559
9560         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
9561         whose class has no cctor.
9562
9563         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
9564
9565 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
9566
9567         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
9568         unverified.
9569
9570 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
9571
9572         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
9573         to be in sync with the code on the linear IR branch.
9574
9575         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
9576
9577         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
9578
9579 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
9580
9581         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
9582
9583         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
9584
9585         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
9586
9587         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
9588
9589         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
9590         
9591         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
9592         body.
9593
9594 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
9595
9596         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
9597         OP_LOADR4_MEMBASE emission.
9598
9599         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
9600         (mono_spillvar_offset_float): Ditto.
9601
9602         * mini-mips.c (mono_arch_emit_prolog): Ditto.
9603
9604         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
9605         emission.
9606
9607         * basic-long.cs: Add regression tests for them.
9608
9609         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
9610         use.
9611         (mono_arch_allocate_vars): Fix representation of single-precision float
9612         argument.
9613         (mono_arch_output_basic_block): Ditto.
9614
9615         * inssel-mips.brg: Ditto, remove duplicate items.
9616
9617         * mini-mips.c (emit_load_volatile_arguments): New function to handle
9618         arguments of tail calls as on other platforms.
9619         (mono_arch_output_basic_block): Handle tail calls.
9620
9621         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
9622         register.
9623
9624         * objects.cs (test_5_pass_static_struct): Add test for it.
9625
9626         Contributed under MIT/X11 license.
9627
9628 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
9629
9630         * Makefile.am: Use gmcs for compiling the regression tests.
9631
9632         * *.2.cs *.2.il: Rename to *.cs and *.il.
9633
9634 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
9635
9636         * regalloc.h: Make the vassign array smaller.
9637
9638         * mini.c (mini_method_compile): Remove an unused field in cfg.
9639
9640         * mini-codegen.c: Add a bunch of micro optimizations.
9641
9642 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
9643
9644         * regalloc.h: Remove some unused fields.
9645
9646 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
9647
9648         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
9649
9650         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
9651
9652 2008-02-22  Mark Probst  <mark.probst@gmail.com>
9653
9654         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
9655
9656         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
9657         trampoline: Fetch an entry from the runtime generic context.  If
9658         it's NULL, jump to the actual trampoline to fill the runtime
9659         generic context.  Otherwise, return it.
9660
9661         * mini.c: Call the lazy fetch trampoline to get entries out of the
9662         runtime generic context.
9663
9664         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
9665         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
9666         tramp-sparc.c: Stubs for the lazy fetch trampoline.
9667
9668 2008-02-21  Mark Probst  <mark.probst@gmail.com>
9669
9670         * mini.c: Fetch data out of the extensible part of the runtime
9671         generic context instead of calling a helper function.
9672
9673         * generic-sharing.c: Some functions moved into
9674         metadata/generic-sharing.c.  Helper function for fetching other
9675         types now checks and asserts against extensible rgctx (just for
9676         debugging purposes - the helper function isn't called anymore
9677         unless for debugging).
9678
9679 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
9680
9681         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
9682         for tail calls up to the point that the tests in iltests.exe run. Also add a
9683         dummy CKFINITE implementation.
9684         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
9685         needed for trampoline LMF frames.
9686
9687         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
9688         trampoline LMF frames.
9689
9690 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
9691
9692         * mini.c (inline_method): clean any pending loader error when inlining fail.
9693         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
9694
9695 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
9696
9697         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
9698
9699         * aot-runtime.c (decode_patch_info): Ditto.
9700
9701         * mini.c (mono_resolve_patch_target): Ditto.
9702         
9703         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
9704         icall wrappers.
9705
9706         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
9707         
9708         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
9709         if it references an icall address.
9710
9711 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
9712
9713         * cpu-s390x.md: Remove some more unused opcodes.
9714         
9715         * cpu-s390x.md: Remove some unused opcodes.
9716
9717         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
9718         mono_op_imm_to_op ().
9719
9720         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
9721         instead of a switch statement.
9722         
9723         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
9724         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
9725
9726         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
9727         
9728         * mini-codegen.c: Remove unused mono_regstate2_... functions.
9729
9730         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
9731         -1.
9732
9733 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
9734
9735         * driver.c (mono_main): Improve error reporting when an assembly cannot be
9736         opened. Fixes #362607.
9737
9738         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
9739
9740         * iltests.il.in: Add a test for static methods in interfaces.
9741
9742 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
9743
9744         * genmdesc.c (build_table): Fix a crash on older glib versions.
9745
9746         * cpu-sparc.md: Remove some unused opcodes.
9747         
9748         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
9749         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
9750
9751         * cpu-amd64.md: Remove some unused opcodes.
9752
9753         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
9754         like the other opcodes.
9755
9756 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
9757
9758         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
9759
9760         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
9761
9762         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
9763         variables 'cfg' instead of 'm' for consistency.
9764
9765         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
9766
9767         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
9768         argument holding the vtype return address, to avoid the ambigious use of
9769         cfg->ret for this purpose.
9770
9771         * mini.c (NEW_RETLOADA): Use vret_addr if set.
9772
9773         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
9774         
9775         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
9776         new mono_print_ins () function which only takes one argument.
9777
9778 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
9779
9780         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
9781         macro arguments.
9782
9783 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
9784
9785         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
9786
9787         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
9788
9789         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
9790         opcodes and other small changes.
9791
9792         * mini-ops.h: Add some new opcodes from the linear IR branch.
9793
9794         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
9795
9796         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
9797         opcodes, use the REG_MEMBASE opcodes instead.
9798         
9799         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
9800         opcodes, use the REG_MEMBASE opcodes instead.
9801         
9802         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
9803         linear IR branch.
9804
9805         * mini.c (mono_op_imm_to_op): New helper function.
9806
9807         * mini-ops.h: Add some opcodes from linear IR branch.
9808
9809 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
9810
9811         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
9812         <tsv@solvo.ru>.
9813
9814 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
9815
9816         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
9817         OP_ICONV_TO_R4/R8.
9818
9819         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
9820
9821 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
9822
9823         * aot-compiler.c (emit_method_code): Add an assert.
9824
9825         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
9826         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
9827         methods.
9828
9829 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
9830
9831         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
9832         some load/store opcodes so they are consistent. 
9833         (mono_arch_emit_prolog): Simplify some code.
9834
9835         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
9836
9837         * objects.cs: Add tests for large argument offsets on ARM.
9838
9839         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
9840         stack offsets. Fixes #359651.
9841
9842         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
9843
9844         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
9845
9846         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
9847
9848         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
9849
9850         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
9851
9852         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
9853         rid of CEE_CONV_R_UN.
9854
9855         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
9856
9857 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
9858
9859         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
9860
9861         * mini.c (mono_normalize_opcodes): Add some more opcodes.
9862
9863         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
9864
9865         * cpu-amd64.md: Remove some unused opcodes.
9866
9867         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
9868
9869         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
9870
9871         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
9872         arch specific functions for its parts. Call the peephole pass after local
9873         regalloc so the prolog can compute a more accurate max_offset.
9874         
9875         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
9876         the corresponding OP_I/OP_L opcodes.
9877
9878         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
9879
9880         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
9881
9882 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9883
9884         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
9885         as they are handled in mini.c.
9886
9887         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
9888         
9889         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
9890         case since it is handled in mini.c.
9891
9892         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
9893
9894         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
9895
9896         * *.c: Use the new opcodes in the IR and back end code.
9897
9898         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
9899
9900         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
9901
9902 2008-02-06  Mark Probst  <mark.probst@gmail.com>
9903
9904         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
9905         an assert because it has a race condition.
9906
9907 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9908
9909         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
9910
9911         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
9912
9913         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
9914
9915         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
9916         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
9917
9918 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
9919
9920         * cpu-amd64.md (move): Correct the maximum size of move.
9921
9922 2008-02-05  Mark Probst  <mark.probst@gmail.com>
9923
9924         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
9925         the generic class init trampoline to return quickly if the class
9926         is already inited.
9927
9928 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
9929
9930         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
9931         issues where an 32 bit callsite cannot be patched by a 64 bit address.
9932
9933 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
9934
9935         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
9936         branch.
9937
9938 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
9939
9940         * objects.cs: Add some soft-float tests.
9941
9942         * mini.c: Fix a couple more soft-float issues.
9943
9944         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
9945
9946         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
9947         avoid a REX prefix.
9948
9949 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
9950
9951         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
9952         exception happens while compiling a virtual method.
9953
9954 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
9955
9956         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
9957         
9958         * mini-sparc.c: Fix build.
9959
9960         * mini-sparc.c (get_call_info): Add support for generic sharing.
9961
9962         * mini-exceptions.c: Add a FIXME.
9963
9964 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
9965
9966         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
9967         altstack handling code.
9968
9969         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
9970         
9971         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
9972
9973         * mini-s390.c: Add support for generic sharing.
9974
9975         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9976         Fix CAS on s390.
9977         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9978
9979         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
9980
9981         * mini-s390x.c: Add support for generic sharing.
9982         
9983         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9984         Fix CAS on ia64.
9985         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9986
9987         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
9988         can be used since it takes a 16 bit signed immediate.
9989
9990         * inssel-s390x.brg: Fix OP_SETRET.
9991
9992         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
9993
9994         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
9995
9996         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
9997
9998         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
9999
10000         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
10001         in one place.
10002
10003         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
10004         stuff.
10005
10006         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
10007         of the unused mono_arch_patch_delegate_trampoline stuff.
10008
10009 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
10010
10011         * basic-long.cs: Move the fp related tests to basic-float.cs.
10012
10013         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
10014
10015         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
10016
10017         * basic-calls.cs: Add a test for proper float argument passing.
10018
10019         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
10020         if the context corresponds to an exception received through a signal.
10021
10022         * exceptions.cs: Add a test for nullref handling at the start of a try
10023         clause.
10024
10025         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
10026
10027         * jit-icalls.c (mono_break): New JIT icall.
10028
10029         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
10030
10031         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
10032
10033 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
10034
10035         * cpu-*.md: Get rid of unused opcodes.
10036
10037         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
10038
10039         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
10040         by all platforms.
10041
10042         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
10043         define.
10044
10045         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
10046         the arch independent trampoline code in mini-trampolines.c.
10047
10048         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
10049
10050         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
10051
10052         * mini-s390.h: Remove an unused define.
10053         
10054         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
10055         the arch independent trampoline code in mini-trampolines.c.
10056
10057         * mini-arm.c (mono_arch_emit_prolog): Fix build.
10058
10059 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
10060
10061         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
10062
10063         * mini-s390.c (mono_arch_emit_prolog): Fix build.
10064
10065         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
10066
10067         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
10068
10069         * cpu-amd64.md: Use smaller sizes for int opcodes.
10070
10071         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
10072
10073         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
10074         objects.cs.
10075
10076         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
10077         debugging.
10078
10079         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
10080         instead of though a pointer to save an indirection when accessing elements of
10081         the array.
10082
10083         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
10084         some typos.
10085         (NOT_IMPLEMENTED): New helper macro.
10086         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
10087         of a bb.
10088
10089         * *.c: Use the new helper macro.
10090
10091 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
10092
10093         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
10094
10095 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
10096
10097         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
10098         stack slots.
10099
10100 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
10101
10102         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
10103         profiling is enabled.
10104         
10105         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
10106         the end.
10107         (mono_arch_emit_prolog): Add more first bblock optimizations.
10108
10109         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
10110         in order if possible.
10111         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
10112         bblock, since the arguments are still in their original registers.
10113
10114         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
10115
10116 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
10117
10118         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
10119         as well.
10120
10121         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
10122         offset 0.
10123
10124         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
10125
10126         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
10127         process async exceptions received while in unmanaged code.
10128
10129         * mini.c (mini_init): Install a callback with the runtime which will be called
10130         when a thread receives an async exception while in unmanaged code.
10131
10132         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
10133
10134         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
10135
10136 2008-01-16  Wade Berrier  <wberrier@novell.com>
10137
10138         * cpu-g4.md:
10139         * cpu-arm.md:
10140         * cpu-s390x.md:
10141         fix build
10142
10143 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
10144
10145         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
10146         compilation with sun cc.
10147
10148         * cpu-*.md: Fix the build.
10149
10150         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
10151
10152         * mini-amd64.h: Add some comments to the MonoLMF structure.
10153
10154         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
10155         
10156         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
10157         in the LMF structure if possible. This saves two instructions in the
10158         managed->native wrappers.
10159
10160         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
10161
10162 2008-01-16  Mark Probst  <mark.probst@gmail.com>
10163
10164         * generic-sharing.c: New type argument lookup code which uses the
10165         runtime generic context template.
10166
10167 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
10168
10169         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
10170
10171         * mini-arm.c (add_general): Fix arm eabi parameter passing.
10172         (mono_arch_output_basic_block): Fix localloc implementation.
10173
10174         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
10175
10176         * mini-ia64.c (peephole_pass): Fix ia64 build.
10177
10178         * mini-amd64.c (peephole_pass): Fix a warning.
10179         
10180         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
10181         at a constant offset from sp/fp.
10182
10183         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
10184         instead of obtaining it from *lmf in the managed method case.
10185
10186 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
10187
10188         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
10189
10190 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
10191
10192         * mini.h (MonoInstList): New type.
10193         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
10194         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
10195         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
10196         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
10197         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
10198         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
10199         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
10200         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
10201         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
10202         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
10203         MONO_INST_LIST_FOR_EACH_ENTRY,
10204         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
10205         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
10206         mono_inst_list_first, mono_inst_list_last,
10207         mono_inst_list_next, mono_inst_list_prev): New instruction
10208         list handling interfaces.
10209         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
10210         list head 'ins_list'.
10211         (MonoInst): Replace next pointer with list head 'node'.
10212         (MonoCallInst): Make 'out_args' a MonoInstList.
10213         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
10214         (MonoCompile): Delete reverse_inst_list and
10215         reverse_inst_list_len.
10216         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
10217         mono_arch_lowering_pass, mono_arch_local_regalloc,
10218         mono_arch_output_basic_block, mono_arch_emit_prolog):
10219         Convert to new instruction lists.
10220         (insert_after_ins): Delete.
10221         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
10222         instruction lists.
10223         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
10224         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
10225         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
10226         mono_emulate_opcode, mono_emit_load_got_addr,
10227         inline_method, mono_method_to_ir, mono_print_bb_code,
10228         print_dfn, decompose_pass, nullify_basic_block,
10229         replace_out_block_in_code, remove_block_if_useless,
10230         merge_basic_blocks, move_basic_block_to_end,
10231         try_unsigned_compare, optimize_branches, mono_print_code,
10232         mini_select_instructions, remove_critical_edges): Likewise.
10233         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
10234         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
10235         mono_arch_output_basic_block, mono_arch_emit_prolog):
10236         Likewise.
10237         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
10238         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10239         mono_arch_output_basic_block): Likewise.
10240         (inst_list_prepend, insert_after_ins): Delete.
10241         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
10242         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
10243         instruction lists.
10244         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
10245         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
10246         mono_arch_emit_prolog): Likewise.
10247         * cfold.c (mono_constant_fold): Likewise.
10248         * liveness.c (visit_bb, mono_analyze_liveness,
10249         optimize_initlocals): Likewise.
10250         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
10251         * graph.c (mono_draw_code_cfg): Likewise.
10252         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
10253         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
10254         mono_ssa_cprop): Likewise.
10255         * abcremoval (get_relations_from_previous_bb, process_block):
10256         Likewise.
10257         * local-propagation (mono_cprop_invalidate_values,
10258         mono_local_cprop_bb): Likewise.
10259         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
10260         peephole_pass, mono_arch_output_basic_block,
10261         mono_arch_emit_prolog): Likewise.
10262         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
10263         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10264         mono_arch_emit_prolog): Likewise.
10265         (insert_after_ins): Delete.
10266         * aliasing.c (print_code_with_aliasing_information,
10267         mono_build_aliasing_information, mono_aliasing_deadce):
10268         Convert to new instruction lists.
10269         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
10270         peephole_pass, NEW_INS, mono_arch_lowering_pass,
10271         mono_arch_local_regalloc, mono_arch_output_basic_block):
10272         Likewise.
10273         (insert_after_ins): Delete.
10274         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
10275         peephole_pass, mono_arch_output_basic_block): Convert to
10276         new instruction lists.
10277         * mini-codegen (InstList, inst_list_prepend,
10278         insert_after_ins): Delete.
10279         (insert_before_ins, get_register_force_spilling,
10280         get_register_spilling, free_up_ireg, free_up_reg,
10281         create_copy_ins, create_spilled_store, alloc_int_reg,
10282         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
10283         to new instruction lists.
10284         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
10285         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10286         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
10287         (insert_after_ins): Delete.
10288         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
10289         mono_arch_local_regalloc, mono_arch_output_basic_block,
10290         mono_arch_call_opcode): Convert to new instruction lists.
10291         (insert_after_ins): Delete.
10292         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
10293         peephole_pass, mono_arch_output_basic_block,
10294         mono_arch_emit_prolog): Convert to new instruction lists.
10295
10296 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
10297
10298         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
10299
10300         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
10301         Fixes #353182.
10302
10303         * Makefile.am (version.h): Make this work with non-bash shells.
10304
10305 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
10306
10307         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
10308
10309 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
10310
10311         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
10312         the InitializeArray optimization.
10313
10314 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
10315
10316         * mini.c driver.c: Don't include os/gc_wrapper.h.
10317
10318 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
10319
10320         * mini.c (print_jit_stats): Print GC statistics if available.
10321
10322 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
10323
10324         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
10325
10326 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
10327
10328         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
10329
10330 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
10331
10332         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
10333         
10334         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
10335
10336         * driver.c (mono_main): Ditto.
10337
10338 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
10339
10340         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
10341
10342         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
10343         in the vtable can't be encoded.
10344         (compile_method): Ditto.
10345
10346 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
10347
10348         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
10349         defined.
10350
10351         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
10352         lmf->rbp.
10353
10354         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
10355         the top LMF entry belongs to the current method.
10356
10357         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
10358
10359 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
10360
10361         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
10362         
10363         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
10364
10365         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
10366
10367         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
10368
10369         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
10370
10371         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
10372         implementation.
10373
10374         * basic-float.cs: Add an ulong->double cast test.
10375
10376 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
10377
10378         * mini.c (mono_method_to_ir): Fix a warning.
10379
10380 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
10381
10382         * mini-ops.h: Add OP_SWITCH.
10383
10384         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
10385         CEE_SWITCH in back-end code, use OP_SWITCH instead.
10386
10387 2007-12-11  Geoff Norton  <gnorton@novell.com>
10388
10389         * mini-s390x.c: Minor change to the MAX() define to allow
10390         it to compile with other gcc versions.
10391
10392 2007-12-11  Geoff Norton  <gnorton@novell.com>
10393
10394         * cpu-s390x.md:
10395         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
10396
10397 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10398
10399         exceptions-arm.c (mono_arch_get_restore_context): Restore
10400         the frame pointer.
10401
10402         exceptions-arm.c (throw_exception): Save the frame pointer.
10403         This is a partial fix for #323747. Only the client side is
10404         fixed.
10405
10406 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10407
10408         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
10409         was using an unrelated variable to log the class which
10410         needed the cctor to be called. This was crashing on arm.
10411
10412 2007-12-09  Robert Jordan  <robertj@gmx.net>
10413
10414         * mini-x86.c (mono_arch_emit_epilog):
10415         Consider all kinds of 64-bit types. Fixes #323114.
10416
10417 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
10418
10419         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
10420
10421 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10422
10423         * mini-amd64.c (peephole_pass): Add a missing instruction check.
10424
10425 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10426
10427         * mini.c: run type ctor before allocating an object, not only
10428         when running it's constructor method (fixes at least part of bug #342507).
10429
10430 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10431         
10432         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
10433         
10434         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
10435         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
10436         function.
10437
10438         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
10439         mono_generic_class_init_trampoline () the same as it is done with the other
10440         trampolines.
10441
10442         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
10443         aot-runtime.c aot-compiler.c: Implement AOT support.    
10444
10445 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10446
10447         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
10448         build for archs which don't have the vtable trampoline defined
10449         yet.
10450
10451 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10452
10453         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
10454
10455         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
10456
10457         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
10458
10459         * tramp-<ARCH>.c: Use the new helper function.
10460
10461 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10462
10463         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
10464         trampoline call, which takes a vtable argument.
10465
10466         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
10467         OP_TRAMPCALL_VTABLEs like other calls.
10468
10469         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
10470         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
10471         call.  Implemented a support function which fetches the vtable
10472         from a register set.
10473
10474         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
10475         Implemented a generic class init trampoline, using the
10476         OP_TRAMPCALL_VTABLE opcode.
10477
10478         * mini.c: Implemented static field access when sharing generic
10479         code.  This implies initing the class using the new
10480         OP_TRAMPCALL_VTABLE call.
10481
10482 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10483
10484         * mini.c: Don't compile methods with sharing enabled if their
10485         classes are disabled for sharing.
10486
10487 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
10488
10489         * inssel.brg: Add a missing sign extension to the GETCHR and array access
10490         opcodes. Fixes #346563.
10491
10492         * objects.cs: Add a new test.
10493
10494         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
10495
10496         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
10497         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
10498
10499 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
10500
10501         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
10502
10503 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
10504
10505         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
10506         code stream.
10507
10508 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
10509
10510         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
10511
10512         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
10513         optimization in the AOT case.
10514         
10515 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
10516
10517         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
10518         
10519         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
10520
10521         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
10522
10523         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
10524
10525         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
10526         is created by the inlined delegate ctor.
10527
10528         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
10529
10530         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
10531
10532 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
10533
10534         * cpu-x86.md: Fix the length of ckfinite.
10535
10536 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
10537
10538         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
10539         
10540         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
10541         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
10542
10543         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
10544
10545         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
10546         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
10547
10548 2007-11-28  Martin Baulig  <martin@ximian.com>
10549
10550         * mini-x86.c
10551         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
10552         after creating the trampoline.
10553
10554 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
10555
10556         * aot-runtime.c (load_aot_module): Check runtime version if needed.
10557
10558         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
10559         the same version.
10560
10561         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
10562         instead of the calling method to help AOT.
10563
10564         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
10565
10566 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
10567
10568         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
10569         is defined.
10570
10571 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
10572
10573         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
10574         
10575         * aot-compiler.c (compile_method): Correct check for generic method definitions.
10576         (encode_method_ref): No need to handle generic method definitions specially.
10577
10578         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
10579
10580         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
10581         decode_klass_info.
10582
10583         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
10584         encode_klass_info.
10585         (compile_method): Enable generic sharing.
10586
10587 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
10588
10589         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
10590         (mini_method_compile): Add preliminary support for AOTing shared generic code.
10591
10592         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
10593         generic code.
10594
10595         * mini-trampolines.c: Fix a warning.
10596
10597         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
10598         NEW_PCONST.
10599         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
10600         (generic_class_is_reference_type): Remove unused function.
10601
10602         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
10603         in the generic vtable trampoline case.
10604
10605         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
10606         
10607         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
10608         return an AOT method based on a vtable slot.
10609
10610         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
10611
10612         * mini.c (mini_get_vtable_trampoline): Export this.
10613
10614 2007-11-22  Martin Baulig  <martin@ximian.com>
10615
10616         * debug-debugger.h
10617         (MonoDebuggerInfo): Move `debugger_version' up.
10618
10619 2007-11-22  Martin Baulig  <martin@ximian.com>
10620
10621         * mini-amd64.c
10622         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
10623
10624         * mini-trampolines.c
10625         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
10626         after compiling the method.
10627
10628 2007-11-20  Martin Baulig  <martin@ximian.com>
10629
10630         * debug-mini.c
10631         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
10632         (mono_debugger_remove_breakpoint): Likewise.
10633         (mono_debugger_check_breakpoints): Likewise.
10634
10635         * debug-debugger.c: Implement the new breakpoint interface here.
10636
10637 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
10638
10639         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
10640         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
10641
10642         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
10643
10644 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
10645
10646         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
10647
10648         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
10649         mini.c.
10650
10651         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
10652         mini.c.
10653
10654         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
10655         returning a vtype in a register.
10656
10657         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
10658         here from the arch specific code.
10659
10660         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
10661         mini.c.
10662
10663         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
10664         (mono_arch_emit_prolog): Increment maximum prolog size.
10665
10666         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
10667         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
10668
10669         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
10670         MonoGenericSharingContext.
10671
10672         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
10673         MonoGenericSharingContext. Allocate memory from the cfg mempool.
10674
10675 2007-11-15  Mark Probst  <mark.probst@gmail.com>
10676
10677         * mini.c, mini.h, generic-sharing.c: Functions for producing code
10678         which extract fields out of the runtime generic context.  Full
10679         sharing of the NEWARR opcode.
10680
10681 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
10682
10683         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
10684         --enable-minimal=ssa.
10685
10686 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
10687
10688         * mini-trampolines.c (mono_delegate_trampoline): Update after 
10689         mono_marshal_get_delegate_invoke () signature change.
10690
10691 2007-11-13  Mark Probst  <mark.probst@gmail.com>
10692
10693         * mini.c: Removed the shared context in favor of the generic
10694         sharing context.  Allocate the MonoJitInfo structure with room for
10695         the generic sharing context if it's needed.
10696
10697         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
10698         domain-internals.h now.
10699
10700         * mini-x86.c: Pass the generic sharing context to get_call_info ().
10701
10702         * generic-sharing.c: Several changes for working without a shared
10703         context and instead operating on open types instead.
10704
10705 2007-11-12  David S. Miller  <davem@davemloft.net>
10706
10707        * inssel-sparc.brg: Fix double instruction emit.
10708
10709 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
10710
10711         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
10712         Get/Set/Address methods.
10713         
10714         * mini.c debug-debugger.c mini-trampolines.c: Update after 
10715         mono_marshal_get_delegate_invoke signature change.
10716
10717 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
10718
10719         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
10720         This can happens with dynamic methods. Fixes the other bug in #322722.
10721
10722 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
10723
10724         * tramp-arm.c (mono_arch_patch_callsite): Support patching
10725         BX call sequence.
10726
10727         * mini-arm.c (arm_patch): Implement patching of BX call
10728         sequence. Fixes one of the bugs in #322722.
10729
10730 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
10731
10732        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
10733        under Linux.  We only need to flush every 32-byte cache line.    
10734
10735 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
10736
10737         * mini.c:
10738         move_basic_block_to_end: Add branches when needed, eventually creating
10739         a new BB.
10740         optimize_branches: added a parameter that tells if it's ok to create
10741         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
10742         and avoid calling move_basic_block_to_end when it's not ok.
10743         Fixes bug 318677.
10744
10745 2007-11-07  Mark Probst  <mark.probst@gmail.com>
10746
10747         * mini.c: Abort inlining call to InitializeArray if something
10748         looks wrong.  Let the icall handle it, which now has proper safety
10749         checks.
10750
10751 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
10752
10753         * mini.c (mono_spill_call): add support for soft-float.
10754
10755         * mini.c (mono_method_to_ir): add support for soft-float
10756         to inlined functions that return float.
10757
10758         * mini.c (mono_method_to_ir): add support for soft-float
10759         to cee_stsfld opcode on float fields.
10760
10761 2007-11-05  Geoff Norton  <gnorton@novell.com>
10762
10763         * mini-x86.h: Fix the structure access for X86 Leopard.
10764
10765
10766 2007-11-05  Martin Baulig  <martin@ximian.com>
10767
10768         * mini-trampolines.c
10769         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
10770         after compiling the method to notify the debugger.
10771
10772 2007-11-05  Martin Baulig  <martin@ximian.com>
10773
10774         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
10775
10776 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
10777
10778         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
10779         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
10780
10781 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
10782
10783         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
10784         native-to-managed wrappers.
10785         
10786 2007-11-01  Geoff Norton  <gnorton@novell.com>
10787
10788         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
10789         members.
10790
10791 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10792
10793         * mini.c, mini-x86.c: when getting back from unmanaged code
10794         to managed via a marshaled delegate we also need to set the
10795         right domain.
10796
10797 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10798
10799         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
10800         for amd64.
10801
10802 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
10803
10804         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
10805         let the debugger or other external agents to tell the JIT when
10806         a sw breakpoint has been inserted in the code that the JIT needs
10807         to be able to inspect.
10808
10809 2007-10-31  Martin Baulig  <martin@ximian.com>
10810
10811         * debug-debugger.h
10812         (MonoDebuggerInfo): Remove `runtime_class_init'.
10813
10814 2007-10-30  Martin Baulig  <martin@ximian.com>
10815
10816         * debug-mini.h
10817         (mono_debugger_thread_created): Added `MonoThread *' argument.
10818         (mono_debugger_extended_notification): New public method.
10819         (mono_debugger_trampoline_compiled): New public method.
10820
10821         * debug-mini.c
10822         (MonoDebuggerThreadInfo): Added `thread' and
10823         `extended_notifications' fields.
10824
10825         * debug-debugger.c
10826         (debugger_executable_code_buffer): New static variable.
10827
10828         * debug-debugger.h
10829         (MonoDebuggerInfo): Added `executable_code_buffer',
10830         `executable_code_buffer_size', `breakpoint_info_area',
10831         `breakpoint_table' and `breakpoint_table_size'.
10832
10833 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
10834
10835         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
10836         that IP  either is an unused value or the vtable pointer. IMT 
10837         calls use vtable + offset now. Reduced by almost half the size
10838         of IMT entries.
10839
10840 2007-10-26  Jonathan Chambers <joncham@gmail.com>
10841
10842         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
10843         defines to access param registers. Replace long usage with
10844         gsize as sizeof(long) != sizeof(void*) on Win64.
10845
10846         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
10847         on Win64. Fix intrinsic, use _AddressOfReturnAddress
10848         instead of non-existant _GetAddressOfReturnAddress.
10849
10850         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
10851         param registers. Save/restore %rdi and %rsi in MonoLMF.
10852
10853         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
10854         param registers. Modify (throw_exception) signature to take 
10855         %rdi and %rsi on Win64. 
10856
10857         Code is contributed under MIT/X11 license.
10858
10859 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10860
10861         * helpers.c: unlink debugging output files.
10862
10863 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
10864
10865         * mini.c: Move mono_create_ftnptr () to object.c.
10866
10867 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
10868
10869         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
10870         optional. This function can now be used to disassemble code generated
10871         outside the JIT such as trampolines and IMT thunks.
10872
10873         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
10874
10875         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
10876         vtable pointer from a ldr instruction.
10877
10878         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
10879         new IMT call sequence.
10880
10881         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
10882         call sequence for interface invocations.
10883
10884         * mini-arm.c (mono_arch_emit_imt_argument): added, required
10885         for imt support. This function is empty since IMT on ARM requires no
10886         special handling on the IR side.
10887
10888         * mini-arm.c (mono_arch_find_imt_method): added, required for
10889         imt support.
10890
10891         * mini-arm.c (mono_arch_find_this_argument): added, required
10892         for imt support.
10893
10894         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
10895         a ldr instruction to load a value stored in the code stream.
10896
10897         * mini-arm.c (mono_arch_build_imt_thunk):added, required
10898         for imt support.
10899
10900
10901 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
10902
10903         * mini.c (mini_init): Install the jump trampoline callback.
10904
10905 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10906
10907         * mini-trampolines.c: handle synchronized methods with the common
10908         vtable trampoline (bug #335601).
10909
10910 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
10911
10912         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
10913
10914         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
10915         64 bit platforms.
10916
10917         * mini-ia64.h mini-ia64.c: Add support for IMT.
10918
10919         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
10920         prolog. Fixes #331958.
10921
10922 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
10923
10924         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
10925
10926 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10927
10928         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
10929         trampoline.
10930
10931 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10932
10933         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
10934         trampoline.
10935
10936 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
10937
10938         * mini-x86.c, mini-x86.h: x86 support for the common vtable
10939         trampoline.
10940
10941 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10942
10943         * mini-trampolines.c: changed the magic rampoline to understand
10944         the common vtable trampoline method: the method to invoke is
10945         determined by the vtable displacement of the call.
10946
10947 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10948
10949         * mini.c, mini.h: register the common vtable trampoline if the
10950         architecture supports it.
10951
10952 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10953
10954         * cpu-amd64.md: use the correct max length for tls_get.
10955
10956 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
10957
10958         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
10959         CEE_STELEM_ANY. Fixes #333696.
10960
10961 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10962
10963         * exceptions-x86.c: provide more graceful handling of the case where
10964         we followed a bogus function pointer from managed code (bug #332866).
10965
10966 2007-10-11  Mark Probst  <mark.probst@gmail.com>
10967
10968         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
10969         replaces the generic_shared flag and will carry more information
10970         in the future.
10971
10972         * generic-sharing.c: Added mini_type_stack_size() which allows
10973         allows open types if given a generic sharing context.
10974         mini_get_basic_type_from_generic() takes a
10975         MonoGenericSharingContext* instead of a MonoCompile* now.
10976
10977         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
10978         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
10979         mini-sparc.c, mini-x86.c: Trivial changes required by the two
10980         changes above.  Just passing arguments through to the right
10981         places.
10982
10983 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10984
10985         * mini-arm.c: unify the call emission to emit_code_seq().
10986
10987 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
10988
10989         * tramp-arm.c: reduced the trampoline size.
10990
10991 2007-10-10  Mark Probst  <mark.probst@gmail.com>
10992
10993         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
10994         variable handling out of arch-specific code.
10995
10996 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
10997
10998         * mini-arm.c: implemented fast delegate dispatch.
10999
11000 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11001
11002         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
11003         that fp elimination is turned off if the space required by locals is too
11004         big. Fixes #331958.
11005
11006 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11007
11008         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
11009         ARM to the new style trampoline.
11010
11011 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11012
11013         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
11014
11015         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
11016
11017 2007-10-09  Martin Baulig  <martin@ximian.com>
11018
11019         * debug-debugger.h
11020         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
11021         `field_info_offset_offset'.     
11022
11023 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
11024
11025         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
11026         removed more internal usage of the r11 register and made it available
11027         to the register allocator.
11028
11029 2007-10-08  Mark Probst  <mark.probst@gmail.com>
11030
11031         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
11032         when sharing generics and treat type variables as references.
11033
11034 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11035
11036         * mini-ppc.c: started removing the internal uses of register r11
11037         to eventually allow the register allocator to manage it as an
11038         additional available register.
11039
11040 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11041
11042         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
11043
11044 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
11045
11046         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
11047         specific trampolines as they are not performance critical as a jump
11048         target (maybe align as before only for AOT code?). This saves about
11049         200 KB of native code on x86 for monodevelop startup.
11050
11051 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11052
11053         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
11054         monodevelop startup.
11055
11056 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
11057
11058         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
11059
11060         * mini-sparc.h mini-sparc.c: Implement IMT support.
11061
11062         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
11063         its smaller and doesn't clobber sparc_g1.
11064
11065         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
11066
11067 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11068
11069         * mini-ppc.c: optimized the size of the IMT thunks a bit.
11070
11071 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11072
11073         * mini-ppc.c: implemented fast delegate invocation.
11074
11075 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11076
11077         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
11078
11079 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11080
11081         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
11082         code to the new style trampoline in preparation for IMT support.
11083
11084 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
11085
11086         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
11087         systems already. This also reduces the specific trampiline sizes and
11088         prepares for the use of r12 as the IMT identifier register.
11089
11090 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11091
11092         * mini-mips.h: endianess fix (simplified from a patch by
11093         Thomas Kunze <thommy@tabao.de>, bug #323737).
11094
11095 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11096
11097         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
11098         to access ucontext fields and enable netbsd support
11099         (partially from Magnus Henoch <mange@freemail.hu>).
11100
11101 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11102
11103         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
11104         use the preprocessor from the CPP env var if it is set.
11105
11106 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11107
11108         * mini-trampolines.c: fixed an assertion and moved it earlier in the
11109         code, before interface_offset gets used.
11110
11111 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
11112
11113         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
11114         mono_class_setup_vtable () before accessing klass->vtable.
11115
11116 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
11117
11118         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
11119         hackish.
11120
11121 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11122
11123         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
11124         IMT slots (this saves hundreds of KB of memory in programs like
11125         IronPython and Monodevelop).
11126
11127 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11128
11129         * mini.c: print the delegate counter.
11130
11131 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
11132
11133         * mini-x86.c: make it easier to enable the debugging code for IMT
11134         slots.
11135
11136 2007-09-28  Martin Baulig  <martin@ximian.com>
11137
11138         * debug-debugger.h
11139         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
11140         `mono_method_klass_offset' and `mono_method_token_offset'.
11141
11142 2007-09-20  Mark Probst  <mark.probst@gmail.com>
11143
11144         * mini.c: First generics sharing implementation.  Can only share
11145         in very simple cases.  If sharing doesn't work it falls back to
11146         dedicated compilation.
11147
11148         * mini.h: Flag in MonoCompile to specify whether generic
11149         compilation is shared.  Flags enum for marking which generic inst
11150         of a context is used.  Prototypes for helper functions.
11151
11152         * generic-sharing.c: Helper functions for generic method sharing.
11153
11154         * optflags-def.h: Optimization flag (gshared) for enabling generic
11155         method sharing added.
11156
11157         * Makefile.am: generic-sharing.c added.
11158
11159 2007-09-19 Daniel Nauck <dna@mono-project.de>
11160
11161         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
11162
11163 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
11164         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
11165         fixes bug 325507.
11166
11167 2007-09-19  Martin Baulig  <martin@ximian.com>
11168
11169         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
11170         mono_debug_cleanup() is now part of mono_cleanup().
11171
11172 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
11173
11174         * driver.c (mono_main): Fix a warning.
11175
11176 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
11177
11178         * aot-compiler.c: Optimize various parts when processing large assemblies.
11179         Fixes ##325568.
11180
11181         * mini.c (mono_patch_info_hash): Improve hash function.
11182
11183 2007-09-14  Jonathan Chambers <joncham@gmail.com>
11184
11185         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
11186         
11187         Code is contributed under MIT/X11 license.
11188
11189 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11190
11191         * mini.c (mini_init): Fix a leak.
11192
11193         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
11194
11195 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11196
11197         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
11198
11199 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11200
11201         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
11202
11203 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
11204
11205         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
11206         variance tests.
11207
11208         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
11209
11210         * mini.c (handle_alloc): Enable managed allocators in AOT code.
11211
11212         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
11213
11214         * aot-runtime.c (decode_patch_info): Ditto.
11215
11216 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11217
11218         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
11219         static case. Cache delegates in architecture specific code, 
11220         based on number of parameters.
11221         
11222         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
11223         in architecture specific code, based on number of parameters.
11224         
11225         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
11226         caching happen in architecture specific code now.
11227         
11228         Code is contributed under MIT/X11 license.
11229
11230 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11231
11232         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
11233         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
11234         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
11235
11236         Code is contributed under MIT/X11 license.
11237
11238 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11239         * mini.c: (mono_thread_abort) Fixed bug #82416.
11240
11241 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11242
11243         * mini.: hook the new managed GC allocation feature into the JIT.
11244
11245 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11246
11247         * mini.c: implementation for the new runtime tls opcode.
11248
11249 2007-09-11  Martin Baulig  <martin@ximian.com>
11250
11251         * debug-debugger.h
11252         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
11253         `mono_method_inflated_offset'.
11254
11255 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
11256
11257         * driver.c mini.h mini.c: Add a new devel command line option for injecting
11258         async exceptions into a method.
11259
11260         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
11261         purpose of testing whenever the unwinder works at every instruction.
11262
11263 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
11264
11265         * mini.c: check accessibility of method used in ldftn (fixes
11266         bug #82635).
11267
11268 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
11269
11270         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
11271
11272         * inssel.brg: Fix a warning.
11273
11274 2007-09-03  Martin Baulig  <martin@ximian.com>
11275
11276         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
11277         now takes the `main_method' as argument.
11278
11279 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
11280
11281         * cpu-sparc.md (endfilter): Add missing src1:i argument.
11282
11283 2007-08-30  Jonathan Chambers <joncham@gmail.com>
11284
11285         * driver.c: include the cil-coff.h header on Windows.
11286         
11287         Code is contributed under MIT/X11 license.
11288
11289 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11290
11291         * mini.c, driver.c: don't include the cil-coff.h header.
11292
11293 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11294
11295         * mini.c: flag places that needs fixes fo soft-float support.
11296
11297 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
11298
11299         * mini.h, inssel-float.brg: fix soft-float constant loads on big
11300         endian systems (partially from Dean Jenkins, bug #81924).
11301
11302 2007-08-28  Mark Probst  <mark.probst@gmail.com>
11303
11304         * mini.c (check_linkdemand): Remove embedded reference object in
11305         call to LinkDemandSecurityException.
11306         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
11307         with an IntPtr instead of a reference object.
11308
11309 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
11310
11311         * mini.c (handle_initobj): Handle alignment properly.
11312
11313         * inssel.brg (mini_emit_memset): Ditto. 
11314
11315         * inssel.brg (mini_emit_memcpy): Ditto. 
11316
11317         * inssel-sparc.brg: Ditto.              
11318
11319         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
11320
11321 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
11322
11323         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
11324         exceptions raised in unmanaged code. Fixes part of #82594.
11325
11326 2007-08-24  Mark Probst  <mark.probst@gmail.com>
11327
11328         * mini.c (mono_method_to_ir), declsec.c
11329         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
11330
11331 2007-08-22  Martin Baulig  <martin@ximian.com>
11332
11333         * debug-mini.h
11334         (MonoDebuggerThreadInfo): New typedef.
11335         (mono_debugger_thread_table): New global variable.
11336         (mono_debugger_thread_created): New public function.
11337         (mono_debugger_thread_cleanup): New public function.
11338
11339         * debug-debugger.h
11340         (MonoDebuggerInfo):
11341         - removed `get_current_thread' and `lookup_assembly'.
11342         - removed `data_table'.
11343         - added `thread_table'.
11344
11345         * mini.c
11346         (mono_thread_start_cb): Call mono_debugger_thread_created().
11347         (mono_thread_attach_cb): Likewise.
11348         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
11349         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
11350         initial domain.
11351
11352         * driver.c (mono_main): Move mono_debug_init() up, before calling
11353         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
11354
11355 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11356
11357         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
11358         together when passing several arguments of type double (gives a small
11359         speedup and saves a few bytes of generated code).
11360
11361 2007-08-20  Jb Evain  <jbevain@novell.com>
11362
11363         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
11364
11365 2007-08-20  Jb Evain  <jbevain@novell.com>
11366
11367         * mini.c (mono_method_to_ir): throw MethodAccessException
11368         and FieldAccessException instead of InvalidProgramException.
11369
11370 2007-08-20  Mark Probst  <mark.probst@gmail.com>
11371
11372         * mini.c: CoreCLR security checks.
11373
11374         * mini.h: Removed MonoSecurityMode (moved to
11375         metadata/security-manager.h) and mono_security_mode global var
11376         (replaced by set/get functions in security-manager.h).
11377
11378         * driver.c: Added "core-clr-test" security mode for testing.  Used
11379         set-function for setting security mode.
11380
11381 2007-08-17  Mark Probst  <mark.probst@gmail.com>
11382
11383         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
11384         the new jit_info_table.
11385
11386         * driver.c: Test code for the new jit_info_table (enabled by the
11387         define MONO_JIT_INFO_TABLE_TEST).
11388
11389 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
11390
11391         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11392         detection of call <REG> instruction sequence. Fixes build on freebsd.
11393
11394 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
11395
11396         * mini-exceptions.c: Fix a warning.
11397
11398 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
11399
11400         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
11401         stack overflow handling code on amd64 too.
11402
11403         * mini-exceptions.c (mono_setup_altstack): Make this use 
11404         mono_thread_get_stack_bounds ().
11405
11406         * mini-x86.h: Disable sigaltstack on solaris x86.
11407
11408 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
11409
11410         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
11411
11412 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
11413
11414         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
11415
11416 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
11417
11418         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
11419
11420         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
11421
11422 2007-08-03  Neale Ferguson <neale@sinenomine.net>
11423
11424         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
11425         due to alignment.
11426
11427 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11428
11429         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
11430         to be emitted (bug #82281).
11431
11432 2007-08-01  Martin Baulig  <martin@ximian.com>
11433
11434         Merged the `debugger-dublin' branch.
11435
11436         * debug-debugger.h (MonoDebuggerInfo):
11437         Removed the `old_*' compatibility entries.
11438         Added `debugger_version' and `data_table'.
11439         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
11440         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
11441
11442         * debug-mini.c
11443         (MiniDebugMethodBreakpointInfo): Add `address_list'.
11444         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
11445         instead of a `gconstpointer'.
11446         (mono_debugger_insert_method_breakpoint): Return a
11447         `MonoDebugMethodAddressList *'.
11448
11449 2007-06-28  Martin Baulig  <martin@ximian.com>
11450
11451         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
11452
11453 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
11454
11455         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
11456         __builtin_frame_address () since it is broken on older gcc versions.
11457
11458 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11459
11460         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
11461         on the stack overflow handling and made the managed stack overflows
11462         catchable in most cases using soft guard pages.
11463         * exceptions-x86.c: added code to restore the protection in the soft
11464         guard pages at the end of exception handling.
11465
11466 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
11467
11468         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
11469
11470 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11471
11472         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
11473         exception handling.
11474
11475 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11476
11477         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
11478         signal handling support until it has been ported to the new mechanism.
11479         * mini.c: fixed stack overflow detection and use the new
11480         architecture code  to handle signals on the altstack.
11481
11482 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
11483
11484         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
11485         stack overflows on the alt stack.
11486
11487 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
11488
11489         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
11490         stack overflows on the alt stack.
11491
11492 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
11493
11494         * exceptions-ppc.c: cleanup preparing for altstack support.
11495
11496 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
11497
11498         * exceptions-arm.c: cleanup preparing for altstack support.
11499
11500 2007-07-27  Mark Probst  <mark.probst@gmail.com>
11501
11502         * mini.c (print_jit_stats): Output hazard pointer stats.
11503
11504 2007-07-26  Mark Probst  <mark.probst@gmail.com>
11505
11506         * driver.c, mini.c: Replaced security mode flags with a single
11507         enum variable.
11508
11509 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11510
11511         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
11512
11513 2007-07-25  Mark Probst  <mark.probst@gmail.com>
11514
11515         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
11516         (which doesn't do anything yet) for activating Core CLR
11517         (Silverlight) security.
11518
11519 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
11520
11521         * mini-codegen.c: work around a possible gcc bug on arm.
11522
11523 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11524
11525         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
11526         message for platforms that don't support AOT compilation.
11527
11528 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
11529
11530         * mini.h, mini.c, driver.c: temporary smcs hack.
11531
11532 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
11533
11534         * mini-arm.h, mini-arm.c: arm EABI fixes.
11535
11536 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
11537
11538         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
11539         case.
11540
11541         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
11542         trampolines taking a method argument.
11543
11544         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
11545
11546         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
11547         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
11548
11549         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
11550         JIT compilation throws an exception. Fixes #82050.
11551
11552 2007-07-19  Mark Probst  <mark.probst@gmail.com>
11553
11554         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
11555         with the MONO_EXCEPTION_ defines.
11556
11557 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
11558
11559         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
11560         #82117.
11561         
11562         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
11563         the cause of an assertion.
11564
11565 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
11566
11567         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
11568         removed.
11569
11570 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
11571
11572         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
11573         assert. Should fix #82103.
11574
11575 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
11576
11577         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
11578         here too. Fixes #82095.
11579
11580         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
11581         addresses.
11582
11583         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
11584
11585         * mini-amd64.h: Enable IMT for amd64.
11586         
11587         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
11588
11589 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
11590
11591         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
11592
11593 2007-07-12  Mark Probst  <mark.probst@gmail.com>
11594
11595         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
11596         as soon as check_linkdemand sets an exception_type.
11597
11598 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11599
11600         * mini-x86.c: fixed offsets for IMT call sequence.
11601         * mini-x86.h: enable IMT again.
11602
11603 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
11604
11605         * trace.c (mono_trace_enter_method): Decode MonoType too.
11606
11607         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
11608
11609         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
11610
11611         * mini-amd64.c: Add preliminary IMT implementation.
11612         
11613 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11614
11615         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
11616         understand the new IMT-base interface invocation (thanks to
11617         Daniel Nauck for the report and the remote debugging session).
11618
11619 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11620
11621         * mini-x86.c: size and speed optimizations for the IMT bsearch.
11622
11623 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
11624
11625         * Makefile.am (aotcheck): Make this actually use the AOTed code.
11626
11627 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
11628
11629         * mini-trampolines.c: implement AOT IMT support.
11630         * mini-x86.h: enable IMT support for wider testing.
11631
11632 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11633
11634         * inssel.brg (emit_imt_argument): Add aot support here.
11635
11636         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
11637
11638 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11639
11640         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
11641         of the IMT implementation, partially from massi, with my
11642         implementation of the bsearch sequence. Disabled by default until
11643         the AOT code is implemented.
11644
11645 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11646
11647         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
11648
11649         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
11650
11651 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11652
11653         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
11654         arch-independent IMT JIT code from Massimiliano
11655         Mantione (massi@ximian.com) with small cleanups from me.
11656
11657 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
11658
11659         * Makefile.am: fix svn invocation to get the svn revision to be
11660         independent of the local language (build fix).
11661
11662 2007-07-09  Mark Probst  <mark.probst@gmail.com>
11663
11664         * mini.c (inline_method): Reset cfg->exception_type if the
11665         inlining is aborted.  Fixes: 82049.
11666
11667 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
11668
11669         * mini.c: remove assert from exception handling code when exception_ptr
11670         is not set.
11671
11672 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11673
11674         * mini.c (mono_codegen): Add an assert.
11675
11676         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
11677         enter and leave code.
11678         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
11679
11680 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11681
11682         * mini-ppc.c: fixed memory corruption for localloc(0)
11683         (bug #81852).
11684
11685 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11686         
11687         * mini.c: Fix warnings.
11688
11689 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
11690
11691         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
11692         to emit better double->int conversions.
11693
11694 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11695
11696         * mini.c: the provided Min/Max optimizations are valid for unisgned
11697         ints.
11698
11699 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
11700
11701         * 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
11702
11703 2007-06-28  Miguel de Icaza  <miguel@novell.com>
11704
11705         * mini.c (mono_running_on_valgrind): Add support for reporting the
11706         method and  its boundaries to valgrind.
11707
11708 2007-06-28  Martin Baulig  <martin@ximian.com>
11709
11710         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
11711
11712 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
11713
11714         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
11715
11716         * generic.2.cs: Add new test case.
11717
11718 2007-06-25  Martin Baulig  <martin@ximian.com>
11719
11720         Merged the `debugger-dublin' branch.
11721
11722         * debug-mini.c
11723         (mono_debugger_insert_method_breakpoint): New public method.
11724         (mono_debugger_remove_method_breakpoint): Likewise.
11725         (mono_debugger_check_breakpoints): New static method.
11726         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
11727
11728         * debug-debugger.h (MonoDebuggerInfo):
11729         Renamed (to keep backward compatibility in the vtable):
11730         `insert_breakpoint' -> `old_insert_breakpoint'.
11731         `remove_breakpoint' -> `old_remove_breakpoint'.
11732         `create_string' -> `old_create_string'.
11733         `lookup_class' -> `old_lookup_class'.
11734         `lookup_type' -> removed; changed into a dummy field.
11735         `lookup_assembly' -> `old_lookup_assembly'.
11736         Added (same functionality, but different signature):
11737         `create_string', `lookup_class', `lookup_assembly'
11738         Added new:
11739         `get_method_addr_or_bpt', `remove_method_breakpoint',
11740         `runtime_class_init'.
11741
11742         * debug-debugger.c: Merged the `debugger-dublin' branch.
11743
11744 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
11745
11746         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
11747         well.
11748         (peephole_pass): Likewise.
11749
11750 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
11751
11752         * driver.c: hopefully make setaffinity work also for ancient
11753         versions of linux.
11754
11755 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
11756
11757         * driver.c : win32 build fix.
11758
11759 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11760
11761         * driver.c: check for the MONO_NO_SMP env var and bind to a single
11762         processor if it is set.
11763
11764 2007-06-21  Martin Baulig  <martin@ximian.com>
11765
11766         * debug-mini.h: New file.
11767
11768         * debug-mini.c
11769         (mono_debugger_insert_breakpoint_full): Moved here from
11770         ../metadata/mono-debug-debugger.c.
11771         (mono_debugger_remove_breakpoint): Likewise.
11772         (mono_debugger_breakpoint_callback): Likewise.
11773
11774 2007-06-15  Raja R Harinath  <rharinath@novell.com>
11775
11776         * jit-icalls.c (mono_helper_compile_generic_method): Update to
11777         changes in MonoGenericClass.
11778
11779 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
11780
11781         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
11782
11783 2007-06-14  Raja R Harinath  <rharinath@novell.com>
11784
11785         * jit-icalls.c (mono_helper_compile_generic_method): Update to
11786         removal of MonoGenericMethod.
11787
11788 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11789
11790         * mini-exceptions.c: hooks for the exception events profiling API.
11791
11792 2007-06-14  Randolph Chung  <tausq@debian.org>
11793
11794         * Makefile.ma: Add hppa target.
11795         * mini-arch.h: Include mini-hppa.h
11796         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
11797         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
11798         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11799
11800 2007-06-14  Randolph Chung  <tausq@debian.org>
11801
11802         * inssel.brg: Add rules for "chained" compare-branch operations so that
11803         a single compare op can affect multiple branches.  Adjust cost for
11804         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
11805         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
11806         cost for some rules so that they can more easily be overridden by
11807         per-arch rules (with fixes from lupus).
11808         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11809
11810 2007-06-13  Randolph Chung  <tausq@debian.org>
11811
11812         * mini-ops.h: Reorder branch ops so that they match the order of the
11813         corresponding CEE_* ops.  The code expects them this way.
11814         Add new ops for HPPA target.
11815         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11816
11817 2007-06-13  Randolph Chung  <tausq@debian.org>
11818
11819         * mini-exceptions.c: Handle cases where the stack grows towards
11820         larger addresses.
11821         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11822
11823 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11824
11825         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
11826         counter.
11827         * driver.c: explain where a non-matching corlib is found.
11828
11829 2007-06-13  Mark Probst  <mark.probst@gmail.com>
11830
11831         * mini.c (print_jit_stats): Output dynamic code allocation stats.
11832
11833 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
11834
11835         * mini-exceptions.c: Generate a method profile leave event during
11836         an exception to ensure that the profiler gets notified.
11837
11838 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
11839
11840         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
11841         branch.
11842
11843         * cpu-amd64.md: Add long_and/or/xor opcodes.
11844
11845 2007-06-06  Wade Berrier  <wberrier@novell.com>
11846
11847         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
11848         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
11849         length of instruction shr_imm (expected 8, got 10)
11850
11851 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
11852
11853         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
11854
11855 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11856
11857         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11858         MonoInternalHashTable again (fixed bug in the internal hash table
11859         code).
11860
11861 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11862
11863         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
11864         Have to figure out what makes it crash the SWF regression.
11865
11866 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
11867
11868         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
11869
11870 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11871
11872         * mini.c: optimize out the type check when storing null in a
11873         reference array.
11874
11875 2007-06-04  Mark Probst  <mark.probst@gmail.com>
11876
11877         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11878         MonoInternalHashTable.
11879
11880 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
11881
11882         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
11883         signed integer methods.
11884
11885 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11886
11887         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
11888         permanently since the current approach doesn't work.
11889
11890 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11891
11892         * inssel.brg (stmt): Only call delegate->invoke_impl if 
11893         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
11894
11895 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11896
11897         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
11898         the sreg2==rdx case.
11899         
11900         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
11901         account if it contains a rex prefix.
11902         (peephole_pass): Handle OP_FMOVE as well.
11903
11904 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11905
11906         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
11907         as it causes regressions.
11908
11909 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
11910
11911         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
11912         static case as well.
11913
11914         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
11915
11916         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11917         (mono_arch_get_this_arg_from_call): Ditto.
11918
11919         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
11920
11921         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
11922         invoke_impl field.
11923
11924         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11925         (mono_arch_get_this_arg_from_call): Ditto.
11926
11927         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
11928         
11929         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
11930         try to create optimized invoke code and use that for further invocations. 
11931         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
11932
11933         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
11934
11935 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
11936
11937         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
11938         sealed classes or methods.
11939         *devirtualization.cs: tests for the new optimization
11940
11941 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
11942
11943         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
11944         by the update_volatile () function.
11945
11946 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
11947
11948         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
11949         require it.
11950
11951         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
11952
11953 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
11954
11955         * mini.c: Add configure checks for header files.
11956         * mini-x86.c: Add configure checks for header files.
11957         * trace.c: Add configure checks for header files.
11958         * aot-runtime.c: Add configure checks for header files.
11959         * aot-compiler.c: Add configure checks for header files.
11960         * driver.c: Add configure checks for header files.
11961         * mini-codegen.c: Add configure checks for header files.
11962         
11963         Code is contributed under MIT/X11 license.
11964
11965 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
11966
11967         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
11968         icompare_imm -128 + op_iclt. Fixes #81703.
11969
11970 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
11971
11972         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
11973
11974 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11975
11976         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
11977         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
11978         so that all isinst checks now use "interface_bitmap".
11979
11980 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
11981
11982         * cpu-amd64.md (jmp): Fix a warning.
11983
11984         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
11985
11986         * basic.cs: Add new regression test.
11987
11988         * basic.cs: Remove test which is now in basic-long.cs.
11989
11990         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
11991
11992         * basic-long.cs: Add new test.
11993         
11994 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
11995
11996         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
11997
11998 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
11999
12000         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
12001
12002         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
12003         places.
12004         
12005         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
12006         throwing code a bit.
12007
12008         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
12009         the exception throwing code a bit.
12010
12011         * mini-x86.c (get_call_info): Allocate result from a mempool.
12012
12013 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
12014
12015         * aot-compiler.c (find_typespec_for_class): Fix the assert.
12016
12017         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
12018
12019         * mini.h (MonoCompile): Add 'token_info_hash' field.
12020
12021         * mini.c: Save token->method associations during compilation so the AOT 
12022         compiler can use it.
12023         
12024         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
12025         which reference generic classes and methods.
12026
12027 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
12028
12029         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
12030
12031         * aot-compiler.c (compile_method): Fix a typo in a comment.
12032
12033         * aot-runtime.c (decode_cached_class_info): Skip generic types.
12034
12035         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
12036         everything generic.
12037
12038         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
12039
12040 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
12041
12042         * mini.h (MonoCompile): Add 'args' field.
12043
12044         * mini.c (mono_compile_create_vars): Store variables representing the arguments
12045         into cfg->args.
12046
12047         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
12048
12049 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
12050
12051         * mini.c (mono_compile_get_interface_var): Remove this unused function.
12052
12053         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
12054
12055         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
12056         opcodes for some opcodes.
12057
12058         * mini.h *.brg *.c: Use the new opcodes.
12059
12060 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
12061
12062         * mini.h: Bumped aot revision.
12063
12064         * inssel.brg: modified code generation of type checks for interfaces
12065         to use the new "MonoClass.interface_bitmap" instead of the old
12066         "MonoClass.interface_offsets".
12067
12068 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
12069
12070         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
12071
12072 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
12073
12074         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
12075         64 bit platforms.
12076
12077 2007-04-27  Neale Ferguson <neale@sinenomine.net>
12078
12079         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
12080
12081 2007-04-27  Wade Berrier  <wberrier@novell.com>
12082
12083         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
12084         mini.h) to fix build.
12085
12086 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
12087
12088         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
12089         
12090         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
12091         causes the corlib unit tests to fail.
12092
12093 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
12094
12095         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
12096
12097         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
12098
12099         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
12100         opcodes to the comparison relations.
12101
12102         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
12103         opcodes to their types.
12104         
12105         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
12106
12107         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
12108         it in cfg->arch.cinfo.
12109
12110         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
12111
12112         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
12113         cfg->cil_offset_to_bb.
12114
12115 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
12116
12117         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
12118         created becase of initlocals.
12119
12120 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
12121
12122         * mini-alpha.c cpu-alpha.md: More alpha port work from 
12123         Sergey Tikhonov <tsv@solvo.ru>.
12124
12125 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
12126
12127         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
12128
12129 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
12130
12131         * cpu-s390.md (break): Correct the length of break instruction.
12132
12133 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12134
12135         * mini.c: fix a couple of soft-float issues and comments.
12136
12137 2007-04-15  Miguel de Icaza  <miguel@novell.com>
12138
12139         * trace.c (is_filenamechar): - is also a filename char.
12140
12141 2007-04-15  Neale Ferguson <neale@sinenomine.net>
12142
12143         * mini-s390.c: Correct checking for enum type in return value processing.
12144
12145 2007-04-14  Raja R Harinath  <rharinath@novell.com>
12146
12147         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
12148         (version.h): Makefile is in the build directory.
12149
12150 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
12151
12152         * mini-amd64.h: fix for assertion failure on Solaris/amd64
12153
12154 2007-04-11  Martin Baulig  <martin@ximian.com>
12155
12156         * mini.c (can_access_member): Fix handling of generic classes;
12157         fixes #81259.
12158
12159 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
12160
12161         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
12162
12163 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
12164
12165         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
12166
12167 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12168
12169         * mini-codegen.c: make sure the right spill amount is
12170         used for fp or integer registers (fixes the float_sub_spill() on ppc).
12171
12172 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
12173
12174         * mini-ppc.c: fixes for the fp_branch_nan test.
12175
12176 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
12177
12178         * basic.cs: Comment out new test which still fails on ia64.
12179
12180 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12181
12182         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
12183
12184 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12185
12186         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
12187
12188 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
12189
12190         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
12191         on 64 bit machines. Fixes part of #80738.
12192
12193         * basic.cs: Add regression test.
12194
12195 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12196
12197         * inssel.brg basic.cs: Revert previous change to fix build.
12198
12199         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
12200         platforms.
12201         
12202         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
12203
12204         * basic.cs: Add new regression test.
12205
12206 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12207
12208         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
12209         many arguments.
12210
12211 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12212
12213         * cpu-s390x.md: Correct length of break instruction.
12214
12215 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12216
12217         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
12218         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
12219
12220 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
12221
12222         * *.c: Begin WIN64 port.
12223         * mini.c:  Use correct register in profiler.
12224         * mini-amd64.c: No inline assembly on Win64.
12225         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
12226         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
12227         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
12228         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
12229         mono_arch_ip_from_context for Win64.
12230         
12231         Contributed under MIT/X11 license.
12232
12233 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
12234
12235         * exceptions-amd64.c (seh_handler): Ditto.
12236
12237         * exceptions-x86.c (seh_handler): Fix a memory leak.
12238
12239 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
12240
12241         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
12242         mini-s390x.c: fixed peephole optimizations to deal
12243         correctly with 1 and 2 byte reload avoidance.
12244
12245 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
12246
12247         * cpu-s390.md, cpu-s390x.md: update localloc length.
12248
12249 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12250
12251         * cpu-g4.md: added missing descriptions.
12252
12253 2007-03-14  Miguel de Icaza  <miguel@novell.com>
12254
12255         *  Makefile.am: Add support so the tail tests are not executed on
12256         PowerPC as that is a known limitation of the PowerPC port.
12257
12258 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12259
12260         * runmdesc.bat:  Move to msvc directory.
12261         
12262 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12263
12264         * runmdesc.bat:  Run executable that was produced by the current
12265         target and sent via an argument.
12266         
12267 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
12268
12269         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
12270         #81102.
12271
12272         * generics.2.cs: Add regression test.
12273
12274 2007-03-09  Wade berrier  <wberrier@novell.com>
12275
12276         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
12277
12278 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
12279
12280         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
12281         AOT code depends on this.
12282
12283 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
12284
12285         * mini.c: more precise tracking of types in the eval stack
12286         (part of fix for bug #81044).
12287
12288 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
12289
12290         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
12291
12292         * aot-compiler.c (encode_patch): Remove an obsolete comment.
12293
12294 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
12295
12296         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
12297
12298         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
12299
12300 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
12301
12302         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
12303         a pointer on 64 bit systems. Fixes #80190.
12304
12305         * iltests.il: Add new regression test.
12306
12307 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12308
12309         * mini.c: inline a constant for Environment.IsRunningOnWindows.
12310
12311 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
12312
12313         * trace.c: Remove an erroneous alignemnt check when tracing.
12314           Fixes --trace on OSX86.
12315
12316 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
12317
12318         * mini-$(arch).h: initialize SP in context for all the archs.
12319
12320 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
12321
12322         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
12323         regressions in the thread tests.
12324
12325 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
12326
12327         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
12328         - fixed implementation of LOCALLOC opcode
12329         - implemented non-un compare for floats
12330         - code cleanup
12331         - implementation of FDIV and CKFINITE opcodes
12332         - fixes for latest mono updates
12333         - additional arch opcodes
12334
12335 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12336
12337         * Makefile.am: simplify and merge rules for cross-compilation.
12338
12339 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
12340
12341         * local-propagation.c: Actually *apply* the fix for bug 80591...
12342
12343 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12344
12345         * mini-exceptions.c: backuot part of the last change
12346         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
12347
12348 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
12349         * inssel.brg: Fix bug 59286.
12350
12351
12352 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
12353
12354         * mini-exceptions.c: patch from Zoltan to correctly check for
12355         stack boundaries (using the stack register, not the frame register),
12356         fixes bugs #80724, #79717.
12357
12358 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
12359
12360         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
12361         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
12362
12363         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
12364         presence of frame pointer elimination.
12365
12366 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
12367         
12368         * mini-x86.h: NetBSD UCONTEX_REG defines.
12369
12370 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
12371
12372         * inssel-amd64.brg: Fix amd64 build.
12373
12374 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
12375
12376         * mini.h: remove extern to workaround what looks likes gcc bug 26905
12377         on amd64.
12378
12379 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
12380
12381         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
12382         ends.
12383
12384         * mini-<ARCH>.c: Use mono_is_regsize_var ().
12385
12386 2007-01-30 Mark Mason <mason@broadcom.com>
12387
12388            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
12389            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
12390            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
12391            beginning support for CEE_JMP [not quite working yet]
12392            * tramp-mips.c: LMF handling now works
12393         
12394 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
12397
12398         * mini.h (NULLIFY_INS): New macro.
12399
12400 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12401
12402         * mini.c: statistical profiler fix for windows, patch
12403         from Tor Lillqvist (tml@novell.com).
12404
12405 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
12406         * local-propagation.c: Fix bug 80591.
12407
12408 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
12409
12410         * Makefile.am: put back the --export-dynamic option as with
12411         the previous gmodule flags (thanks to Robert Jordan).
12412
12413 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
12414
12415         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
12416
12417         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
12418         simplify and speed up the local register allocator. Also rename some fields
12419         like iassign->vassign.
12420         
12421         * regalloc.c: Remove some functions which are no longer used since their
12422         inlined version is in mini-codegen.c.
12423         
12424         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
12425
12426         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
12427
12428 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
12429
12430         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
12431         narrowing. Fixes #80622.
12432
12433         * iltests.il: Add new regresssion test. 
12434
12435 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12436
12437         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
12438         debug-debugger.c, debug-debugger.h: warning fixes.
12439         * driver.c: updated copyright year and made it fit in one line.
12440
12441 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
12442
12443         * aot-runtime.c: updated to use mono-dl instead of gmodule.
12444
12445 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
12446
12447         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
12448
12449         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
12450
12451         * iltests.il: Add new test for bug #80507.
12452
12453 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12454
12455         * mini-arm.h: use soft-float also on vfp for now.
12456
12457 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
12458
12459         * mini.c: fix some more soft-float issues.
12460
12461 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
12462
12463         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
12464
12465 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
12466         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
12467         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
12468         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
12469
12470 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
12471
12472         * mini-arm.c: typo fix.
12473
12474 2007-01-23  Neale Ferguson <neale@sinenomine.net>
12475
12476         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
12477
12478 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
12479
12480         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
12481         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
12482
12483         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
12484
12485         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
12486
12487         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
12488         
12489         * inssel.brg: Fix a warning.
12490
12491         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
12492
12493         * abcremoval.c ssa.c ssapre.c: Update after this change.
12494         
12495         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
12496
12497         * dominators.c (df_set): Use mono_bitset_union_fast.    
12498
12499 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
12500
12501         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
12502         mini-codegen.c: reduce relocations and memory usage for the cpu
12503         description.
12504
12505 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
12506
12507         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
12508
12509         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
12510         to reduce their size.
12511
12512 2007-01-19 Mark Mason <mason@broadcom.com>
12513
12514         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
12515         * mini-mips.c: more configuration macros, support long conditional branches, additional
12516         asserts, fix epilog instrumentation.
12517         * mini-mips.h: use standard stack walk
12518         * cpu-mips.md: increase size of div, rem and conditional branches
12519         
12520 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
12521
12522         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
12523         to cpu spec data.
12524
12525 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
12526
12527         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
12528         (compile_method): Ditto.
12529
12530         * aot-runtime.c (decode_klass_info): Ditto.
12531
12532         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
12533         needed by the code generated by inssel.brg. Also fix a warning.
12534
12535 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
12536
12537         * mini.c: deal with enums that become genericinsts by
12538         being nested in a generic class (bug #79956).
12539
12540 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
12541
12542         * mini.c: match the generic definition to check for
12543         private access with generic types (bug #78431).
12544
12545 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
12546
12547         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
12548         to make life easier for people cross-compiling that insist on not
12549         using scratchbox.
12550
12551 2007-01-17 Mark Mason <mason@broadcom.com>
12552
12553         * inssel-long.brg: patch to deal with mips missing flags
12554         * inssel-long32-mips.brg: implement overflow checks
12555         * insset-mips.brg: implement overflow checks
12556         * mini-mips.h: implement conditional exception handling
12557         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
12558           Remove unused code, minor cleanups.
12559         * exceptions-mips.c: minor cleanups
12560         * mini-ops.h: add mips conditional exception ops
12561         * cpu-mips.md: add mips conditional exception ops
12562
12563         
12564 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
12565
12566         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
12567         to deal with mips missing of flags.
12568
12569 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
12570
12571         * exceptions-ppc.c: execute fault handlers.
12572
12573 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
12574
12575         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
12576
12577 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12578
12579         * mini.c: handle also floating point values in initialize_array.
12580
12581 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
12582
12583         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
12584         array initialization and make it conditional on the intrins option.
12585
12586 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12587
12588         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
12589         relocations and put the patch info names close to the enum definition.
12590
12591 2007-01-15 Mark Mason <mason@broadcom.com>
12592
12593         * basic.cs, exceptions.cs: break up large tests to increase debugability.
12594
12595 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12596
12597         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
12598
12599 2007-01-12  Raja R Harinath  <rharinath@novell.com>
12600
12601         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
12602
12603 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
12604
12605         * Makefile.am: distribute the mips sources.
12606
12607 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12608
12609         * mini-codegen.h: handle bug #80489 here, by excluding ecx
12610         directly.
12611
12612 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
12613
12614         * cpu-x86.md: back out for now as this triggers other regressions.
12615
12616 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12617
12618         * cpu-x86.md: force src1 and dest regpair for long shift instructions
12619         to eax:edx, so ecx can't get allocated to them (bug #80489).
12620
12621 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
12622
12623         * mini.c, mini-exceptions.c: enabled running fault handlers
12624         (bug #80469).
12625
12626 2007-01-03  Miguel de Icaza  <miguel@novell.com>
12627
12628         * driver.c: If nothing fail, do not use the string "failed",
12629         because it makes it very annoying to view test result logs on the
12630         web. 
12631
12632 2006-12-30  Miguel de Icaza  <miguel@novell.com>
12633
12634         * debug-debugger.c (mono_debugger_main): Rename "main" to
12635         "main_method" to prevent a warning.
12636
12637         Remove a warning for unused field.
12638
12639 2006-12-28  Martin Baulig  <martin@ximian.com>
12640
12641         * debug-debugger.c
12642         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
12643
12644 2006-12-22  Martin Baulig  <martin@ximian.com>
12645
12646         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
12647         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
12648         seperate `.mdb_debug_info' section, so we can access it from the
12649         debugger even if the binary is stripped.
12650
12651         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
12652         from the `.mdb_debug_info' here to prevent the linker from
12653         removing that section.
12654
12655         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
12656         mdb-debug-info64.s.
12657
12658 2006-12-19  Robert Jordan  <robertj@gmx.net>
12659
12660         * mini-x86: enable the code to return small structures in
12661         registers for FreeBSD as well. Fixes bug #80278.
12662         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
12663
12664 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12665
12666         * mini-x86.c: align the stack when calling the profiler
12667         function instrumenting the prolog (on OSX).
12668
12669 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12670
12671         * mini.c: emit a break opcode where Debugger.Break () is called.
12672
12673 2006-12-13  Miguel de Icaza  <miguel@novell.com>
12674
12675         * mini.c (mono_method_to_ir): Provide useful information on this
12676         assert, to prevent others from debugging like I did.
12677
12678 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
12679
12680         * mini.c: enable code which was incorrectly commented
12681         (bug #80235).
12682
12683 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
12684
12685         * mini-x86.c: enable on OSX, too, the code to return small
12686         structures in registers.
12687
12688 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12689
12690         * mini-x86.c: remove the use of the dynamic code manager here, too.
12691
12692 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12693
12694         * mini.h, debug-debugger.c, tramp-*.c: fixed 
12695         mono_debugger_create_notification_function() to use
12696         mono_global_codeman_reserve () instead of a dynamic code manager.
12697
12698 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
12699
12700         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
12701         ves_array_element_address() jit icall and use a generated
12702         managed method instead (which is about 4 times faster for a rank 3
12703         array access).
12704
12705 2006-11-29  Mark Mason  <mason@broadcom.com>
12706
12707         * basic-calls.cs: additional tests for passing
12708         structures as function arguments.
12709
12710 2006-11-29  Mark Mason  <mason@broadcom.com>
12711
12712         * mini-mips.h: disable custom exception handling
12713         * mini-mips.c: throw/rethrow should use jalr to call
12714         exception stubs.  Fixed bug with passing structures
12715         by value. More support for tracing floating point
12716         functions.
12717
12718 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12719
12720         * mini.c: fixed typo in the soft-float ldind.r4 handling
12721         (bug #80086).
12722
12723 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
12724
12725         * mini.c, mini.h, driver.c: added --runtime command line
12726         option to select a different runtime than the autodetected one.
12727         * jit.h: added API for embedders to initialize with a specific
12728         runtime version.
12729
12730 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12731
12732         * mini.c: handle also boxing of r4 values (bug #80024).
12733
12734 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12735
12736         * mini-ppc.c: force indirect calls until we reserve
12737         enough address space for all the generated code.
12738
12739 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
12740
12741         * exceptions-arm.c: workaround bugs in the libc definition
12742         of struct ucontext.
12743
12744 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12745
12746         * inssel.brg: fixes from me and Mark Mason.
12747
12748 2006-11-23  Dick Porter  <dick@ximian.com>
12749
12750         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
12751         semaphore display now we've fixed the initial value
12752
12753 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12754
12755         * inssel.brg: partially revert the last change to fix the build.
12756
12757 2006-11-21  Mark Mason  <mason@broadcom.com>
12758
12759         * inssel.brg: Add and use compare-and-branch macros to support
12760         architectures that do not have condition code registers (ie. MIPS).
12761         * *-mips.{c,brg,md}: Fix copyright statements
12762
12763 2006-11-20  Mark Mason  <mason@broadcom.com>
12764
12765         * Makefile.am: remove mini-codegen.c from list of MIPS sources
12766         * mini.c: Allow GET_CONTEXT to be specified by the arch port
12767         * mini.h: Added declaration for mono_print_ins()
12768         * mini-codegen.c: added ins_spec initializer for MIPS
12769         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
12770         vreg to be virtual and hreg to be non-virtual.
12771         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
12772         is not yet working/implemented correctly.
12773         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
12774         non-static, fixup calls to print_ins() from other parts in the file.
12775
12776 2006-11-20  Mark Mason  <mason@broadcom.com>
12777
12778         * basic-calls.cs: added tests for passing structures as arguments
12779         to calls.
12780
12781 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12782
12783         * inssel-long32.brg: optimize signed division by power of two.
12784
12785 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
12786
12787         * mini-arm.c: added support for interworking with thumb code
12788         (mono must be still be built using the ARM instruction encoding).
12789
12790 2006-11-19  Miguel de Icaza  <miguel@novell.com>
12791
12792         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
12793         verifier has different rules for it.   Fixes a few verifier issues
12794         in the test suite.
12795
12796         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
12797         at the end, so people know what happened.
12798
12799 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12800
12801         * brach-opts.c: in optimize_exception_target() make sure we
12802         are in a catch clause (fixes bug #79871).
12803
12804 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12805
12806         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
12807         more soft-float support fixes.
12808
12809 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
12810
12811         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
12812         that are passed half on the stack and half in registers.
12813
12814 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
12815
12816         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
12817         more mips integration work from Mark E Mason 
12818         <mark.e.mason@broadcom.com>.
12819
12820 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
12821
12822         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
12823         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
12824         tramp-mips.c: added sources for the mips port, not
12825         integrated in the build yet. Contributed by
12826         Mark E Mason <mark.e.mason@broadcom.com>.
12827
12828 2006-11-14  Neale Ferguson <neale@sinenomine.net>
12829
12830         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
12831
12832 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12833
12834         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
12835         put the soft-float rules in its own file since it seems to
12836         break s390 compilation.
12837
12838 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
12839
12840         * mini-arm.c: fixed wrnings.
12841
12842 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
12843
12844         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
12845         inssel-arm.brg: ARM support for soft-float.
12846
12847 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
12848
12849         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
12850         loads and stores of 32 bit fp values.
12851
12852 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
12853
12854         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
12855
12856         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
12857         works. Fixes #79852 and #79463.
12858
12859 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12860
12861         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
12862         more soft-float support WIP and fixes.
12863
12864 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
12865
12866         * mini-arm.c: some VFP updates.
12867
12868 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12869
12870         * mini-exceptions.c: 0 is a valid local var offset in some
12871         architectures, don't assert (bug #78508).
12872
12873 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
12874
12875         * exceptions-arm.c: fixed off by one error in stack walk code.
12876
12877 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
12878
12879         * mini.h, mini.c: more precise tracking of type load exceptions.
12880
12881 2006-11-03  Robert Jordan  <robertj@gmx.net>
12882
12883         * Makefile.am: [WIN32] Add monow.exe target.
12884         * driver.c: [WIN32] Don't detach the console when debugging.
12885         Fixes bug #79797.
12886         
12887 2006-10-30  Miguel de Icaza  <miguel@novell.com>
12888
12889         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
12890
12891 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12892
12893         * aot-compiler.c (emit_method_info): Add a case missed earlier.
12894
12895         * driver.c (mini_regression): Fix --regression with AOT.
12896
12897         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
12898
12899 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
12900
12901         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
12902
12903         * mini-sparc.h: Don't use sigaction on sparc/linux.
12904
12905         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
12906
12907         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
12908
12909         * mini-exceptions.c: Add proper include files for getpid ().
12910
12911 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
12912
12913         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
12914         address instead of a MonoJitInfo* to avoid decoding the exception info for the
12915         method.
12916
12917         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
12918         name cache to reduce its size.
12919
12920         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
12921
12922 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12923
12924         * mini-x86.c: Save/restore the current LMF structure more efficiently using
12925         the mono_lmf TLS variable.
12926
12927         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
12928         trampoline lmf frames.  
12929
12930         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
12931
12932 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
12933
12934         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
12935         the mono_lmf TLS variable.
12936
12937         * mini-exceptions.c: Access the LMF structure through accessors.
12938
12939         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
12940         variable instead of in jit_tls->lmf.
12941
12942         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
12943         
12944         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
12945         trampoline lmf frames.
12946
12947         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
12948
12949 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12950
12951        * mini.c trace.c mini-x86.c: Revert these too.
12952         
12953        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
12954        signature change.
12955
12956 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
12957
12958         * genmdesc.c: removed now dead code.
12959
12960 2006-10-09  Robert Jordan <robertj@gmx.net>
12961
12962         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
12963
12964 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12965
12966         * mini.h: do not leave gaps in the opcode values.
12967
12968 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
12969
12970         * jit-icalls.h: flag functions as internal here, too.
12971
12972 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
12973
12974         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
12975         functions with the internal attribute.
12976
12977 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
12978
12979         * aot-compiler.c: fclose the file descriptor in the profile read loop.
12980
12981 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12982
12983         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
12984         for soft-float.
12985
12986 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12987
12988         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
12989         tail calls as on other platforms.
12990
12991         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
12992
12993         * iltests.il: Add a few tailcall tests.
12994
12995 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12996
12997         * driver.c: fix loop for old compilers (bug #79521).
12998
12999 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
13000
13001         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
13002
13003         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
13004
13005         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
13006         metadata without any code.
13007
13008         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
13009         more precise debugging information using gdb.
13010
13011 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
13012
13013         * inssel-ia64.brg: Make the helper methods static.
13014
13015 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13016
13017         * inssel-x86.brg: make the helper methods static.
13018
13019 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
13020
13021         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
13022
13023 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13024
13025         * mini.c: updates for monoburg changes.
13026         * inssel.brg: make a few helper functions static as they should.
13027
13028 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
13029
13030         * Makefile.am: Move mini-codegen.c to common_sources.
13031
13032 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13033
13034         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
13035         instructions.
13036         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
13037         mini-ppc.h: port to use the common local register allocator.
13038
13039 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13040
13041         * mini.h: Remove the comment too then.
13042
13043 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
13044
13045         * mini.h: put back backend.data which is to be used shortly and
13046         doesn't increase the size of MonoInst. If any 64 bit arch aligned
13047         pointers on 4 byte boundaries it'd have much bigger issues running
13048         and you can ifdef it out anyway.
13049
13050 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13051
13052         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
13053         MonoInst size by 4 bytes on 64 bit machines.
13054
13055 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
13056
13057         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
13058         replacement with more meaningful field names. Arch maintainers, please
13059         check the assigned names are good enough for your arch.
13060
13061 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13062
13063         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
13064         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
13065
13066 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13067
13068         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
13069         relocations and memory requirements, put the optimization flags
13070         definitions in their own file.
13071
13072 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
13073
13074         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
13075
13076         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
13077
13078 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
13079
13080         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
13081
13082 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
13083
13084         * inssel.brg: use the correct function to get the size of an item
13085         in an array, given an element class.
13086         * aot-compiler.c: do not access class->class_size directly.
13087
13088 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13089
13090         * mini.h, debug-mini.c: added a debugging function to print
13091         info about local variables and arguments in a jitted method.
13092
13093 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
13094
13095         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13096
13097         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
13098
13099 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13100
13101         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
13102         inner and outer loops when passing vtypes.
13103
13104 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
13105
13106         * mini-ppc.c: take into account the cpu errata for cache flushing
13107         which caused some random errors (bug #79381).
13108
13109 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13110
13111         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
13112         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
13113
13114 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
13115
13116         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
13117         loaded.
13118
13119         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
13120         freebsd ports tree.
13121
13122         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
13123         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
13124
13125         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
13126         displacement.
13127
13128 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
13129
13130         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
13131
13132 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
13133
13134         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
13135         macro does not have to be changed during debugging.
13136
13137         * 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>.
13138
13139         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
13140
13141         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
13142         
13143         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
13144         MONO_ARCH_NO_EMULATE_MUL is defined.
13145
13146         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
13147
13148         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
13149
13150         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
13151
13152         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
13153         
13154 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
13155
13156         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
13157         stuff to mini-exceptions.c where it is used.
13158
13159         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
13160         setup code, the real one is in mini-exceptions.c.
13161
13162         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
13163         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
13164         some changes from the freebsd ports tree.
13165
13166         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
13167         constants.
13168         
13169         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
13170
13171 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
13172
13173         * mini.c: on Linux, check for /proc to be mounted
13174         (bug# 79351, novell bug#201204).
13175
13176 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
13177
13178         * mini.c: handle cases where pthread_attr_getstack() behaves
13179         incorrectly (bug #78096).
13180
13181 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
13182
13183         * mini-arm.c: support larger stack frames (bug #79272).
13184
13185 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
13186
13187         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
13188
13189         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
13190         tokens.
13191
13192         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
13193         mono_class_from_name () to find a class from its name.
13194
13195         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
13196
13197 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
13198
13199         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
13200
13201 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
13202
13203         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
13204
13205 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
13206
13207         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
13208         callinfo->trampoline.
13209
13210         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
13211         fixes #79271.
13212         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
13213         future.
13214
13215 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
13216
13217         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
13218
13219 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
13220
13221         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
13222         stats.method_trampolines, it is already done by the generic trampoline code.
13223
13224         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
13225         
13226 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
13227
13228         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
13229
13230         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
13231
13232         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
13233
13234         * mini.c (print_jit_stats): Print mscorlib mempool size too.
13235         
13236         * mini.c (print_jit_stats): Print new stats.
13237
13238         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13239
13240 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
13241
13242         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
13243         Address on two dimensional arrays. Fixes #78729.
13244
13245         * mini.h (MonoCompile): Add a 'skip_visibility' field.
13246
13247         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
13248         a method.
13249
13250         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
13251
13252         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
13253         #79130.
13254         
13255         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
13256         a race condition.
13257         (mini_get_ldelema_ins): Ditto.
13258
13259 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
13260
13261         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
13262         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
13263         Fixes #79213.
13264
13265 2006-08-29 Neale Ferguson <neale@sinenomine.net>
13266
13267         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
13268         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
13269
13270         * exceptions-s390x.c: Cosmetic change.
13271
13272         * tramp-s390.c: Fix warning.
13273
13274         * cpu-s390.md: Correct length of mul_imm.
13275
13276 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13277
13278         * aot-compiler.c: added binary writer with ELF backend
13279         implementation (only on Linux/x86 for now).
13280
13281 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13282
13283         * Makefile.am: Don't run net 2.0 AOT tests.
13284
13285         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
13286         (mono_compile_assembly): Skip net 2.0 assemblies as well.
13287
13288         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
13289
13290 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13291
13292         * aot-compiler.c: simplified and refactored the asm-writing code
13293         to allow different backends.
13294
13295 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13296
13297         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
13298
13299         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
13300         little. Share patches of type TYPE_FROM_HANDLE as well.
13301
13302         * mini.c (mono_patch_info_equal): New helper function.
13303         (mono_patch_info_hash): Ditto.
13304
13305         * aot-compiler.c (emit_method_code): Fix s390 build.
13306
13307         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
13308         is not handled because it is stored as a flag and not as a type ctor. Fixes
13309         #79016.
13310
13311 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
13312
13313         * aot-compiler.c: Fix computation of GOT slot statistics.
13314         
13315         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
13316         Also remove support for not PIC AOT.
13317
13318         * mini.h: Bump AOT file format version.
13319
13320         * objects.cs: Add a test for #78990.
13321
13322         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
13323         (peter.dettman@iinet.net.au). Fixes #79087.
13324
13325         * basic-long.cs: Add a test for the above.
13326
13327 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
13328
13329         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
13330         
13331         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
13332         code somewhat.
13333
13334 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
13335
13336         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
13337         exceptions.
13338
13339 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
13340
13341         * mini.c: Don't verify COM proxy invoke calls
13342         
13343
13344 2006-08-10  Dick Porter  <dick@ximian.com>
13345
13346         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
13347         which process is holding semaphores locked.
13348
13349 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
13350
13351         * mini-ia64.c mini-amd64.c: Fix #79027.
13352
13353         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
13354
13355         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
13356
13357         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
13358         implicit arguments in a vararg call. Fixes #79027.
13359
13360 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
13361
13362         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
13363         (mono_get_array_new_va_signature): Ditto.
13364
13365 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
13366
13367         * aot-runtime.c: Call init_plt lazily.
13368
13369         * inssel-long.brg: Fix unsigned long->int conversion.
13370
13371         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
13372
13373         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
13374         that most data is now in the .rss/.data section.
13375
13376 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
13377
13378         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
13379
13380         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
13381
13382         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
13383
13384         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
13385
13386         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
13387         virtual call. Fixes #79010.
13388
13389         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
13390         and use the result as the this argument in the real call.
13391
13392         * generics.2.cs: Add a new test for #79010.
13393         
13394 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
13395
13396         * mini-x86.c: Fix a warning.
13397
13398         * aot-compiler.c: Add a bunch of statistics.
13399
13400         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
13401
13402 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
13403
13404         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
13405
13406 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
13407
13408         * 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>.
13409
13410 2006-07-13  Miguel de Icaza  <miguel@novell.com>
13411
13412         * mini.c (mono_method_to_ir): Obtain the original method in the
13413         CIL stream and use this to perform validation.
13414
13415         Fixed: #78816
13416
13417 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
13418
13419         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
13420         (mono_arch_call_opcode): Ditto.
13421
13422         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
13423         #78826.
13424
13425         * mini.c (mono_patch_info_dup_mp): New helper function.
13426         
13427         * aot-compiler.c (compile_method): Fix some of the memory allocated during
13428         compilation. Fixes #78827.
13429
13430 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
13431
13432         * declsec.c: Use original security informations for
13433           MONO_WRAPPER_MANAGED_TO_MANAGED.
13434
13435 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
13436
13437         * mini.c: Allow Com Interop methods/classes and
13438         don't verify COM wrapper calls
13439         
13440
13441 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
13442
13443         * inssel-long32.brg: Fix long->i4 checked conversion.
13444
13445         * exceptions.cs: Add a test for the above.
13446
13447 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
13448
13449         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
13450
13451         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
13452         leaks.
13453
13454         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
13455         #78775.
13456
13457 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
13458
13459         * mini.c: Fix solaris/x86 exception handling.
13460
13461         * Makefile.am: Get rid of $(ICU_LIBS).
13462
13463 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
13464
13465         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
13466         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
13467         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
13468
13469         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
13470
13471         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
13472         this function causes a SIGSEGV.
13473
13474 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
13475
13476         * mini.c: Remove unused solaris/x86 includes.
13477
13478 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
13479
13480         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
13481
13482 2006-06-20  Jb Evain  <jbevain@gmail.com>
13483
13484         * cpu-g4.md: fix max length of start_handler instruction.
13485
13486 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
13487         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
13488
13489 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
13490         * ssa.c: Fixed bug 78653 for SSA based deadce.
13491         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
13492         MonoInst.flags, used in SSA based deadce.
13493         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
13494         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
13495
13496 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13497
13498         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
13499         it can end up using non executable memory on ppc64 systems
13500         running ppc32 userspace (fix from Johannes Berg).
13501
13502 2006-06-14  Dick Porter  <dick@ximian.com>
13503
13504         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
13505         4.1.1
13506
13507 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
13508         * mini.c: Made so that inline is locally disabled if it would
13509         trigger a .cctor, because too many apps depend on this behavior
13510         (which seems to be also the one of the MS CLR).
13511
13512 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
13513
13514         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
13515         No idea why this worked before.
13516
13517         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
13518         which branch to outer exception clauses since they could skip the
13519         inner finally clauses. Fixes #78633.
13520
13521         * exceptions.cs: Add a test for the above.
13522
13523         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
13524         Fixes #78629.
13525
13526         * iltests.il: Add a test for the above.
13527
13528 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
13529
13530         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
13531         after the end of a try bblock, to prevent asserts in mini_method_compile ().
13532
13533         * iltests.il: Add a test for the above.
13534
13535 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
13536
13537         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
13538         
13539         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
13540         methods as instrinsics.
13541
13542 2006-06-09  Wade Berrier <wberrier@novell.com>
13543
13544         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
13545         (simple-cee-ops.h ssapre-mini-ops.h)
13546
13547 2006-06-09  Neale Ferguson <neale@sinenomine.net>
13548
13549         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
13550         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
13551         instruction).
13552         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
13553         * cpu-s390x.md: Fix max. length values for a couple of instructions.
13554
13555 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13556
13557         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
13558
13559 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
13560
13561         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
13562         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
13563         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
13564         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
13565         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
13566         of opcodes, so that bug 78549 should not happen again.
13567         * ssapre.c: Updated to use the renamed files.
13568
13569 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
13570
13571         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
13572         in OP_ATOMIC_EXCHANGE_I4.
13573
13574 2006-06-07  Wade Berrier <wberrier@novell.com>
13575
13576         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
13577         in mono_debugger_create_notification_function)
13578
13579 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
13580
13581         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
13582         
13583         * mini.c (type_from_stack_type): Disable some changes which do not
13584         seem to work.
13585
13586         * driver.c: Reenable opts.
13587
13588         * mini.h (MonoStackSlot): New structure to keep track of the verification state
13589         of the evaluation stack.
13590         
13591         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
13592         evaluation stack trace at entry to the bblock.
13593
13594         * mini.c (merge_stacks): New function to perform verification of stack merges.
13595         Turned off by default.
13596
13597         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
13598         STACK_MP.
13599         
13600 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
13601
13602         * local-propagation.c: Fixed bug 78549.
13603
13604 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
13605
13606         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
13607
13608 2006-06-02  Miguel de Icaza  <miguel@novell.com>
13609
13610         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
13611         tramp-arm.c, tramp-ia64.c
13612         (mono_debugger_create_notification_function): Update signature to
13613         new signature and use new protocol for creating the notification
13614         function.  
13615
13616         Should fix the build.
13617
13618 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
13619
13620         * exceptions-ppc.c (mono_jit_walk_stack)
13621         (ves_icall_get_frame_info): Fix the build
13622
13623 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
13624
13625         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
13626
13627 2006-05-31  Raja R Harinath  <rharinath@novell.com>
13628
13629         * il2tests.2.il: New file for generics CIL tests.  Add test for
13630         #78019.
13631         * Makefile.am: Update.
13632
13633         Fix #78019
13634         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
13635         to nullable types.
13636
13637 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
13638
13639         * aliasing.c: Fixed bug 78311.
13640
13641 2006-05-29  Martin Baulig  <martin@ximian.com>
13642
13643         * mini-exceptions.c (mono_find_jit_info): When computing the
13644         native offset, check whether we're actually inside the method's
13645         code; call mono_debug_print_stack_frame() to format the frame.
13646         (ves_icall_System_Exception_get_trace): Call
13647         mono_debug_print_stack_frame() to format the stack frame.
13648         (ves_icall_get_trace): Update to the new debugging API.
13649         (mono_jit_walk_stack_from_ctx): Likewise.
13650         (ves_icall_get_frame_info): Likewise.
13651
13652         * mini.c (get_method_from_ip): Use the new debugging API.
13653         (mono_print_method_from_ip): Likewise.
13654
13655         * exceptions-ppc.c
13656         (mono_jit_walk_stack): Use the new debugging API.
13657         (ves_icall_get_frame_info): Likewise.   
13658
13659 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
13660
13661         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
13662
13663 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
13664
13665         * mini.c: Added "limitator" to inline for debugging.
13666
13667 2006-05-24  Martin Baulig  <martin@ximian.com>
13668
13669         * debug-debugger.c (mono_debugger_init): Create a private,
13670         malloc()-based code manager for the notification function and
13671         intentionally leak it on exit.  This fixes the crash-on-exit race
13672         condition.
13673
13674         * tramp-amd64.c
13675         (mono_debugger_create_notification_function): Added
13676         `MonoCodeManager *' argument.
13677
13678         * tramp-x86.c
13679         (mono_debugger_create_notification_function): Added
13680         `MonoCodeManager *' argument.
13681
13682 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
13683
13684         * aliasing.c: Fixed 64 bit issue.
13685         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
13686         default since all known bugs are fixed (one more time!).
13687
13688 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13689
13690         * mini.c: write barrier support.
13691
13692 2006-05-23  Martin Baulig  <martin@ximian.com>
13693
13694         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
13695         check at the top of the file.
13696
13697 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
13698
13699         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
13700         reverting changes without reason and without changelog entries.
13701
13702 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13703
13704         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
13705         to a few opcodes. Fixes #78439.
13706
13707         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
13708         consistency with other archs.
13709
13710         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
13711
13712 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
13713
13714         * debug-debugger.c: fix the build.
13715
13716 2006-05-17  Martin Baulig  <martin@ximian.com>
13717
13718         * debug-debugger.c
13719         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
13720         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
13721         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
13722         (debugger_attach): Call GC_mono_debugger_add_all_threads().
13723
13724 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13725
13726         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
13727
13728 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13729
13730         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
13731         MONO_TYPE_GENERICINST.
13732         
13733         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
13734         MONO_TYPE_GENERICINST.
13735
13736 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13737
13738         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
13739         #78325.
13740
13741 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
13744         mempool.
13745         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
13746
13747 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13748
13749         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
13750         mono_trace_cleanup ().
13751
13752         * iltests.il: Fix problem with the newly added test.
13753
13754         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
13755         due to register constraints, free up the previous hreg. Fixes #78314.
13756
13757         * iltests.il: Add new test for #78314.  
13758
13759         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
13760         Interlocked.Add. Fixes #78312.
13761
13762         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
13763         
13764 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13765
13766         * inssel.brg (mini_emit_virtual_call): Fix a warning.
13767
13768 2006-05-05  Martin Baulig  <martin@ximian.com>
13769
13770         * debug-mini.c (mono_debug_open_block): New method.
13771
13772         * mini-amd64.c
13773         (mono_arch_output_basic_block): Call mono_debug_open_block() at
13774         the beginning of each basic block.
13775
13776         * mini-x86.c
13777         (mono_arch_output_basic_block): Call mono_debug_open_block() at
13778         the beginning of each basic block.
13779
13780 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
13781
13782         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
13783         default until I understand why they break the build on amd64.
13784
13785 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13786
13787         * mini.c (mini_cleanup): Call mono_cleanup ().
13788
13789         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
13790         errors.
13791
13792 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
13793
13794         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
13795         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
13796         default since all known bugs are fixed, and I cannot reproduce bug
13797         77944... I'm asking Matt Hargett to test again after this commit.
13798
13799 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
13800
13801         * mini-codegen.c: Fixed typo that thrashed inline.
13802
13803 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
13804
13805         * dominators.c (compute_dominators): Avoid using a worklist since
13806         it is not correct in some cases. Instead, iterate over all bblocks as
13807         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
13808
13809 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13810
13811         * mini.c (mono_jit_compile_method_inner): Use
13812         mono_prepare_exception_from_error that resets the value
13813         internally.
13814
13815 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13816
13817         * mini.c: Move the mini_loader_error_to_exception to metadata. 
13818         
13819 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
13820
13821         * aliasing.c: Fixed bug 78210.
13822
13823 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
13824
13825         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
13826         default until all their problems (or the ones they trigger) are fixed.
13827
13828 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
13829
13830         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
13831         
13832         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
13833         as loaded only after resolving patches since that could invoke the same method.
13834
13835         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
13836
13837         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
13838         functions.
13839
13840         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
13841         AOT loader.
13842
13843         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
13844         stack.
13845
13846         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
13847         made from AOT code through the PLT table.
13848
13849         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
13850         holding the plt offset when a call is made to the aot plt trampoline.
13851         
13852 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13853
13854         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
13855         amd64 AOT support.
13856
13857         * Makefile.am (common_sources): Fix build breakage.
13858
13859         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
13860         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
13861         intra-assembly calls if possible.
13862         
13863         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
13864
13865         * mini-trampolines.c: Handle PLT entries.
13866
13867         * mini.c: Avoid creating a GOT var for calls.
13868
13869         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
13870         from mscorlib code.
13871
13872         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
13873         from mscorlib code.
13874
13875         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
13876         AOT code.       
13877
13878         * mini.h: Bump AOT file format version.
13879         
13880         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
13881         covers more cases.
13882
13883 2006-04-25  Martin Baulig  <martin@ximian.com>
13884
13885         * driver.c: Disable copyprop, consprop and inline when running
13886         inside the debugger.
13887
13888 2006-04-25  Martin Baulig  <martin@ximian.com>
13889
13890         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
13891         with `get_current_thread' and added `detach'.
13892         (MonoDebuggerMetadataInfo): Added `thread_size',
13893         `thread_tid_offset', `thread_stack_ptr_offset' and
13894         `thread_end_stack_offset'.
13895
13896 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13897
13898         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
13899         aot-runtime.c.
13900
13901         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
13902         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
13903
13904         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
13905
13906         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
13907
13908         * aot.c: Add support for ADJUSTED_IID.  
13909
13910 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13911
13912         * aot.c (emit_method_order): Don't align method_order_end.
13913
13914         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
13915         the interface ID changes.
13916
13917 2006-04-21  Dick Porter  <dick@ximian.com>
13918
13919         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
13920         cleaning up a thread.  Fixes the new part of bug 77470.
13921
13922 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
13923
13924         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
13925         to managed wrapper.
13926                      
13927 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13928
13929         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
13930         
13931         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
13932         SIGSEGV. Fixes #78072.
13933
13934         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
13935         unregister our SIGABRT handler.
13936
13937 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
13938
13939         * mini.c: Disabled inline where it can alter the call stack in a
13940         way visible from managed code.
13941         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
13942         default.
13943
13944 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
13945
13946         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
13947         on other platforms. Fixes #78089.
13948
13949 2006-04-13  Martin Baulig  <martin@ximian.com>
13950
13951         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
13952         determine whether we're inside the debugger.
13953
13954         * debug-debugger.h
13955         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
13956
13957 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13958
13959         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
13960         handler clauses. Fixes #78024.
13961
13962         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
13963         in the CALL_MEMBASE opcodes. Fixes #78088.
13964         (mono_arch_get_vcall_slot_addr): Ditto.
13965
13966 2006-04-10  Martin Baulig  <martin@ximian.com>
13967
13968         * debug-debugger.c: The thread handling code has now been moved
13969         into ../metadata/threads.c.
13970
13971 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13972
13973         * driver.c (mono_main): Fix --with-gc=none build.
13974
13975         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
13976         (mono_spillvar_offset_float): Ditto.
13977         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
13978         hreg, not when its !global, since on ia64, there is a third category: stacked
13979         registers.      
13980
13981 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
13982
13983         * mini.c: set MonoInst->klass for load field address and a few other
13984         places.
13985
13986 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13987
13988         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
13989
13990 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13991
13992         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
13993         the branch opt changes.
13994
13995 2006-04-06  Dick Porter  <dick@ximian.com>
13996
13997         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
13998         
13999         * wapihandles.c (mini_wapi_seminfo): 
14000         * driver.c (mono_main): Add semaphore info option
14001
14002 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
14003
14004         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
14005         branch optimization changes. Fixes #78009.
14006
14007 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14008
14009         * mini.c: ignore accessibility of methods in managed->native wrappers.
14010
14011 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
14012
14013         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
14014         
14015         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
14016
14017 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
14018
14019         * mini.c: Modify the branch optimizations to preserve the invariant that
14020         the entries inside the in_bb and out_bb arrays are unique.
14021         (mono_unlink_bblock): Avoid creation of new arrays.
14022
14023 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
14024
14025         * mini.c (mono_unlink_bblock): Fix regression caused by previous
14026         change (#77992).
14027
14028 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
14029
14030         * mini.c (optimize_branches): Remove the "optimizations" in
14031         the cbranch1/cbranch2 -> branch cases which were causing several
14032         problems in the past. Fixes #77986.
14033
14034 2006-03-31  Chris Toshok  <toshok@ximian.com>
14035
14036         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
14037         default optimizations :(
14038
14039 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
14040
14041         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
14042         branch.
14043
14044 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
14045
14046         * local-propagation.c: Added comments to structs and removed
14047         "Mono" prefixes from local tree mover types.
14048
14049 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
14050
14051         * Makefile.am (arch_sources): Define this for each architecture so 
14052         libmono_la_SOURCES is defined in one place.
14053
14054 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
14055
14056         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
14057         from handles/.
14058
14059 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
14060
14061         * driver.c: print the GC name supplied by configure.
14062
14063 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
14064
14065         * local-propagation.c: Added tree mover, and moved here all the
14066         local propagation code from mini.c
14067         * mini.c: Added support for treeprop, and moved all the local
14068         propagation code to local-propagation.c
14069         * mini.h: Added support for treeprop
14070         * driver.c: Added support for treeprop, enabled consprop, copyprop,
14071         treeprop, inline and deadce by default
14072         * Makefile.am: Added local-propagation.c
14073
14074 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
14075
14076         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
14077
14078 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
14079
14080         * debug-debugger.c: make it compile without the Boehm GC.
14081
14082 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14083
14084         * mini.c: fixed issue with mismatch when an icall is registered
14085         with multiple names but same address.
14086
14087 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14088
14089         * declsec.c, mini-exceptions.c: use write barrier to set reference
14090         fields of managed objects.
14091
14092 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14093
14094         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
14095         (can_access_internals): Fix a warning.
14096
14097         * mini.c (print_method_from_ip): Rename this to 
14098         mono_print_method_from_ip so it gets exported.
14099
14100         * trace.c: Deal with strings inside StringBuilder's containing garbage
14101         and fix memory leaks. Fixes #77848.
14102
14103 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14104
14105         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
14106         fixes #77787.
14107
14108 2006-03-16 Neale Ferguson <neale@sinenomine.net>
14109         
14110         * mini-s390.c: Remove OP_X86_TEST_NULL.
14111
14112 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14113
14114         * mini.c: use the correct GetHashCode() for the moving collector.
14115
14116 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
14117
14118         * liveness.c: Regalloc spill cost tuning.
14119
14120 2006-03-15 Neale Ferguson <neale@sinenomine.net>
14121         
14122         * mini-s390x.h: Correct S390_LONG macro.
14123
14124         * mini-s390x.c: Cleanup unused code.
14125
14126 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14127
14128         * jit-icalls.h: New file.
14129
14130         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
14131         icalls and include that instead of including jit-icalls.c.
14132
14133         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
14134         OP_X86 opcodes.
14135
14136 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
14137
14138         * mini.c: when checking for member accessibility, also check for
14139         friend assemblies and for explicit interface implementations.
14140
14141 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14142
14143         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
14144
14145         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
14146
14147         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14148         common cases are done first.    
14149
14150         * mini-ops.h: Only define platform specific opcodes on the given platform.
14151
14152         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
14153         branch.
14154         
14155 2006-03-14  Martin Baulig  <martin@ximian.com>
14156
14157         Revert Paolo's change from r57348:
14158
14159         * mini.h: don't use gboolean for bitfields.
14160         * mini.c: verifier changes for fields and methods accessibility.
14161
14162 2006-03-13  Neale Ferguson <neale@sinenomine.net>
14163
14164         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
14165
14166         * mini-s390x.c: Fix conv_r_un.
14167
14168         * cpu-s390, cpu-s390x.md: Fix lengths.
14169
14170 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
14171
14172         * mini.c: nested types have access to all the nesting
14173         levels, not just the enclosing types.
14174
14175 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14176
14177         * mini.c: added a few more verification checks.
14178
14179 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
14180
14181         * liveness.c: Merge optimizations from the linear-il branch.
14182
14183 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14184
14185         * mini-ia64.c (emit_call): Add a comment.
14186
14187         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
14188
14189         * tramp-ia64.c: Fix some warnings.
14190
14191 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
14192
14193         * mini.h: don't use gboolean for bitfields.
14194         * mini.c: verifier changes for fields and methods accessibility.
14195
14196 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14197
14198         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
14199         lazy icall wrapper changes.
14200
14201         * dominators.c: Replace all the dominator algorithms with faster
14202         ones from the linear-il branch.
14203
14204         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
14205         the mempool.
14206
14207         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14208         common cases are done first.
14209
14210         * mini-amd64.c: Fix some warnings.
14211
14212         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
14213         from the mempool.
14214
14215         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
14216         added code.
14217
14218         * mini.h: Add a missing prototype.
14219
14220 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14221
14222         * mini.c: Compile icall wrappers lazily.
14223
14224         * mini-codegen.c: Use printf instead of g_print since its much faster.
14225
14226         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
14227         function.
14228
14229         * mini.c (optimize_branches): Cache the negative result from 
14230         remove_block_if_useless ().
14231
14232         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
14233         Also fix some bblock linking issues.
14234
14235         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
14236         assembly files.
14237
14238         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
14239
14240         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
14241         accessed fields first, for better cache behavior.
14242         
14243 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14244
14245         * mini.c: speedup IList<T> array accesses.
14246
14247 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14248
14249         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
14250         inline_costs counter. Fixes #77190.
14251
14252 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
14253
14254         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
14255         trace messages. Fixes #77706.
14256
14257 2006-03-04  Martin Baulig  <martin@ximian.com>
14258
14259         * tramp-amd64.c, tramp-x86.c
14260         (mono_debugger_create_notification_function): Use
14261         mono_global_codeman_reserve() to allocate a buffer at runtime and
14262         return it.
14263
14264         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
14265
14266         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
14267         notification function at runtime and then call `initialize' in the
14268         `MONO_DEBUGGER__debugger_info' vtable.
14269
14270 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14271
14272         * iltests.il: Fix a visibility problem.
14273
14274 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14275
14276         * driver.c, mini.c: add hooks for the counters API.
14277
14278 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14279
14280         * driver.c: show disabled options.
14281
14282 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14283
14284         * linear-scan.c: always use cost-driven selection.
14285
14286 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14287
14288         * jit-icalls.c (helper_compile_generic_method): Revert change from
14289         2006-02-24.
14290
14291 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
14292
14293         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
14294
14295 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14296
14297         * inssel.brg: style fixes, mostly to force the updated monoburg
14298         to run for people using svn.
14299
14300 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
14301
14302         * mini.c: match monoburg changes.
14303
14304 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14305
14306         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
14307         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
14308         declaration in the header file.
14309
14310 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14311
14312         * helpers.c: reduce relocations and mem usage.
14313
14314 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14315
14316         * mini.h, mini-codegen.c: disable logging features if
14317         requested by configure.
14318
14319 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
14320
14321         * mini.c: tiny verifier changes.
14322
14323 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14324
14325         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
14326         cpu-pentium.md: stack alignment changes for osx/x86,
14327         partially from Geoff Norton <gnorton@customerdna.com>.
14328
14329 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14330
14331         * jit-icalls.c (helper_compile_generic_method): Update to changes
14332         in metadata/class.c.
14333
14334 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14335         
14336         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
14337         
14338         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
14339         interface calls with large offsets.
14340
14341 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14342
14343         * jit-icalls.c (helper_compile_generic_method): Document the
14344         special-case we depend on so that we can inflate the method twice
14345         with the same context with no bad side-effects.
14346
14347 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
14348
14349         * mini-x86.c, mini-amd64.c: fix for case when xen support
14350         is disabled.
14351
14352 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
14353
14354         * mini-x86.c, mini-amd64.c: generate code to access tls items
14355         in a faster way for Xen systems.
14356
14357 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14358
14359         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
14360         updates and compilation fixes for the OSX/x86 port, mostly from
14361         Geoff Norton <gnorton@customerdna.com>.
14362
14363 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14364
14365         * inssel.brg: faster interface call implementation
14366         to sync with the interface_offsets MonoVTable changes.
14367
14368 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14369
14370         * mini.c: more verification checks.
14371
14372 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
14373
14374         * mini.c: added a few more verification checks.
14375
14376 2006-02-17      Neale Ferguson <neale@sinenomine.net>
14377
14378         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
14379         facility on the processor and use it if available.
14380
14381 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14382
14383         * driver.c, aot.c, mini.c: throw exception if the IL code is
14384         invalid or unverifiable.
14385
14386 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14387
14388         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
14389         m.StructField.
14390
14391 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
14392
14393         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
14394
14395 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14396
14397         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
14398         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
14399         handling of instantiated generic valuetypes.
14400
14401 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14402
14403         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
14404         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
14405         instead.
14406
14407         * generics.2.cs: Revert the nullable reftypes tests.
14408
14409 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
14410
14411         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
14412         using __builtin_frame_address (1) as it doesn't work in the presence
14413         of optimizations. Hopefully fixes #77273.
14414
14415         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
14416         -> generics.cs change as it doesn't work with some automake versions.
14417
14418 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14419
14420         * mini.c: handle systems that sue a different way to
14421         retrieve the stack address of the current thread.
14422
14423 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14424
14425         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
14426         it specially in the makefile.
14427
14428         * generics.2.cs: Add tests for nullable reference types.
14429
14430 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14431
14432         * mini.c: always handle the case when mono_jit_init()
14433         is called in a thread different from the main thread,
14434         confusing libgc (bug #77309).
14435
14436 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
14437
14438         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
14439
14440 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14441
14442         * mini.c: change optimize_branches () to use a single loop
14443         and introduce a new optimization to simplify some range checks.
14444
14445 2006-02-03  Martin Baulig  <martin@ximian.com>
14446
14447         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
14448         and merged with debugger_thread_manager_add_thread().
14449         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
14450         inform the debugger about the main thread.
14451
14452 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
14453
14454         * basic.cs: Add test for div.un/rem.un constant folding.
14455
14456 2006-02-03  Neale Ferguson <neale@sinenomine.net>
14457
14458         * cpu-s390x.md: correct int_xor_imm length
14459
14460 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
14461
14462         * generics.2.cs: New test for #77442.
14463
14464         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
14465         #77442.
14466
14467 2006-02-02  Martin Baulig  <martin@ximian.com>
14468
14469         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
14470         <mono/metadata/mono-debug-debugger.h>   
14471
14472         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
14473
14474 2006-02-02  Martin Baulig  <martin@ximian.com>
14475
14476         * debug-debugger.h: New header file for debug-debugger.c.
14477
14478         * debug-debugger.c: Big API cleanup; don't run the managed Main()
14479         function is a separate thread anymore; add support for attaching.
14480
14481 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14482
14483         * tramp-x86.c: Fix a warning.
14484
14485 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14486
14487         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
14488         on very large methods.
14489
14490         * aot.c (load_patch_info): Fix a warning.
14491
14492 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
14493
14494         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
14495         mini-ops.h: alu membase optimizations.
14496
14497 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
14498
14499         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
14500         to speedup StringBuilder.
14501
14502 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
14503
14504         * dominators.c (mono_compute_natural_loops): Fix detection of
14505         loop body start blocks.
14506
14507         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
14508
14509 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14510
14511         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
14512         #75145.
14513
14514 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
14515
14516         * aliasing.c: Fixed aliasing issue on 64 bit archs.
14517
14518 2006-01-25  Martin Baulig  <martin@ximian.com>
14519
14520         * debug-debugger.c: Moved the `MonoDebuggerManager' and
14521         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
14522         started to cleanup this file a little bit.
14523
14524 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
14525
14526         * mini.c: optimize a codepath frequently happening in generics code.
14527
14528 2006-01-23  Martin Baulig  <martin@ximian.com>
14529
14530         * Makefile.am: Only compile debug-debugger.c on supported platforms.
14531
14532         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
14533         functions directly.
14534
14535         * driver.c: debug-debugger.c is only available if
14536         `MONO_DEBUGGER_SUPPORTED' is defined.   
14537
14538 2006-01-23  Martin Baulig  <martin@ximian.com>
14539
14540         * debug-debugger.c: Only enable this on platforms where the Mono
14541         Debugger is working (x86 and x86_64).
14542
14543 2006-01-21  Martin Baulig  <martin@ximian.com>
14544
14545         The Mono Debugger is now using the normal `mono' instead of the
14546         `mono-debugger-mini-wrapper' when executing managed code.
14547
14548         * debug-debugger.c: New file; previously known as
14549         debugger/wrapper/wrapper.c.
14550
14551         * debug-mini.c (mono_init_debugger): Removed.
14552
14553         * driver.c (mono_main): Added new `--inside-mdb' command line
14554         argument which is used when running inside the debugger.
14555
14556 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
14557
14558         * liveness.c (mono_analyze_liveness): Remove some unused data
14559         structures.
14560
14561 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14562
14563         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
14564
14565 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
14566
14567         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
14568         depends on implementation details of monobitset.
14569
14570         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
14571         Fixes #77271.
14572
14573 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
14574
14575         * liveness.c: Update after monobitset changes.
14576
14577 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
14578
14579         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
14580
14581 2006-01-11 Neale Ferguson <neale@sinenomine.net>
14582
14583         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
14584
14585         * mini-s390x.c: Remove warning messages.
14586
14587 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14588
14589         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
14590
14591 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
14592
14593         * generics.2.cs: Add ldelem/stelem_any test.
14594
14595 2006-01-10 Neale Ferguson <neale@sinenomine.net>
14596
14597         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
14598
14599 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
14600
14601         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
14602         
14603 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
14604
14605         * generics.2.cs: Reenable vtype tests.
14606
14607         * inssel-x86.brg: Remove an icorrect valuetype rule.
14608
14609 2006-01-06 Neale Ferguson <neale@sinenomine.net>
14610
14611         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
14612         initial support for OP_ABS.
14613
14614 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14615
14616         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
14617
14618 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14619
14620         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
14621         conversion and implement LADD/LSUB.
14622
14623         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
14624         architectures.
14625
14626 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14627
14628         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
14629
14630         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
14631         architectures.
14632
14633 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14634
14635         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
14636         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
14637         (stack walk problem).
14638
14639 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
14640
14641         * aot.c (mono_aot_load_method): Fix a warning.
14642
14643 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14644
14645         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
14646
14647 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14648
14649         * iltests.il: Add test for #77148.
14650
14651         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
14652         #77148.
14653
14654 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14655
14656         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
14657
14658 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14659
14660         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
14661         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
14662
14663         * basic-long.cs: Add lconv-to-r4/r8 tests.
14664
14665 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14666
14667         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
14668
14669         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
14670         here as on other archs.
14671
14672 2005-12-29 Neale Ferguson <neale@sinenomine.net>
14673
14674         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
14675
14676 2005-12-29 Neale Ferguson <neale@sinenomine.net>
14677
14678         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
14679         
14680         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
14681
14682         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
14683         instrument_prolog; Add memory_barrier instruction.
14684
14685 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
14686
14687         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
14688
14689 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
14690
14691         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
14692
14693         * aliasing.c inssel.brg: Fix warnings.
14694
14695         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
14696         could skip initialization of some parts of memory.
14697
14698         * mini.c mini-ia64.c: Fix warnings.
14699
14700         * inssel-sparc.brg: Add an implementation of lneg which actually works.
14701
14702 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14703
14704         * aliasing.c (mono_build_aliasing_information): Add a workaround for
14705         a crash seen on sparc.
14706
14707         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
14708         
14709         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
14710
14711 2005-12-21 Neale Ferguson <neale@sinenomine.net>
14712
14713         * mini-ops.h: Add s390_backchain instruction
14714
14715         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
14716
14717         * cpu-s390.md: Add s390_backchain instruction
14718
14719         * mini-s390.c: Significant ABI changes
14720
14721         * mini-s390.h: Cater for zero length structures
14722
14723 2005-12-20 Neale Ferguson <neale@sinenomine.net>
14724
14725         * mini-s390.c: ABI fixes
14726
14727         * inssel-s390.brg: Remove debug statements
14728
14729         * cpu-s390.md: Fix length of ATOMIC_xx operations
14730
14731 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
14732
14733         * basic-float.cs: Add float<->long conversion tests.
14734
14735 2005-12-16 Neale Ferguson <neale@sinenomine.net>
14736
14737         * mini-s390.c: Fix LOCALLOC processing.
14738
14739         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
14740
14741 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14742
14743         * iltests.il: Add tests for some opcodes not covered by the other
14744         tests.
14745
14746 2005-12-15 Neale Ferguson <neale@sinenomine.net>
14747
14748         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
14749         register loading for Tail processing; Correct trace output.
14750
14751         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
14752
14753         * cpu-s390.md: Correct size of jmp instruction. 
14754
14755 2005-12-13 Neale Ferguson <neale@sinenomine.net>
14756
14757         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
14758
14759 2005-12-13 Neale Ferguson <neale@sinenomine.net>
14760
14761         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
14762           Bring s390 up to current level.
14763
14764 2005-12-12  Zltan Varga  <vargaz@gmail.com>
14765
14766         * generics.2.cs: Disable the newly added tests as they do not work yet.
14767         
14768         * generics.2.cs: Add valuetype tests.
14769
14770 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
14771
14772         * basic-long.cs: Add i4->u8 test.
14773
14774         * objects.cs: Add tests for JIT intrinsic.
14775
14776         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
14777         optimizations lost by a mistake.
14778
14779 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
14780
14781         * basic-long.cs: Remove a test moved to objects.cs.
14782
14783         * arrays.cs: Add more array tests.
14784
14785 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
14786
14787         * arrays.cs: Add new tests for multi-dimensional arrays.
14788
14789 2005-12-06  Raja R Harinath  <rharinath@novell.com>
14790
14791         * Makefile.am (test_sources2): Add generics.2.cs.
14792         (EXTRA_DIST): Add test_sources2.
14793
14794 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
14795
14796         Support for boxing and unboxing nullable types as well as the
14797         isinst operation on nullables, per the CLI ammendment.
14798
14799         * inssel.brg (CEE_ISINST): Special case for nullable
14800
14801         * mini.c (handle_unbox_nullable): new method
14802         (handle_box): Special case for nullable types
14803         (mono_method_to_ir): Call handle_unbox_nullable in correct
14804         places.
14805
14806         * generics.2.cs: New test suite
14807
14808         * Makefile.am: Support for regression tests with generics.
14809
14810 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
14811
14812         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
14813         allocated to registers. Fixes #76800.
14814
14815 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
14816
14817         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
14818
14819 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
14820
14821         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
14822         of platforms.
14823
14824 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
14825
14826         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
14827         objects.cs.
14828
14829         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
14830         
14831         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
14832 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
14833
14834         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
14835         single precision before storing to a single precision location.
14836
14837 2005-11-28  Raja R Harinath  <rharinath@novell.com>
14838
14839         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
14840
14841 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
14842
14843         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
14844         correct files.
14845
14846         * basic.cs: Remove test_0_byte_compares test which was moved to
14847         objects.cs a long time ago.
14848
14849 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
14850
14851         * aliasing.c: Fixed aliasing issue on 64 bit archs.
14852
14853 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
14854
14855         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
14856         handlers are called.
14857
14858         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
14859         throwing code.
14860
14861          * mini-ia64.c: Add support for the throw->branch exception 
14862         optimization.   
14863
14864         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
14865
14866 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14867
14868         * mini.c: Enabled "fastpath" deadce :-)
14869         
14870 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14871
14872         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
14873         alias analysis pass to support it.
14874         * mini.h: Likewise.
14875         * ssa.c: Likewise.
14876         * liveness.c: Likewise (liveness computation can use aliasing
14877         information to be more accurate).
14878         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
14879         moreover made so that "--compile-all" uses the given optimization
14880         flags and not the default ones.
14881         * aliasing.c: Alias analysis (new file).
14882         * aliasing.h: Likewise.
14883         * Makefile.am: added "aliasing.c" and "aliasing.h".
14884         
14885 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14886
14887         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
14888         OP_L opcodes.
14889
14890 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
14891
14892         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
14893         fp >= end_of_stack exit condition, as it is not needed, and it might
14894         become true for fp eliminated frames.
14895
14896 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14897
14898         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
14899         coded offsets.
14900
14901 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
14902
14903         * mini-arm.c: fixed alignment of doubles/longs to match
14904         the C ABI (bug #76635).
14905
14906 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
14907
14908         * aot.c: fix compilation with --enable-minimal=aot.
14909
14910 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
14911
14912         * mini-arm.c: fixed compatibility with the new
14913         floating point emulator package for compares.
14914
14915 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
14916
14917         * mini.c : reverted sig->pinvoke changes (r51396-51397).
14918
14919 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
14920
14921         * mini-exceptions.c (print_stack_frame): Output to stderr.
14922         (mono_handle_native_sigsegv): Ditto.
14923
14924 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14925
14926         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
14927         OP_LCONV_TO_OVF_I implementation.
14928
14929         * mini-amd64.c: Add support for the throw->branch exception 
14930         optimization.
14931
14932         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
14933         when the catch clause catches a more general exception, i.e. Object.
14934
14935 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
14936
14937         * cpu-ia64.md: Remove unused opcodes.
14938
14939         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
14940         specific defines for architectures defining USE_SIGACTION.
14941
14942         * mini-ia64.c: Fix some warnings.
14943
14944         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
14945         version seemed to skip a frame.
14946
14947 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14948
14949         * mini.c: Clean up the usage of sig->pinvoke flag. Now
14950         only calls which are made to native code use this flag.
14951
14952 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
14953
14954         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
14955         varargs methods as well.
14956         
14957         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
14958         which have save_lmf set. Reorganize methods prologs a bit.
14959
14960         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
14961         debugger to the proper place.
14962
14963 2005-10-29  Martin Baulig  <martin@ximian.com>
14964
14965         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
14966         when running inside the debugger until the debugger has support
14967         for it.
14968
14969 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
14970
14971         * mini.h: Fix a warning.
14972
14973 2005-10-24  Miguel de Icaza  <miguel@novell.com>
14974
14975         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
14976         we expose publicly, this returns the string.
14977
14978 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
14979
14980         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
14981         with fp elimination.
14982
14983 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
14984
14985         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
14986         native stacktrace using the glibc 'backtrace' function if available.
14987
14988 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
14989
14990         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
14991
14992         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
14993         handle SIGSEGVs received while in native code.
14994
14995         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
14996         code, call mono_handle_native_sigsegv which will abort the runtime
14997         after printing some diagnostics, instead of converting it into a
14998         confusing NullReferenceException.
14999
15000 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15001
15002         * cpu-pentium.md: Remove unused opcodes.
15003
15004 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
15005
15006         * mini-amd64.h (MonoLMF): Add rsp field.
15007
15008         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
15009         the lmf too.
15010
15011 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
15012
15013         * mini-codegen.c (get_register_spilling): Fix some warnings.
15014
15015 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
15016
15017         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
15018         elimination during exception handling. Enable fp elimination by
15019         default.
15020
15021         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
15022         elimination.
15023
15024 2005-10-16  Martin Baulig  <martin@ximian.com>
15025
15026         * mini-exceptions.c
15027         (mono_debugger_run_finally): New public method for the debugger.
15028
15029 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15030
15031         * debug-mini.c (mono_debug_init_method): Fix warning.
15032
15033         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
15034         the 'exname' parameter const to fix some warnings.
15035
15036 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
15037
15038         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
15039         introduced by the previous patch.
15040
15041 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
15042
15043         * basic-float.cs: Add test for precision of float arithmetic.
15044
15045         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
15046         when loading/storing single values from/to memory.
15047
15048         * mini.c (mono_jit_compile_method_with_opt): Create the function
15049         pointers in the correct domain.
15050
15051 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15052
15053         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
15054         introduced by previous patch.
15055         
15056         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
15057         when out_filter_idx is NULL.
15058
15059         * mini-exceptions.c: Don't run filter clauses twice during exception
15060         handling. Fixes #75755.
15061
15062 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15063
15064         * aot.c: Add support for ldflda wrappers.
15065
15066         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
15067         #75902.
15068
15069 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
15070
15071         * mini.c, mini.h: do not consider exception handlers blocks when
15072         setting up interface variables.
15073
15074 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
15075
15076         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
15077
15078 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
15079
15080         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
15081         causes a regression.
15082
15083         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
15084
15085 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
15086
15087         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
15088         of the OP_P definitions.
15089
15090         * TODO: Add a proposal for dealing with the CEE/OP mess.
15091
15092         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
15093         optimizations from the x86 port.
15094
15095         * cpu-amd64.md: Ditto.
15096
15097         * basic.cs basic-long.cs: Add tests.
15098
15099 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
15100
15101         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
15102         Patrik Torstensson's implementation of my exception-handling
15103         optimization idea, when the exception object is not used
15104         (bug #62150).
15105
15106 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
15107
15108         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
15109         of the mul_imm optimizations from the old jit.
15110
15111 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
15112
15113         * mini.c, liveness.c: patch by Patrik Torstensson and
15114         Zoltan Varga to improve performance in methods with
15115         exception clauses.
15116
15117 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15118
15119         * driver.c: Remove 'Globalization' entry from --version.
15120
15121 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
15122
15123         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
15124         there is a profiler interested in JIT events.
15125
15126         * aot.c: Load profile files produced by the AOT profiling module, and
15127         reorder methods based on the profiling info. Add a 'method_order' table
15128         to the AOT file to make mono_aot_find_jit_info work with the reordered
15129         methods.
15130
15131         * mini.h: Bump AOT file version info.
15132
15133 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
15134
15135         * mini-arm.h: work around what looks like a gcc bug when optimizations
15136         are enabled.
15137
15138 2005-09-28  Raja R Harinath  <rharinath@novell.com>
15139
15140         * Makefile.am (AM_CFLAGS): Don't use += to append inside
15141         conditionals.  Use ...
15142         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
15143
15144 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
15145
15146         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
15147         to determine the amount of memory to copy when passing valuetypes.
15148
15149         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
15150         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
15151
15152 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
15153
15154         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
15155         information about aot.
15156
15157 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15158
15159         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15160         macros. This will allow a deadlock debugger to easily be plugged
15161         in.
15162
15163 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
15164
15165         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
15166
15167 2005-09-27  Raja R Harinath  <rharinath@novell.com>
15168
15169         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
15170         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
15171         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
15172         ($(arch_built)) [CROSS_COMPILING]: Error out.
15173
15174 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15175
15176         * aot.c: Add support for the no_special_static flag for classes.
15177
15178 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15179
15180         * Reapply reverted patches.
15181
15182         * *: Revert r50174 as well.
15183
15184         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
15185
15186 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15187
15188         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
15189
15190 2005-09-23  Miguel de Icaza  <miguel@novell.com>
15191
15192         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
15193         part of the SIG_HANDLER_SIGNATURE.  
15194
15195 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15196
15197         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
15198         statistics.
15199
15200         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
15201         introduced by previous patch.
15202
15203 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
15204
15205         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
15206         saved registers too.
15207
15208         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
15209         upon the information returned by get_call_info ().
15210         
15211         * mini-x86.c (add_float): Fix stack size calculation.
15212         (mono_arch_call_opcode): Rewrite this so it works based up the
15213         information returned by get_call_info ().
15214         (mono_arch_get_this_vret_args): Ditto.
15215
15216 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
15217
15218         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
15219         in cinfo to determine the registers which need to be used.
15220
15221 2005-09-20  Miguel de Icaza  <miguel@novell.com>
15222
15223         * driver.c (mono_main): Add --server and --desktop flags. 
15224
15225 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
15226
15227         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
15228         registers as global registers.
15229
15230         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
15231         longer needed with the new register allocator.
15232
15233         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
15234
15235         * cpu-ia64.md: Remove unused opcodes.
15236         
15237         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
15238         
15239 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
15240
15241         * cpu-amd64.md: Remove unused opcodes.
15242
15243         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
15244         needed with the new register allocator.
15245
15246         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
15247         reg-reg moves.
15248
15249 2005-09-16  Raja R Harinath  <rharinath@novell.com>
15250
15251         * Makefile.am (check-local): Don't invoke semdel-wrapper.
15252
15253 2005-09-16  Martin Baulig  <martin@ximian.com>
15254
15255         * exceptions-amd64.c
15256         (throw_exception): Don't call mono_debugger_throw_exception() if
15257         we're a rethrow - see the FIXME in the code.
15258
15259 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
15260
15261         * mini.c (mono_init_exceptions): This only works on some architectures.
15262         
15263 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15264
15265         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
15266         on ia64.
15267
15268         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
15269
15270         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
15271         now in mini-exceptions.c.
15272
15273 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
15274
15275         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
15276         now in mini-exceptions.c.
15277
15278 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15279
15280         * exceptions-x86.c: Applied patch from Patrik Torstensson 
15281         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
15282
15283         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
15284         code into mini-exceptions.c. Add some assertions to it.
15285
15286 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15287
15288         * aot.c (emit_section_change): Applied patch from "The Software Team" 
15289         (<software@solmersa.com>). Fix as errors on windows.
15290
15291 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15292
15293         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
15294         method info into the LMF.
15295
15296 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15297         
15298         * mini-ia64.c: Add proper unwind info for method epilogs.
15299
15300         * exceptions-ia64.c: Add some code to help debugging.
15301         
15302         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
15303
15304         * mini-exceptions.c: Fix warning.
15305
15306 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15307
15308         * mini.c: Really fix build.
15309
15310         * mini-x86.c mini-amd64.c: Fix build.
15311
15312 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15313
15314         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
15315
15316         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
15317         some Interlocked methods as intrinsics.
15318
15319         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
15320         for Thread methods as well.
15321
15322         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
15323
15324         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
15325
15326         * mini-ia64.c mini-x86.c mini-amd64.c 
15327         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
15328         OP_MEMORY_BARRIER.
15329         
15330         * mini.c (mono_init_exceptions): Fix build breakage.
15331
15332 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
15333
15334         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
15335         of instructions. Use the new ia64_unw_op macros for emitting unwind
15336         info.
15337
15338         * mini.c (mono_init_exceptions): Initialize exception handling
15339         related trampolines at startup.
15340
15341 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
15342
15343         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
15344
15345 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15346
15347         * mini.c: Handle type loading errors gracefully during compilation and
15348         throw the appropriate exception.
15349
15350 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
15351
15352         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
15353         for the mono binary.
15354
15355 2005-09-09  Martin Baulig  <martin@ximian.com>
15356
15357         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
15358         the release.
15359
15360 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15361
15362         * mini-arm.h: use emulation for conv.r.un for the release.
15363
15364 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15365
15366         * mini-arm.c, objects.cs: more fixes and tests for them.
15367
15368 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15369
15370         * mini-arm.c: align structures to at least 4 bytes to be able
15371         to keep our current optimized memcpy.
15372
15373 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
15374
15375         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
15376
15377 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15378
15379         * mini.c: ignore SIGPIPE.
15380
15381 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
15382
15383         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
15384
15385         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
15386
15387 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
15388
15389         * mini.h: Add prototype for mono_allocate_stack_slots_full.
15390
15391 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15392
15393         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
15394         exception handling support.
15395         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
15396         patch by Brian Koropoff <briank@marakicorp.com>).
15397
15398 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
15399
15400         * mini.c: revert another 'optimization' which breaks when
15401         items on the eval stack need to be saved at a basic block end
15402         (bug #75940).
15403
15404 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15405
15406         * jit-icalls.c: for arrays, ensure we always provide
15407         lower bounds.
15408
15409 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
15410
15411         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
15412         
15413         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
15414
15415 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15416
15417         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
15418         arguments in their original register.
15419
15420 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
15421
15422         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
15423         memset/memcpy.
15424
15425         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
15426         when ssapre is enabled.
15427
15428         * inssel-long.brg: Fix bug in previous patch.
15429
15430         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
15431         multiplication by a constant.
15432
15433 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
15434
15435         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
15436         icc.
15437
15438         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
15439         saving registers.
15440
15441 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
15442
15443         * inssel-arm.brg: apply changes tested by Brian Koropoff
15444         <briank@marakicorp.com>.
15445
15446 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15447
15448         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
15449         
15450 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
15451
15452         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
15453         to the same register if dreg is just a base register.
15454         (print_ins): Improve printing of membase opcodes.
15455
15456         * inssel-x86.brg: Add optimized ldind(reg) rules.
15457
15458         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
15459
15460 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
15461
15462         * mini.c: when running under valgrind, set the stack bottom for
15463         the GC at the actual approximate stack for the app (fixes running
15464         mono with valgrind).
15465
15466 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
15467
15468         * mini.c: do no break at the first valuetype to init found
15469         (fixes bug #75791).
15470
15471 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
15472
15473         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
15474
15475 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
15476
15477         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
15478
15479 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
15480
15481         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
15482
15483 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15484
15485         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
15486
15487         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
15488         code.
15489
15490         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
15491         code.
15492
15493         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
15494         methods.
15495
15496 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
15497
15498         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
15499
15500 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15501
15502         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
15503         in the tail recursion optimization.
15504
15505         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
15506         debug info into the assembly file.
15507
15508         * iltests.il: Add test for filter regions.
15509
15510         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
15511         initial stack of filter regions. Fixes #75755.
15512
15513 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
15514
15515         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
15516         stack requirements.
15517
15518 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15519
15520         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
15521         the check for an already compiled method on non-ia64 platforms.
15522         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
15523         proper domain.
15524
15525         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
15526
15527         * inssel-x86.brg: Add some optimized call rules.
15528
15529 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15530
15531         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
15532         method here.
15533
15534         * mini.h mini-trampolines.c: Pass the trampoline argument to 
15535         mono_arch_patch_delegate_trampoline.
15536
15537         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
15538
15539         * mini-trampolines.c: Fix build.
15540
15541         * mini-amd64.h: Add delegate trampolines.
15542
15543         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
15544
15545         * inssel-amd64.brg: Add optimized call rules.
15546         
15547         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
15548
15549         * inssel-ia64.brg: Add optimized ldind(reg) rules.
15550
15551 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15552
15553         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
15554         change.
15555
15556         * mini-ia64.c: Remove LMF fixmes.
15557
15558         * mini-ia64.h: Remove most fields from LMF.
15559
15560         * inssel-ia64.brg (stmt): Fix unaligned access errors.
15561
15562         * mini-trampolines.c: Add support for IA64 function descriptors.
15563
15564         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
15565         for IA64 function descriptors.
15566
15567 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
15568
15569         * tramp-arm.c: patch the vtable for virtual calls. Added
15570         support code to register/unregister the LMF.
15571         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
15572         more LMF work.
15573
15574 2005-08-19  Dick Porter  <dick@ximian.com>
15575
15576         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
15577         bit value if needed.
15578
15579 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15580
15581         * mini.c (mini_get_method): Move handling of wrapper data here.
15582
15583         * mini.c (mono_method_to_ir): Add support for dynamic methods.
15584
15585         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
15586         virtual.
15587
15588         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
15589         bblock->code does not remain empty.
15590
15591 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
15592
15593         * arrays.cs: Add regression test for #75832.
15594
15595         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
15596         rules. Fixes #75832.
15597
15598         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
15599         instruction scheduling.
15600
15601 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
15602
15603         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
15604
15605 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15606
15607         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
15608
15609         * mini-codegen.c: Fix VC build.
15610
15611         * cpu-pentium.md: Increase length of atomic_exhange_i4.
15612
15613 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15614
15615         * mini.h: fix signature for mono_register_opcode_emulation.
15616
15617 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
15618
15619         * mini.c: Get rid of most of the helper_sig_... constants using
15620         mono_create_icall_signature ().
15621
15622 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
15623
15624         * jit-icalls.c (helper_ldstr): New helper function.
15625
15626         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
15627
15628         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
15629         throw, load the string using a helper call instead of creating a string object.
15630
15631         * aot.c: Update after LDSTR changes.
15632
15633         * mini.h: Bump AOT file version.
15634         
15635         * aot.c: Save class size info into the AOT file. Print more statistics during
15636         compilation.
15637
15638         * mini.h: Bump AOT file version.
15639
15640         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15641         ordering of disasm cases. Fixes #74957.
15642
15643 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
15644
15645         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
15646         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
15647         the generic code needed for the ARM port.
15648
15649 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
15650
15651         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
15652         inssel-arm.brg: more ARM features and fixes.
15653
15654 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
15655
15656         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
15657         ARM port work in progress.
15658
15659 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
15660
15661         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
15662
15663         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
15664
15665         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
15666
15667         * inssel.brg (mini_emit_memset): Add support for unaligned access.
15668
15669         * *-ia64.*: Ongoing IA64 work.
15670         
15671         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
15672
15673 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15674
15675         * TODO: Remove out-of-data todo stuff.
15676
15677         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
15678         dead code.
15679
15680         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
15681
15682         * mini.h: Bump corlib version.
15683
15684 2005-07-27  Martin Baulig  <martin@ximian.com>
15685
15686         * mini-codegen.c
15687         (create_copy_ins): Added `const unsigned char *ip' argument; set
15688         `copy->cil_code' from it.
15689
15690 2005-07-27  Martin Baulig  <martin@ximian.com>
15691
15692         * mini-exceptions.c (mono_handle_exception): Don't call
15693         mono_debugger_handle_exception() for filters.
15694
15695 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
15696
15697         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
15698         as well.
15699
15700 2005-07-26  Martin Baulig  <martin@ximian.com>
15701
15702         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
15703
15704         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
15705         helper_compile_generic_method() if the method is actually virtual
15706         and non-final.
15707
15708 2005-07-26  Martin Baulig  <martin@ximian.com>
15709
15710         * mini.c
15711         (trampoline_code): Renamed to `mono_trampoline_code' and made it
15712         public; this is now accessed directly by the debugger.
15713         (mono_generic_trampoline_code): Removed.
15714
15715         * debug-mini.c
15716         (mono_debug_init_method): Also add interncalls and wrappers.
15717
15718 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
15719
15720         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
15721
15722 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
15723
15724         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
15725
15726 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
15727
15728         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
15729
15730 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15731
15732         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
15733         getting TLS offsets on AMD64 too.
15734
15735 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
15736
15737         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
15738
15739 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
15740
15741         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
15742         inssel-arm.brg, mini-arm.h: ARM port work in progress.
15743
15744 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15745
15746         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
15747
15748         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
15749         to mini.c.
15750
15751         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
15752         mono_sparc_is_virtual_call ().
15753         
15754         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
15755
15756         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
15757         trampoline parameters.
15758
15759         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
15760         
15761         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
15762         to mono_arch_get_vcall_slot_addr.
15763
15764         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
15765         trampoline code.
15766
15767         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
15768
15769 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
15770
15771         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
15772
15773 2005-07-19  Martin Baulig  <martin@ximian.com>
15774
15775         * exceptions-amd64.c (throw_exception): Call
15776         mono_debugger_throw_exception() here like we're doing it on i386.
15777
15778 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
15779
15780         * mini-ia64.c: Add optimized TLS access support.
15781
15782 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
15783
15784         * mini-exceptions.c: Ongoing IA64 work.
15785
15786         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
15787
15788         * mini.c: Use the default optimization set when embedding. Fixes
15789         #75194.
15790
15791 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
15792
15793         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
15794         of trampolines to a separate file.
15795
15796         * mini-trampolines.c: New file.
15797
15798         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
15799         separate file.
15800         
15801         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
15802         amd64/ia64 code.
15803
15804         * mini-codegen.c: Fix cygwin build.
15805
15806 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
15807
15808         * mini.c: Add some minor changes needed by the IA64 port.
15809
15810         * *-ia64.*: Ongoing IA64 work.
15811
15812 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
15813
15814         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
15815         trampolines into arch-independent and arch-dependent parts.
15816
15817         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
15818
15819 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
15820
15821         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
15822
15823         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
15824         the xp-regalloc-branch for amd64.
15825
15826         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
15827         xp-regalloc-branch for x86.
15828
15829 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15830
15831         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
15832
15833 2005-07-06  Martin Baulig  <martin@ximian.com>
15834
15835         * mini.c
15836         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
15837         (mono_jit_runtime_invoke): Likewise.
15838
15839 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
15840
15841         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
15842         on x86 too.
15843         
15844         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
15845         without loading their metadata. Reorganize the file format so exception handling+
15846         debug info is kept separate from normal method info. Create MonoJitInfo 
15847         structures for methods lazily.
15848
15849         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
15850         loading metadata.
15851         (x86_class_init_trampoline): Patch AOT class init trampolines too.
15852
15853         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
15854
15855         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
15856         in AOT code.
15857
15858         * mini.h: Bump AOT file version.
15859
15860 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
15861
15862         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15863
15864 2005-07-01  Raja R Harinath  <rharinath@novell.com>
15865
15866         * Makefile.am (check-local): Call semdel-wrapper.
15867
15868 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
15869
15870         * mini-x86.c: Revert the last change as it seems to break the build..
15871
15872 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
15873
15874         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15875         
15876         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
15877
15878 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
15879
15880         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
15881         outside of the macro, so strange stuff doesn't happen with gcc4
15882         (NEW_AOTCONST_TOKEN): Likewise.
15883
15884 2005-06-28  Martin Baulig  <martin@ximian.com>
15885
15886         * mini.c (mini_class_is_system_array): New static method; use this
15887         instead of `klass->parent == mono_defaults.array_class' everywhere
15888         since this also works for the new generic array class.
15889
15890 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
15891
15892         * inssel.brg: Remove warnings.
15893
15894 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
15895
15896         * mini-ia64.c: Ongoing IA64 work.
15897
15898         * basic-float.cs: Add float->i1 conversion test.
15899
15900         * iltests.il: Add conv.u4 test.
15901
15902 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
15903
15904         * inssel-long.brg: Fix bug caused by last change.
15905
15906 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
15907
15908         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
15909         BSDs.  Allows the x86 JIT to work on OSX86
15910
15911 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
15912
15913         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
15914         u4->i8 conversion.
15915
15916         * mini-ia64.c: Ongoing IA64 work.
15917
15918 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
15919
15920         * mini-ia64.c: Ongoing IA64 work.
15921
15922         * driver.c: Clean up jit_code_hash as well when using --regression.
15923
15924         * inssel-long.brg: Fix long->i4/u4 conversion rules.
15925
15926         * basic-long.cs: Add tests for long->u4 conversion.
15927
15928 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
15929
15930         * mini.c: Take mono_get_domainvar out of macros. This makes sure
15931         that we do not depend on undefined C behavior: the order stuff
15932         gets evaluated within an expression. Fixes mono when compiled on
15933         GCC 4.
15934
15935 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
15936
15937         * *-ia64.*: Ongoing IA64 work.
15938
15939         * aot.c: Lower memory usage while loading AOT methods.
15940
15941         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
15942
15943         * mini.h: Bump AOT file format version.
15944
15945 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
15946
15947         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
15948
15949 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
15950
15951         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
15952         not on callee assembly). Fixed some comments.
15953
15954 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
15955
15956         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
15957         it gets proper disassembly.
15958         (emit_method_info): Remove some dead code.
15959
15960         * mini.c (mini_method_compile): Allways allocate the GOT var in
15961         mono_method_to_ir for emulating opcodes.
15962
15963 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
15964
15965         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
15966         before freeing the code memory. Fixes #74990.
15967
15968         * objects.cs: Add regression test for #74992.
15969
15970         * liveness.c: Extend live ranges of arguments to the beginning of the
15971         method. Fixes #74992.
15972
15973         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
15974         so it points into the faulting instruction.
15975
15976 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
15977
15978         * jit-icalls.c (mono_imul_ovf): Add exception handling.
15979
15980         * *-ia64.*: Ongoing IA64 work.
15981
15982         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
15983
15984 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
15985
15986         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
15987
15988         * *-ia64.*: Ongoing IA64 work.
15989
15990 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
15991
15992         * basic-long.cs: Add tests for add/sub.ovf.
15993
15994         * basic.cs: Add tests for sub.ovf.
15995
15996         * *-ia64.*: Ongoing IA64 work.
15997
15998 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
15999
16000         * *-ia64.*: Ongoing IA64 work.
16001
16002         * basic.cs: Add conv.ovf.i4.un test.
16003
16004 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
16005
16006         * mini.c: (remove_block_if_useless) Fixed bug 75061.
16007         
16008 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16009
16010         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
16011
16012 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16013
16014         * *-ia64.*: Ongoing IA64 work.
16015
16016 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16017
16018         * trace.[ch]:
16019         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
16020
16021 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
16022
16023         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
16024
16025 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
16026
16027         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
16028
16029         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
16030         of a call is callable by a near call.
16031
16032 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
16033
16034         * mini-ia64.c: Ongoing IA64 work.
16035
16036 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
16037
16038         * genmdesc.c: Make the generated array non-static.
16039
16040         * inssel-long.brg: Fix LSHR_IMM rule.
16041
16042         * *-ia64.*: Ongoing IA64 work.
16043
16044         * *-ia64.*: Ongoing IA64 work.
16045
16046 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16047
16048         * *-ia64.*: Ongoing IA64 work.
16049
16050         * *-ia64.*: Ongoing IA64 work.
16051         
16052         * mini-ia64.c: Ongoing IA64 work.
16053
16054         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
16055
16056 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16057
16058         * objects.cs basic-calls.cs: Move some tests to objects.cs.
16059         
16060         * objects.cs basic-long.cs: Move some tests to objects.cs.
16061
16062 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
16063
16064         * *-ia64.*: Ongoing IA64 work.
16065
16066         * iltests.il: Add a new test.
16067
16068         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
16069         newobj. Fixes #75042.
16070
16071 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
16072
16073         * *-ia64.*: Ongoing IA64 work.
16074         
16075         * *-ia64.*: Ongoing IA64 work.
16076         
16077         * *-ia64.*: Ongoing IA64 work.
16078
16079         * basic.cs objects.cs: Move tests accessing static variables as well.
16080
16081         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
16082
16083 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
16084
16085         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
16086
16087         * driver.c: Always print failed tests.
16088
16089         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
16090         frame pointer.
16091
16092         * *ia64*: Ongoing IA64 work.
16093
16094 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16095
16096         * basic.cs: Add tests for add.ovf. Fix warnings.
16097
16098 2005-05-18  Miguel de Icaza  <miguel@novell.com>
16099
16100         * driver.c (mono_main): Avoid crash if no argument is passed to
16101         --break;  Do not use g_error, but f_printf.   And fix all other
16102         ocurrences of the same crash.
16103
16104 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
16105
16106         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
16107         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
16108         Fixes #74742.
16109
16110 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
16111
16112         * *-ia64.*: Add beginnings of IA64 backend.
16113
16114         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
16115
16116 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
16117
16118         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
16119         Fixes #74925.
16120
16121         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
16122
16123         * mini-amd64.c: Fix a warning.
16124
16125 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
16126
16127         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
16128         in float_neg. Fixes #74897.
16129
16130         * mini-amd64.c (emit_call): Fix another near call bug.
16131
16132 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
16133
16134         * declsec.c: Keep the appdomain information in the structure. Added a 
16135         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
16136         value gets overwritten).
16137         * declsec.h: Set the default MonoArray for the the stack to 6. Added
16138         an MonoAppDomain member to MonoSecurityFrame.
16139         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
16140         used in the stack walk. Now use a MonoArray which grow (double) when
16141         it gets full.
16142
16143 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16144
16145         * mini.c: Re-enabled runtime cleanup, since running threads should
16146         now properly stop when exiting.
16147
16148 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16149
16150         * mini-codegen.c: New file contaning the arch-independent local
16151         register allocator. Not used by any architectures yet.
16152
16153         * mini.h linear-scan.c: Merge some changes from the 
16154         mini-xp-local-regalloc branch.
16155
16156 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16157
16158         * mini-amd64.c (emit_call): Fix calls to native functions when the
16159         runtime is compiled as a shared library. Fixes #74756.
16160
16161         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
16162         on a literal field. Fixes #74751.
16163
16164 2005-04-25  Raja R Harinath  <rharinath@novell.com>
16165
16166         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
16167
16168 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16169
16170         * objects.cs: Add missing null casting test.
16171
16172 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16173
16174         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
16175         in wrapper methods. Also rename 'address' variable to 'offset'.
16176
16177 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16178
16179         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
16180         warnings.
16181         
16182         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
16183
16184         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
16185         work on windows.
16186
16187 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16188
16189         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
16190
16191 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16192
16193         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
16194         just the last bytes.
16195
16196 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16197
16198         * aot.c (mono_compile_assembly): Fix warning.
16199
16200         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
16201         by the _MSC_VER stuff.
16202
16203 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16204
16205         * inssel-long.brg: Fix #74588.
16206
16207         * cpu-amd64.md: Fix #74591.
16208
16209         * iltests.il: Add new regression tests.
16210
16211 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16212
16213         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
16214         valuetype.
16215
16216 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
16217
16218         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
16219
16220         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
16221         from Bill Middleton <flashdict@gmail.com>.
16222
16223 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
16224
16225         * arrays.cs: Add new regression test. Fix warnings.
16226
16227 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
16228
16229         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
16230         and leakage in CKFINITE.
16231
16232         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
16233         this to a null op since it is called on amd64 too.
16234
16235         * exceptions-amd64.c (get_throw_trampoline): Align stack.
16236
16237         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
16238         body since this is not used on amd64.
16239         
16240         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
16241
16242         * mini-amd64.c: Remove obsolete fixmes.
16243
16244         * mini.c (print_method_from_ip): Fix debugging support.
16245
16246 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16247
16248         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
16249         so that expressions that don't give much gain are not reduced.
16250         * ssapre.h: Likewise.
16251
16252 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
16253
16254         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
16255
16256         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
16257
16258         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
16259
16260 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
16261
16262         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
16263
16264         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
16265
16266 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
16267
16268         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
16269         stack touching.
16270
16271         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
16272
16273         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
16274
16275         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
16276
16277         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
16278         MONO_ARCH_USE_SIGACTION. Fixes #74252.
16279
16280         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
16281
16282         * mini-x86.c: Fix up stack overflow handling.   
16283
16284         * exceptions.cs: Add new regression test.
16285
16286 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
16287
16288         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
16289         mono_jit_thread_attach.
16290
16291         * mini.c (mono_method_to_ir): Verify called method is not abstract.
16292
16293 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16294
16295         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
16296         avoid calling constructors using callvirt.
16297
16298         * inssel.brg: Fix #74073.
16299
16300 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
16301
16302         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
16303         compilation with non-GCC compilers.
16304         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
16305         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
16306
16307 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
16308
16309         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
16310         klass->interface_offsets (will likely fix bug#74073).
16311
16312 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16313
16314         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
16315
16316 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
16317
16318         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
16319         to amd64_div_reg_size ().
16320         
16321         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
16322
16323 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
16324
16325         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
16326
16327 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16328
16329         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
16330
16331 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16332
16333         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
16334         
16335         * mini.c (mono_precompile_assembly): Load and precompile referenced
16336         assemblies as well. Fixes #74015.
16337
16338 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
16339
16340         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
16341
16342 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
16343
16344         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
16345         a lot of checks and (anyway) permissions cannot work until corlib is 
16346         loaded.
16347
16348 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
16349
16350         * mini-ppc.c: fixed ABI issue on sysv/ppc.
16351
16352 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
16353
16354         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
16355         calls (fixes bug#72824).
16356
16357 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16358
16359         * mini.c: fix tail recursion elimination (see test in bug#73936).
16360
16361 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
16362
16363         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
16364         some fp functions in sse2 mode.
16365
16366 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
16367
16368         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
16369
16370 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
16371
16372         * mini.h mini.c: Add mono_get_jit_tls_key ().
16373
16374         * mini-x86.c: Enable fast TLS support on windows.
16375
16376 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
16377
16378         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
16379         * mini.c: Check for p/invoke method when generating code. If a
16380         p/invoke method, or it's class, isn't decorated with [Suppress
16381         UnmanagedCodeSecurity] then generate code to call System.Security.
16382         UnmanagedDemand (only if the security manager is active).
16383
16384 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16385
16386         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
16387         last change as it seems to cause strange crashes.
16388         
16389 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16390
16391         * *.c: handle unsafe function pointers where needed.
16392
16393 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16394
16395         * mini.c (mono_jit_free_method): Remove the fixme too.
16396
16397 2005-03-15  Miguel de Icaza  <miguel@novell.com>
16398
16399         * mini.c: As discussed, make the code actually free the delegate
16400         thunk now, to enable the debugging of delegate problems, use
16401         MONO_DEBUG=1 when running Mono. 
16402
16403         This takes also care of parts of the leaks as seen by Joe.
16404
16405 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
16406
16407         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
16408         thread_tls_offset calculation.
16409
16410 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
16411
16412         * declsec.c: Reworked linkdemand checks for icall. The previous code
16413         was using the declaration code (untrusted) and didn't work as expected
16414         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
16415         specific case.
16416
16417 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
16418
16419         * iltests.il: Add new localloc test.
16420
16421         * mini-amd64.c: Handle large stack allocations the same way as on
16422         windows if stack overflow handling is working.
16423         
16424         * mini-amd64.c: Allocate the signal stack using mmap.
16425
16426         * mini.c (sigsegv_signal_handler): Fix reading of context.
16427
16428         * mini-exceptions.c: Fix up stack overflow handling.
16429
16430         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
16431
16432         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
16433
16434         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
16435
16436         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
16437
16438         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
16439         tramp_init functions as they are no longer needed.
16440
16441 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
16442
16443         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
16444         
16445         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
16446
16447         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
16448         
16449         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
16450         support that now.
16451
16452         * mini-ops.h: Add OP_LMUL_IMM.
16453
16454         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
16455         long mul/div opcodes as intrinsic.
16456
16457         * mini-amd64.c (emit_call): Handle the case when the callee might be
16458         an AOT method.
16459
16460 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
16461
16462         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
16463         extra safe.
16464         
16465         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
16466
16467         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
16468
16469 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
16470
16471         * mini.c (mono_codegen): Don't leak here, to help people running
16472         monogrind.
16473
16474 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
16475
16476         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
16477         conversions in sse2 mode.
16478
16479         * basic-float.cs: Add regression test.
16480         
16481         * mini-amd64.c: Reenable sse2.
16482
16483 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
16484
16485         * mini-amd64.c: Disable sse2 until some regressions are fixed.
16486
16487 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
16488
16489         * driver.c: Copyright text should include 2005.
16490         
16491 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
16492
16493         * cpu-amd64.md (load_membase): Fix more max lengths.
16494
16495 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
16496
16497         * cpu-amd64.md (load_membase): Fix max length.
16498
16499         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
16500
16501         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
16502
16503         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
16504         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
16505
16506         * basic-float.cs: Add rounding regression test.
16507
16508         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
16509
16510 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
16511
16512         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
16513         structures in registers for pinvoke wrappers.
16514
16515 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
16516
16517         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
16518
16519 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
16520
16521         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
16522         wrapper to mono_jit_thread_attach.
16523
16524         * mini.c (mini_jit_thread_attach): New jit icall.
16525
16526         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
16527         native->managed wrappers.
16528
16529         * exceptions.cs: Add new regression test.
16530
16531         * mini.c (optimize_branches): Check regions in the cbranch to throw
16532         block case as well. Fixes #73242.
16533
16534 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
16535
16536         * mini.c: thread safety fixes.
16537
16538 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
16539
16540         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
16541         patching stuff, since delegates use jump trampolines so there is
16542         no caller.
16543
16544         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
16545         jump trampolines.
16546         
16547         * tramp-amd64.c: Fix build.
16548
16549         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
16550         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
16551
16552         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
16553         Rename this to mono_arch....
16554         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
16555
16556         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
16557
16558         * mini-amd64.c (emit_call): If both the caller and the callee is
16559         guaranteed to have 32 bit addresses, emit a normal call.
16560
16561         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
16562
16563         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
16564         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
16565         method_ptr inside delegates.
16566
16567 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
16568
16569         * mini.c (mono_jit_free_method): Free the method info even if the native code is
16570         invalidated. Fixes #73001.
16571
16572         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
16573
16574         * mini-x86.c: Only use stdcall for pinvokes on windows.
16575
16576 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
16577
16578         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
16579         * mini-x86.c: remove unreliable __thread var offset detection,
16580         use the correct accessors and enable by default.
16581
16582 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
16583
16584         * mini.c (mono_jit_free_method): Fix memory leak.
16585
16586 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
16587
16588         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
16589
16590 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
16591
16592         * cpu-amd64.md: Fix lengths of atomic opcodes.
16593
16594 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
16595
16596         * driver.c: try to not imply using ICU is any good.
16597
16598 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
16599
16600         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
16601         functions as inline ops.
16602
16603         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
16604         some Interlocked functions as inline ops.
16605
16606         * mini.c (move_basic_block_to_end): Fix bug in last patch.
16607
16608         * mini.h (MonoBasicBlock): Reorganize fields a bit.
16609
16610         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
16611
16612         * mini.c: Add support for OP_NOT_TAKEN.
16613
16614         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
16615         structures in registers for pinvoke wrappers.
16616
16617         * mini-amd64.c: Fix warnings.
16618
16619 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
16620
16621         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
16622
16623         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
16624
16625         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
16626         address instead of loading the address from it.
16627
16628         * mini-x86.c: Add support for returning small structs in registers
16629         on Win32. Fixes part of #70864.
16630         
16631 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
16632
16633         * trace.c (get_token): Improve error checking.
16634
16635 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
16636
16637         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
16638
16639 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
16640  
16641         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
16642         it can be reused for MonoClass.
16643         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
16644         _LINKDEMAND.
16645
16646 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
16647
16648         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
16649         instead of a MonoReflectionMethod. The method information wasn't used
16650         when displaying SecurityException details (but will be now).
16651
16652 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
16653
16654         * Makefile.am : windows build fix.
16655
16656 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
16657
16658         * iltests.il: Add new regression test.
16659
16660         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
16661         #72522.
16662
16663 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
16664  
16665         * mini.c: Moved linkdemand check into helper function check_linkdemand
16666         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
16667         LDFTN, LDVIRTFTN).
16668
16669 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
16670
16671         * declsec.c: Added statistics counter for different kinds of 
16672         LinkDemands.
16673         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
16674         (and commented) declaration.
16675         * mini.c: Added statistics counter for security Demand code 
16676         generation. Added display of security statistics.
16677
16678 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
16679
16680         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
16681         Fix compilation errors under gcc-2.95.
16682
16683 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
16684
16685         * mini.c, driver.c: Use the new jit trampoline hashtable
16686
16687 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16688
16689         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
16690
16691 2005-02-11  Martin Baulig  <martin@ximian.com>
16692
16693         * debug-mini.c (mono_debug_close_method): Free the line number array.
16694
16695 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
16696
16697         * aot.c: Break up large methods into smaller ones. Share GOT slots for
16698         icalls.
16699
16700         * mini.h: Bump AOT file format version. 
16701
16702 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
16703
16704         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
16705         APTC and P/Invoke.
16706         * declsec.h: Added macros to get/set lazyly initialized security 
16707         informations about assemblies. Added new enum for different type of
16708         possible LinkDemand violation. Added function to check LinkDemands.
16709         * mini.h: Added a field to MonoCompile to hold any security violation
16710         detected when JITting a method (so it can be thrown later).
16711         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
16712         and CEE_CALLVIRT. Added code to throw exception at the end of
16713         mini_method_compile (note: the exception is unhandled right now).
16714
16715 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
16716
16717         * mini.c, jit-icalls.c: use the managed implementation of
16718         memset for initobj and memset, to avoid managed <-> unmanaged
16719         transitions.
16720
16721 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
16722
16723         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
16724         optimization if it would need a GOT var.
16725
16726         * basic.cs: Add tests for constant propagation and switch statements.
16727
16728         * ssa.c: Fix out-of-range constant propagation and switch statements.
16729
16730 2005-02-09    <vargaz@freemail.hu>
16731
16732         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
16733
16734 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
16735
16736         * cpu-amd64.md (load_membase): Fix max length of load_membase.
16737
16738 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16739
16740         * mini.c: update to new signature of mono_class_get_allocation_ftn().
16741
16742 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
16743
16744         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
16745         arithmetic operations.
16746
16747 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
16748
16749         * mini-ppc.c: add a workaround for broken user code that
16750         DllImports vararg functions with non-vararg signatures.
16751
16752 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
16753
16754         * mini.c (mono_jit_compile_method_inner): Add detection and a 
16755         meaningfull error message for assemblies written in Managed C++.
16756
16757         * tramp-amd64.c mini-amd64.h: Add support for 
16758         create_trampoline_from_token ().
16759
16760         * aot.c mini-x86.c abcremoval.c: Applied patch from
16761         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
16762
16763 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
16764
16765         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
16766         which takes a MonoImage/token as parameter instead of a MonoMethod.
16767
16768         * aot.c: Use the new trampoline for initializing vtables.
16769
16770         * aot.c: Add support for ldfld/stfld_remote wrappers.
16771
16772         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
16773         rules for compare <MEM>, IMM.
16774
16775         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
16776
16777         * aot.c: Handle inherited finalizers correctly.
16778
16779 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
16780
16781         * inssel.brg (stmt): Add a missing _setup_... ().
16782
16783         * aot.c: Save some parts of the class state to the AOT file and use it
16784         to recompute that state when a class is initialized.
16785
16786         * mini.c: Install AOT hooks into the runtime.
16787
16788         * mini.h: Bump AOT file format version.
16789         
16790         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
16791         Fixes #72148.
16792
16793         * iltests.il: Add new test.
16794
16795 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
16796
16797         * mini.c: fix typo.
16798
16799 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
16800
16801         * mini.c: setup the statistical profiler in the thread attach
16802         callback to cope with the new single thread code.
16803
16804 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
16805
16806         * mini-ppc.c: ensure we have enough room for the profiler
16807         calls (fixed bug#72084).
16808
16809 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
16810
16811         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
16812         it.
16813
16814 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16815
16816         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
16817
16818 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16819
16820         * ssapre.c: Fixed an issue with down safety (this allows IronPython
16821         to succesfully execute parrotbench).
16822         * ssapre.h: Likewise.
16823
16824 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16825
16826         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
16827         variable for stores to method arguments (fixes a SSAPRE issue).
16828
16829 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16830
16831         * mini.c: handle value types in dup, fixes gen-112.cs.
16832
16833 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
16834
16835         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
16836         sequence for calls in dynamic methods to avoid thunks.
16837
16838 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
16839
16840         * mini.c: correctly remove dynamic methods from the hashtable.
16841
16842 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16843
16844         * driver.c: Disabled SSAPRE until fix the bug that appears
16845         in IronPython's parrotbench.
16846
16847 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
16848
16849         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
16850
16851         * mini.c (mono_method_to_ir): Revert the previous change.
16852         
16853         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
16854         when AOT compiling.
16855
16856         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
16857         mono_jit_info_table_find () etc. when running under valgrind.
16858
16859         * inssel.brg: Fix warnings.
16860
16861         * mini-exceptions.c: Fix warnings.
16862
16863 2005-01-31  Martin Baulig  <martin@ximian.com>
16864
16865         * driver.c (compile_all_methods_thread_main): Don't try to compile
16866         generic methods or anything which has type parameters.
16867
16868 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
16869
16870         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
16871
16872         * TestDriver.cs: Add --verbose flags.
16873
16874         * graph.c ssa.c: Fix 64 bit warnings.
16875         
16876         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
16877         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
16878         Fix 64 bit warnings.
16879
16880         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
16881         variable not spotted by gcc.
16882         
16883         * mini-amd64.c inssel-amd64.brg: Applied patch from  
16884         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
16885         X86_COMPARE_MEMBASE opcodes.
16886
16887         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
16888
16889 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
16890
16891         * *: MonoMethod->signature might be NULL now. You *MUST* use
16892         mono_method_signature.
16893
16894 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16895
16896         * driver.c (compile_all_methods_thread_main): Compile the methods
16897         without invoking cctors.
16898
16899 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16900
16901         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
16902         * basic-calls.cs: test for the above.
16903
16904 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16905
16906         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
16907         MonoJitInfo changes.
16908
16909 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
16910
16911         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
16912         eagerly if it contains dynamic methods.
16913         
16914         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
16915
16916         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
16917         trace, it is now computed by an icall from trace_ips.
16918         
16919         * mini-exceptions.c: Fix a warning.
16920
16921 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
16922
16923         * mini-exceptions.c: don't bother getting stack trace info if
16924         it's not going to be used.
16925
16926 2005-01-27  Raja R Harinath  <rharinath@novell.com>
16927
16928         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
16929         ssapre-mini-ops.h.
16930
16931 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
16932
16933         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
16934
16935         * aot.c: Avoid calling mono_method_get_header () if not needed.
16936
16937         * mini.h: Bump AOT file format version.
16938         
16939         * mini.c (mono_emit_native_call): Allocate a GOT var here.
16940
16941         * mini.c (mono_print_tree): Print more info for calls.
16942
16943 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
16944
16945         * declsec.h: Remove warning by adding missing include for marshal.h
16946
16947 2005-01-26  Martin Baulig  <martin@ximian.com>
16948
16949         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
16950         `ip' twice.
16951
16952 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
16953
16954         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
16955         flags.
16956
16957         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
16958
16959         * aot.c (mono_compile_assembly): Fix a warning.
16960
16961 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
16962
16963         * declsec.c: Look for security attributes on the original MonoMethod 
16964         (and not the wrapped one). This fix permissions on icalls.
16965
16966 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16967
16968         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16969
16970         * mini.c (mono_allocate_stack_slots): Add a fixme.
16971
16972         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16973
16974 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16975
16976         * inssel.brg: optimize casts of sealed types (more
16977         optimizations waiting for fixes in remoting).
16978
16979 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16980
16981         * inssel.brg (stmt): Add another dummy rule.
16982
16983         * driver.c: Fix warnings.
16984
16985         * driver.c (mono_main): If running under valgrind, instruct glib to use
16986         the system allocation functions so valgrind can track the memory
16987         allocated by the g_... functions.
16988
16989         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
16990
16991         * mini-ops.h: Add OP_DUMMY_STORE opcode.
16992
16993         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
16994
16995         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
16996         variables in try regions.
16997
16998         * mini.c (mini_method_compile): Don't disable optimizations on large
16999         methods when AOT compiling.
17000
17001         * mini.c (mono_allocate_stack_slots): New arch independent method to 
17002         allocate stack slots. Not yet used.
17003
17004 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
17005
17006         * debug-mini.c (mono_debug_close_method): Plug some leaks.
17007
17008 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
17009
17010         * mini-ppc.c: make the branch info relative as the code
17011         buffer can be reallocated.
17012
17013 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
17014
17015         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
17016         * driver.c: Removed the AOT/security restriction. Now initialize the
17017         security manager (in metadata) if --security is used.
17018         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
17019         rather than the pointer to declarative security, when AOT is used.
17020
17021 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
17022
17023         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
17024         basic blocks, reduced intrinsic exception throwing code size.
17025
17026 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
17027
17028         * driver.c (mini_usage): Reorder the usage screen.
17029
17030 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
17031
17032         * mini.c (mono_resolve_patch_target): Fix warning.
17033
17034 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
17035
17036         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
17037         previous patch.
17038
17039         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17040
17041         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
17042         breaks the amd64 build.
17043
17044         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
17045         register allocation. Fixes #71454.
17046
17047         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17048
17049         * arrays.cs: Add new regression test.   
17050
17051 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17052
17053         * ssapre.c: Turned usage of snprintf to GString.
17054         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
17055         (I left it on by mistake in my previous commit).
17056
17057 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
17058
17059         * mini.c, cfold.c, basic-calls.cs: preserve side effects
17060         on cond branch optimization (fixes bug# 71515).
17061
17062 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17063
17064         * abcremoval.c: Fixed bug 71062.
17065         * abcremoval.h: Likewise.
17066
17067 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17068
17069         * mini.c: Added a new functionality to optimize_branches, the removal
17070         of useless basic blocks, and fixed some problem in the removal of
17071         critical edges; some utility functions added for both purposes.
17072         * ssapre.c: Added complex expression support, and fixed bug 70637.
17073         * ssapre.h: Likewise.
17074         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
17075         enabled in SSAPRE.
17076         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
17077         * driver.c: Re-enabled SSAPRE.
17078
17079 2005-01-19  Martin Baulig  <martin@ximian.com>
17080
17081         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
17082         the result of mono_get_method_constrained().
17083
17084 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
17085
17086         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
17087         manager.
17088
17089 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
17090
17091         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
17092         be detected.  Fixes #59296.
17093
17094 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17095
17096         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
17097         which can happen. Fixes #71361.
17098
17099 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17100
17101         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
17102         manager.
17103
17104 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17105
17106         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
17107         appdomain-unload.exe to fail.
17108         
17109         * mini.c: Fix some memory leaks.
17110
17111 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
17112
17113         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
17114         Fixed bug and sped up some codepaths.
17115
17116 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17117
17118         * mini.c: Fix some memory leaks.
17119
17120         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
17121         conversion.
17122
17123         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
17124
17125         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
17126         #71320.
17127
17128         * iltests.il: Add regression test for #71320.
17129
17130 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
17131
17132         * mini.c (mono_codegen): Fix installation of profiler hooks.
17133
17134         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
17135
17136 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17137
17138         * mini.h, mini.c, cfold.c: optimize access to enum
17139         readonly fields, too. Eval conditional branches if possible
17140         to perform unreachable code removal in more cases.
17141
17142 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
17143
17144         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
17145
17146         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
17147         code manager.
17148
17149         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
17150         WinXP DEP. Fixes #71244.
17151
17152 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
17153
17154         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
17155
17156 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
17157
17158         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
17159
17160 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
17161
17162         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
17163         changes.
17164
17165         * mini.h: Bump AOT version.
17166
17167         * mini.h (MonoCompile): Change exvar to a hash table.
17168
17169         * mini.c: Allocate a separate exvar for each handler block.
17170
17171         * mini.c: Get rid of the computation of filter_lengths, its not needed.
17172
17173         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
17174         ex var with the pending exception and only throw if the two are equal.
17175         Fixes #68552.
17176         
17177         * exceptions.cs: Add tests for rethrow and nested catch clauses.
17178
17179         * mini-x86.c: Fix warnings.
17180
17181         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
17182         used by all the ports now.
17183
17184         * aot.c: Add write-symbols and save-temps options.
17185
17186 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17187
17188         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
17189
17190 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
17191
17192         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
17193         operations.
17194
17195         * tramp-s390.c: Check vtable slot belongs to the domain.
17196
17197         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
17198         as per other platforms.
17199
17200         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
17201
17202 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
17203
17204         * driver.c: we don't run the Main() code in a subthread anymore.
17205
17206 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
17207
17208         * mini.c: added experimental rtc support in the statistical
17209         profiler: if the user has the permission, more accurate statistics
17210         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
17211         The MONO_RTC value must be restricted to what the linux rtc allows:
17212         power of two from 64 to 8192 Hz.
17213
17214 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17215
17216         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
17217
17218 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
17219
17220         * mini-ppc.c: better icache flush for smp.
17221
17222 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
17223
17224         * mini-amd64.c (emit_move_return_value): Fix memory leak.
17225
17226         * mini-x86.c (get_call_info): Add the get_call_info () code from the
17227         amd64 port, not yet used.
17228
17229 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17230
17231         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
17232         a struct type.
17233
17234 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
17235
17236         * driver.c: Added --security option to activate the security manager.
17237         Right now this will allow code generation for declarative demands and
17238         is disabled when AOT is specified.
17239         * mini.c: Add code generation for declarative security demands.
17240         * mini.h: Add mono_use_security_manager as an extern gboolean.
17241
17242 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17243
17244         * aot.c (mono_compile_assembly): Speed up compilation a bit by
17245         emitting more dense assembly code.
17246
17247         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
17248         exception throwing stuff.
17249
17250 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
17251
17252         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
17253         dead code.
17254
17255         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
17256         left in by mistake.
17257
17258         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
17259         fixed.
17260
17261         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
17262
17263         * tramp-*.c: Only patch vtable slots if the object is in the current
17264         domain. Fixes appdomain-unload.exe.
17265
17266         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
17267         
17268         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
17269         x86 branch.
17270
17271 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17272
17273         * mini.c (reverse_branch_op): New helper function.
17274
17275         * mini.c (optimize_branches): Run the new optimization only on 
17276         platforms which support it. Also reverse all kinds of branches.
17277
17278         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
17279
17280         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
17281         a throw statement.
17282
17283         * mini.c (optimize_branches): Reverse not-equals branches if the false
17284         bblock is a throw. This happens a lot of time with argument checking in
17285         corlib.
17286
17287         * mini.c (mono_codegen): Add support for placing basic blocks after
17288         the function epilogue.
17289
17290         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
17291         function epilogue.
17292         
17293 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
17294
17295         * mini.c (setup_stat_profiler): Only set this up if the platform
17296         supports ITIMER_PROF.
17297
17298 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17299
17300         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
17301         previous patch.
17302
17303         * inssel.brg: Fix a warning.
17304
17305 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
17306
17307         * mini.c: added support for statistical profiler 
17308         (run with: --profile=default:stat).
17309
17310 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
17311
17312         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
17313
17314         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
17315
17316         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
17317         related to global registers from the amd64 port.
17318
17319 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
17320
17321         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
17322
17323         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
17324         with global registers.
17325         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
17326
17327         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
17328
17329 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
17330
17331         * debug-mini.c (encode_value): Fix off-by-one.
17332
17333         * aot.c (encode_value): Likewise.
17334
17335         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
17336
17337 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
17338
17339         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
17340         AOT.
17341
17342         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
17343         
17344         * aot.c (emit_method_info): Increase size of temp buffer.
17345
17346         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
17347         the AOT case.
17348
17349 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
17350
17351         * aot.c (emit_method_info): Fix build.
17352         
17353         * aot.c: Further rework of the AOT file format to reduce the size of
17354         the method info data.
17355
17356         * mini.h: Bump AOT file format version.
17357
17358 2004-12-27  Martin Baulig  <martin@ximian.com>
17359
17360         * mini.c (mini_get_method): New static method; call
17361         mono_get_method_full() and mono_get_inflated_method().
17362         (mono_method_to_ir): Use mini_get_method() instead of
17363         mono_get_method_full(). 
17364
17365 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
17366
17367         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
17368
17369 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
17370
17371         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
17372
17373         * inssel-amd64.brg: Add some optimization rules.
17374
17375 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
17376
17377         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
17378         standard not GC'd stuff is fine.
17379
17380 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
17381
17382         * aot.c: Rework the AOT file format to get rid of most of the global
17383         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
17384
17385         * mini.h: Bump AOT file format version.
17386         
17387 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
17388
17389         * mini.h: Bump AOT file format version.
17390
17391         * aot.c (mono_aot_is_got_entry): New function to determine if an 
17392         address is inside a GOT.
17393
17394         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
17395
17396         * cpu-pentium.md: Increase the maximum size of some instructions which
17397         might involve a got access.
17398         
17399         * mini.c (get_method_from_ip): Another debug helper function.
17400
17401         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
17402         when got var accesses are created during the decompose phase.
17403
17404         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
17405
17406         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
17407         argument mini_compile_method and to MonoCompile, and use this to
17408         determine whenever a given method is compiled for AOT. This allows the
17409         other methods compiled during AOT compilation to be free of AOT stuff,
17410         so the backends does not need to add special support for them by
17411         creating a fake GOT etc.
17412
17413         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
17414         longer needed.
17415
17416 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17417
17418         * mini.c (mono_method_to_ir): It turns out that some of the
17419         x-appdomain wrappers are lax with types, so just ignore this for
17420         all wrappers.
17421
17422         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
17423         at the vtable->klass. If it is non-shared code we can just use the
17424         vtable.
17425
17426 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
17427
17428         * mini-ppc.c: access MonoDomain from tls, too.
17429
17430 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
17431
17432         * declsec.c: Removed unused variable (and related warning ;-)
17433
17434 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17435
17436         * iltests.il: New test for LDELEMA on an array of ref types.
17437
17438         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
17439         all ldelema's on reftypes.
17440         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
17441         it was the wrong place to put it.
17442
17443         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
17444         register to pop to make this cleaner, at the request of Paolo.
17445
17446 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
17447
17448         * mini-ops.h (OP_GETHASHCODE): New op.
17449
17450         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
17451
17452         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
17453         operation.
17454
17455         For a microbenchmark, this reduces the cost of Hashtable.get_Item
17456         by 25%.
17457         
17458         * mini-x86.c (mono_arch_output_basic_block): Rather than
17459
17460         add ebp, 4
17461
17462         Emit
17463
17464         pop edx
17465
17466         The first is 3 bytes while the second is 1. This saves 36 kb on
17467         mscorlib, quite a big saving. When bootstraping mcs, I was able to
17468         see a small boost because of icache locality.
17469
17470         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
17471
17472 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
17473
17474         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
17475         started code sharing with the generic code.
17476
17477 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
17478
17479         * mini-ppc.c, cpu-g4.md: added code for direct access to
17480         tls data slots.
17481
17482 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
17483
17484         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
17485          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
17486         to OP_TLS_GET.
17487
17488 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
17489
17490         * declsec.c|h: Added functions to cache the declarative stack modifiers
17491         in MonoJitInfo and to create a security frame from a MonoJitInfo 
17492         structure.
17493         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
17494         created. Register internal calls for System.Security.SecurityFrame::
17495         _GetSecurityFrame and _GetSecurityStack.
17496         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
17497         the definitions for the new stack walk/callback mechanism.
17498         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
17499         first security frame for LinkDemands and InheritanceDemands) and
17500         GetSecurityStack for Demands. Both use the new mono_walk_stack code
17501         from lupus.
17502         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
17503         walk initialization (lupus).
17504
17505 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
17506
17507         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
17508         idiom.
17509         (handle_loaded_temps): Do not create a temporary variable for
17510         things that we know are temps. They will never be modified.
17511         (mono_spill_call): Set MONO_INST_IS_TEMP
17512         (mono_emulate_opcode): ditto
17513         (emit_tree): ditto
17514         (mono_method_to_ir.CEE_DUP): ditto
17515
17516 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
17517
17518         * mini.c (type_to_eval_stack_type): Make this handle the void type
17519         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
17520         (emit_tree): use ip_in_bb to special case some common idioms
17521         Update all callers to pass in the IP.
17522         (mono_method_to_ir): Make CEE_CALL* do the above as well.
17523
17524         This gives us a nice 2% speedup in mcs bootstrap.
17525
17526         * mini-x86.c (peephole_pass): Peephole pass to make
17527         mov  [foo], eax
17528         push [foo]
17529
17530         into
17531
17532         mov [foo], eax
17533         push eax
17534
17535         * mini.c (ip_in_bb): new method.
17536         (mono_method_to_ir): use this method rather than doing the hash
17537         lookup ourselves.
17538
17539         * linear-scan.c (mono_linear_scan): When expiring actives, you
17540         don't need to keep around variables that expire on this
17541         instruction. This makes it so that:
17542              a = b + 1
17543         will turn into:
17544              store (ebx add (ebx, 1))
17545         which will become
17546              add ebx, 1
17547
17548 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
17549
17550         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
17551         combination to avoid doing two copies. Fix up problems with previous
17552         patch.
17553
17554         * mini.c: Fix 64 bit warnings.
17555
17556         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
17557
17558 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
17559
17560         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
17561         changes from the x86 code.
17562
17563         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
17564
17565 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
17566
17567         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
17568         throwing code to reduce its size, unify the AOT and non-aot code and 
17569         get rid of relocations in the AOT case.
17570
17571         * mini-x86.h mini.c exceptions-x86.c 
17572         (mono_arch_get_throw_corlib_exception): New arch specific function to 
17573         raise corlib exceptions which doesn't require relocations in the 
17574         caller.
17575
17576         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
17577
17578 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
17579
17580         * mini.c (mono_emit_method_call): Only allocate the got var when it is
17581         needed.
17582
17583         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
17584         in the AOT case.
17585
17586 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17587
17588         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
17589         with add function when used from Inc/dec atomic 
17590         functions. Re-enabled optimization on x86.
17591         * mini-ops.h: renamed atomic_add functions to
17592         allow _add to match the Interlocked::Add and
17593         _add_next to match Interlocked::Inc/Dec.
17594
17595 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
17596
17597         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
17598         linking of BBs to the end BB, and enabled SSAPRE also with
17599         consprop and copyprop (which was prevented by that bug).
17600
17601 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17602
17603         * mini-x86.c: disabling the Interlocked optimizing code. 
17604
17605 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
17606
17607         * aot.c (load_aot_module): Move reading of got_addr after the AOT
17608         file version check.
17609         
17610 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17611
17612         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
17613         interlocked optimization due lack of support on x86, rewrote 
17614         exchange to take into account that base may be in eax.
17615         
17616         xsp works again; activated Interlocked optimizing code.
17617         
17618 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
17619
17620         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
17621
17622 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
17623
17624         * mini-ops.h: Add new opcodes.
17625
17626         * mini.h: Add new patch types. Add got_var to MonoCompile.
17627
17628         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
17629         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
17630         make it work with all kinds of patchable code.
17631
17632         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
17633         address of the GOT, and referencing entries in the GOT.
17634
17635         * mini.c: Add code to load the GOT address if needed by an opcode.
17636
17637         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
17638         independent AOT code on the x86 using an elf-style Global Offset Table.
17639
17640 2004-12-14  Raja R Harinath  <rharinath@novell.com>
17641
17642         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
17643
17644 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17645
17646         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
17647         when running xsp.
17648
17649 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
17650
17651         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
17652         of Interlocked:Increment/Decrement/Add as inline ops.
17653         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
17654
17655 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
17656
17657         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
17658         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
17659
17660 2004-12-12  Duncan Mak  <duncan@ximian.com>
17661
17662         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
17663         again. `patch_info->table_size' is no longer valid after Zoltan's
17664         commit #37636.
17665
17666 2004-12-12  Martin Baulig  <martin@ximian.com>
17667
17668         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
17669         if we are the "real" method, ie. not an inlined method inside it.
17670
17671 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
17672
17673         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
17674         before we look in the special fields table. This fixes
17675         ../tests/thread-static-init.cs.
17676
17677 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17678
17679         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
17680         for Array get_Rank and get_Length. Fixes bug #70465.
17681
17682 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
17683
17684         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
17685         separate structure to reduce the size of MonoJumpInfo.
17686
17687 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
17688
17689         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
17690
17691 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
17692
17693         * mini.c (mini_get_inst_for_method): Changed to allow ports
17694         to return a MonoInst instead of opcode 
17695         (renamed mini_get_opcode_for_method to better reflect the new functionality)
17696         
17697         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
17698         Allow ports to return a created MonoInst instead of op-code, will enable
17699         new optimizations.
17700         (renamed mini_get_opcode_for_method to better reflected the functionality)
17701
17702 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
17703
17704         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
17705
17706 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
17707
17708         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
17709         Fixes #69985.
17710
17711 2004-12-08  Martin Baulig  <martin@ximian.com>
17712
17713         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
17714         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
17715
17716 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
17717
17718         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
17719         correctly.
17720
17721         * exceptions.cs: Disable some tests which depend on properties of x86 fp
17722         arithmetic.
17723
17724 2004-12-08  Raja R Harinath  <rharinath@novell.com>
17725
17726         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
17727
17728 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
17729
17730         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
17731         bug introduced by the previous patch.
17732
17733 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
17734
17735         * mini-ppc.c, objectc.cs: handle large structs passed by value
17736         (fixes bug #69972).
17737
17738 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
17739
17740         * mini-ppc.c: OP_ARGLIST implementation from
17741         Geoff Norton  <gnorton@customerdna.com>.
17742
17743 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
17744
17745         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
17746         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
17747
17748 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
17749
17750         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
17751
17752 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17753
17754         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
17755         support.
17756
17757 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
17758
17759         * mini-sparc.c: Zero out localled-ed memory.
17760
17761         * iltests.il: Add tests for zeroing out localloc-ed memory.
17762
17763 2004-12-04  Martin Baulig  <martin@ximian.com>
17764
17765         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
17766         mono_method_get_signature_full().       
17767
17768 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
17769
17770         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
17771         and some utility functions (always for SSAPRE), integrated SSAPRE.
17772         * mini.h: Likewise.
17773         * driver.c: Added ssapre option.
17774         * ssa.c: Small fix on OP_ARG handling.
17775         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
17776         * Makefile.am: Likewise.
17777
17778 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
17779
17780         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
17781         now in the xp code.
17782
17783         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
17784         icall.
17785
17786 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17787
17788         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
17789         
17790         * cpu-s390.md : Increase instruction length of oparglist.
17791
17792         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
17793
17794 2004-11-30  Martin Baulig  <martin@ximian.com>
17795
17796         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
17797         virtual generic methods.  We call a special helper_compile_generic_method()
17798         icall to retrieve the method from the vtable, inflate and compile
17799         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
17800
17801         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
17802
17803 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
17804
17805         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
17806
17807 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
17808
17809         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
17810         Fixes #69929.
17811
17812 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
17813
17814         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
17815         platforms with PIC aot.
17816
17817 2004-11-28  Martin Baulig  <martin@ximian.com>
17818
17819         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
17820         Fixes gen-112.cs.
17821
17822 2004-11-28  Martin Baulig  <martin@ximian.com>
17823
17824         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
17825         the result of mono_type_get_underlying_type() to check whether
17826         we're byref.
17827
17828 2004-11-26  Martin Baulig  <martin@ximian.com>
17829
17830         * mini.c
17831         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
17832         in the g_assert().
17833
17834 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
17835
17836         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
17837         the same way as the other arguments so they won't get clobbered.
17838
17839         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
17840         calls through R11 since it is clobbered by the trampoline code.
17841
17842 2004-11-26  Raja R Harinath  <rharinath@novell.com>
17843
17844         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
17845         pick up in-tree mscorlib.dll.
17846
17847 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
17848
17849         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
17850
17851         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
17852         runtime data/code are now stored in a table similar to the GOT in ELF. 
17853         This allows the code itself to be position independent.
17854
17855         * aot.c: Fix loading of referenced assemblies after the lazy assembly
17856         loading changes.
17857
17858         * aot.c: Attach ELF type (object/function) directives to all global
17859         symbols.
17860
17861         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
17862
17863         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
17864
17865         * mini-amd64.h: Turn on PIC AOT code.
17866
17867         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
17868         returning the offset within an OP_AOTCONST instruction where the GOT
17869         offset needs to be added.
17870
17871         * mini.h: Bump AOT file format version.
17872
17873 2004-11-25  Martin Baulig  <martin@ximian.com>
17874
17875         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
17876         uninflated generic methods.
17877
17878 2004-11-25  Martin Baulig  <martin@ximian.com>
17879
17880         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
17881
17882 2004-11-24  Martin Baulig  <martin@ximian.com>
17883
17884         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
17885         original klass (this only applies for generic instances).
17886
17887 2004-11-24  Martin Baulig  <martin@ximian.com>
17888
17889         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
17890         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
17891         that array).
17892
17893 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
17894
17895         * mini.c (mono_method_to_ir): Disable inlining for methods containing
17896         localloc. Fixes #69678.
17897
17898         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
17899         
17900 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
17901
17902         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
17903         used SSE registers on pinvoke calls. Fixes #69774.
17904
17905 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
17906
17907         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
17908         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
17909
17910 2004-11-23  Raja R Harinath  <rharinath@novell.com>
17911
17912         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
17913         Refer directly to the mcs/ tree.
17914
17915 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17916
17917         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
17918         Check if a trampoline for a synchronized method is required. 
17919
17920 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
17921
17922         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
17923         with localloc if needed. Throe arithmetric exception in
17924         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
17925         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
17926
17927 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
17928
17929         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
17930         types before switching on type.  Fixes #69622.
17931
17932 2004-11-19  Raja R Harinath  <rharinath@novell.com>
17933
17934         * Makefile.am (check-local): New.  Integrate into 'make check'.
17935         (MCS,RUNTIME): Define using in-tree mono and mcs.
17936         (ILASM): New.
17937         (%.exe): Use $(ILASM).
17938
17939 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
17940
17941         * mini-ppc.c: adjust initial prolog size (bug #69691).
17942
17943 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
17944
17945         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
17946         #69664.
17947
17948 2004-11-17  Raja R Harinath  <rharinath@novell.com>
17949
17950         * Makefile.am (clean-local): Rename from 'clean'.
17951
17952 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17953
17954         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
17955         to mono_arch_is_int_overflow. 
17956         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
17957         SIGFPE events.
17958
17959 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
17960
17961         * declsec.c|h: New files to support declarative security attributes.
17962         Added function to check if a method has (applicable) security.
17963         * mini.c|h: Add check for declarative security attributes in
17964         mono_method_check_inlining.
17965         * Makefile.am: Added declsec.c and declsec.h to the build.
17966
17967 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
17968
17969         * mini.c, mini.h: update to keep dynamic code info per-domain.
17970
17971 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
17972
17973         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
17974         (mini_init): Get rid of it from here too.
17975
17976 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
17977
17978         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
17979         implemented OP_RETHROW (patch by Geoff Norton
17980         <gnorton@customerdna.com>).
17981
17982 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
17983
17984         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
17985         between appdomains.  Fixes appdomain-unload on PPC.
17986
17987 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
17988
17989         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17990         mini-exceptions.c: handle the new wrapper types.
17991         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
17992         token value as a MonoClass* when compiling a wrapper.
17993         mono_jit_create_remoting_trampoline now takes an additional
17994         MonoRemotingTarget parameter.
17995         
17996 2004-11-10  Martin Baulig  <martin@localhost>
17997
17998         * mini.c (mono_method_to_ir): Use `generic_container->context'
17999         rather than creating a new one.
18000
18001 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18002
18003         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
18004
18005         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
18006
18007 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
18008
18009         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
18010         the experimental aot cache stuff.
18011
18012 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18013
18014         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18015         mini-exceptions.c: update to exception clause structure changes.
18016
18017 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18018
18019         * exceptions-x86.c (throw_exception): Fix warnings.
18020
18021         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
18022         for OP_RETHROW.
18023
18024 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18025
18026         * exceptions-sparc.c (get_throw_exception): Really fix this.
18027
18028 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
18029
18030         * tramp-*.c: we no longer support icalls without wrappers, so
18031         a bit of code can be removed here
18032
18033 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
18034
18035         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
18036         patch.
18037
18038         * cpu-sparc.md: Add op_rethrow.
18039
18040         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
18041
18042         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
18043
18044         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
18045         * mini-ops.h: Add OP_RETHROW.
18046
18047         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
18048
18049         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
18050
18051 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
18052         
18053         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
18054         Makes the output much easier to read
18055
18056 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
18057
18058         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
18059         prevents another huge leak when compiling with ssa. Secondly, the
18060         performance of doing this rather than freeing the lists is much
18061         better. GList does a lock every time you allocate a list link,
18062         so that it can use a memory pool. So, it is better to just use
18063         a memory pool of our own.
18064         
18065         * ssa.c, linear-scan.c: replace g_list_remove_link with
18066         g_list_delete.  The remove one does not free the GList, so we were
18067         leaking memory. On -O=all --compile-all with corlib, this cut down
18068         3 MB of allocations.
18069
18070 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
18071
18072         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
18073
18074         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
18075
18076         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
18077         into a new function mono_create_jit_trampoline ().
18078
18079 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
18080
18081         * trace.c (get_spec): Allow tracing of classes without a namespace.
18082
18083 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
18084
18085         * mini.c: Fix pointer overwrite in mini_method_compile.
18086
18087 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
18088
18089         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
18090         The darwin ABI needs some special handling for 1 and 2 byte structs
18091         Lets use lbz/lhz instead of lwz everywhere.
18092         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
18093         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
18094         Use stb/sth for the former, and put the latter always on stack instead of in
18095         argument registers.
18096
18097 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
18098
18099         * trace.c (is_filenamechar): Add '_'.
18100
18101 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
18102
18103         * mini-s390.c: Fix prolog length to allow for large trace requirements.
18104
18105         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
18106
18107 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
18108
18109         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
18110         depends on libmonogc. Fixes #68805.
18111
18112 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
18113
18114         * mini.c (mono_jit_free_method): Provide extra information for
18115         this error.  Currently this leaks, but will be turned into a
18116         developer option in the future.
18117
18118 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
18119
18120         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
18121
18122 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
18123
18124         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
18125         boundary. Fixes reading of PATCH_INFO_R4 and R8.
18126         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
18127
18128 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
18129
18130         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
18131         trampolines for AOT code.
18132
18133 2004-10-22    <vargaz@freemail.hu>
18134
18135         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
18136         constructed types. Fixes #68136.
18137
18138 2004-10-21  Martin Baulig  <martin@ximian.com>
18139
18140         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
18141         if it returns true, unwind the stack to the call instruction.
18142
18143 2004-10-21    <vargaz@freemail.hu>
18144
18145         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
18146
18147         * mini.h: Bump AOT version number.
18148
18149         * objects.cs: Add another test for unbox trampolines.
18150
18151         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
18152         valuetype methods.
18153
18154 2004-10-20    <vargaz@freemail.hu>
18155
18156         * driver.c: Add SHARED to the set of optimizations tested.
18157
18158         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
18159
18160         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
18161         used by CEE_NEWARR.
18162
18163         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
18164
18165 2004-10-20  Martin Baulig  <martin@ximian.com>
18166
18167         * mini-exceptions.c (mono_handle_exception): Call
18168         mono_debugger_handle_exception() to tell the debugger about
18169         catch/finally clauses.
18170
18171 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
18172
18173         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
18174
18175         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
18176         #68447.
18177
18178 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
18179
18180         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
18181         methods as their native size, fixed bug #57543, #57545.
18182         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
18183         This saves a temporary register and mullw call down into 1 (minor perf
18184         increase for cases like sum = sum * 5;  This use to translate into:
18185             li r11,5
18186             mullw r28,r28,r11
18187         It now translates to
18188             mulli r28,r28,5
18189
18190 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
18191
18192         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
18193         #68388.
18194
18195 2004-10-11  Martin Baulig  <martin@ximian.com>
18196
18197         * mini.c (mono_method_to_ir): If we're a generic method, get the
18198         MonoGenericContainer from our MonoMethodNormal and create a
18199         MonoGenericContext from it.
18200
18201 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
18202
18203         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
18204
18205         * basic-long.cs: Add test for checked i8->i2 cast.
18206
18207 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18208
18209         * inssel-ppc.brg: added a couple of speedup rules.
18210
18211 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
18212
18213         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
18214         to speed up rebuilds.
18215
18216 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18217
18218         * mini-s390.c: Minor fix to OP_OR_IMM.
18219
18220 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
18221
18222         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
18223         better. Fixes appdomain-unload.exe on sparc.
18224
18225 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
18226
18227         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
18228         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
18229         see bug 67324.
18230
18231 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
18232
18233         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
18234
18235 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
18236
18237         * mini.c: Always generate a field read/write wrapper for members
18238         of the class MarshalByRefObject since the actual instance could
18239         be a CBO.
18240
18241 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
18242
18243         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
18244
18245 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
18246
18247         * driver.c mini.h trace.c: Move the setting of the main assembly into
18248         a separate function called mono_trace_set_assembly () and call it after
18249         actually loading the main assembly. Fixes #66872.
18250
18251 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
18252
18253         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
18254         using the code manager.
18255
18256 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
18257
18258         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
18259
18260 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
18261
18262         * cpu-amd64.md: Fix bug in previous patch.
18263         
18264         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
18265         #66650.
18266
18267 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
18268
18269         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18270         mini-exceptions.c: updates for changed stack walk interface.
18271
18272 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18273
18274         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
18275
18276 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
18277
18278         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
18279
18280 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
18281
18282         * driver.c (mini_regression_list): Do not call mono_assembly_close 
18283         since assemblies can't be unloaded.
18284         
18285 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18286
18287         * cpu-amd64.md: Fix more instruction lengths.
18288
18289         * cpu-amd64.md: Fix lengths of some instructions.
18290
18291 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
18292
18293         * inssel.brg: Make the array ldelema check aot friendly.
18294
18295 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18296
18297         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
18298
18299         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
18300
18301 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
18302
18303         * mini-x86.c: Fix build.
18304
18305         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
18306         mono_type_get_underlying_type () helper function to simplify code.
18307         
18308 2004-09-09  Martin Baulig  <martin@ximian.com>
18309
18310         * mini-amd64.c: Don't access `type->data.klass' directly, call
18311         mono_class_from_mono_type() instead since the type may be a
18312         generic instance.
18313
18314 2004-09-09  Martin Baulig  <martin@ximian.com>
18315
18316         * mini-amd64.c (get_call_info): Fix support for generic instances.
18317         (add_valuetype): Use mono_class_from_mono_type() to get the class
18318         since we can be a generic instance.
18319
18320 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
18321
18322         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
18323
18324 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18325
18326         * liveness.c: reset spill costs on each scan: bug 62107
18327
18328 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
18329
18330         * exceptions-sparc.c (mono_arch_find_jit_info): remove
18331         unnecessary line that doesn't compile
18332
18333 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
18334
18335         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
18336         trampolines, make them call an error function so people can fix their
18337         code.
18338
18339 2004-09-06  Martin Baulig  <martin@ximian.com>
18340
18341         * mini.c (mono_method_to_ir): When initializing locals, handle a
18342         generic instances like a valuetype if it's a valuetype and like a
18343         class if it's a class.
18344
18345 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18346
18347         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
18348         stack. Fixes #64674.
18349
18350         * exceptions.cs: Add test for unwinding of call arguments.
18351
18352 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
18353
18354         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
18355         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
18356         set the carry/borrow flag). The sparc and s390 implementations
18357         can now use optimized versions (and simplify the code). ppc bugfixes.
18358
18359 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18360
18361         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
18362
18363 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
18364
18365         * inssel-amd64.brg: Remove leftover 32 bit rule.
18366
18367         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
18368
18369 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
18370
18371         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
18372         mono_arch_find_jit_info functions into a new function. Fix a memory
18373         leak.
18374
18375         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
18376         refactored code.
18377         
18378 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18379
18380         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
18381         as well.
18382         
18383         * exceptions.cs: Add array size tests.
18384
18385         * mini.c: Allocate a separate icall wrapper for each arity of 
18386         mono_array_new_va. Fixes #59509.
18387
18388         * exceptions.cs: Add testcase for 64578.
18389
18390         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
18391
18392         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
18393         
18394 2004-09-02  Martin Baulig  <martin@ximian.com>
18395
18396         * mini.c (mono_method_to_ir): When initializing the locals, call
18397         handle_initobj() on the generic instance itself, not its
18398         underlying type.
18399
18400 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18401
18402         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
18403         MonoJitInfo for dynamic methods.
18404
18405         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
18406
18407         * mini.c: Add support for freeing JIT data for dynamic methods.
18408         
18409 2004-09-01  Martin Baulig  <martin@ximian.com>
18410
18411         * mini-x86.c (is_regsize_var): Added support for generic
18412         instances.
18413         (mono_arch_emit_prolog): Make this compile again, use
18414         `x86_push_imm_template (code)'.
18415
18416 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
18417
18418         * mini-x86.c: make all push_imm instructions that get
18419         patched always emit the long form
18420
18421 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
18422
18423         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
18424         in a per-domain hash.
18425
18426         * mini-amd64.c (merge_argument_class_from_type): Handle generic
18427         types.
18428
18429 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
18430
18431         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
18432         work.
18433         
18434         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
18435         work.
18436
18437         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
18438         Beginnings of SSE2 support.
18439
18440         * exceptions.cs: Add more tests for checked int<->uint casts.
18441
18442 2004-08-28  Martin Baulig  <martin@ximian.com>
18443
18444         * mini-x86.c (mono_arch_instrument_epilog): Added support for
18445         generic instances.
18446
18447         * mini.c
18448         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
18449         Handle generic instances recursively.
18450
18451 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18452
18453         * iltests.il: test for conv.u8 on a constant
18454
18455 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18456
18457         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
18458         LCONV_x4 (shrun_32 (membase)).
18459
18460 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18461
18462         * inssel-x86.brg: c&p rules for push/setret of long
18463
18464 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
18465
18466         * inssel-x86.brg: c&p rules for compare (base, regvar) and
18467         compare (regvar, base)
18468
18469         * inssel-x86.brg: more burg love
18470
18471         * inssel.brg: more cleanup
18472
18473         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
18474
18475 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
18476
18477         * basic-long.cs, basic-calls.cs: new tests for optimization.
18478
18479 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
18480
18481         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
18482         patch.
18483
18484 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
18485
18486         * mini-amd64.c (read_tls_offset_from_method): Add another case.
18487         
18488 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
18489
18490         * inssel.brg (mini_emit_memcpy): use 
18491         NO_UNALIGNED_ACCESS to disable memcpy optimization
18492
18493 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
18494
18495         * mini-amd64.c: Handle generic types in various places.
18496
18497         * mini.c (mono_method_to_ir): Handle generic types in init locals.
18498
18499 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
18500
18501         * mini.c (handle_box): Fix warning.
18502
18503         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
18504
18505         * mini-amd64.h: Enable the emit_state optimization.
18506
18507         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
18508
18509         * mini-amd64.c: Add some new 64 bit peephole opts.
18510
18511         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
18512
18513         * cpu-amd64.md: sreg1 of div instructions must be %rax.
18514
18515         * mini-amd64.c: Register allocator fixes.
18516
18517         * mini.c: Add an optimization to emit_state to avoid allocation of new
18518         registers on some platforms.
18519
18520 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
18521
18522         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
18523
18524         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
18525         allocation. Fixes #63085.
18526
18527         * basic-long.cs: Add new regression test.
18528
18529         * mini-amd64.c: Register allocator improvements.
18530
18531 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
18532
18533         * mini-amd64.c (read_tls_offset_from_method): Add another code
18534         sequence.
18535
18536         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
18537         instruction sequence for nullifying class init trampolines.
18538
18539         * objects.cs: Add new regalloc test.
18540
18541         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
18542
18543 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
18544
18545         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
18546         
18547         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
18548         arguments.
18549
18550         * driver.c: Fix profiling after TLS changes.
18551         
18552         * driver.c (mono_main): Set mono_stats.enabled if needed.
18553
18554         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
18555         CEE_BOX.
18556
18557 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
18558
18559         * mini-x86.c: use a 1 op rather than a 2 op tls access
18560         instruction -> faster.
18561
18562 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
18563
18564         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
18565         x86 backend.
18566
18567 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
18568
18569         * exceptions-sparc.c (throw_exception): fix typo
18570
18571 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18572
18573         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
18574         set tree->dreg correctly with tls. Allow any
18575         register to be used.
18576
18577         * mini-x86.c (read_tls_offset_from_method): add new code
18578         generation pattern seen with GCC.
18579
18580
18581 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18582
18583         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
18584         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18585         exceptions-sparc.c: fix some performance issues in exception
18586         handling and setting of the stack trace for exceptions that were
18587         already thrown.
18588
18589 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18590
18591         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
18592         x86 backend.
18593         
18594         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
18595         registers.
18596
18597 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18598
18599         This patch inlines tls access, when possible.
18600         
18601         * mini.h: new arch functions for TLS intrinsics.
18602         All platforms updated with a stub.
18603
18604         * mini.c: use the new intrinsics
18605
18606         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
18607         arch specific intrinsic for tls variables
18608
18609 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18610
18611         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
18612         under windows.
18613
18614 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18615
18616         * mini.c: thread local allocation
18617
18618 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
18619
18620         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
18621
18622         * Makefile.am: Link against the static version of libmonogc.
18623         
18624         * Makefile.am: Link the static versions of the convenience libraries
18625         into the mono executable.
18626
18627         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
18628
18629 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
18630
18631         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
18632         on integer overflow.
18633
18634         * mini-amd64.c: Reorganize function call code.
18635
18636         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
18637
18638 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18639
18640         * inssel-x86.brg: use xor eax,eax.
18641         
18642         * basic.cs: new tests
18643
18644 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18645
18646         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
18647         in exception throwing code.
18648         
18649 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18650
18651         * inssel-x86.brg: use xor esi,esi.
18652
18653 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18654
18655         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
18656         can trace methods compiled during mini_init () too.
18657
18658         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
18659         CEE_CONV_U4.
18660
18661 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18662
18663         * Makefile.am: static link on x86 (r=zoltan)
18664
18665 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18666
18667         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
18668         code since it causes some programs to fail.
18669
18670 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
18671
18672         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
18673
18674 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
18675
18676         * mini.c: ovfops_op_map - add STACK_OBJ case for
18677         CONV_I 
18678         * basic.cs: add test_0_pin_string as test
18679         case for above.
18680
18681 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
18682
18683         * Makefile.am: build C# if srcdir != builddir
18684
18685 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18686
18687         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
18688         fall-through blocks.
18689
18690 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18691
18692         * driver.c: enable loop by default again and include abcrem in -O=all.
18693
18694 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
18695
18696         * iltests.il: Add some localloc tests.
18697
18698         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
18699
18700         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
18701         Fixes #62574.
18702
18703         * inssel-amd64.brg: Add some optimizations.
18704
18705         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
18706         for gcc-3.4.
18707
18708         * Makefile.am: Statically link mono against libmono on AMD64.
18709         
18710         * mini-amd64.c inssel-amd64.brg: Optimizations.
18711
18712 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
18713
18714         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
18715
18716         * tramp-amd64.c: Patch calling code in trampolines.
18717
18718 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
18719
18720         * mini-amd64.c: pinvoke struct passing fixes.
18721
18722 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
18723
18724         * mini-sparc.c: redo change, make mono_arch_cpu_init call
18725         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
18726
18727 2004-08-05  Duncan Mak  <duncan@ximian.com>
18728
18729         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
18730         CEE_LDELEM_ANY.
18731
18732 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18733
18734         * mini-amd64.c (emit_move_return_value): Move return value for normal
18735         calls too.
18736
18737 2004-08-05  Martin Baulig  <martin@ximian.com>
18738
18739         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
18740         `type->type'; just modify `type' itself when dealing with enums
18741         and generic instances.
18742         (check_call_signature): Make `simple_type' a `MonoType *'.
18743
18744 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18745
18746         * mini.c: Use OP_PADD to add offsets to addresses.
18747
18748         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
18749
18750 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
18751
18752         * mini-sparc.c (mono_arch_emit_epilog): fix check
18753         for folding last op into restore instruction
18754
18755 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18756
18757         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
18758         helper methods using the code manager.
18759         
18760         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
18761
18762         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
18763
18764 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18765         
18766         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
18767           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
18768
18769         * mini-s390.c: fix tail processing
18770
18771 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
18772
18773         * mini-ppc.c: mul.ovf.un exception name fix.
18774
18775 2004-08-03  Martin Baulig  <martin@ximian.com>
18776
18777         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
18778         instances; before jumping to `handle_enum', also modify `ptype'.
18779
18780 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
18781
18782         * cpu-sparc.md: fcall maximal length too small.
18783
18784 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
18785
18786         * mini-amd64.c mini.h: Add initial support for passing/returning 
18787         structures to/from pinvoked methods.
18788
18789 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
18790
18791         * mini-ppc.c: reg allocator fix.
18792
18793 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
18794
18795         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
18796
18797         * inssel.brg: Optimize memset on 64 bit machines.
18798
18799         * mini-amd64.c: Fix some vararg cases.
18800
18801 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18802
18803         * mini-s390.c: Corrected macro in emit_float_to_int
18804
18805         * s390-abi.cs: Tests to exercise the s390 ABI
18806
18807 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18808
18809         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
18810         caller saved regs.
18811
18812         * basic.cs: Add a test for add.ovf.un.
18813
18814 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
18815
18816         * mini-sparc.c: add case for OP_IDIV_UN
18817
18818 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18819
18820         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
18821         
18822         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
18823
18824 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
18825
18826         * basic.cs: regression tests.
18827
18828         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
18829         regressions.
18830
18831 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18832
18833         * basic.cs: Add a new test.
18834
18835         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
18836         and AOT. Various fixes and optimizations.
18837
18838         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
18839
18840 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
18841
18842         * mini-ppc.c: make sure temp regs are not used for global reg
18843         allocation.
18844
18845 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
18846
18847         * cpu-sparc.md: conv_i8 fix for 64bits
18848
18849         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
18850
18851 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
18852         
18853         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
18854         add opcode for cmp BYTE PTR [eax], imm.
18855
18856         * inssel.brg: Make memcpy and memset takes bases.
18857
18858 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18859
18860         * *-amd64.*: More AMD64 work.
18861         
18862 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18863
18864         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
18865         add a compare-not-equal opcode.
18866         
18867 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
18868
18869         * mini.c: Use mono_init_from_assembly instead of mono_init.
18870         
18871 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18872
18873         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
18874
18875         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
18876
18877         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
18878
18879         * inssel.brg: 64 bit fixes.
18880
18881         * mini.h (MonoCallInst): Add some AMD64 specific data.
18882
18883         * mini.h: Add some OP_P opcodes.
18884
18885 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18886
18887         * basic.cs: tests for 61797 and 61740
18888
18889 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
18890
18891         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
18892         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
18893
18894 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
18895
18896         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
18897
18898         * *-amd64*.*: Ongoing AMD64 work.
18899
18900 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
18901
18902         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
18903
18904         * *-amd64*: Ongoing AMD64 work.
18905
18906         * mini-arch.h: Add AMD64 support.
18907
18908         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
18909
18910         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
18911
18912         * mini-ops.h: Add new opcodes.
18913
18914         * Makefile.am: Add AMD64 support.
18915
18916         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
18917         rules into the inssel-long*.brg files.
18918
18919         * *-amd64.*: Add beginnings of AMD64 backend.
18920
18921 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
18922
18923         * mini.c (print_dfn): commenting out the code that prints
18924         the cil. With -O=deadce, this makes -v -v crash.
18925         
18926         * cpu-pentium.md: make checkthis have a length of 2
18927
18928 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
18929
18930         * mini-sparc.h: fix implementations of __builtin
18931         functions for Sun compiler for V9.
18932
18933 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
18934
18935         * mini.c: use the new stelem.ref wrapper
18936         * exceptions.cs, arrays.cs: new stelem.ref tests
18937
18938 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18939
18940         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
18941         new XSP should work with these changes).
18942
18943 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
18944         
18945         * inssel-{long32,x86,}.brg: trivial optimizations.
18946         
18947 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
18948
18949         * mini.c: load value when emitting box operation in
18950         constrained calls.
18951
18952 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
18953
18954         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
18955         is one byte shorter than cmp DWORD PTR [eax], 0.
18956
18957 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18958
18959         * inssel-ppc.brg: arguments on the stack are always
18960         relative to the stack pointer (spotted by Neale Ferguson).
18961
18962 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18963
18964         * exceptions-x86.c: delay appending the method name to the trace until
18965         after mono_jit_info_table_find is called, as this gets the real
18966         MonoMethod.
18967
18968 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
18969
18970         * aot.c: register roots
18971
18972 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18973
18974         * aot.c : I could just use PLATFORM_WIN32 flag.
18975
18976 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18977
18978         * aot.c : Reverting the previous fix. This time it broke linux build.
18979
18980 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18981
18982         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
18983
18984 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
18985
18986         * mini.c (handle_stack_args): Remove some more debugging code.
18987         
18988         * mini.c (handle_stack_args): Remove debug output left in by mistake.
18989
18990         * driver.c mini.h aot.c: Allow additional options to be specified with
18991         --aot and pass them to mono_compile_assembly.
18992
18993         * aot.c: Add experimental code to AOT compile all loaded assemblies
18994         on demand and save the code into a cache in the filesystem.
18995
18996         * aot.c: Add support for more wrapper methods.
18997         
18998         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
18999         58863.
19000
19001         * cpu-*.md: Remove removed opcodes.
19002
19003         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
19004         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
19005         related icalls to marshal.c.
19006
19007 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
19008
19009         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
19010
19011         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
19012
19013         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
19014
19015 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
19016         * liveness.c: If liveness is recomputated we need to reset the information
19017         for each variable. This way, if the liveness range has been narrowed
19018         by optimizations that happened after the last computation, we can return
19019         a smaller range.
19020         
19021         For example, if you have
19022         
19023         {
19024                 int i = 0;
19025                 
19026                 // Tons of code that does not affect i
19027                 
19028                 i = foo ();
19029                 ...
19030         }
19031         
19032         i = 0 is dead code and will be removed by SSA. However, when
19033         linear scan gets to the code, i will still appear to be live
19034         throughout the entire block. This prevents good register allocation.
19035
19036 2004-07-06  Martin Baulig  <martin@ximian.com>
19037
19038         * debug-mini.c (mono_debug_init_method): Allow
19039         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
19040         (mono_debug_add_icall_wrapper): New method.
19041
19042         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
19043
19044 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
19045
19046         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
19047         optimization.
19048
19049 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
19050
19051         * aot.c (mono_aot_load_method): Fix loading of debug info.
19052
19053 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19054
19055         * aot.c: Add logging support.
19056
19057 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19058
19059         * mini.h: Add prototype for mono_print_method_from_ip.
19060
19061         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
19062
19063         * inssel.brg: 64 bit fixes.
19064
19065         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
19066         inssel-long32.brg.
19067
19068         * Makefile.am: Add SPARC64 support.
19069
19070 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19071
19072         * aot.c: Fix alignment problems on 32 bit platforms.
19073
19074 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19075
19076         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
19077         SPARC64.
19078
19079         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
19080         problems.
19081
19082         * mini.h: Bump AOT file version. Some 64 bit fixes.
19083
19084 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19085
19086         * inssel-sparc.brg: Add new rule to avoid register moves.
19087
19088         * inssel.brg: Add ldind_to_load_membase helper function.
19089
19090 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
19091
19092         * mini.c: OffsetToStringData intrinsic.
19093         
19094 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19095
19096         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
19097
19098         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
19099         regression tests.
19100
19101         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
19102 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19103
19104         * mini.c: reinstated mono_compile_get_interface_var()
19105         on x86, too, since the change breaks the Gtk# build there as well.
19106
19107 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19108
19109         * driver.c: remove loop from the default optimizations: it seems to
19110         interact badly with some of the other options (see bug #60613).
19111
19112 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
19113
19114         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
19115         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
19116
19117 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
19118
19119         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
19120         vararg-using methods.
19121
19122 2004-06-21  Martin Baulig  <martin@ximian.com>
19123
19124         * mini/mini-exceptions.c
19125         (mono_handle_exception): Added `gpointer original_ip' argument.
19126         After calling mono_unhandled_exception(), call
19127         mono_debugger_unhandled_exception() and if that returns true,
19128         restore the context and return.
19129
19130 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19131
19132         * mini-ppc.c: prefer the use of relative branches so
19133         they won't need to be patched in aot code (patch from Patrick Beard).
19134
19135 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19136
19137         * aot.c: patch from Patrick Beard to make the output assembly
19138         more correct for the MacOSX assembler. Small tweak to
19139         generate sane images on Linux/PPC, too.
19140
19141 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19142
19143         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
19144         case until bug #59509 is fixed (shows up in #60332).
19145
19146 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19147
19148         * mini.c: make sure the needed wrappers are compiled, too, with
19149         precomp.
19150
19151 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
19152
19153         * driver.c: remove NPTL reference in --version output.
19154
19155 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19156
19157         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
19158         generate valid assembly for the Mach-O assembler.
19159
19160 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19161
19162         * driver.c: don't include abcrem in the all optimization specifier
19163         since it slows down jit compilation too much for now.
19164
19165 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
19166
19167         * mini.c: use BIGMUL only if both operands have the same signage.
19168         * iltests.il: Test for bug 60056. (errors related to signage in
19169         BIGMUL).
19170
19171         r=lupus.
19172
19173 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
19174
19175         * mini.c, aot.c: memory leak fixes.
19176
19177 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19178
19179         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
19180
19181 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
19182
19183         * Makefile.am: remove the -static hack completely, it links in
19184         statically glib as well.
19185
19186 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
19187
19188         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
19189         * exceptions.cs: make it compile with new mcs/csc.
19190
19191 2004-06-03 Massimiliano Mantione <massi@ximian.com>
19192         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
19193         and added relevant test case.
19194
19195 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19196
19197         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
19198         regressions in gtk-sharp.
19199
19200 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
19201
19202         * exceptions.cs: New regression tests.
19203
19204         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
19205
19206 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
19207
19208         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
19209
19210 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
19211
19212         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
19213
19214         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
19215
19216 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
19217
19218         * mini.c (mono_jit_runtime_invoke): Init class in this
19219         method instead of trusting mono_jit_compile_method to
19220         do the work (because wrappers can be in object class)
19221
19222 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
19223
19224         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
19225
19226         * basic-long.cs: New regression test.
19227
19228 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
19229
19230         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
19231         and div/rem checks.
19232
19233 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
19234
19235         * Makefile.am: fix miguel's change to build mono statically against
19236         libmono (track build dependencies).
19237
19238 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19239
19240         * cfold.c: Some glib versions do not have G_MININT32.
19241
19242 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
19243
19244         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
19245         with precision of tan, atan, sin and cos, and implemented related
19246         regressions tests (fixes bug 54467, but one new problem appeared and
19247         is not fixed yet).
19248
19249 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19250
19251         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
19252
19253         * exceptions.cs: Add test for constant folding && division by zero.
19254
19255         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
19256         since driver.c is in libmono too, so the optimization was useless.
19257
19258         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
19259         variable to driver.c so the compiler can emit more efficient code to
19260         access them.
19261
19262 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19263
19264         * Makefile.am: don't distribute generated inssel.[ch] files.
19265
19266 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
19267
19268         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
19269         into the default appdomain. Fixes #58707.
19270
19271         * jit-icalls.c: Remove the broken approximation for truncl, doing
19272         no conversion is better.
19273
19274         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
19275         Fixes #58863.
19276
19277 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19278
19279         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
19280         of the mcrxr instruction which is not available on some processors
19281         even if it's documented to be. Implement add and sub overflow correctly
19282         (still not complete for long unsigned). Speed up icalls a bit.
19283
19284 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
19285
19286         * mini.c (mono_jit_compile_method_with_opt): Make sure that
19287         we run .cctor in the current domain instead of target_domain.
19288         
19289         Fixes bug #58558, .cctor not being called in -O=shared.
19290
19291 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19292
19293         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
19294
19295 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
19296
19297         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
19298         which can be done with an imm8, do it that way.
19299         (mono_arch_output_basic_block): ditto for a jmp
19300         (mono_arch_emit_prolog): Computate maximum offset of a label.
19301
19302 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
19303
19304         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
19305         now tries to allocate prefered physical reg's for virtual
19306         regs. This reduces the number of emited spills/loads with
19307         20-30% on our core assemblies.
19308
19309 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19310
19311         * jit-icalls.c: truncl() is not needed and trunc() is
19312         the correct thing to do anyway (bug #58287).
19313
19314 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
19315
19316         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
19317         if available.
19318
19319 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
19320
19321         * driver.c: enable loop optimizations by default.
19322
19323 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19324
19325         * mini-x86.c: fix calc of max loop size when aligning loops start.
19326
19327 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
19328
19329         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
19330         the stack.
19331
19332 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
19333
19334         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
19335         should set carry.
19336
19337         * basic-long.cs: Add tests for add/subtract of immediates with carry.
19338
19339         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
19340         
19341         * mini.c (inline_method): Allways inline some wrappers even if the cost
19342         is too large. Fixes #58785.
19343
19344         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
19345         
19346 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
19347
19348         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
19349         (crichton@gimp.org). Beginning of support for sparc/linux.
19350
19351         * mini-sparc.c: Optimize retrieval of LMF address.
19352
19353 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
19354
19355         * exceptions-ppc.c:  handle alloca in methods with clauses.
19356
19357 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
19358
19359         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
19360
19361 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
19362
19363         * mini.c: Delegate most of the abort signal work to 
19364           mono_thread_request_interruption, which also handles Stop and Suspend
19365           states.
19366
19367 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
19368
19369         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
19370         supports the save/restore lmf opcodes.
19371
19372 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
19373
19374         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
19375         by gcc-3.4 as well.
19376
19377         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
19378
19379 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19380
19381         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
19382         methods which contain array accesses.
19383
19384         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
19385         boundaries. Fixes #58537.
19386
19387         * iltests.il: Add regression test for #58537.
19388
19389 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19390
19391         * mini-x86.c (mono_arch_local_regalloc): Last part of
19392         fix for bug #58633 (releasing register to early).
19393
19394 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
19395
19396         * basic-long.cs: Add new regression test.
19397
19398 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19399
19400         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
19401         register too early on the chain.
19402
19403 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19404
19405         * mini.c (create_helper_signature): Use a helper function to reduce
19406         the code which needs to be written. Also set the calling convention of
19407         icalls on windows. Fixes #57840.
19408
19409 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19410
19411         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
19412         exceptions-ppc.c: added helper function to get the instruction address
19413         from a signal handler context.
19414
19415 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19416
19417         * helpers.c: use g_get_tmp_dir. Invokes happyness 
19418         from gonzalo.
19419
19420 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19421
19422         * helpers.c: Add new env variable to pass args to objdump.
19423         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
19424
19425 2004-05-17  Radek Doulik  <rodo@ximian.com>
19426
19427         * Makefile.am (common_sources): added abcremoval.h so it get
19428         disted and daily mono packages on go-mono.com will build again
19429
19430 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
19431
19432         * abcremoval.c: Fixed coding style, added copyright header.
19433
19434         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
19435
19436         * mini.h: Added prototype for abc removal main function.
19437
19438         * build_relations_propagation_table.pl: Added copyright header.
19439
19440 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
19441
19442         * basic-long.cs: reg test for complex ceq_long bug.
19443
19444 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
19445
19446         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
19447         reg in long and clob case (bug #58343). Fixed/added comments.
19448
19449 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
19450
19451         * mini.c (mono_jit_runtime_invoke): Follow new convention
19452         of calling the invoke method with an function pointer.
19453
19454 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
19455
19456         * ChangeLog: Fix author of memory leak patch.
19457
19458 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
19459
19460         * Makefile.am: fix make dist as well...
19461
19462
19463 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
19464
19465         * cfold.c: Made so that conversions from pointer to int4 are no-ops
19466         on archs where pointers are 4 bytes long.
19467
19468         * Makefile.am: Added abcremoval.c source file.
19469
19470         * abcremoval.c: Added abcremoval.c.
19471
19472         * abcremoval.h: Added abcremoval.h.
19473
19474         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
19475
19476         * inssel.brg: Enabled bounds check removal.
19477
19478         * mini.c: Added support for abcrem optimization.
19479
19480         * mini.h: Added abcrem optimization label.
19481
19482         * driver.c: Added support for abcrem optimization.
19483
19484         * propagated_relations_table.def: Added propagated_relations_table.def.
19485
19486 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
19487
19488         * mini.c, cfold.c: fix style.
19489
19490 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19491
19492         * mini.c: handle issue with the low-level implementation of
19493         some long opcodes (bug #54209).
19494
19495 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
19496
19497         * basic.cs: test for my new cmov stuff.
19498
19499 2004-05-13      Patrik Torstensson
19500
19501         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
19502         opt and added peephole documentation.
19503
19504 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
19505
19506         * tramp-ppc.c: rewrote the generic trampoline code.
19507
19508 2004-05-11      Patrik Torstensson
19509
19510         * mini-x86.c: optimize long shl/shr asm code (one less branch)
19511
19512 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
19513
19514         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
19515
19516         * mini.h mini.c dominators.c: Applied patch from Derek Woo
19517         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
19518
19519         * mini.c: Add new icalls for AsAny marshalling.
19520
19521 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19522
19523         * tramp-ppc.c, mini-ppc.c: more cleanups.
19524
19525 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19526
19527         * mini.c: no warnings.
19528
19529 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19530
19531         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
19532
19533 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
19534
19535         * mini.c: In the thread abort signal handler, if the thread is in the
19536         process of being stoped, don't throw the Abort exception, just stop the
19537         thread.
19538
19539 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
19540
19541         * tramp-ppc.c: removed old code.
19542
19543 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19544
19545         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
19546         do some simple speed optimizations on ppc.
19547
19548 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
19549
19550         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
19551         and large offsets in load/store.
19552
19553 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
19554
19555         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
19556         it causes regressions.
19557
19558 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
19559
19560         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
19561         support.
19562
19563 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19564
19565         * jit-icalls.c: remove warnings.
19566         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
19567         speedups for unsafe code.
19568
19569 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
19570
19571         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
19572
19573 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
19574
19575         * basic-calls.cs: Add new regression test.
19576
19577         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
19578         more portable.
19579
19580         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
19581
19582         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
19583         is no longer used.
19584
19585 2004-05-06      Patrik Torstensson
19586
19587         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
19588         long reg allocation in any reg (not only eax:edx) and implemented 
19589         long shl/shr ops in asm instead of helpers.
19590
19591 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
19592
19593         * mini-sparc.h: Fix warnings.
19594
19595         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
19596         stack.
19597
19598         * mini-exceptions.c (mono_handle_exception): Call the filter in a
19599         separate statement for clarity.
19600
19601         * mini-sparc.c: Update status.
19602
19603 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
19604
19605         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
19606         here.
19607
19608 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19609
19610         * inssel-ppc.brg: another small pre-release workaround:
19611         we don't do overflow detection for long_sub_un.
19612
19613 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19614
19615         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
19616         (also works around a weird ppc bug: 57957).
19617
19618 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
19619
19620         * tramp-ppc.c: trampoline fixes.
19621
19622 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
19623
19624         * mini-ppc.c: fixed typos.
19625
19626 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19627
19628         * mini-ppc.c, exceptions-ppc.c: more code saves registers
19629         at the top of the stack. Fixed typos. Use a frame registers
19630         for all the methods with exception clauses.
19631
19632 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19633
19634         * exceptions-ppc.c: restore fp registers.
19635
19636 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19637
19638         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
19639         order from the stack top (moved the stack room to save the
19640         return value for trace after the param area). Fixed corruption
19641         in restoring registers on unwind.
19642
19643 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19644
19645         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
19646
19647 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19648
19649         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
19650         and prolog/epilog for methods that use it. Allow
19651         enough param area room for varargs methods. Fix miguel's
19652         breakage in exception handling.
19653
19654 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19655
19656         * Makefile.am: run genmdesc only on current arch.
19657
19658 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19659
19660         * exceptions-x86.c:
19661         * mini-x86.h: fix the build on windows.
19662
19663 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
19664
19665         * 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.
19666
19667         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
19668
19669         * mini-exceptions.c: New file.
19670         
19671         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
19672         Move some parts of the x86 exception handling code to an 
19673         arch-independent file so it can be shared with other ports.
19674
19675 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
19676
19677         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
19678
19679 2004-04-26  David Waite  <mass@akuma.org>
19680
19681         * driver.c: remove comma from end of enumeration declaration
19682
19683 2004-04-26  Jackson Harper  <jackson@ximian.com>
19684
19685         * driver.c: parse config file before loading first assembly. This
19686         allows the user gac to be enabled/disabled. 
19687         
19688 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
19689
19690         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
19691         simpler mechanism: we do not care what is encoded initially
19692         (branch absolute or relative), we care about the code and its
19693         target.  I kept the old code for reference for now.
19694
19695         The new code tries first to determine if the jump is anywhere in
19696         the -/+32 absolute meg range, if it succeeds, it encodes using the
19697         absolute branch;  If not, it tried to find something in the
19698         relative range, if not, it uses the handle_thunk code. 
19699
19700 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
19701
19702         * exceptions-ppc.c: use the correct ip register on macosx.
19703
19704 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
19705
19706         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
19707
19708 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
19709
19710         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
19711         Raise exception on integer divide by zero by hand since the hw
19712         doesn't support it. Handle NaNs in FP compares.
19713
19714 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
19715
19716         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
19717         code reducing duplication between the platforms and enabled
19718         signal exception handling (on linux for now).
19719
19720 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
19721
19722         * exceptions-ppc.c: more macosx support.
19723
19724 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19725
19726         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
19727
19728 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
19729
19730         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
19731
19732 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19733
19734         * iltests.il: more tests.
19735
19736 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
19737
19738         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
19739         vars as well.
19740
19741 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19742
19743         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
19744
19745 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
19746
19747         * liveness.c: Mark variables as volatile in all basic blocks reachable
19748         from exception clauses.
19749
19750 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
19751
19752         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
19753         inlining.
19754
19755 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19756
19757         * iltests.il, basic.cs: more tests for regalloc.
19758
19759 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19760
19761         * iltests.il: Some tests for register allocation modifications
19762         I have locally.
19763
19764 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
19765
19766         * exceptions.cs: Add regression test for bug #56782.
19767
19768         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
19769         original stack trace if an exception is rethrown. Fixes #56782. Oh,
19770         the beauty of fixing the same thing in 5 different files...
19771
19772 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
19773
19774         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
19775         methods.
19776
19777 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
19778
19779         * mini.c: Add support for STRWLPARRAY marshalling convention.
19780
19781 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19782
19783         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
19784         to init the context to setup the regs pointer).
19785
19786 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19787
19788         * exceptions-ppc.c: more exceptions work.
19789
19790 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19791
19792         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
19793         not allowed.
19794
19795 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
19796
19797         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
19798         can use the memory directly.
19799
19800         * cpu-pentium.md: Update documentation from a post from Zoltan. 
19801
19802         add x86_add_membase, x86_sub_membase, x86_mul_membase
19803
19804 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
19805
19806         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
19807         GENERAL_REGS they were also hardcoded for all PPC ports.
19808
19809         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
19810
19811         Remove hard-coded limit for floating point registers, use
19812         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
19813
19814         Notice that in MacOS X calling conventions you can fit a lot more
19815         floating point values in registers, so I should update the PInvoke
19816         test to excercise the passing of floating point values on the
19817         stack (currently broken).
19818         
19819 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
19820
19821         * tramp-ppc.c (create_trampoline_code): Added
19822         JUMP_TRAMPOLINE_SIZE. 
19823         (ppc_magic_trampoline): Follow the pattern from
19824         x86_magic_trampoline: if code is set to zero, return. 
19825         (create_trampoline_code): Always pass MonoMethod to the jump
19826         trampoline, before it was passing a null.
19827         (mono_arch_create_jump_trampoline): Implement the jump stub, could
19828         share the code with mono_arch_create_jit_trampoline. 
19829
19830         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
19831         implemented.
19832         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
19833         implemented.  
19834
19835         * cpu-g4.md: Added length for jmp instruction, the worst case
19836         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
19837         for save_lmf).
19838
19839 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
19840
19841         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
19842
19843 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
19844
19845         * mini.c: Only set bblock->real_offset when adding a new bblock, and
19846         before each IL instruction.
19847
19848         * mini.c (CEE_BOX): Fix warnings.
19849
19850 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19851
19852         * mini.c: removed a few unused vars and extra whitespace.
19853
19854 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
19855
19856         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
19857         checks.
19858         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
19859         index.
19860         (OP_GETCHR): use the above
19861         (CEE_LDELEMA): use the above.
19862
19863         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
19864         version of the generic impl.
19865         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
19866         (CEE_LDELEMA): use the above.
19867
19868 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19869
19870         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
19871         Fixes #56317.
19872
19873         * iltests.il: Added new regression test for #56317.
19874
19875 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19876
19877         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
19878         under NetBSD. Fixes #56450.
19879
19880         * liveness.c (update_gen_kill_set): Fix previous patch.
19881
19882 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19883
19884         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
19885
19886 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
19887
19888         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
19889         ldsfld and ldsflda.
19890
19891         * inssel-sparc.brg: Add more optimizations.
19892
19893         * mini-sparc.c: Replace multiply/divide with shifts if possible.
19894
19895 2004-04-01  Martin Baulig  <martin@ximian.com>
19896
19897         * mini.c (handle_box): New static function; moved the
19898         implementation of CEE_BOX here.
19899         (mono_method_to_ir): Added `constrained_call' variable.
19900         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
19901         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
19902         mono_method_get_constrained() to get the method.
19903
19904 2004-04-01  Martin Baulig  <martin@ximian.com>
19905
19906         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
19907         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
19908         (mono_method_to_ir): We don't need these macros anymore since
19909         mono_class_get_full() already takes care of it. 
19910
19911 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19912
19913         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
19914         use @function (as doesn't accept #function here) and check the return
19915         value of system and stop if fails.
19916
19917 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19918
19919         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
19920
19921 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
19922
19923         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
19924
19925         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
19926
19927         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
19928         #56223.
19929
19930         * basic-long.cs: Add test for negation of Int64.MinValue.
19931
19932 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
19933
19934         * mini-sparc.c: Update status.
19935
19936         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
19937
19938         * exceptions-sparc.c: Fix return value in filters.
19939
19940         * inssel-sparc.brg: Fix register allocation in some rules.
19941
19942 2004-03-28  Martin Baulig  <martin@ximian.com>
19943
19944         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
19945         if neccessary.  
19946
19947 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
19948
19949         * mini-x86.c (mono_arch_patch_code): Fix warnings.
19950         
19951         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
19952         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
19953         remove unused conv_u4 opcode.
19954
19955         * mini-x86.c: Remove valgrind workaround since it slows down things
19956         even when mono is not run under valgrind.
19957
19958 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
19959
19960         * mini-sparc.c: Update status.
19961
19962         * inssel-sparc.brg: Add some optimizations.
19963
19964         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
19965         future delay slot filling. Add support for varargs, tail calls and JMP.
19966
19967         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
19968         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
19969
19970         * inssel.brg: Fix register allocation in OP_ARGLIST.
19971
19972         * inssel.brg: Fix warnings.
19973
19974 2004-03-25  Martin Baulig  <martin@ximian.com>
19975
19976         * mini.c (inflate_generic_field): Removed.
19977         (mini_get_method): Removed, use mono_get_method_full(),
19978         (mini_get_class): Removed, use mono_class_get_full().
19979         (mono_method_to_ir): Pass our generic context to
19980         mono_field_from_token().        
19981
19982 2004-03-25  Martin Baulig  <martin@ximian.com>
19983
19984         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
19985         of a `MonoMethod *'.
19986         (mini_get_method): Take a `MonoGenericContext *' instead
19987         of a `MonoMethod *'.
19988         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
19989         a new local variable called `generic_context' which holds the
19990         current `MonoGenericContext *'; use it to lookup things.
19991
19992 2004-03-24  Martin Baulig  <martin@ximian.com>
19993
19994         * mini.c (mini_get_class): New static method; if we're inside a
19995         generic instance, inflate the class if neccessary.
19996         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
19997
19998 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
19999
20000         * iltests.il: New regression test for #55976.
20001
20002         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
20003         #55976.
20004
20005 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20006
20007         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
20008         output.
20009
20010 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20011
20012         * liveness.c: Consider SSA stores as well as loads when making vars
20013         volatile.
20014
20015         * exceptions.cs: New regression tests for register allocation.
20016         
20017 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
20018
20019         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
20020         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
20021           domain lock only to protect puntual access to data structures.
20022           Added access lock for sighash, jit_icall_hash_name, 
20023           jit_icall_hash_addr and domain->code_mp.
20024
20025 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
20026
20027         * driver.c: Print SIGSEGV handling method.
20028
20029         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
20030
20031         * mini.c (setup_jit_tls_data): Handle case when this is called
20032         multiple times for a thread.
20033
20034         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
20035         is different from fbxx_un. Fixes #54303. Also use constants instead of
20036         magic numbers in a lot of places.
20037
20038 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
20039
20040         * exceptions.cs: Fix cctor test when --regression is used.
20041
20042 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
20043
20044         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
20045         for Linux/ppc.
20046
20047 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20048
20049         * inssel-ppc.brg: fixed register assignments for some rules.
20050
20051 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20052
20053         * exceptions.cs: Add test for exceptions in static constructors.
20054
20055         * mini.c (mono_jit_compile_method_with_out): Move the calling of
20056         static constructors outside the domain lock. Fixes #55720.
20057
20058 2004-03-17  Martin Baulig  <martin@ximian.com>
20059
20060         * mini.c (get_generic_field_inst): Removed, this'll never happen.
20061         (inflate_generic_field): Take the `MonoMethod *' instead of the
20062         `MonoClass *' and added support for generic method.
20063         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
20064         have a `field->parent->gen_params', only inflate the field if it's
20065         an open constructed type.
20066
20067 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20068
20069         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
20070         exception object instead of the preconstructed ones.
20071
20072 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20073
20074         * mini.c: reverted changed to sigsegv_signal_handler commited
20075         accidentally in the previous patch.
20076
20077 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20078
20079         * mini.c:
20080         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
20081         running --aot with an old assembly.
20082
20083 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
20084
20085         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
20086         point values.
20087
20088         * mini-sparc.c: Add support for v9 branches with prediction.
20089
20090 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
20091
20092         * mini.c (mini_init): #warning is GNUC only
20093
20094         * mini-sparc.h: implement __builtin_frame_address
20095         and __builtin_return_address for Sun C compiler
20096
20097 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
20098
20099         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
20100
20101 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
20102
20103         * basic-calls.cs: Add test for unaligned byref long argument passing.
20104
20105         * mini-ops.h: Add sparcv9 compare and branch instructions.
20106
20107         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
20108         v9 instructions if we have a v9 cpu.
20109
20110         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
20111         registers for global allocation.
20112
20113         * exceptions-sparc.c: Fixes.
20114         
20115 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
20116
20117         * liveness.c (mono_analyze_liveness): Optimized version.
20118
20119         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
20120
20121         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
20122         sparc work.
20123
20124         * basic-float.cs basic-calls.cs: New regression tests.
20125
20126 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
20127
20128         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
20129         sigaltstack implementation.
20130
20131         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
20132         
20133         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
20134         stuff if SIGSEGV_ON_ALTSTACK is not defined.
20135
20136 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
20137
20138         * mini.c: Fix warnings.
20139         
20140         * mini.c (mono_resolve_patch_target): New function which contains the
20141         arch independent part of the patching process.
20142
20143         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
20144         patching code to a separate function.
20145
20146 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
20147
20148         * mini.c (add_signal_handler): ifdef out on Windows
20149
20150 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
20151
20152         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
20153         cpu-sparc.md: Add exception handling support + other fixes.
20154
20155         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
20156         typed GC detection in --version.
20157
20158         * basic.cs exceptions.cs: New regression tests.
20159
20160         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
20161         the arch specific code can store data during a compilation.
20162
20163         * mini-ops.h: Add OP_SETFRET.
20164
20165         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
20166         function, register a separate icall for each arity, so the icalls can
20167         get a wrapper.
20168         
20169         * mini.c (mono_print_tree): Print negative offsets in a more readable
20170         form.
20171         
20172         * mini.c: Make signal handling work on sparc.
20173         
20174         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
20175
20176         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
20177
20178         * jit-icalls.c: Emulate truncl by aintl on solaris.
20179
20180         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
20181
20182 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
20183
20184         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
20185
20186 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
20187
20188         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
20189         a MarshalByRef type, inline a method that performs the check, taking into
20190         account that the object can be a proxy. Also implemented tow new opcodes:
20191         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20192         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
20193         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20194
20195 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
20196
20197         * mini-ppc.c: if a relative branch displacement is too big
20198         but it points to and area reachable with an absolute branch, 
20199         avoid the thunks.
20200
20201 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
20202
20203         * mini.c: optimize small copies in cpblk.
20204
20205 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
20206
20207         * basic-calls.cs basic-float.cs: New regression tests.
20208
20209         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
20210         negative offsets from %fp. Implement localloc. Fix local register 
20211         allocation. Fix the case when the this argument needs to be saved to
20212         the stack. Implement some missing opcodes.
20213
20214 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
20215
20216         * mini.c (mini_method_compile): Reenable global regalloc in methods
20217         with exception handlers.
20218
20219         * linear-scan.c (mono_varlist_sort): Fix warning.
20220
20221         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
20222
20223         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
20224         regalloc costs.
20225
20226         * liveness.c: Make all variables uses in exception clauses volatile, to
20227         prevent them from being allocated to registers. Fixes #42136.
20228
20229 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
20230
20231         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
20232         causes regressions.
20233
20234         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
20235         argument to mono_arch_regalloc_cost.
20236
20237         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
20238         precisely.
20239
20240 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
20241
20242         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
20243         Make the cost of allocating a variable to a register arch dependent.
20244
20245         * basic-calls.cs: Fix compilation of tests.
20246         
20247         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
20248         helper function to cut back on the number of #ifdefs needed.
20249
20250         * mini-ppc.c: Fix compilation.
20251
20252         * basic-calls.cs: New regression tests.
20253
20254         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
20255
20256         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
20257         of l0 since that is callee saved.
20258
20259         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
20260         to virtual calls.
20261
20262         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
20263         of delay instruction.
20264
20265         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
20266
20267         * mini.h (MonoCallInst): Add 'virtual' flag.
20268
20269         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
20270
20271 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
20272
20273         * *.cs: New regression tests.
20274
20275         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
20276         work.
20277
20278         * mini.c (mono_runtime_install_handlers): Fix build.
20279
20280         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
20281         'signal_stack_size' members.
20282
20283         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
20284         alternate signal stack.
20285
20286         * exceptions-x86.c: Add stack overflow handling.
20287
20288         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
20289         functions to arch independent code.
20290
20291         * mini.c (mono_print_tree): Print more detailed info for load_membase
20292         opcodes.
20293         
20294 2004-02-23  Martin Baulig  <martin@ximian.com>
20295
20296         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
20297
20298 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20299
20300         * mini-x86.c: fixed reg allocation for div/rem.
20301
20302 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
20303
20304         * driver.c (mono_main): Report some configuratio options on --version.
20305
20306 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
20307
20308         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
20309         low in the address space. Correctly flush memory in thunks where we
20310         output native code.
20311
20312 2004-02-20  Martin Baulig  <martin@ximian.com>
20313
20314         * mini.c (mini_get_method): New static method; inflate all generic
20315         methods and methods in open generic instances.
20316         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
20317         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
20318
20319 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20320
20321         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
20322
20323         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
20324
20325 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
20326
20327         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
20328
20329         * mini-sparc.c (flushi mono_arch_output_basic_block): make
20330         it compile using Sun's compiler.
20331
20332 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20333
20334         * 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.
20335
20336         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
20337
20338 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20339
20340         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
20341         code.
20342         * mini-ppc.c: handle calls outside of the allowed range with thunks
20343         allocated using the code manager.
20344         * tramp-ppc.c: use the code manager to hold generated native code.
20345         Fixed the magic trampoline to just patch vtable entries.
20346
20347 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
20348
20349         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
20350         independent file.
20351
20352 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
20353
20354         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
20355         PPC.
20356
20357         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
20358         if we have a working __thread implementation.
20359
20360         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
20361         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
20362
20363 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
20364
20365         * mini-x86.c: Fix compilation under gcc 2.
20366         
20367 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
20368
20369         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
20370         contains a call to the wrapped function.
20371
20372         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
20373         OP_<CALL>_IMM opcodes, and use them under X86.
20374         
20375         * mini.c (mono_jit_find_compiled_method): Fix warning.
20376
20377         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
20378
20379         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
20380
20381         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
20382         functionality to mini.c.
20383
20384         * mini.c (mono_create_jump_trampoline): New function to create a jump
20385         trampoline. Return a compiled method instead of a trampoline if it
20386         exists. Add a cache for jump trampolines.
20387
20388         * mini.c (mono_jit_find_compiled_method): New function to return a
20389         compiled method if it exists.
20390
20391         * mini-x86.c: Call mono_create_jump_trampoline instead of 
20392         mono_arch_create_jit_trampoline.
20393
20394         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
20395         a jump trampoline. Fixes #52092.
20396         
20397 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
20398
20399         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
20400         which is not up-to-date. Add check_corlib_version () instead.
20401
20402         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
20403         have to call it.
20404         
20405         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
20406         since newer valgrind versions do not need it.
20407
20408         * mini.c (mono_jit_compile_method_with_opt): New helper function to
20409         compile a method with a given set of optimizations.
20410
20411         * mini.c: Compile icall wrappers on-demand instead of at startup.
20412
20413         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
20414         wrapper for an icall.
20415
20416 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
20417
20418         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
20419         #54063.
20420
20421         * iltests.il: Add test for non-empty stack before switch instruction.
20422
20423 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
20424
20425         * mini.c: Add support for new stringbuilder marshalling conventions.
20426
20427         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
20428
20429 2004-02-01  Martin Baulig  <martin@ximian.com>
20430
20431         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
20432         in `ginst->mtype_argv'.
20433
20434 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
20435
20436         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
20437         facilitate grepping.
20438
20439 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
20440
20441         * mini.c: fixed buglet in initobj generic implementation for references.
20442
20443 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
20444
20445         * Makefile.am: make the version script conditional.
20446         * jit-icalls.c: handle missing truncl().
20447
20448 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
20449
20450         * exceptions.cs: Add more tests for double->int conversion.
20451
20452         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
20453         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
20454
20455 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
20456
20457         * driver.c: make --verbose --version emit an error
20458         if the loaded corlib doesn't match the runtime version.
20459
20460 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
20461
20462         * mini-ppc.h: export ppc_patch().
20463         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
20464         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
20465         on par or better than on MacOSX.
20466
20467 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
20468
20469         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
20470         mono_lookup_pinvoke_call.
20471
20472         * mini-x86.c: Under windows, the default pinvoke calling convention is
20473         stdcall. Fixes #52834.
20474
20475         * mini.c (optimize_branches): Add an upper bound to the number of
20476         iterations to prevent infinite loops on strange loops. Fixes #53003.
20477
20478 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
20479
20480         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
20481         and ISINST. Fixes #52093.
20482
20483         * objects.cs (test_0_vector_array_cast): New tests.
20484         
20485 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
20486
20487         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
20488         checking in Array.Set ().
20489
20490         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
20491         #52590.
20492
20493         * object.cs (test_0_multi_array_cast): New regression test.
20494
20495 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
20496
20497         * exceptions-ppc.c: fix build on Linux/PPC.
20498
20499 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
20500
20501         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
20502         running under valgrind.
20503         (x86_magic_trampoline): Fix build bustage.
20504
20505         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
20506         negative values as well. This is needed for the encoding of the line number
20507         info, since sometimes the line numbers are not in increasing order.
20508
20509 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
20510
20511         * cpu-pentium.md (localloc): Increase the size of the localloc 
20512         instruction since it is a loop under Win32.
20513
20514         * debug-mini.c (record_line_number): Get rid of unneccesary memory
20515         allocation.
20516
20517 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
20518
20519         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
20520         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
20521         Max Horn (max@quendi.de). Fix file names in comments.
20522
20523 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
20524
20525         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
20526         avoid stack overflow.
20527         (replace_usage): Avoid uninitialized variable warnings.
20528
20529         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
20530         and taking the address of valuetype variables.
20531
20532 2004-01-03  Patrik Torstensson
20533
20534         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
20535         for other purposes than FP later on.
20536
20537 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
20538
20539         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
20540         of tail calls.
20541
20542 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20543
20544         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
20545
20546 2003-12-30  Patrik Torstensson <p@rxc.se>
20547
20548         * mini-x86.h: Decreased number of availiable fp regs.
20549         Solves corner cases with FP spilling.
20550
20551 2003-12-23  Patrik Torstensson <p@rxc.se>
20552
20553         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
20554         for floating point stack tracking / spilling on x86. 
20555         Fixes bug #49012.
20556         
20557         * basic-float.cs: added float mul overflow test.
20558
20559 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
20560
20561         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
20562
20563 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
20564
20565         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
20566         supports for cond branches that overflow the immediate
20567         overflow offset. mcs can compile simple programs.
20568
20569 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
20570
20571         * exceptions-ppc.c: exception handling support wip:
20572         finally handlers get run on exception.
20573
20574 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
20575
20576         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
20577         profiling.
20578
20579 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
20580
20581         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
20582         initial support for stack walking and unwinding.
20583
20584 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
20585
20586         * driver.c (mono_main): Make corlib-out-of-sync message more 
20587         descriptive. Also remove verify_corlib call.
20588
20589 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20590
20591         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
20592         not overlap with other call's arguments, too.
20593
20594 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
20595
20596         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
20597         move to arch-specific code the choice of arch-specific
20598         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
20599         * mini.c: ensure emulation calls will not interleave
20600         with other calls.
20601
20602 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
20603
20604         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
20605         the magic trampoline stack frame is dropped before executing
20606         the new method.
20607
20608 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20609
20610         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
20611         and integer to fp conversions. Added support for overflowing
20612         arguments on the stack. Reserve a couple more registers as temps.
20613         Added support for aot compilation (as output still needs to be
20614         tweaked, though).
20615
20616 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
20617
20618         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
20619         Don't overwrite return register in some corner cases.
20620
20621 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
20622
20623         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
20624         static constructors when AOT compiling.
20625
20626         * driver.c (mono_main): Call mono_check_corlib_version.
20627
20628 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20629
20630         * cpu-g4.md, basic.cs: fixed div target register.
20631
20632 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
20633
20634         * mini-ppc.c, basic.cs: shl_imm fix with test.
20635
20636 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
20637
20638         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
20639         structures by value. Misc fixes.
20640         * objects.cs: more tests.
20641
20642 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
20643
20644         * mini-ppc.c: lconv.ovf.i implemented.
20645
20646 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20647
20648         * mini.c:
20649         (mini_init): don't error out if someone already called g_thread_init.
20650
20651 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
20652
20653         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
20654         to be any type per the spec. Fix abnormal memory usage when
20655         the same object is repeatedly thrown.
20656
20657 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
20658
20659         * mini.c: check for overruns in IL code.
20660
20661 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
20662
20663         * TODO: Add/remove some todo entries.
20664
20665 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
20666
20667         * driver.c (mono_main): Call mono_verify_corlib.
20668
20669 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
20670
20671         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
20672         This has been moved to mini.c
20673         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
20674         type being casted is marshalbyref it could be a proxy, so instead of
20675         emitting the type check code, emit a call to a runtime method that will
20676         perform the check by calling CanCastTo if needed.
20677
20678 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
20679
20680         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
20681         methods with large stack frames under Win32.
20682
20683 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
20684
20685         * Makefile.am: Distribute regression tests.
20686
20687         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
20688         at the end instead of inserting each variable into the sorted list.
20689
20690         * linear-scan.c (mono_varlist_sort): New helper function.
20691         
20692 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
20693
20694         * mini.c: ensure arguments and locals are within bounds.
20695
20696 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
20697
20698         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
20699         related fixes.
20700
20701 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
20702
20703         * mini.c (mono_cprop_copy_values): Fix crash.
20704
20705         * aot.c: Set verbosity back to 0.
20706         
20707 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20708
20709         * regalloc.c: complete memory leak fix by Laurent Morichetti
20710         (l_m@pacbell.net).
20711
20712 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
20713
20714         * driver.c (main_thread_handler): Revert the previous patch.
20715
20716         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
20717         under valgrind.
20718
20719         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
20720         memory from the memory pool.
20721
20722         * driver.c (main_thread_handler): Turn on all optimizations when
20723         --aot is used.
20724
20725         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
20726         an array for better performance.
20727
20728         * regalloc.c (mono_regstate_assign): Fix memory leak.
20729
20730         * debug-mini.c (mono_debug_serialize_debug_info): New function to
20731         serialize the debug info.
20732
20733         * debug-mini.c (mono_debug_add_aot_method): New function to load the
20734         debug info from the serialized representation.
20735
20736         * aot.c: Save debug info into the generated file and load it when 
20737         loading a method.
20738
20739         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20740
20741 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
20742
20743         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
20744         More FP-related fixes.
20745
20746 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
20747
20748         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
20749         and register allocation buglet. Hello world now runs.
20750
20751 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
20752
20753         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
20754         * tramp-ppc.c: fixed class init trampoline.
20755         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
20756
20757 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
20758
20759         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
20760         mini.c: more ppc changes/fixes.
20761
20762 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
20763
20764         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
20765         Also optimize the case when the arguments are the same in the caller 
20766         and in the callee.
20767
20768         * iltests.il: Add tests for tail calls with valuetype arguments.
20769
20770 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
20771
20772         * mini-ppc.c: fixes for struct return type.
20773
20774 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
20775
20776         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
20777         mono_spillvar_offset() to arch-specific code.
20778
20779 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
20780
20781         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
20782
20783 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
20784
20785         * exceptions-x86.c: Fix stack space leaks.
20786         
20787         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
20788         registers from the lmf if the method has save_lmf set.
20789
20790 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
20791
20792         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
20793         of icall wrappers into InvokeInDomain, since these are now per-domain.
20794
20795 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
20796
20797         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
20798         make some opcode emulation and intrinsic ops enabled/disabled 
20799         according to the architecture. More fixes.
20800
20801 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
20802
20803         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
20804
20805 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
20806
20807         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
20808         arch-specific handling for 'this' and struct return type to
20809         arch-specific code.
20810
20811 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20812
20813         * aot.c: prevent divide by zero error when reporting (it happened with
20814         Accessibility.dll).
20815
20816 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
20817
20818         * mini.h (inst_switch): Remove unused macro.
20819
20820 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20821
20822         * aot.c:
20823         (load_aot_module): free 'info->methods' and 'info' properly. No more
20824         "free(): invalid pointer blah" messages when you have an old aot
20825         compiled assembly.
20826
20827 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
20828
20829         * jit-icalls.c, mini.c: Added support for context static fields.
20830
20831 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
20832
20833         * mini.c (mono_method_blittable): Methods which set LastError are not 
20834         blittable either. Fixes #51108.
20835         
20836 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
20837
20838         * mini.c: flush icache.
20839         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
20840
20841 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
20842
20843         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
20844
20845 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
20846
20847         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
20848         safe on IA32.
20849
20850         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
20851         vararg calls.
20852
20853         * inssel.brg (CEE_MKREFANY): Fix AOT case.
20854
20855 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
20856
20857         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
20858         instruction when the result is discarded.
20859
20860         * iltests.il (test_0_div_regalloc): New regression test.
20861
20862         * arrays.cs: Fix compilation error.
20863
20864 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
20865
20866         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
20867         float rules to inssel-x86.brg: sane architectures with FP registers
20868         don't need to implement these rules.
20869
20870 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20871
20872         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
20873
20874 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20875
20876         * mini.h, inssel-long32.brg: fixed endianess issues in int64
20877         implementation of 32 bit systems.
20878
20879 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20880
20881         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
20882         (Jeroen Zwartepoorte).
20883
20884 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
20885
20886         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
20887         the caller and the callee matches.
20888         
20889         * mini.c (mono_method_to_ir): Add comment.
20890
20891         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
20892         signbit is missing on some platforms.
20893
20894 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
20895
20896         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
20897
20898         * mini.c (setup_jit_tls_data): Call the new function.
20899         
20900         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
20901
20902         * mini-x86.c: Add experimental support for fast access to the lmf
20903         structure under NPTL/Linux 2.6.x.
20904
20905 2003-11-06  Martin Baulig  <martin@ximian.com>
20906
20907         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
20908         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
20909         the debugger.
20910
20911 2003-11-02  Martin Baulig  <martin@ximian.com>
20912
20913         * mini.c (inflate_generic_field): New static method.
20914         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
20915         generic instance and the field is declared in a generic type, call
20916         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
20917
20918 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
20919
20920         * mini.h mini.c (mono_method_same_domain): New function to return
20921         whenever the caller and the callee are in the same domain.
20922
20923         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
20924
20925 2003-10-30  Martin Baulig  <martin@ximian.com>
20926
20927         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
20928         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
20929         method parameters.
20930         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
20931         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
20932
20933 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
20934
20935         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
20936         propagation.
20937
20938         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
20939         object here, so it is in the correct appdomain etc.
20940
20941 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
20942
20943         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
20944         already done.
20945         (mono_method_to_ir): Avoid freeing the type created returned from
20946         mono_type_create_from_typespec, since it is put into an internal cache
20947         by the function. Fixes pointer.exe.
20948
20949         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
20950         trampolines for icalls and pinvokes as well. Fixes #33569.
20951
20952 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
20953
20954         * mini.c: Update after appdomain changes.
20955
20956         * mini.c (mono_jit_compile_method_inner): Allways compile native
20957         method wrappers in the root domain, since there can only be one
20958         instance of them, whose address is stored in method->info.
20959
20960 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
20961
20962         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
20963         environment variable. Instead detect automatically whenever running
20964         under valgrind using the magic macro RUNNING_ON_VALGRIND from
20965         valgrind.h.
20966
20967 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
20968
20969         * trace.c, trace.h: New files that implement the new trace option
20970         parsing. 
20971
20972         * driver.c: Document new --trace options.
20973
20974         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
20975         mini-x86.c: Apply:
20976
20977         -       if (mono_jit_trace_calls)
20978         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
20979
20980         * mini.h: prototypes.
20981         
20982 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
20983
20984         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
20985
20986         * mini.c inssel.brg: Implement typedefbyref opcodes.
20987
20988         * mini.c (mono_jit_compile_method): Remove unused local variable.
20989
20990         * mini.c (mono_jit_compile_method_inner): Ditto.
20991         
20992 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
20993
20994         * tramp-x86.c (x86_class_init_trampoline): Fix build.
20995         
20996         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
20997
20998 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
20999
21000         * mini.c (mono_no_aot): Remove unused global variable.
21001
21002         * mini.c: Thread safety fixes.
21003
21004 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
21005
21006         * mini.c (mono_create_class_init_trampoline): Add a lock around
21007         class_init_hash_addr.
21008
21009         * arrays.cs (test_0_newarr_emulation): Add new regression test for
21010         #30073.
21011
21012         * mini.c: Decompose the NEWARR instruction before decomposing its
21013         arguments. Fixes #30073.
21014
21015 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
21016
21017         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
21018         convention.
21019
21020 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
21021
21022         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
21023
21024         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
21025
21026         * driver.c: Add support for compiling icall wrappers to --compile.
21027
21028 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
21029
21030         * inssel.brg: The empty value in class->interface_offsets is -1, not
21031         0. Fixes #49287.
21032
21033 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
21034
21035         * objects.cs: New test for 'is' operator on an array of interfaces.
21036
21037 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21038
21039         * tramp-ppc.c: update trampoline code to support jumps
21040         and class initialization.
21041
21042 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
21043
21044         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
21045
21046         * inssel.brg (OP_UNBOXCAST): Fix #46027.
21047
21048         * inssel.brg (OP_UNBOX): Remove unused rule.
21049
21050         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
21051         region instead of one for each method. Fixes #47813.
21052
21053 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
21054
21055         * exceptions.cs (test_0_nested_finally): New regression test for
21056         nested exception handlers.
21057
21058         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
21059
21060         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
21061
21062         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
21063         inlining.
21064
21065         * mini.c (mono_method_check_inlining): Make the inlining limit 
21066         configurable by an environment variable.
21067         
21068         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
21069
21070         * mini.h: Bump AOT file version.
21071
21072         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
21073         token, store the image along with the token, since the token might not 
21074         refer to the same image as the method containing the relocation, 
21075         because of inlining.
21076
21077 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
21078
21079         * mini.c (mono_precompile_assemblies): New function to compile
21080         all methods in all loaded assemblies.
21081
21082         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
21083
21084         * regalloc.h regalloc.c (MonoRegState): Change the type of 
21085         iassign and fassign to int*, since they can contain large negative
21086         values if the register is spilled. Also added some comments. Fixes
21087         #45817.
21088
21089         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
21090         under Win32. Fixes #42964.
21091
21092 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
21093
21094         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
21095
21096         * aot.c: Added support for AOT compiling methods which contain calls
21097         to wrappers. Currently, only remoting-invoke-with-check wrappers are
21098         handled.
21099         
21100         * driver.c (compile_all_methods): Run the compilation in a thread
21101         managed by mono. Fixes #44023.
21102
21103         * mini.c (mono_codegen): Print full method name in verbose output.
21104
21105         * mini-x86.c (mono_arch_patch_code): Fix warning.
21106         
21107         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
21108         jumps, since the method we are jumping to might be domain-specific.
21109
21110         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
21111
21112 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21113
21114         * inssel.brg: string chars are unsigned.
21115
21116 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
21117
21118         * TODO: New todo item.
21119
21120         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
21121         which calls mono_runtime_class_init and patches the call site to
21122         avoid further calls.
21123         (mono_arch_create_class_init_trampoline): New arch specific function 
21124         to create a class init trampoline.
21125         (create_trampoline_code): Generalized so it can create
21126         class init trampolines as well.
21127
21128         * mini.c (helper_sig_class_init_trampoline): New helper variable.
21129         (mono_create_class_init_trampoline): New function to create and cache
21130         class init trampolines.
21131         (mono_find_class_init_trampoline_by_addr): New function to lookup the
21132         vtable given the address of a class init trampoline. Used by the
21133         patching process.
21134         (mono_codegen): Generate a call to a trampoline instead of
21135         mono_runtime_class_init in LDSFLD[A].
21136         (mono_codegen): Add relocations for the new trampoline.
21137         
21138         * mini.h mini-x86.c aot.c: Added a new relocation type: 
21139         MONO_PATCH_INFO_CLASS_INIT.
21140
21141         * mini.h: Bump AOT version number.
21142
21143         * aot.c: Create a copy of the loaded code instead of using the original
21144         so methods which call each other will be close in memory, improving
21145         cache behaviour.
21146         
21147         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
21148         patch since it breaks the regression tests.
21149         
21150         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
21151         for the register saving instruction sequence since the 
21152         frame_state_for function in glibc 2.3.2 don't seem to detect it.
21153
21154 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
21155
21156         * TODO: Fix todo item && remove another.
21157
21158 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
21159
21160         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
21161         previous checkin.
21162
21163         * aot.c: Moved the check for MONO_LASTAOT into the initialization
21164         function of the module.
21165
21166         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
21167         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
21168         --no-aot command line option.
21169
21170 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
21171
21172         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
21173         by Bernie Solomon (bernard@ugsolutions.com).
21174
21175         * inssel.brg: Refactor the interface offset table related code into
21176         its separate functions and add support for the AOT case.
21177
21178 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
21179
21180         * aot.c (mono_aot_get_method_inner): Fix memory leak.
21181         
21182         * aot.c: Added mono_aot_verbose variable and made all debugging
21183         output depend on the value of this variable.
21184
21185         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
21186         method_label and info_label.
21187
21188         * mini.h mini-x86.c aot.c: Added a new relocation type 
21189         MONO_PATCH_INFO_IID for klass->interface_id.
21190
21191         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
21192         the MonoJitInfo structure.
21193
21194         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
21195         a non-root appdomain in shared mode.
21196
21197 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21198
21199         * aot.c: make aot loader less verbose. Remove free of unused variable.
21200
21201 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
21202
21203         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
21204
21205         * .cvsignore: Added *.dll.
21206
21207         * mini.c (mono_print_tree_nl): New function callable while debugging.
21208
21209         * mini.c (mono_print_code): Export this.
21210
21211         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
21212         patched code.
21213
21214 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
21215
21216         * mini.h (MonoCompile): Added 'jit_info' field.
21217
21218         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
21219         the cfg structure, since it is needed by the AOT compiler.
21220
21221         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21222
21223         * aot.c: A major rewrite. Changes include:
21224         - save exception tables for methods which have them.
21225         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
21226         to g_module_symbol.
21227         - reworked the file format so it is now much smaller and needs
21228         fewer relocation entries.
21229         
21230 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21231
21232         * aot.c (load_aot_module): Fix build bustage on platforms without
21233         Boehm GC.
21234
21235 2003-09-04  Martin Baulig  <martin@ximian.com>
21236
21237         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
21238
21239 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21240
21241         * TODO: Some new optimization ideas.
21242
21243         * aot.c: Move AOT module loading logic here from mono_assembly_open.
21244
21245         * aot.c: Save the optimization flags used to compile the code into
21246         the AOT module.
21247
21248         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
21249         support emitting domain specific code.
21250         
21251         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
21252         no longer domain neutral. It can be made domain neutral by compiling 
21253         with --optimize=shared.
21254
21255         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
21256         between appdomains.
21257
21258         * driver.c mini.h mini.c: New --no-aot debugging option which disables
21259         loading of AOT code.
21260
21261         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
21262         
21263         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
21264         if there is no domain neutrality information.
21265
21266 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
21267
21268         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
21269         format version into the generated library.
21270
21271         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
21272         callee method into the caller since one of them could be shared.
21273
21274         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
21275         system exceptions from AOT code now works.
21276
21277         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
21278         method if it is domain neutral and the callee is not.
21279
21280         * graph.c (cfg_emit_one_loop_level): Fix warning.
21281
21282 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
21283
21284         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
21285         last checkin.
21286
21287 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
21288
21289         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
21290         is needed  by code which is executed before mono_runtime_init ().
21291         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
21292         
21293         * mini.c (mono_thread_abort): Fix warning.
21294         (mono_jit_compile_method): Call static constructor in the AOT case too.
21295
21296         * aot.c (mono_compile_assembly): Fix warning.
21297
21298 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21299
21300         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
21301
21302 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
21303
21304         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
21305
21306         * cpu-pentium.md: Fix the length of call opcodes so they include the
21307         ESP restoring instruction. Fixes #47968.
21308
21309 2003-08-28  Martin Baulig  <martin@ximian.com>
21310
21311         * mini-x86.c (mono_arch_call_opcode): Added support for
21312         MONO_TYPE_GENERICINST.
21313
21314         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
21315
21316 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
21317
21318         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
21319         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
21320
21321         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
21322         metadata_section.
21323
21324 2003-08-26  Martin Baulig  <martin@ximian.com>
21325
21326         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
21327         when reporting an error, set this to the actual error location.
21328         (mono_method_to_ir): Report the correct error location if
21329         get_basic_blocks() returned an error.
21330
21331 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
21332
21333         * mini.c (mono_type_blittable): OBJECT is not blittable.
21334         (mono_method_blittable): Methods which have marshalling descriptors
21335         are not blittable either. Fixes #47842.
21336
21337 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
21338
21339         * driver.c mini.c: Use an environment variable instead of a global 
21340         variable. Also fix the build.
21341
21342         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
21343         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
21344         reporting this. 
21345
21346         * driver.c mini.c: Added --with-valgrind option to turn off some
21347         code which prevents mono from running under valgrind.
21348
21349         * mini.c (mono_emit_call_args): Fixed warning.
21350
21351         * mini.c (mono_emulate_opcode): Fixed warning.
21352
21353 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21354
21355         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
21356         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
21357         regalloc.c, regalloc.h: specify available registers in arch-specific
21358         code and support floats in the regallocator (patch by Laurent Morichetti 
21359         <l_m@pacbell.net>)
21360
21361 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21362
21363         * mini.c: mono_thread_current() can be called only after
21364         mono_runtime_init(): rearrange code to not call it early on.
21365
21366 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21367
21368         * mini.c: allocate jump tables in the code mempools.
21369
21370 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21371
21372         * mini.c, mini.h: make sure per-thread data allocated by the jit is
21373         freed.
21374
21375 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
21376
21377         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
21378         12 to 16.  This fixes bug #47453.
21379
21380
21381 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21382
21383         * mini-ppc.c: fixed indexed load and unsigned compares.
21384
21385 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
21386
21387         * mini.c: reenabled installation of handler for
21388           thread abort signal.
21389
21390 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21391
21392         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
21393         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
21394         until it's fixed and actually useful.
21395
21396 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21397
21398         * inssel-long32.brg: couple more opcodes implemented.
21399
21400 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21401         
21402         * mini-sparc.c: Even more opcodes implemeted.
21403
21404 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
21405
21406         * mini-sparc.c: More opcodes implemented.
21407
21408 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
21409
21410         * mini-sparc.c: More opcodes implemented.
21411
21412 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21413
21414         * inssel-sparc.brg: Add some needed rules.  Direct
21415         copy from PPC.
21416         * Makefile.am: Use inssel-sparc.brg
21417         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
21418         an assert happy for now.
21419
21420 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
21421
21422         * mini-sparc.c: Fixed compile errors.
21423         * exceptions-sparc.c: Same.  We now produce a mono binary 
21424         on sparc-linux.  Yea.
21425
21426 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
21427
21428         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
21429         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
21430         They compile, but do not work.
21431
21432 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21433
21434         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
21435         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
21436         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
21437         (ct@gentoo.org).
21438
21439 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21440
21441         * mini.c: more opcodes implemented and better support for generics.
21442
21443 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21444
21445         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
21446         * mini.c, mini.h: first cut at generics support: some new instructions 
21447         added and changed the behaviour of some of the existing ones.
21448
21449 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
21450
21451         * mini.c: Removed definition of metadata_shared mutex here.
21452
21453 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
21454
21455         * mini-x86.c: make vararg calls work for instance methods.
21456
21457 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21458
21459         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
21460         returns the arguments in a separte list, now.
21461
21462 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21463
21464         * aot.c, mini.c: updates for array type representation changes.
21465
21466 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
21467
21468         * mini.c: register function to perform jit shutdown.
21469
21470 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21471
21472         * mini.c: use a faster allocator if possible.
21473
21474 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21475
21476         * aot.c: some cleanups and portability changes.
21477
21478 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21479
21480         * mini.c: use faster allocation for CEE_BOX if possible.
21481
21482 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
21483
21484         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
21485         Moved inlined mempcy code to its own function so that is can be
21486         reused. Added an inline memset function as well (optimized initobj).
21487         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
21488
21489 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21490
21491         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
21492
21493 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
21494
21495         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
21496         arch code can setup the cpu for CLR execution, if needed.
21497         We use it on x86 to set the precision of FP operations.
21498
21499 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21500
21501         * mini.c: disable some optimizations if we can guess they'll cost too
21502         much for a given method.
21503
21504 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21505
21506         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
21507         
21508 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21509         * mini.h mini.c mini-x86.c: Added instruction level coverage 
21510         info collection support.
21511
21512 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21513
21514         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
21515         is now implemented in the profiling API. Get rid of a couple of
21516         unnecessary global variables.
21517
21518 2003-06-15  Nick Drochak <ndrochak@gol.com>
21519
21520         * basic-long.cs: tests for negative values for bigmul, and unsigned.
21521         * cpu-g4.md: add op_bigmul and op_bigmul_un
21522         * cpu_pentium.md: add op_bigmul_un
21523         * inssel-long32.brg: add rule for unsigned bigmul
21524         * mini-ops.h: define OP_BIGMUL_UN
21525         * mini-x86.c: THE BUG: handle (un)signed properly
21526         * mini.c: choose unsigned opcode if needed.
21527         This set of patches fixes bug #44291
21528
21529 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
21530
21531         * mini.c (optimize_branches): improved to handle all kinds of
21532         conditional branches.
21533
21534 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21535
21536         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
21537         don't raise exceptions.
21538
21539 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21540
21541         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
21542         to arch-specific files.
21543
21544 2003-06-09  Martin Baulig  <martin@ximian.com>
21545
21546         * Makefile.am (libs): Added $(LIBGC_LIBS).
21547
21548 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
21549
21550         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
21551         and OP_ATAN (fixes bug#44293).
21552
21553 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
21554
21555         * Makefile.am, mini-x86.c: rename cpu description array to
21556         pentium_desc, since some compilers define the 'pentium' preprocessor
21557         symbol.
21558
21559 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
21560
21561         * mini.c (mini_select_instructions): add explicit branch if the
21562         following block is not the false target of a conditional branch -
21563         we need this with any optimization that reorder or remove bblocks
21564
21565         * mini.c (optimize_branches): bug fixes
21566
21567 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
21568
21569         * mini.c (mono_method_to_ir): inline static readonly fields
21570
21571         * ssa.c (fold_tree): start cfold support for long (very simple
21572         cases only)
21573
21574         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
21575
21576 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21577
21578         * inssel.brg: fixed memcpy (bug #44219).
21579
21580 2003-06-05  Dick Porter  <dick@ximian.com>
21581
21582         * driver.c: Set the glib log levels to not abort if g_message
21583         recurses.
21584
21585         g_set_prgname() has to happen before mini_init() so that the
21586         process handle gets the info.
21587         
21588 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21589
21590         * driver.c: add intrins to the default optimizations to get wider
21591         exposure.
21592
21593 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21594
21595         * mini.h: some large basic blocks will overflow a 16-bit
21596         integers for symbolic registers.
21597
21598 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21599
21600         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
21601         (mono_arch_output_basic_block): fix bug 43499 
21602
21603 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21604
21605         * mini.c: kill duplicated definition of mono_debug_format.
21606
21607 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21608
21609         * mini-x86.c, arrays.cs: fixed register allocation bug.
21610
21611 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21612
21613         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
21614
21615         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
21616
21617 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21618
21619         * mini.c:
21620         (print_method_from_ip): also print source location information if
21621         available.
21622
21623 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
21624
21625         * mini.c (mono_find_block_region): bug fix in region code
21626         (mini_method_compile): enable removing unreachable code again, but
21627         only in methods without exception clauses.
21628
21629 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
21630
21631         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
21632         Implemented arglist opcode and handling of TypedReference type.
21633         Fixed x86 call convention when a structure is returned.
21634         Minimal support for calling static vararg methods.
21635
21636 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
21637
21638         * mini.c (mini_method_compile):  always remove unreachable code,
21639         because the code in them may be inconsistent  (access to dead
21640         variables for example).
21641
21642 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21643
21644         * driver.c, debug-mini.c: warning fixes.
21645
21646 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
21647
21648         * Makefile.am, jit.h, mini.h: install header for embedding mono.
21649
21650 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
21651
21652         * mini.c: thread-static fields are registered in mono_class_vtable(),
21653         so ensure the function is called before checking for them.
21654
21655 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
21656
21657         * mini.c (optimize_branches): fix for bug 43586
21658
21659         * jit-icalls.c (mono_llmult_ovf): added an additional check for
21660         overflow (fixes Bug #43639)
21661
21662 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21663
21664         * mini.c, objects.cs: allow the use of stobj for primitive types.
21665
21666 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21667
21668         * mini.c: be less strict about argument checking until we support
21669         running the verifier.
21670
21671 2003-05-27  Nick Drochak <ndrochak@gol.com>
21672
21673         * basic-long.cs: tests for (ulong)int * (ulong)int also
21674         * mini.c: use the same trick for (ulong)int * (ulong)int
21675
21676 2003-05-27  Nick Drochak <ndrochak@gol.com>
21677
21678         * basic-long.cs: add regression test for (long)int * (long)int
21679         * cpu-pentium.md: add op_bigmul specification
21680         * inssel-long32.brg: add OP_BIGMUL rule
21681         * mini-ops.h: add OP_BIGMUL
21682         * mini-x86.c: register allocator: handle case where src1 needs to be
21683         in EAX.
21684         * mini.c: substitute special BIGMUL opcode in the tree for 
21685         (long)int * (long)int
21686
21687 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21688
21689         * jit-icalls.c: call the type ctor on field access if needed.
21690
21691 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21692
21693         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
21694         to a method (including results of ldelema, bug#43207).
21695
21696 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
21697
21698         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
21699         colors to show exception handler blocks.
21700
21701         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
21702         (fix for pinvoke7.cs).
21703
21704 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21705
21706         * mini.h, mini.c: ensure correct initialization order for types that
21707         require it. Prepare for lazy compilation of jit icall wrappers.
21708         Provide a name for opcode emulation to reduce unneeded mallocing.
21709
21710 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
21711
21712         * mini-x86.c: better register restoring code and profiling
21713         support for tail calls.
21714
21715 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21716
21717         * mini.h, driver.c: prepare for leaf methods optimization.
21718
21719 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21720
21721         * mini.c: get targets of branches before converting a method.
21722
21723 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
21724
21725         * mini.c (optimize_branches): added some experimental code (disbaled) 
21726
21727 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
21728
21729         * mini.c (optimize_branches): fix branch to branch optimization 
21730
21731         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
21732
21733         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
21734
21735         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
21736
21737         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
21738         if needed.
21739
21740 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
21741
21742         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
21743         enable use of interface variables again.
21744
21745         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
21746         I1 to registers because there is no simply way to sign extend 8bit
21747         quantities in caller saved registers on x86.
21748
21749         * inssel-float.brg: set costs of some rules to 2 so
21750         that monobure always select the arch. specific ones if supplied,
21751         regardless of the order we pass the files to monoburg.
21752
21753 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21754
21755         * mini.c, mini-x86.c: since the magic trampoline for jumps
21756         can't patch the code directly, we do it as soon as the
21757         method gets compiled.
21758
21759 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21760
21761         * mini-x86.c, mini.h: introduce a new patching method
21762         to support CEE_JMP and tail calls.
21763         * mini.c: obey tail.call. Don't precompile methods target
21764         of CEE_JMP.
21765         * tramp-x86.c: new trampoline code to handle methods
21766         reached through a jump.
21767
21768 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
21769
21770         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
21771         bit values to registers
21772
21773 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
21774
21775         * mini.c (mono_compile_get_interface_var): share interface
21776         variables if possible.
21777
21778 2003-05-16  Martin Baulig  <martin@ximian.com>
21779
21780         * debug-mini.c (mono_init_debugger): New function to initialize
21781         the debugger.  This is not in the debugger since it needs to
21782         access some of mini's internals.
21783
21784 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
21785
21786         * mini.c (mono_method_to_ir): inlining fixes/cleanups
21787
21788 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
21789
21790         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
21791         for value type handling.
21792
21793 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
21794
21795         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
21796         (mono_method_check_inlining): enable inlining of all kinds of wrappers
21797
21798 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
21799
21800         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
21801           the constructor through a proxy.
21802
21803 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21804
21805         * jit-icalls.c, inssel.brg: fixes to array element address
21806         calculations.
21807
21808 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
21809
21810         * mini-x86.c (is_regsize_var): allocate pointer to registers
21811
21812 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21813
21814         * driver.c: fixed typo, added intrins to the set of optimizations
21815         tested with regressions.
21816
21817 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21818
21819         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
21820         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
21821         test case.
21822
21823 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
21824
21825         * inssel.brg: remove some common pop instructions without side effects
21826
21827 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21828
21829         * inssel-x86.brg: fixed thinko in int to double conversions.
21830
21831 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21832
21833         * mini.c, jit-icalls.c: added runtime thread-static variable support.
21834
21835 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21836
21837         * inssel-long32.brg: two more missing instructions.
21838
21839 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
21840
21841         * mini.c (mono_emit_call_args): set the cil_code for all arguments
21842         if not already set.
21843
21844 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
21845
21846         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
21847         correctly.
21848
21849         * basic-float.cs: Added tests for negative zero.
21850
21851 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21852
21853         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
21854         a couple of missing operations for long casts, with test cases.
21855
21856 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21857
21858         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
21859
21860 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
21861
21862         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
21863         code size estimation.
21864
21865 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
21866
21867         * mini.c (mono_jit_create_remoting_trampoline): make it work with
21868         abstract methods (fix bug 42542)
21869
21870         * aot.c: add ability to handle array types
21871         
21872 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
21873
21874         * mini.c: Call the _specific versions of the object allocation
21875         functions if possible.
21876
21877 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
21878
21879         * driver.c: call setlocale ().
21880
21881 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21882
21883         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
21884         windows build.
21885
21886 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21887
21888         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
21889
21890         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
21891         wrappers (fix bug 42122)
21892
21893 2003-05-04  Martin Baulig  <martin@ximian.com>
21894
21895         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
21896
21897         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
21898         s/mini_set_defaults/mono_set_defaults/g.
21899
21900 2003-05-04  Martin Baulig  <martin@ximian.com>
21901
21902         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
21903
21904 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21905
21906         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
21907         (reported by Don Roberts).
21908
21909 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21910
21911         * mini.c: temporarily work around two bugs for this release.
21912
21913 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21914
21915         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
21916         that contains -export-dynamic and it makes using the ld script
21917         useless.
21918         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
21919
21920 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21921
21922         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
21923         specific cpu.
21924
21925 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21926
21927         * mini.c: make sure leave calls all the needed finally blocks,
21928         even when the target jumps out of multiple exception clauses.
21929
21930 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21931
21932         * ldscript, Makefile.am: add linker script to reduce the number of
21933         exported symbols (should also fix the issues with libwine defining
21934         some of the same symbols in io-layer).
21935
21936 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
21937
21938         * driver.c (mini_main): Avoid assertion when no file name is given on 
21939         the command line.
21940
21941 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
21942
21943         * driver.c: added --version/-V command line option.
21944         Added the inline optimization in the regression tests.
21945
21946 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21947
21948         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
21949         to the type in the method signature (fixes bug#42134).
21950
21951 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
21952
21953         * mini.c: when inlining, check this is not null only when needed (bug #42135).
21954
21955 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
21956
21957         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
21958
21959 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21960
21961         * driver.c: fixed bug #42100.
21962
21963 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21964
21965         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
21966
21967 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21968
21969         * mini.c: moved most of the code required to do inlining to its own
21970         function so it can be reused. Inline also ctors if appropriate.
21971
21972 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21973
21974         * Makefile.am: Link with -export-dynamic so shared libs loaded by
21975         the runtime can call mono API functions.
21976
21977 2003-04-27  Martin Baulig  <martin@ximian.com>
21978
21979         * debug-mini.c (mono_debug_init_method): Added
21980         `guint32 breakpoint_id' argument; if the method has a breakpoint,
21981         send a notification to the debugger.
21982
21983         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
21984         running in the Mono Debugger, just pass the breakpoint number to
21985         mono_debug_init_method().
21986
21987         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
21988
21989 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
21990
21991         * mini.c: allow some more unsafe compares.
21992
21993 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21994
21995         * mini-x86.c, Makefile.am: make distcheck works (partially from
21996         a patch by Richard Lee <r.h.lee@attbi.com>).
21997         * regset.c, regset.h: removed, they are unused.
21998
21999 2003-04-25  Dick Porter  <dick@ximian.com>
22000
22001         * driver.c: Usage reports the name as 'mono' not 'mini'
22002         * exceptions-x86.c: Build and run on freebsd
22003
22004 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
22005
22006         * Makefile.am: install the program with the 'mono' name and
22007         the library as libmono instead of mini and libmini.
22008
22009 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22010
22011         * driver.c: provide the APIs for the embedding interface of the old jit.
22012
22013 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
22014
22015         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
22016
22017 2003-04-23  Martin Baulig  <martin@ximian.com>
22018
22019         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
22020
22021         * driver.c: Added `--debug' command line argument to enable
22022         debugging support.
22023
22024 2003-04-23  Martin Baulig  <martin@ximian.com>
22025
22026         * debug.[ch]: Removed.  The code is now in
22027         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
22028
22029         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
22030         last six months.
22031
22032 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
22033
22034         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
22035
22036 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22037
22038         * mini.c:
22039         (mini_cleanup): moved mono_runtime_cleanup call after the call to
22040         mono_domain_finalize.
22041         (mini_method_compile): use mono_method_profile* if the the option is
22042         enabled.
22043
22044 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22045
22046         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22047         methods with their wrapper.
22048
22049         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22050         methods with their wrapper.
22051
22052         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
22053         their wrapper.
22054
22055         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
22056         wrapper.
22057
22058         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
22059         methods.
22060
22061 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
22062
22063         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
22064
22065 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
22066
22067         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
22068         of the mempool. This is slightly faster and uses less memory
22069
22070 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22071
22072         * mini.c: avoid O(n) allocation for variables.
22073
22074 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22075
22076         * mini.c: handle items on the stack after inlining methods.
22077
22078 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22079
22080         * mini.c: make the method->opcode optimization dependent
22081         on MONO_OPT_INSTRINS and do it lazily.
22082
22083 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22084
22085         * driver.c: print overall results at the end of regression run.
22086
22087 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
22088
22089         * inssel.brg: don't overwrite symbolic registers.
22090
22091 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22092
22093         * inssel-x86.brg: fix conversion from long to float.
22094
22095 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
22096
22097         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
22098
22099 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22100
22101         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
22102
22103         * driver.c: Added --print-vtable option as in the old JIT.
22104
22105 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22106
22107         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
22108
22109 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
22110
22111         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
22112
22113 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22114
22115         * mini.c regalloc.c regalloc.h: Fix memory leak.
22116
22117 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
22118
22119         * aot.c (mono_aot_get_method): register all used strings
22120
22121 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22122
22123         * mini.c: always intern strings references with ldstr at compile time.
22124
22125 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22126
22127         * Makefile.am: add BUILT_SOURCES.
22128
22129 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22130
22131         * driver.c: give a better error message when the assembly to execute
22132         doesn't have an entry point.
22133
22134 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
22135
22136         * Makefile.am: added hack for automake
22137
22138         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
22139         correct sematics.
22140
22141         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
22142
22143 22003-04-07  Martin Baulig  <martin@ximian.com>
22144
22145         * Makefile.am: Added Makefile.am.
22146
22147         * debugger-main.c: Removed, this is now in the debugger where it
22148         belongs.
22149
22150         * mini.pc.in: Call this package `mini' for the moment.
22151
22152
22153
22154
22155
22156
22157
22158
22159
22160
22161
22162
22163
22164
22165