2009-09-24 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
2
3         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
4         in the VCALL decomposition code.
5
6 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
7
8         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
9
10         * basic.cs: Add a test.
11
12         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
13         generic invokes.
14
15         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
16         searches all the domains of the current thread.
17
18         * exceptions-<ARCH>.c: Use it. Fixes #539394.
19
20 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
21
22         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
23         so catching exceptions thrown in the same method works. Fixes exception17.exe.
24
25         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
26         for non-jit trampolines.
27
28         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
29
30         * aot-compiler.c (add_wrappers): Ditto.
31
32         * mini-arm.c: Implement support for passing vtypes and floats, and increase
33         the size of the param area used by dyn_call to 6 which covers the majority of
34         methods.
35
36         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
37
38         * mini-arm.c: Implement support for passing/receiving
39         longs and receiving floats in the dyn_call code.
40
41         * mini-amd64.c: Implement support for receiving vtypes in registers in
42         the dyn_call code.
43
44         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
45         the dyn_call code.
46
47 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
48
49         * mini-arm.c (get_call_info): Return more precise information in
50         ArgInfo->regtype.
51         (dyn_call_supported): Use the information in CallInfo.
52
53         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
54
55         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
56         code.
57
58         * mini-arm.c: Update after the dyn_call api changes.
59
60         * mini.c (mini_create_jit_domain_info): Register a destructor function
61         for the runtime_invoke_hash.
62
63         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
64         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
65         this function.
66         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
67         (dyn_call_supported): Simplify this by using get_call_info ().
68         (mono_arch_dyn_call_free): New destructor function.
69
70         * generics.cs: Remove a printf.
71
72         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
73
74         * mini-arm.c: Add support for enum return values and passing a few arguments
75         on the stack.
76         
77         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
78         dyn invoke.
79
80         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
81
82         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
83         the dynamic invoke wrappers.
84
85         * mini-arm.c: Implement OP_DYN_CALL for arm.
86
87         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
88         supported by the dynamic runtime invoke wrapper.
89
90         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
91         runtime invoke wrapper.
92
93         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
94         if possible when running with full-aot.
95
96         * mini-ops.h: Add OP_DYN_CALL opcode.
97
98         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
99         with dynamic arguments lists similar to libffi.
100
101 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
102
103         * method-to-ir.c: Fix the previous change on 64 bit platforms.
104         
105         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
106         to NEWARR.
107
108         * iltests.il.in: Add a new test.
109         
110 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
111
112         * aot-compiler.c (add_generic_instances): Add more instances of
113         GenericEqualityComparer.
114
115 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
116
117         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
118
119 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
120
121         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
122         comments on some functions that now can fail.
123
124 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
125
126         * Makefile.am: Add Info.plist to EXTRA_DIST
127
128 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
129
130         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
131         static synchronized wrappers. Fixes #539500.
132
133 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
134
135         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
136         properly.
137
138 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
139
140         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
141         lmf before calling filter clauses as well. Fixes #539550.
142
143         * exceptions.cs: Add a test.
144         
145 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
146
147         * aot-compiler.c (add_generic_class): Add instances of
148         Array.GetGenericValueImpl as well.
149
150         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
151         can be tested too.
152
153         * generics.cs: Add a fullaot linq test.
154
155 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
156
157         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
158         reg r1 on arm.
159
160 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
161
162         * mini-trampolines.c (mono_delegate_trampoline) : Call
163           mono_cominterop_get_invoke if the delegate target object
164           is a COM object.
165
166         Code is contributed under MIT/X11 license.
167
168 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
169
170         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
171         internal call is defined outside platform code. Reduce code 
172         duplication with existing [Method|Field]AccessException
173
174 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
175
176         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
177         if the return value is a small struct passed on regs.
178
179 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
180
181         * cpu-arm.md mini-arm.c: Remove unused opcodes.
182
183         * mini-codegen.c: Enable the cpu description validation for arm.
184
185 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
186
187         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
188         test which depends on structs to objects.cs.
189         
190         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
191         require object model related stuff working.
192
193         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
194
195         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
196
197         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
198         against the instruction metadata in mini-ops.h. amd64 only for now.
199
200         * mini-ops.h: Fix some instruction descriptions.
201
202         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
203         unused instructions.
204
205 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
206
207         * exceptions.cs: Add a new test.
208
209 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
210
211         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
212
213 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
214
215         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
216         skip empty phi opcodes.
217         
218         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
219         correctly by zero extending after loads. Skip methods containing calls
220         to the monitor enter/exit trampolines.
221
222         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
223         when calling mono_thread_force_interruption_checkpoint ().
224
225         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
226
227         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
228         64 bit thunks.
229         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
230
231         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
232         bootstrap could run.
233
234 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
235
236         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
237
238 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
239
240         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
241         of the method to
242         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
243         LLVM might be very short.
244
245         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
246         in OP_THROW/RETHROW.
247
248         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
249         alignment on osx.
250
251 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
252
253         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
254         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
255         LLVM might be very short.
256
257 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
258
259         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
260         the alignment for the value of sp.
261
262 2009-09-01  Geoff Norton  <gnorton@novell.com>
263
264         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
265         managed wrappers in full aot.
266
267 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
268
269         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
270
271 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
272
273         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
274
275 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
276
277         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
278
279         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
280         saved info.
281
282         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
283
284         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
285         depend on the info MonoMethodHeader which could be missing in IL stripped
286         assemblies.
287
288 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
289
290         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
291         they are only 4 byte aligned.
292
293 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
294
295         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
296         was done previously, since using SP causes too many problems.
297
298         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
299         frames without a frame pointer works.
300
301         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
302         global register in methods with calls, since the calls can go through
303         a static rgctx trampoline which doesn't save it.
304
305 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
306
307         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
308
309 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
310
311         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
312
313 2009-08-18  Christian Hergert  <chris@dronelabs.com>
314
315         * method-to-ir.c: Fix warnings for uninitialized variables.
316
317 2009-08-18  Christian Hergert  <chris@dronelabs.com>
318
319         * mini-exceptions.c:
320         * aot-compiler.c: Fix printf warnings.
321
322 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
323
324         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
325         Add GetGenericValueImpl<string>.
326         
327         * aot-compiler.c (add_generic_instances): Add instances of
328         GenericEqualityComparer<T> for primitive types. Only emit the array
329         wrappers into the mscorlib image.
330
331 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
332
333         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
334         the methods_loaded array using amodule->info->nmethods.
335
336         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
337         (MONO_AOT_FILE_VERSION): Bump this.
338
339         * aot-compiler.c: Emit more generic instances allowing some parts of linq
340         to work.
341
342         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
343         MonoJitInfo doesn't belong to its methods aot image.
344
345 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
346
347         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
348
349         * mini-arm.c: Fix warnings.
350         
351         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
352
353         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
354         supports it.
355
356 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
357
358         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
359         avoid clobbering IP.
360
361         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
362         hold the trampoline argument, so its initial value is available during
363         debugging.
364
365 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
366
367         * exceptions-arm.c:
368         * exceptions-hppa.c:
369         * mini.c:
370         * exceptions-s390x.c:
371         * exceptions-mips.c:
372         * exceptions-ppc.c:
373         * exceptions-sparc.c:
374         * exceptions-alpha.c:
375         * aot-runtime.c:
376         * mini-trampolines.c:
377         * exceptions-x86.c:
378         * exceptions-s390.c: add and use #define's instead of sizeof()
379         for MonoJitInfo and MonoJitInfoTable.
380
381 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
382
383         * tramp-arm.c:
384         * tramp-amd64.c:
385         * tramp-ppc.c:
386         * tramp-x86.c: use a #define instead of sizeof() for a few
387         structures that use a zero-length array.
388
389 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
390
391         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
392         case when the method is dynamic. Fixes #529238.
393
394 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
395
396         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
397         of asserting when a method is JIT compiled in full-aot mode.
398
399 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
400         
401         Contributed under the terms of the MIT/X11 license by
402         Jerry Maine <crashfourit@gail.com>.
403         
404         * fixed wrong dates in changelog.
405
406 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
407         
408         Contributed under the terms of the MIT/X11 license by
409         Jerry Maine <crashfourit@gail.com>.
410
411         * basic-simd.cs: added test for packed double square root.
412         * cpu-amd64.md: added opcode info for packed double square root.
413         * cpu-x86.md: added opcode info for packed double square root.
414         * mini-ops.h: added IR opcode for packed double square root.
415         * mini-x86.c: added IR to native translation code for packed double square root.
416         * mini-amd64.c: removed todo for packed double square root.
417         * simd-intrinsics.c: added method to IR opcode converstion for
418         packed double square root.
419
420 2009-08-03 Jerry Maine <crashfourit@gmail.com>
421
422         Contributed under the terms of the MIT/X11 license by
423         Jerry Maine <crashfourit@gail.com>.
424
425         * mini-amd64.c: Added a change to help tell the difference as 
426         to what perpose the xmm register is being used--mainly to help
427         with debuging.
428         * mini-amd64.h: Changed callee regs to use 15 out of 16 
429         (one used for special cases) xmm registers for both fp
430         and simd ops. Added define to turn on new feature in the regalloc
431         that allows fp and simd ops to share the xmm regs happily.
432         * codegen.c: Added code to detect for which perpose an xmm reg is
433         being used (fp or simd) and to translate back and forth to the
434         correct logical reg bank (fp or simd) for 'spill load's.
435
436 2009-08-03 Jerry Maine <crashfourit@gmail.com>
437
438         Contributed under the terms of the MIT/X11 license by
439         Jerry Maine <crashfourit@gail.com>.
440
441         * basic-simd.cs: Added tests for stressing the regalloc when running with
442         16 simd regs and when simd and fp ops share the same reg bank.
443
444 2009-08-01  Mark Probst  <mark.probst@gmail.com>
445
446         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
447         in shared generic code, we might have to look up the class in the
448         RGCTX.  If we use the class directly, compute its GC descriptor.
449
450 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
451
452         * mini.c (mono_jit_runtime_invoke): Fix a warning.
453
454 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
455
456         * mini.c (mono_jit_runtime_invoke): Initialize the class and
457         check for errors. Fixed the case when the class with the Main
458         method is broken.
459
460 2009-07-31 Jerry Maine <crashfourit@gmail.com>
461
462         Contributed under the terms of the MIT/X11 license by
463         Jerry Maine <crashfourit@gail.com>.
464
465         * cpu-amd64.md: Fixed simple bug in machine discrition file.
466
467 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
468
469         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
470
471 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
472
473         * method-to-ir.c: Fix naming of stelem and ldelem.
474
475 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
476
477         * driver.c (main_thread_handler): Check that the assembly loaded
478         matches the filename when doing AOT.
479
480 2009-07-30  Mark Probst  <mark.probst@gmail.com>
481
482         * mini.c: get_ip_from_sigctx installer has been removed, so don't
483         call it anymore.
484
485         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
486         utils/mono-sigcontext.h).
487
488         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
489         #ifdef.
490
491 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
492
493         * mini.c (mono_codegen):
494         Call profiler hook to keep track of method code buffers.
495
496 2009-07-27  Mark Probst  <mark.probst@gmail.com>
497
498         * method-to-ir.c: Invoke write barriers for the
499         Interlocked.(Compare)Exchange JIT intrinsics.
500
501 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
502
503         * Makefile.am (version.h): Fix issues when built out of tree.
504         Remove some redundant 'grep's piped through 'sed's.
505
506 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
507
508         This patch is contributed under the terms of the MIT/X11 license
509
510         * mini-ppc.c (mono_arch_output_basic_block):
511         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
512         for bits 32-47 with signed load/store diplacements for bits
513         48-63.  Use prefered base/offset order for indexed form.
514         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
515         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
516         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
517         OP_LOADI2_MEMBASE): Same.
518         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
519         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
520         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
521         indexed form.
522         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
523         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
524         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
525         OP_LOADI1_MEMINDEX): Same
526         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
527         OP_STORER8_MEMINDEX): Same
528         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
529         computations.
530         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
531         for bits 32-47 with signed load/store diplacements for bits
532         48-63.  Use prefered base/offset order for indexed form.
533
534 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
535
536 This patch is contributed under the terms of the MIT/X11 license
537
538         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
539         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
540         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
541         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
542         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
543         cfg->stack_usage to avoid size warnings.
544         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
545         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
546         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
547         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
548         to convert.
549         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
550         after code varible is initialized.
551         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
552         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
553         (mono_arch_emit_epilog): 
554         Move Use ppc_load32 for cfg->stack_usage to avoid size
555         warnings.
556
557 2009-07-24  Mark Probst  <mark.probst@gmail.com>
558
559         * method-to-ir.c: The write barrier doesn't do the store anymore,
560         so we have always to emit it.  Also, emit the wbarrier after the
561         store.
562
563 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
564
565         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
566         for argument count 3 too.
567
568 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
569
570         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
571         the caller handle the exceptions.
572         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
573         method. Fixes #524498.
574
575 2009-07-22  Geoff Norton  <gnorton@novell.com>
576
577         * mini-exceptions.c: Fix build on ia64.
578
579 2009-07-22  Mark Probst  <mark.probst@gmail.com>
580
581         * mini-exceptions.c (ves_icall_get_frame_info): Use write
582         barriers.
583
584 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
585
586         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
587         code.
588
589 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
590
591         * basic-simd.cs (Main): Pass args to the test driver.
592
593 2009-07-20  Geoff Norton  <gnorton@novell.com>
594
595         * mini-x86.h: Fix the x86 version guards to use Apple's
596         properly defined macros.
597
598 2009-07-20  Geoff Norton  <gnorton@novell.com>
599
600         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
601         aligned access.
602
603 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
604
605         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
606         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
607         the information which is needed for invokes, so only one locking+hash table
608         lookup is needed.
609
610         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
611         
612         * aot-compiler.c (add_generic_instances): Emit instances of 
613         GenericComparer<T> for primitive types.
614
615 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
616
617         * mini-posix.c: Fix linux build.
618
619 2009-07-19  Geoff Norton  <gnorton@novell.com>
620
621         * mini.h: Add prototypes for mono_runtime_syscall_fork and
622         mono_gdb_render_native_backtraces
623         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
624         so we implement the sane semantics to the runtime here
625         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
626         so we need to call it differently (mono_gdb_render_native_backtraces)
627         * mini-posix.c: Move the old semantics from mini.c to the prototypes
628         here for default implementations.
629         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
630         support Apple's weird syscall (SYS_fork) implementation and not busy
631         loop in abort() on native crashes on OSX anymore.
632
633 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
634
635         * aot-runtime.c (load_method): Change the handling of the
636         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
637         are used.
638
639         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
640
641 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
642
643         * mini.c (mono_patch_info_equal): Revert the last change for now as it
644         seems to break the aot tests.
645         
646         * mini.c (mono_patch_info_equal): Fix the handling of 
647         MONO_PATCH_INFO_RGCTX_FETCH.
648
649 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
650
651         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
652
653         * mini.c (mono_patch_info_hash): Fix the handling of 
654         MONO_PATCH_INFO_INTERNAL_METHOD.
655         (mono_patch_info_equal): Ditto.
656
657 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
658
659         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
660         in a few places.
661         
662         * mini-llvm.c: Add some infrastructure for AOT support.
663
664 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
665
666         * mini-llvm-cpp.c: Update to the latest llvm api.
667         
668         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
669         option to false to prevent llvm from installing signal handlers which
670         trip up the gc.
671         
672 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
673
674         * cpu-x86.md:
675         * cpu-amd64.md: Revert previous change as those instructions
676         take 2 separate arguments. Remember to read the arch docs more
677         carefully next time.
678
679 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
680
681         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
682
683 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
684
685         * mini-ppc.c: exploit multiple load/store units if available (rest of
686         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
687         http://bugzilla.novell.com/show_bug.cgi?id=487846).
688
689 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
690
691         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
692         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
693
694 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
695
696         * cpu-x86.md: Fix missing clobbering from trancendental simd
697         ops.
698
699         * cpu-amd64.md: Same.
700
701 2009-07-14 Jerry Maine <crashfourit@gmail.com>
702
703         Contributed under the terms of the MIT/X11 license by
704         Jerry Maine <crashfourit@gail.com>.
705
706         * basic-simd.cs: Added tests for single and doulble indexers.
707
708         * cpu-amd64.md: Added simd opcode information.
709
710         * mini-amd64.c: Added IR to native simd generation code.
711         Added simd register names and function that returns them.
712
713         * mini-amd64.h: Added marcos to turn on simd code compilation in
714         amd64. Added max simd register count marco. Added caller/callee
715         register mask marcos. Added marcos to use simd register bank.
716
717         * mini.h: Added helper marco for shufling dwords and simple
718         floats.
719
720 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
721
722         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
723
724         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
725
726         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
727         the length of the native code as well.
728
729         * basic-simd.cs: Add a test for #521662.
730
731 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
732
733         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
734
735 2009-07-13  Mark Probst  <mark.probst@gmail.com>
736
737         * mini.c: Register function for getting the IP from a signal
738         context with metadata.
739
740 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
741
742         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
743         call a generic class init trampoline if needed. Fixes #519336.
744
745         * generics.cs: Add a test.
746         
747 2009-07-09  Mark Probst  <mark.probst@gmail.com>
748
749         * method-to-ir.c: When doing a call which might be remote from
750         shared generic code to other shared code with open type arguments,
751         get the remoting invoke wrapper from the RGCTX and do an indirect
752         call to it.
753
754 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
755
756         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
757         after the unbox trampoline in the full-aot case.
758
759 2009-07-02  jonas echterhoff <jonas@unity3d.com>
760         
761         * mini.c: Move initialization of jit_mutex before debugger initialization
762         
763         to avoid crashes.
764         
765         
766         * Info.plist: added Info.plist and link flag to enable the mono executable
767         to access other processes. Requires codesigning of the executable to work.
768         
769         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
770         
771         compile on OS X.
772         
773
774 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
775
776         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
777
778 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
779
780         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
781         when the generic instance is an instantiation of a subclass of the
782         methods class. Fixes #517166.
783
784 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
785
786         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
787         code.
788
789         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
790         AOTed code.
791
792         * CMakeLists.txt: Add minimal support for installation.
793
794 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
795
796         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
797         determine whenever a method is directly callable to a separate function.
798
799         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
800         needed ones as a result of the previous change.
801
802         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
803         type of register arrays.
804
805         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
806         type of register arrays.
807
808 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
809         
810         Contributed under the terms of the MIT/X11 license by
811         Jerry Maine <crashfourit@gail.com>.
812
813         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
814
815 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
816
817         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
818
819 2009-06-24  Neale Ferguson <neale@sinenomine.net>
820
821         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
822         dump of structure return value. Fix some formatting.
823         * cpu-s390x.md: Fix lengths of instruction sequences.
824         * mini-s390.c: Minor formatting changes.
825
826 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
827
828         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
829         Use sigaction on freebsd as well.
830
831 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
832
833         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
834         uses #ifdef on it.
835         
836         * mini.c (mini_init): Revert a change which breaks cross-compilation.
837
838 2009-06-22  Mark Probst  <mark.probst@gmail.com>
839
840         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
841
842 2009-06-22  Mark Probst  <mark.probst@gmail.com>
843
844         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
845
846 2009-06-20  Martin Baulig  <martin@ximian.com>
847
848         * debug-mini.c
849         (MonoDebuggerThreadFlags): New enum typedef.
850         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
851         (mono_debugger_thread_created): Added `gpointer func' argument;
852         initialize the new `thread_flags' field.
853
854 2009-06-18  Martin Baulig  <martin@ximian.com>
855
856         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
857         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
858
859         * debug-debugger.c
860         (mini_debugger_set_attach_ok): New function; sets the attach-ok
861         flag in `MONO_DEBUGGER__info.runtime_info'.
862
863         * driver.c
864         (mono_main): Call mini_debugger_set_attach_ok() if generics
865         sharing is disabled.
866
867 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
868
869         * aot-compiler.c (add_wrappers): Fix a warning.
870
871         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
872         the ppc load/store macro changes.
873
874 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
875
876         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
877
878         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
879         not just the got symbol.
880
881         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
882         on ppc.
883
884         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
885         ppc.
886         
887         * aot-compiler.c: Remove some fixmes.
888
889         * driver.c (mono_main): Print a helpful message when cross-compiling.
890
891         * mini.c (mini_init): Disable signal handlers when cross-compiling.
892
893         * method-to-ir.c (initialize_array_data): Do the optimization if the
894         target byte order is little endian, instead of the host byte order.
895
896         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
897         wrappers into the mscorlib image, Emit a unique plt symbol for each
898         image, emit symbols for plt entries.
899
900         * image-writer.c (img_writer_emit_symbol_size): New function to emit
901         a .size directive.
902         
903 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
904
905         * aot-compiler.c (add_wrappers): Avoid calling 
906         mono_marshal_get_type_info () since it can assert for some types.
907
908         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
909         ldtoken are used inside wrappers.
910
911         * helpers.c: Add support for prefixing tools with the arch name.
912
913         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
914         quantities when using ilp32.
915
916         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
917         spill slots. Use sizeof(mgreg_t) for the spill slot size.
918
919         * image-writer.c: Use .long on ilp32.
920
921         * aot-compiler.c: Use 32 bit loads on ilp32.
922         
923 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
924
925         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
926
927         * mini-ops.h: Use TARGET_POWERPC define for consistency.
928
929         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
930
931         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
932         second got slot of every aot image.
933         
934         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
935         aot on platforms with function pointers.
936
937         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
938         support for aot/full aot on ppc/ppc64.
939         
940         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
941         arguments which are needed on ppc.
942
943         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
944         argument.
945
946         * mini-trampolines.c aot-runtime.c: Update after the above changes.
947         
948         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
949
950         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
951
952         * aot-compiler.c (emit_got_info): Fix reading unused memory.
953
954         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
955
956 2009-06-17  Geoff Norton  <gnorton@novell.com>
957
958         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
959
960 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
961
962         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
963         to control whenever the dwarf writer is in xdebug or aot mode.
964         (emit_class_dwarf_info): Use a separate abbrev for structures without
965         children.
966
967         * aot-compiler.c: Pass the appending parameter to 
968         mono_dwarf_writer_create ().
969
970         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
971         falls through to its next bblock. Fixes #513931.
972
973         * iltests.il: Add a test.
974
975         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
976         infor even if emit_line is FALSE, as the apple linker seems to require it.
977
978         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
979
980         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
981         gcc does.
982         (emit_fde): Ditto.
983
984 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
985
986         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
987         mips build.
988
989 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
990
991         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
992         'has_call_handler' fields.
993
994         * method-to-ir.c (mono_method_to_ir): Set them if needed.
995
996         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
997         first bblock if not needed. Fixes #512790.
998         
999 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1000
1001         * aot-compiler.c (mono_compile_assembly): Fix a warning.
1002         
1003         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
1004         wrappers.
1005
1006         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
1007         remoting-invoke-with-check wrappers, which are not needed when running with
1008         full-aot, since it doesn't support remoting.
1009         
1010 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1011
1012         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
1013
1014         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
1015         method info, it is not used anymore.
1016
1017         * mini.h: Bump AOT file format version.
1018         
1019         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
1020         word smaller.
1021
1022         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
1023         change above.
1024         
1025         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
1026
1027         * mini.h: Bump AOT file format version.
1028         
1029 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1030
1031         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
1032         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
1033         iphone.
1034
1035         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
1036         of CKFINITE and FBGE for VFP.
1037
1038 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
1039
1040         * aot-compiler.c: Don't align code to 16 bytes on arm.
1041         
1042         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
1043         before the methods they belong to.
1044
1045         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
1046         the full-aot case if possible, since the trampoline will be called right 
1047         away.
1048
1049         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
1050         trampolines to 1024 after the change above.
1051
1052         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
1053         trampoline to save 8 bytes per trampoline.
1054
1055         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
1056         change above.
1057
1058 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
1061
1062 2009-06-08  Martin Baulig  <martin@ximian.com>
1063
1064         * debug-mini.c
1065         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1066         (_mono_debugger_throw_exception): Don't make this static.
1067         (_mono_debugger_unhandled_exception): Likewise.
1068         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1069
1070         * debug-mini.c
1071         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1072         (_mono_debugger_throw_exception): Add function prototype.
1073         (_mono_debugger_unhandled_exception): Likewise.
1074
1075         * mini-exceptions.c
1076         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1077         arg; return the first exception handler if the exception is caught
1078         and we're running inside the debugger.
1079         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1080         improve exception handle inside runtime-invoke, check whether the
1081         exception is actually caught in the method being invoked and not
1082         by the runtime-invoke-wrapper.
1083
1084 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1085
1086         * image-writer.c: Improve support for the osx assembler.
1087
1088         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
1089         support them.
1090
1091 2009-06-08  Martin Baulig  <martin@ximian.com>
1092
1093         * debug-mini.c
1094         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1095         (_mono_debugger_throw_exception): Don't make this static.
1096         (_mono_debugger_unhandled_exception): Likewise.
1097         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1098
1099         * debug-mini.c
1100         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1101         (_mono_debugger_throw_exception): Add function prototype.
1102         (_mono_debugger_unhandled_exception): Likewise.
1103
1104         * mini-exceptions.c
1105         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1106         arg; return the first exception handler if the exception is caught
1107         and we're running inside the debugger.
1108         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1109         improve exception handle inside runtime-invoke, check whether the
1110         exception is actually caught in the method being invoked and not
1111         by the runtime-invoke-wrapper.
1112
1113 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
1114
1115         * image-writer.c (append_subsection): Don't align subsections of the
1116         debug_line section as a workaround.
1117
1118         * dwarfwriter.c: Emit line number info in the AOT case as well.
1119
1120 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
1121
1122         This patch is contributed under the terms of the MIT/X11 license
1123
1124        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
1125        code_len <= code_size
1126
1127 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
1128
1129         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
1130
1131 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
1132
1133         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
1134         invoke wrappers, we now use trampolines instead.
1135
1136 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1137
1138         * mini-darwin.c: The exception thread must not be registered with
1139         the GC.
1140
1141 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1142
1143         * mini-gc.c: Disable the code because it makes SGen crash.
1144
1145 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
1146
1147         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
1148         instead of asserting.
1149
1150 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1151
1152         * aot-compiler.c (mono_compile_assembly): Move the creation of the
1153         output file after the code has been compiled.
1154
1155 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
1156
1157         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
1158
1159 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1160
1161         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
1162         entries distinction to simplify the code.
1163
1164         * mini.h: Bump AOT file format version.
1165         
1166 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
1167
1168         * objects.cs: Fix the signature of one of the tests.
1169
1170         * mini.c (mini_create_ftnptr): New helper function, moved here from
1171         object.c.
1172         (mini_get_addr_from_ftnptr): Ditto.
1173         (mini_init): Install the new helpers.
1174
1175 2009-05-28  Martin Baulig  <martin@ximian.com>
1176
1177         Correctly initialize the debugger when embedding Mono.
1178
1179         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
1180         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
1181         see documentation in mini_debug_running_inside_mdb().
1182
1183         * debug-debugger.c
1184         (mini_debug_running_inside_mdb): New function to check whether
1185         we're running inside mdb.
1186
1187         * mini.c (mini_init): Call mini_debugger_init() if we're running
1188         inside the debugger.
1189
1190         * driver.c (mono_main): Moved the call to mini_debugger_init()
1191         into mini_init() to make this work when embedding Mono.
1192
1193         * debug-debugger.c (mini_debugger_init): Warn about duplicate
1194         calls to mini_debugger_init().
1195
1196         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
1197         mono_debugger_main() -> mini_debugger_main() and put them inside a
1198         `MONO_DEBUGGER_SUPPORTED' conditional.
1199
1200 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
1201
1202         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
1203         this is no longer in use.
1204         * mini.h: Same.
1205
1206 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
1207
1208         * mini-sparc.c (add_outarg_load): Fix the sparc build.
1209
1210         * aot-compiler.c (emit_method_code): Always write out C style symbols for
1211         methods.
1212
1213 2009-05-27  Martin Baulig  <martin@ximian.com>
1214
1215 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1216
1217         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
1218         long_conv_to_r_un to 64 bits.
1219
1220         * cpu-x86.md: Increase the instruction size due to the changes.
1221
1222         * iltests.il.in: Add regression test.
1223
1224         Fixes #467201.
1225
1226 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1227
1228         * objects.cs: Move the previous test from basic.cs to here.
1229
1230 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1231
1232         * basic.cs: Add regression test for #506915.
1233
1234 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1235
1236         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
1237         optimization we must check the bb of the first byte of stobj as
1238         it's the only one set in cil_offset_to_bb.
1239
1240         Fixes #506915.  
1241
1242 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
1243
1244         * image-writer.c: Fix pointer directive on ppc64.
1245
1246 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
1247
1248         * image-writer.c (asm_writer_emit_section_change): Avoid using
1249         .bss subsections on ppc too.
1250
1251 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
1252
1253         * image-writer.c: Fix the definition of TARGET_ASM_....
1254         
1255         * image-writer.c: Fix the emission of assembler directives in the last
1256         change.
1257
1258         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
1259         exception throwing code to accomodate ppc64.
1260
1261         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
1262         size to work on ppc64 too.
1263
1264         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
1265         too.
1266
1267         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
1268         the assembler dialect instead of using platform specific defines.
1269
1270 2009-05-22  Geoff Norton  <gnorton@novell.com>
1271
1272         * mini-arm.c (get_call_info): If a structure is split between the stack
1273         and argument registers, we should not advance the stack pointer by the entire
1274         native size, but just by the amount that spilled.
1275
1276 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
1277
1278         * mini-arm.c (get_call_info): Handle structures with alignment requirements
1279         correctly.
1280
1281 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1282
1283         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
1284         wrappers normally.
1285         
1286         * aot-compiler.c (add_extra_method): Fix up the collection of extra
1287         methods so wrapper don't get added twice.
1288         (add_generic_instances): Don't add methods of arrays.
1289
1290         * generics.cs: Mark one test as !FULLAOT.
1291
1292 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1293
1294         * mini-x86.c (emit_move_return_value): Remove unused vars.
1295
1296 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1297
1298         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
1299         decomposing 8 bytes structs into a LCALL.
1300
1301         * mini-x86.c (emit_move_return_value): We no longer push the vtype
1302         pointer for where to store the returned regs.
1303
1304         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
1305         state the concern.
1306
1307         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
1308
1309 2009-05-20  Miguel de Icaza  <miguel@novell.com>
1310
1311         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
1312         without getenv.
1313
1314 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1315
1316         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
1317
1318         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
1319         generics.
1320
1321 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
1322
1323         * local-propagation.c (mono_local_cprop): Avoid local propagation
1324         across paired add/sub if the first instruction dest reg is it's
1325         source reg. For example:
1326
1327         int_add_imm R12 <- R12 [1] clobbers: 1
1328         int_sub_imm R42 <- R12 [1] clobbers: 1
1329
1330         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
1331         maintain the math identify.
1332
1333         Fixes #505375.
1334
1335 2009-05-20  Andreia Gaita  <avidigal@novell.com>
1336
1337         * Makefile.am: avoid going on the network just to get the revision,
1338         use git log instead
1339
1340 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
1341
1342         Fixed estimate for short branches on amd64 (they were off mark, and
1343         enabling call prolog-epilog instrumentations caused assertions).
1344         * mini.h (struct MonoBasicBlock): added max_length field to hold the
1345         estimate for the maximum length of this basic block.
1346         * mini-amd64.c:
1347         - mono_arch_emit_prolog: compute max_length for each basic block
1348           (instead of max_offset), and inflate size estimate also for entry bb
1349           in case of code instrumentation.
1350         - mono_arch_output_basic_block: get rid of "cpos" (the current
1351           estimated "position" in the code), and always use "offset" instead,
1352           which is accurate; at the beginning of the function quickly recompute
1353           max_offset for all the remaining blocks, starting from the current
1354           cfg->code_len (which is correct, and not estimated) and using the
1355           estimated block lengths computed previously.
1356
1357 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
1358
1359         * exceptions-ppc.c: Remove the caching from the trampoline creation 
1360         functions, it is already done in the caller.
1361
1362         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
1363
1364         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
1365         MONO_ARCH_GSHARED_SUPPORTED define.
1366
1367         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
1368
1369         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
1370         function.
1371
1372 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
1373
1374         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
1375         call to mono_marshal_get_rgctx_invoke ().
1376
1377         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
1378         mono_marshal_get_static_rgctx_invoke (), all platforms which support
1379         gshared use the static rgctx trampolines now.
1380         
1381         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
1382         platform supports it.
1383
1384 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1385
1386         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
1387
1388         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
1389
1390 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1391
1392         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
1393
1394         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
1395         for ppc.
1396
1397 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
1398
1399         Made it possible for mono_arch_instrument_epilog to preserve
1400         argument registers, otherwise instrumenting the "epilogue" before
1401         a tail call would clobber them.
1402         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
1403         if like mono_arch_instrument_epilog but with an additional parameter
1404         that states if argument registers must be preserved.
1405         * mini.c: implemented mono_arch_instrument_epilog as a call to
1406         mono_arch_instrument_epilog_full without asking to preserve argument
1407         registers (this makes the existing code work as usual).
1408         * mini-amd64.c:
1409         - mono_arch_instrument_epilog: add parameter to transform it into
1410         mono_arch_instrument_epilog_full, and preserve argument registers
1411         when required.
1412         - mono_arch_output_basic_block, OP_TAILCALL case: call
1413         mono_arch_instrument_epilog_full.
1414         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
1415         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
1416         only transformed mono_arch_instrument_epilog into
1417         mono_arch_instrument_epilog_full.
1418
1419 2009-05-15  Geoff Norton  <gnorton@novell.com>
1420
1421         * mini-darwin.c: This works on arm now.
1422
1423 2009-05-14  Geoff Norton  <gnorton@novell.com>
1424
1425         * jit.h, driver.c: Allow full-aot to be decided programatically by the
1426         embedding api.
1427
1428 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
1431         label names.
1432
1433         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
1434         wrappers during full aot mode correctly.
1435
1436         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
1437         methods correctly.
1438
1439         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
1440         mono_metadata_type_hash ().
1441
1442 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
1443
1444         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
1445         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
1446         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
1447         Removed MONO_INST_BRLABEL from the instruction flags, and the
1448         remaining code that used it, because we do not support branches inside
1449         basic blocks (and branch target labels) anymore.
1450         * Makefile.am: As part of the above cleanup, remove reference to
1451         BURG files which don't exist anymore.
1452
1453 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
1454
1455         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
1456         osx.
1457
1458         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
1459         to use mono_arch_throw_corlib_exception.
1460
1461         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
1462         mono_arch_throw_corlib_exception for throwing corlib exceptions.
1463
1464         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
1465         domain mempool.
1466
1467         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
1468
1469         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
1470         for the got to make debugging easier and to avoid confusing it with the
1471         system got.
1472         
1473         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
1474         method so a breakpoint can be set when using gdb.
1475
1476 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
1477
1478         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
1479         on mono_method_get_imt_slot ().
1480
1481         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
1482         num_decodes variables.
1483
1484         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
1485         change as it doesn't seem to work.
1486         
1487         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
1488         wrappers.
1489
1490 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
1491
1492         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
1493         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
1494
1495         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
1496         builder when using full aot.
1497
1498         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
1499         here, it is already handled.
1500         
1501         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
1502         correctly for IMT.
1503
1504         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
1505
1506         * mini-arm.h: Enable IMT for full aot.
1507         
1508         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
1509         arch doesn't support it.
1510
1511         * mini.c (mini_init): Don't disable IMT for full aot if the
1512         architecture supports it.
1513
1514         * mini.h (MonoAotTrampoline): New enum containing the different types
1515         of 'numerous' trampolines.
1516         (MONO_AOT_FILE_VERSION): Bump this.
1517
1518         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
1519         static rgctx trampolines. Add support for full-aot IMT thunks.
1520
1521         * mini-amd64.h: Enable IMT for full aot.
1522
1523         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
1524         to exclude tests belonging to a category.
1525
1526         * generics.cs: Mark some tests with a !FULLAOT category.
1527
1528         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
1529         generics tests.
1530
1531 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
1532
1533         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
1534         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
1535         (emit_plt): Fix a warning.
1536
1537 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
1538
1539         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
1540         back into aot-compiler.c to a place where the other functions shared by
1541         the runtime and aot compiler are.
1542         
1543         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
1544         as done previously, instead of in MonoAotFileInfo, since pointers might have
1545         alignment requirements.
1546
1547         * mini.h: Bump AOT file format version.
1548
1549 2009-05-10  Miguel de Icaza  <miguel@novell.com>
1550
1551         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
1552         that is used at runtime from the aot-compiler.c, this makes it
1553         work on setups that remove the AOT compiler from the output
1554         image. 
1555
1556 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
1557
1558         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
1559         PPC.
1560
1561         * mini-ppc.h: Enable static rgctx trampolines for ppc.
1562
1563         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
1564
1565         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
1566         stuff to mono_arch_decompose_long_opts ().
1567         (mono_decompose_opcode): Remove some dead code.
1568
1569 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
1570
1571         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
1572         cmethod can be null for quite a some reasons.
1573
1574 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
1575
1576         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
1577
1578 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
1581
1582 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
1583
1584         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
1585         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
1586         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
1587         calls returning structures by addr on amd64.
1588
1589         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
1590
1591         * iltests.il.in: Restructure the tail call tests a bit.
1592         
1593 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
1594
1595         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
1596         for virtual methods too.
1597
1598 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
1599
1600         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
1601         due to regression in verifying System.dll.
1602
1603 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
1604
1605         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
1606         in dynamic methods.
1607
1608         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
1609         instances.
1610
1611         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
1612         g_str_hash () which can change.
1613
1614         * driver.c (mini_regression): Disable optimizations not supported by
1615         the cpu. Fixes #500019.
1616
1617         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
1618         build.
1619
1620 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
1623         to the latest LLVM code.
1624
1625 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
1626
1627         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
1628
1629 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
1630
1631         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
1632         x86/amd64.
1633
1634         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
1635         no longer saving offsets, so just save the patch types along with the other
1636         info.
1637         * aot-runtime.c (load_patch_info): Update after the changes to 
1638         encode_patch_list ().
1639         (decode_got_entry): Removed, merged into load_patch_info ().
1640         (is_shared_got_patch): Removed, call the same function from
1641         aot-compiler.c.
1642
1643         * mini.h: Bump aot file format version.
1644         
1645         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
1646         half-finished no-dlsym code.
1647
1648         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
1649         option.
1650
1651         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
1652         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
1653
1654 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
1655
1656         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
1657         buffer length to work with AOT code.
1658
1659         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
1660         ldfld/stfld opcodes.
1661
1662         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
1663         as it is not used.
1664
1665         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
1666
1667         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
1668
1669         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
1670         LLVM API.
1671
1672         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
1673         if needed. Don't decompose long operations when using llvm.
1674
1675 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
1676
1677         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
1678         PAGESIZE constant.
1679
1680         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
1681
1682 2009-05-03  Martin Baulig  <martin@ximian.com>
1683
1684         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
1685         mono_debugger_insert_method_breakpoint() since the class init
1686         handler we're inserting at the top of the method already gives us
1687         a notification.
1688
1689 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
1690
1691         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
1692         to mono_arch_decompose_long_opts () for x86 and arm.
1693
1694 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
1695
1696         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
1697         TARGET_AMD64 here.
1698
1699 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
1700
1701         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
1702         JIT code.
1703
1704 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
1705
1706         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
1707         number of trampolines used in full-aot mode.
1708
1709         * aot-compiler.c: Add an ntrampolines option to set the number of 
1710         trampolines emitted in full-aot mode.
1711
1712 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
1713
1714         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
1715         a volatile load. Get rid of get_tempname (), llvm assigns names
1716         automatically.
1717
1718         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
1719         builder function.
1720
1721         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
1722         a value.
1723
1724         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
1725         level 1.
1726
1727         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
1728         to the same register as a fixed sreg2. Fixes #497271.
1729
1730         * iltests.il.in: Add a new test.
1731
1732 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
1733
1734         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
1735         stack, since pushes complicate exception handling.
1736
1737         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
1738         the stack if they are passed using moves.
1739
1740         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
1741
1742         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
1743         when using llvm.
1744
1745         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
1746         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
1747         of FMOVE if it is an R4.
1748
1749 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
1750
1751         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
1752
1753         * mini.h (LLVMCallInfo): New structure to store calling convention 
1754         information for the LLVM back end similar to the CallInfo structures in 
1755         the back-ends.
1756
1757         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
1758         call information in a format usable by LLVM.
1759         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
1760
1761         * method-to-ir.c (mono_emit_call_args): Emit calls using 
1762         mono_llvm_emit_call () when compiling using LLVM.
1763
1764         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
1765         comments to all functions. Fix memory leaks. Add a public init/cleanup
1766         function.
1767
1768         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
1769
1770         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
1771         mono_array_new_va () jit icall.
1772         
1773 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
1774
1775         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
1776         multiple machine description files to be specified.
1777         * mini-ops.h: fixes for cross-compilation.
1778
1779 2009-04-22  Miguel de Icaza  <miguel@novell.com>
1780
1781         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
1782         some porting work.
1783
1784 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
1785
1786         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
1787         to prevent asserts in various passes. Fixes #497220.
1788
1789 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
1790
1791         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
1792         a racy assert.
1793
1794         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
1795         table to avoid duplicates.
1796
1797         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1798         
1799         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
1800         option is used.
1801
1802 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
1803
1804         * mini.c (mini_method_verify): Fail fulltrust code if the exception
1805         is for method or field access.
1806
1807 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
1808
1809         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
1810         a Value to stdout.
1811
1812         * mini-llvm.c (mono_llvm_emit_method): Use it.
1813         
1814         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
1815         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
1816         on volatile values.
1817
1818         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
1819         synchronized methods.
1820
1821         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
1822
1823         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
1824
1825         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
1826         OP_LOADI8_MEM.
1827
1828         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
1829         allowing some options to be set dynamically.
1830
1831 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
1832
1833         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
1834         unconditional branch.
1835
1836         * mini.h (MonoTrampolineType): Add new trampoline type 
1837         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
1838         compiled code.
1839
1840         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
1841         function.
1842
1843         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
1844         creation function.
1845
1846         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
1847         is enabled. Instead, use the llvm vcall trampoline.
1848         
1849         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
1850
1851         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
1852         
1853         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
1854         functions.
1855
1856         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
1857         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
1858
1859         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
1860         OP_IA64_CSET opcode.
1861
1862         * mini.c: Fix a warning.
1863
1864         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
1865         THROW to the appropriate llvm type.
1866
1867 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
1868
1869         * mini.c (mini_method_compile): Add statistics for methods JITted
1870         with/without LLVM.
1871
1872 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1873
1874         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
1875         OP_IA64_CMP_<cond>_IMM opcodes.
1876
1877 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1878
1879         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
1880         corlib exceptions.
1881
1882         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
1883         correctly.
1884
1885         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
1886         GENERICINST.
1887
1888 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
1889
1890         * mini-exceptions.c : add thread id to EXCEPTION trace message.
1891
1892 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
1893
1894         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
1895         support.
1896
1897         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
1898         rgctx invoke trampolines for x86.
1899
1900         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
1901         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
1902         (mono_arch_get_vcall_slot): Simplify this.
1903
1904 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
1905
1906         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
1907         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
1908
1909 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
1910
1911         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
1912         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
1913
1914         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
1915
1916         * liveness.c (visit_bb): Remove a needless assert.
1917
1918 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
1919
1920         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
1921         full aot support to the arch specific code.
1922
1923         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
1924
1925         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
1926
1927         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
1928         
1929         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
1930         collect information about the delegate invoke impl trampolines.
1931
1932         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
1933         to save trampolines during full-aot mode.
1934
1935         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
1936         creation function which returns a trampoline which sets the rgctx
1937         argument.
1938         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
1939         wrapper if possible.
1940         (mono_delegate_trampoline): Ditto.
1941
1942         * mini.c (mono_jit_runtime_invoke): Ditto.
1943
1944         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
1945         
1946         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
1947
1948         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1949         
1950 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
1951
1952         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
1953         just setting the opcode to OP_NOP.
1954
1955 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
1956
1957         * mini.c (mini_method_compile): Put the last change inside an 
1958         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
1959         
1960         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
1961         and extend live ranges to cover the whole method when using xdb.
1962
1963         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
1964         do it in the trampolines.
1965
1966         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
1967         needed.
1968
1969         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
1970         
1971         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
1972         call code in full-aot mode since IMT is disabled there.
1973         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
1974         new JIT no longer has that restriction.
1975
1976         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
1977
1978         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
1979         a more compact format.
1980         (mono_aot_wrapper_name): New function to return a unique name for a
1981         wrapper method, also used by the AOT runtime.
1982
1983         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
1984         aot-compiler.c.
1985
1986         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
1987         when a ICollection<T> etc is encountered.
1988         (add_generic_instances): Process method arguments/locals too.
1989         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
1990         trampoline names.
1991
1992         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
1993         
1994 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
1995
1996         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
1997
1998         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
1999
2000         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
2001         representing the result of the decomposition. Nullify instructions
2002         instead of setting them to OP_NOP since nops can't have registers
2003         set.
2004
2005 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
2006
2007         * aot-compiler.c (mono_compile_assembly): Split this huge function into
2008         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
2009         info. Strip 'mapping symbols' on ARM.
2010
2011         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
2012         
2013         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
2014         this with the native genmdesc.
2015
2016 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
2017
2018         * aot-runtime.c:  Fixing the MSVC build.
2019
2020         Code is contributed under MIT/X11 license.
2021
2022 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2023
2024         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
2025         JITted code depends on it.
2026
2027 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2028
2029         * aot-compiler.c: Use new MonoGenericParam accessors.
2030
2031 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2032
2033         Reduce memory usage and improve correctness wrt MonoGenericParam
2034         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
2035         handing.  Avoid allocating MonoGenericParams, but use the ones in
2036         the container itself.
2037
2038 2009-04-07  Miguel de Icaza  <miguel@novell.com>
2039
2040         * tasklets.c: Return exceptions in the out argument.
2041
2042 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2043
2044         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
2045         opcode. Use pointer types in more places instead of casting them to 
2046         integers.
2047
2048         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
2049         optimizations.
2050         (mono_llvm_optimize_method): New helper function to optimize a method.
2051
2052         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
2053         widening code so it could be called from more places.
2054         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
2055         code paths in the call opcodes.
2056
2057 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
2058
2059         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
2060
2061 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
2062
2063         * dwarfwriter.c: Use _ to separate class name 
2064         components as gdb can't handle '.'. Represent reference variables
2065         as 'class <NAME>&'.
2066         
2067         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
2068
2069         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
2070         
2071         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
2072
2073         * gc-test.cs: New file with GC stack marking tests.
2074         
2075         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
2076         negative numbers for vfp.
2077
2078         * basic-float.cs: Add a test.
2079         
2080 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
2081
2082         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
2083
2084 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
2085
2086         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
2087         part of tasklet/continuation support.
2088
2089 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
2090
2091         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
2092         amd64 opcodes inside an ifdef.
2093
2094         * dwarfwriter.c: Emit inheritance information for classes, emit fields
2095         of complex types.
2096         
2097         * dwarfwriter.c (emit_type): Emit the class info for classes.
2098
2099 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
2100
2101         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
2102
2103         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
2104
2105         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
2106
2107         * ssa.c (mono_ssa_compute): Fix some memory leaks.
2108
2109 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
2110
2111         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
2112
2113         * mini-llvm.c: Update comments.
2114
2115         * mini.h (COMPILE_LLVM): New macro.
2116
2117         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
2118
2119         * ssa.c (mono_ssa_compute): Ditto.
2120         
2121         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
2122         the unwind ops from a DWARF FDE.
2123
2124         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
2125         methods by extracting the dwarf unwind ops from the unwind info generated
2126         by LLVM.
2127         
2128         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
2129         calls.
2130
2131         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
2132         addressing modes.
2133
2134 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
2135
2136         * Makefile.am (llvm_sources): Enable this.
2137
2138         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
2139         failing back to the JIT if something cannot be handled.
2140
2141         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
2142         compiling with LLVM.
2143
2144         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
2145         compiling with LLVM.
2146
2147         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
2148         compiling with LLVM.
2149
2150         * mini-ops.h: Add a few opcodes needed by LLVM.
2151
2152         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
2153         has no unwind info.
2154
2155         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
2156         backend.
2157
2158         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
2159
2160         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
2161
2162 2009-04-01  Mark Probst  <mark.probst@gmail.com>
2163
2164         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
2165         ridiculously large methods.
2166
2167 2009-03-31  Martin Baulig  <martin@ximian.com>
2168
2169         * debug-debugger.c (debugger_remove_breakpoint): Call
2170         mono_debugger_remove_class_init_callback ().
2171
2172 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
2175         right before emitting code, not at the start.
2176
2177         * mini.c (mono_postprocess_patches): Extract this into a separate function
2178         from mono_codegen ().
2179
2180         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
2181         byref types correctly.
2182
2183 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
2184
2185         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
2186         by the last change.
2187
2188 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
2189
2190         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
2191         indirect calls, this avoids problems where get_vcall_slot () would get
2192         confused by the native code for the instruction preceeding the call.
2193         (mono_arch_get_vcall_slot): Simplify this.
2194         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
2195
2196         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
2197         register allocator now seems to depend on them instead of the data in
2198         cpu-<ARCH>.md.
2199
2200         * mini.c (mini_method_compile): Throw the correct type of exception if
2201         mono_method_get_header () fails because of a loading error.
2202
2203 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
2204
2205         * mini.c (mini_method_compile): Clear the loader error if the method
2206         header cannot be decoded.
2207
2208         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
2209         interface methods on proxies correctly.
2210
2211         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
2212         this argument for vtype methods. Add precise liveness info for arguments.
2213
2214         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
2215         LIVERANGE_START/END opcodes.
2216
2217         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
2218         for arguments and values in registers.
2219
2220 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
2221
2222         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
2223         return a valuetype. Fixes #487518.
2224
2225         * iltests.il: Add a test.
2226         
2227         * aot-compiler.c: Use mono_thread_create () to create helper threads.
2228
2229         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
2230         closed over a null reference correctly.
2231
2232 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
2233
2234         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
2235
2236 2009-03-25  Mark Probst  <mark.probst@gmail.com>
2237
2238         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
2239         allocated to the same registers as fixed sregs.
2240
2241 2009-03-24  Mark Probst  <mark.probst@gmail.com>
2242
2243         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
2244         ATOMIC_CAS_IMM ops.
2245
2246         * method-to-ir.c: Handle more cases for
2247         Interlocked.CompareExchange.
2248
2249         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
2250         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
2251         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
2252
2253 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
2254
2255         * aot-runtime.c (decode_method_ref): Fix a warning.
2256
2257         * unwind.c (mono_unwind_frame): Ditto.  
2258
2259 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2260
2261         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
2262         (mono_compile_assembly): Enable the binary writer for full-aot as well.
2263
2264         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
2265         fix the handling of large values in the ALU_PC_G0_NC relocation.
2266
2267 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2268
2269         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
2270
2271 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2272
2273         * method-to-ir.c (mono_spill_global_vars): Support for ternary
2274         ops.
2275
2276 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2277
2278         * method-to-ir.c: MINI_OP3 needs a comma.
2279
2280         * method-to-ir.c, mini.h, mini.c: Remove
2281         mono_init_op_sreg_counts ().
2282
2283 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2284
2285         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
2286         OP_JMP.
2287         
2288         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
2289         assertion.
2290
2291         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
2292
2293         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
2294         code somewhat.
2295
2296 2009-03-21  Mark Probst  <mark.probst@gmail.com>
2297
2298         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
2299         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
2300         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
2301         operations.
2302
2303 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
2304
2305         * driver.c: Change location of gc_wrapper.h.
2306
2307         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
2308         inside finally clauses correctly. Fixes #485721.
2309
2310         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
2311         after the change above.
2312
2313         * exceptions.cs: Add a test.
2314         
2315 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2316
2317         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
2318
2319         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
2320         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
2321         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
2322
2323         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
2324         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
2325
2326 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
2327
2328         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
2329         Simplify logic for ensure_method_is_allowed_to_call_method. 
2330         Handle wrappers on callers.
2331
2332 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2333
2334         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
2335         them don't run yet.
2336
2337         * basic-simd.cs: Fix the names of some test methods.
2338
2339 2009-03-18  Geoff Norton  <gnorton@novell.com>
2340
2341         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
2342
2343 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
2344
2345         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
2346
2347 2009-03-17  Jb Evain  <jbevain@novell.com>
2348
2349         * driver.c: remove now uneeded call to mono_gc_base_init before
2350         mono_profiler_load.
2351
2352 2009-03-17  Jb Evain  <jbevain@novell.com>
2353
2354         * dwarfwriter.c (token_handler): handle more cases.
2355
2356 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
2357
2358         * method-to-ir.c: Remove more dead code (that was required only
2359         because of method_is_safe). Fix compiler warnings.
2360
2361 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
2362
2363         * method-to-ir.c: Remove unneeded/useless method_is_safe
2364         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
2365
2366 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
2367
2368         * mini.c (mini_method_compile): Print the method been compiled with
2369         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
2370         for people not familiar with the runtime.
2371
2372 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
2373
2374         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
2375         a managed object which is later put into a GList. Return its class instead.
2376
2377         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
2378         stack slots when using sgen.
2379
2380 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
2381
2382         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
2383
2384 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
2385
2386         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
2387         > so it works on the first vreg as well.
2388
2389 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
2390
2391         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
2392         trigger randomly.
2393
2394         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
2395         
2396         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
2397         implement GArray.
2398
2399 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
2400
2401         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
2402         native->IL offset mapping.
2403
2404 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
2405
2406         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
2407
2408         * basic.cs: Add a test.
2409
2410 2009-03-11  Mark Probst  <mark.probst@gmail.com>
2411
2412         * mini-x86.c (mono_arch_output_basic_block): Use different
2413         registers in case the ones we want to overwrite are used by the
2414         other operand.  Fixes regression in #480807.
2415
2416 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
2417
2418         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
2419
2420         * dwarfwriter.c (emit_line_number_info): The line number info for
2421         IL code was off by one. Fix that.
2422
2423         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
2424         stack.
2425
2426 2009-03-09  Mark Probst  <mark.probst@gmail.com>
2427
2428         Contributed under the terms of the MIT/X11 license by Steven
2429         Munroe <munroesj@us.ibm.com>.
2430
2431         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
2432         Fixes #483462.
2433
2434 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
2435
2436         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
2437         as well.
2438
2439 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
2440
2441         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
2442         the delegate ctor handling code. Fixes #482638.
2443         
2444         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
2445         #481458.
2446
2447         * iltests.il.in: Add a test.
2448         
2449         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
2450         mini-posix.c.
2451
2452 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2453
2454         * mini-trampolines.c (mono_create_jump_trampoline): If the method
2455         is shared generic code, return the trampoline, even if the method
2456         has already been compiled.  Fixes #479763.
2457
2458         * mini.c, mini.h: New function
2459         mono_jit_find_compiled_method_with_jit_info() which is the same as
2460         mono_jit_find_compiled_method() but also returns the jit info.
2461
2462 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2463
2464         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
2465         for methods which actually have one.  For all other methods, make
2466         sure the this argument var is live the whole method.
2467
2468         * mini.c (mini_method_compile): Every shared method has a
2469         this/vtable/mrgctx info.  Fixes #480807.
2470
2471 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2472
2473         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
2474         generic/imt thunks where some entries branch through the vtable,
2475         while other entries branch directly.
2476
2477 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
2478
2479         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
2480
2481         * mini-windows.c: Ditto.
2482         
2483         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
2484         ctors.
2485
2486 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
2487
2488         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
2489         down an assert.
2490
2491 2009-03-04  Mark Probst  <mark.probst@gmail.com>
2492
2493         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
2494         #481403.
2495
2496 2009-03-04  Mark Probst  <mark.probst@gmail.com>
2497
2498         * exceptions-x86.c: Include debug-mini.h - fixes build.
2499
2500 2009-03-04  Martin Baulig  <martin@ximian.com>
2501
2502         * debug-mini.c: Clean up the exception API and add documentation.
2503         (mono_debugger_handle_exception): New public method; this is
2504         called when throwing an exception or encountering an unhandled one.
2505         (mono_debugger_call_exception_handler): Formerly known as
2506         mono_debugger_handle_exception(); this is used to tell the
2507         debugger that we're about to invoke an exception handler.
2508
2509 2009-03-04  Martin Baulig  <martin@ximian.com>
2510
2511         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
2512         ../metadata/mono-debug-debugger.c; save and reset exception state.
2513
2514 2009-03-02  Martin Baulig  <martin@ximian.com>
2515
2516         * debug-mini.c: Moved the debugger exception handling here from
2517         ../metadata/mono-debug-debugger.c.
2518
2519         * debug-mini.h
2520         (MonoDebuggerExceptionAction): New exception typedef.
2521
2522         * debug-mini.c
2523         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
2524
2525         * exceptions-amd64.c
2526         (mono_amd64_throw_exception): Use the new debugger exception
2527         handling code.
2528
2529         * mini-exceptions.c
2530         (mono_handle_exception_internal): Don't call
2531         mono_debugger_unhandled_exception() here.
2532
2533 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
2534
2535         * mini.c aot-compiler.c: Update after the changes to 
2536         mono_marshal_get_runtime_invoke ().
2537
2538         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
2539         Virtual generic methods might not have method->slot set, work around
2540         that.
2541
2542         * generics.cs: Add a test.
2543
2544 2009-03-02  Geoff Norton  <gnorton@novell.com>
2545
2546         * mini.c:
2547         * driver.c: Allow signal chaining of SIGFPE as well.
2548
2549 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
2550
2551         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
2552         this since it now receives the method not its generic context in the
2553         IMT reg.
2554
2555         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
2556         generic/imt thunks where some entries branch through the vtable, while
2557         other entries branch directly.
2558
2559         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
2560
2561         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
2562         support for interface methods as well.
2563
2564         * mini-trampolines.c: Add support for virtual generic methods in interfaces
2565         using the normal IMT thunks.
2566
2567         generics.cs: Add new tests.
2568         
2569         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
2570         the generic inst to the generic imt thunks. This fixes AOT support, 
2571         improves consistency with the normal IMT thunks, and makes it easier to
2572         add support for interface generic virtual methods later.
2573
2574         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
2575         
2576 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
2577
2578         * driver.c (mono_set_signal_chaining): New public API function to enable
2579         signal chaining on POSIX platforms.
2580
2581         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
2582         (si@lindenlab.com) to implement signal chaining. The original patch was
2583         contributed under the MIT X/11 license:
2584         https://bugzilla.novell.com/show_bug.cgi?id=318894
2585
2586 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
2587
2588         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
2589         too until it can be made to run on amd64.
2590
2591 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
2592
2593         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
2594         to  get_generic_context_from_code () + get_call_info () if possible.
2595
2596 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
2597
2598         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
2599         suspend-on-sigsegv functionality.
2600
2601         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
2602         to suspend when a native SIGSEGV is received. This is useful for debugging
2603         crashes which don't happen under gdb, since a live process contains more
2604         information than a core file.
2605
2606         * mini-exceptions.c (mono_print_thread_dump): Use 
2607         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
2608
2609         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
2610
2611         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
2612         
2613         * basic-float.cs: Disable the tests which currently fail on amd64.
2614
2615         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
2616         value to mono_arch_patch_callsite () to fix crashes.
2617         
2618         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
2619
2620 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
2621
2622         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
2623         nop code by patching the call address to point to the nullified class init
2624         trampoline, as the former does not seem to be safe on SMP machines.
2625
2626 2009-02-23  Mark Probst  <mark.probst@gmail.com>
2627
2628         * mini-ops.h: Fix the argument types for a few x86 opcodes where
2629         they were wrong.
2630
2631 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
2632
2633         * basic-float.cs basic-calls.cs: Fix warnings.
2634
2635 2009-02-22  Mark Probst  <mark.probst@gmail.com>
2636
2637         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
2638         correct frame pointer in the LMF.  Should fix #478394.
2639
2640 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
2641
2642         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
2643
2644         * image-writer.c: Make the binary writer less verbose.
2645
2646 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
2647
2648         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
2649         are called from runtime invoke wrappers.
2650
2651 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
2652
2653         * cpu-ppc.md (store_memindex): Increase the size of this.
2654
2655 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2656
2657         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2658
2659         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
2660
2661         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
2662         OP_LCONV_TO_R_UN.
2663
2664         Last fix for of #467201.
2665
2666
2667 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2668
2669         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2670
2671         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
2672         and long_conv_to_r8_2:
2673
2674         Fixed part of #467201.
2675
2676 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2677
2678         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2679
2680         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
2681         conversion to 32 bits.
2682
2683         * cpu-x86.md: Increase the size of int_conv_to_r4.
2684
2685         * basic-float.cs: Add a test for this.
2686
2687         Fixed part of #467201.
2688
2689 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2690
2691         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2692
2693         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
2694         conversion to 64 bits.
2695
2696         * basic-float.cs: Add a test for this.
2697
2698         Fixed part of #467201.
2699
2700 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2701
2702         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2703
2704         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
2705         This behavior is compatible with MS.
2706
2707         * iltest.il.in: Add a test for this.
2708
2709         Fixed part of #467201.
2710
2711 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
2712
2713         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
2714
2715         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
2716         change the precision of the value.
2717
2718         * cpu-x86.md: Define len for float_conv_to_r4.
2719
2720         * basic-float.cs: Add a test for this.
2721
2722         Fixed part of #467201.
2723
2724 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
2725
2726         * mini.c: Adjust locking order to the new semantics where the loader lock
2727         comes first.
2728
2729 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
2730
2731         * aot-runtime.c:
2732         * mini-amd64.c:
2733         * mini-arm.c:
2734         * mini-ia64.c:
2735         * mini-mips.c:
2736         * mini-ppc.c:
2737         * mini-sparc.c:
2738         * mini-trampolines.c:
2739         * mini-x86.c:
2740         * mini.c:
2741         * tramp-alpha.c:
2742         * tramp-amd64.c:
2743         * tramp-arm.c:
2744         * tramp-hppa.c:
2745         * tramp-ia64.c:
2746         * tramp-mips.c:
2747         * tramp-ppc.c:
2748         * tramp-s390.c:
2749         * tramp-s390x.c:
2750         * tramp-sparc.c:
2751         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
2752
2753 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
2754
2755         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
2756         as it is incorrect.
2757
2758 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2759
2760         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
2761         for cctors if needed.
2762
2763 2009-02-17  Mark Probst  <mark.probst@gmail.com>
2764
2765         * mini-ppc.c: Fix build on Darwin.
2766
2767 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
2768
2769         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
2770         version instead of 3 as valgrind doesn't like version 3.
2771
2772         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2773
2774         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
2775         usable for hashing methods.
2776         (emit_extra_methods): Use the new hash to avoid putting every method in the
2777         same hash bucket.
2778
2779         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
2780
2781         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
2782         whenever a method ref could match a method.
2783         
2784         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
2785         test to fail.
2786         
2787         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
2788         methods refs.
2789
2790         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
2791
2792         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
2793         the encoding buffer.
2794
2795         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
2796         mono_method_get_header () on inflated methods as an optimization.
2797
2798 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2799
2800         * ssa.c (fold_ins): Fix another crash if the instruction following the
2801         switch was optimized away.
2802
2803 2009-02-16  Mark Probst  <mark.probst@gmail.com>
2804
2805         Contributed under the terms of the MIT/X11 license by Steven
2806         Munroe <munroesj@us.ibm.com>.
2807
2808         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
2809
2810 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
2811
2812         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
2813         around the mono_domain_alloc calls, it is now done by the functions
2814         themselves.
2815
2816         * aot-compiler.c (compile_method): Only add wrappers referenced by
2817         the method if compiling with full AOT.
2818         (mono_compile_assembly): Error out if --aot=full is specified on
2819         a platform where it is not supported.
2820
2821         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
2822         on ARM too.
2823
2824         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
2825         AOT support.
2826
2827         * aot-runtime.c (load_named_code): Handle 
2828         mono_arm_throw_exception_by_token.
2829
2830         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
2831
2832         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
2833         unaligned.
2834
2835         * Makefile.am (fullaotcheck): Exit if a test fails.
2836
2837         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
2838         on ARM.
2839         (mono_compile_assembly): Handle the assembler failing.
2840
2841         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
2842         accepting subsections of .bss.
2843
2844         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
2845         was optimized away.
2846
2847         * aot-compiler.c: Remove some unused includes.
2848         
2849         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
2850         now in MonoImageWriter.
2851
2852         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
2853         code sequence which matches a non-virtual call. Fixes #472654.
2854
2855 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
2858         xdebug code.
2859         
2860         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
2861         use the image/dwarf writers directly.
2862
2863         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
2864         field.
2865
2866         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
2867         MonoDwarfWriter.
2868
2869         * image-writer.h: Fix some typos.
2870
2871         * dwarfwriter.h dwarfwriter.c: New files.
2872         
2873         * aot-compiler.c: Extract the DWARF info writing functionality into a 
2874         separate module.
2875
2876         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
2877         argument to return unwind info.
2878
2879         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
2880
2881         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
2882         
2883         * aot-runtime.c (decode_method_ref): Add a case for 
2884         MONO_AOT_METHODREF_WRAPPER_NAME.
2885
2886         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
2887         for AOT.
2888
2889         * aot-compiler.c (encode_method_ref): Use the new constants.
2890
2891         * aot-runtime.c (decode_method_ref): Ditto.
2892
2893         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
2894         be compiled, not the icall itself.
2895
2896 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
2897
2898         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
2899         using decode_method_ref ().
2900
2901         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
2902         convert it to an in32. Fixes #475859.
2903
2904         * arrays.cs: Add a test.
2905
2906 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2907
2908         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
2909         OP_LCONV_TO_U2.
2910
2911         * basic-long.cs: Add a test.
2912
2913 2009-02-12  Mark Probst  <mark.probst@gmail.com>
2914
2915         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
2916         remove the frame pointer in leaf methods which don't receive any
2917         arguments, don't throw exceptions and don't do dynamic stack
2918         allocations.
2919
2920 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2921
2922         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
2923         the fail_tramp changes. Hopefully fixes #475132.
2924
2925 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
2926
2927         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
2928         instead of mono_metadata_signature_dup_full.
2929
2930 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
2931
2932         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
2933         for processing jump tables. Fixes #473787.
2934
2935 2009-02-11  Mark Probst  <mark.probst@gmail.com>
2936
2937         * mini-generic-sharing.c: mini_method_get_context() just calls
2938         mono_method_get_context_general() now.
2939
2940         * mini.c, mini.h: Moved get_object_generic_inst(),
2941         construct_object_context_for_method() and
2942         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
2943
2944 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
2945
2946         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
2947         basic block fell through to its successor bblock without a branch. Fixes
2948         #474718.
2949
2950         * iltests.il.in: Add a test.
2951         
2952         * aot-compiler.c (encode_method_ref): Encode methods of array types.
2953         (can_encode_patch): We can now handle arrays of generic parameters and
2954         array methods.
2955
2956         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
2957
2958         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
2959         the AOT file to avoid some #ifdefs in aot-runtime.c
2960
2961         * mini.h: Bump AOT file format version.
2962
2963 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2964
2965         * Makefile.am (fullaotcheck): Make this run the tests.
2966
2967         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
2968
2969 2009-02-10  Mark Probst  <mark.probst@gmail.com>
2970
2971         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
2972         individually.  Fixes #473482.
2973
2974 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2975
2976         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
2977
2978 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
2979
2980         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
2981         (mono_compile_assembly): Hush compile warnings about
2982         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
2983         code path.
2984
2985 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
2986
2987         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
2988
2989         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
2990
2991         * aot-compiler.c: Fix arm support.
2992
2993         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
2994         img_writer_emit_unset_mode () function.
2995
2996         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
2997         (mono_unwind_get_dwarf_pc_reg): Ditto.
2998
2999         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
3000         Move almost all platform specific code to a set of arch_ functions, 
3001         and document them to ease porting.
3002         
3003         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
3004
3005         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
3006
3007         * aot-compiler.c: Extract the image writing functionality into a separate
3008         module to reduce the size of this file.
3009
3010 2009-02-09  Geoff Norton  <gnorton@novell.com>
3011
3012         * mini-s390.c: Fix the signature of emit_sig_cookie.
3013
3014 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
3015
3016         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
3017
3018         * aot-runtime.c (is_shared_got_patch): Ditto.
3019
3020         * aot-runtime.c (load_named_code): Cope with the fact that 
3021         decode_got_entry () won't decode the patch fully if its corresponding got
3022         entry is already filled.
3023         
3024         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
3025         Initialize *ji.
3026         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
3027
3028         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
3029         as the moving pointer instead of 'buf' for consistency with the rest of the
3030         codebase.
3031         (mono_arch_create_monitor_exit_trampoline): Ditto.
3032
3033         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
3034         generic_class_init trampolines.
3035         (add_generic_class): Extract some code from add_generic_instances () into a
3036         separate function so it can be called from other places too.
3037         (compile_method): Call add_generic_class () for the classes of inflated methods
3038         referenced by the method.
3039         (can_encode_patch): Allow references to generic parameters.
3040
3041         * aot-runtime.c: Add support the patches required by the new trampolines.
3042         
3043         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
3044         support.
3045
3046         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
3047         full-aot support.
3048
3049         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
3050         this from get_throw_pending_exception, make the signature full aot compatible.
3051
3052         * Makefile.am (fullaotcheck): New target to run full-aot tests.
3053
3054         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
3055
3056         * exceptions.cs: Add a test.
3057
3058 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
3061         use the DWARF_DATA_ALIGN constant instead.
3062
3063         * exception-<ARCH>.c: Update after the above change.
3064
3065         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
3066         dwarf unwinder.
3067
3068         * mini-arm.c: Enable the dwarf unwinder.
3069
3070         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
3071         instead of mono_class_setup_vtable ().
3072
3073 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3074
3075         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
3076         dwarf unwinder.
3077
3078         * mini-x86.h: Enable the dwarf unwinder.
3079
3080 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
3081
3082         Fix mcs/tests/test-7.cs
3083         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
3084         2009-02-03.
3085
3086 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
3087
3088         * mini.c (print_jit_stats): Remove some unused statistics.
3089
3090 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3091
3092         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
3093
3094 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3095
3096         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
3097         the method we get from mono_object_get_virtual_method() because
3098         that function does it properly, now.
3099
3100 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3101
3102         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
3103         opcodes. Fixes #472775.
3104
3105 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3106
3107         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
3108         fact that mono_find_jit_info() sometimes returns the context
3109         corresponding to the jit info in new_ctx.  Fixes #472600.
3110
3111 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3112
3113         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
3114         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
3115         klass->enum_basetype directly.
3116
3117         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
3118         enum subtypes.
3119
3120         * unwind.c: Avoid 0 sized arrays.
3121
3122 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3123
3124         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
3125         size on systems with 64k pages. Fixes #471389.
3126
3127 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3128
3129         Contributed under the terms of the MIT/X11 license by Steven
3130         Munroe <munroesj@us.ibm.com>.
3131
3132         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
3133         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
3134         necessary.
3135
3136 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3137
3138         Contributed under the terms of the MIT/X11 license by Steven
3139         Munroe <munroesj@us.ibm.com>.
3140
3141         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
3142         comparison fix.
3143
3144         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
3145         The trampoline can be longer on PPC64.
3146
3147 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3148
3149         Contributed under the terms of the MIT/X11 license by Steven
3150         Munroe <munroesj@us.ibm.com>.
3151
3152         * mini-ppc.c: Compiler warning fixes and trivial code
3153         simplifications.
3154
3155 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3156
3157         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
3158         ins->dreg which could be a hardware register, not a vreg.
3159
3160         * aot-compiler.c (emit_method_dwarf_info): Ditto.
3161         
3162         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
3163         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
3164
3165         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
3166         
3167         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
3168         ->dreg, that is not the vreg we are looking for.
3169
3170         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
3171
3172         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
3173         LIVERANGE_END.
3174
3175         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
3176         strange crashes.
3177
3178 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
3179
3180         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
3181
3182         * aot-compiler.c (emit_line_number_info): Fix line number emission when
3183         the line diff is 0.
3184
3185         * aot-compiler.c: Add xdebug support on x86.
3186
3187         * unwind.c: Add x86 support.
3188         
3189         * aot-compiler.c (emit_exception_debug_info): Control the emission of
3190         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
3191
3192         * mini.c (mini_method_compile): Ditto.
3193         
3194         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
3195         the variable index.
3196
3197         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
3198         which mimic .push_section/.pop_section in GAS.
3199         
3200         * aot-compiler.c: Emit precise live range information for variables.
3201
3202         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
3203
3204         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
3205         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
3206         them.
3207
3208         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
3209         the live ranges of variables.
3210
3211         * mini.h (struct MonoMethodVar): Add two fields containing the live range
3212         of the variable in terms of native offsets.
3213
3214 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
3215
3216         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
3217         
3218 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3219
3220         Contributed under the terms of the MIT/X11 license by Steven
3221         Munroe <munroesj@us.ibm.com>.
3222
3223         * exceptions-ppc.c (restore_regs_from_context): Correct operand
3224         order (offset then base reg) for ppc_load_multiple_regs.
3225         (emit_save_saved_regs) Correct operand order for
3226         ppc_store_multiple_regs.
3227         (mono_arch_get_call_filter): Correct operand order for
3228         ppc_load_multiple_regs.
3229
3230         * mini-ppc.c (emit_memcpy): Fix operand order for
3231         ppc_load_reg_update and ppc_store_reg_update.
3232         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
3233         (mono_arch_emit_epilog): Correct operand order for
3234         ppc_load_multiple_regs.
3235
3236         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
3237         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
3238
3239 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3240
3241         * cpu-ppc64.md: Fixed storer4_memindex length.
3242
3243 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
3244
3245         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
3246         line number info.
3247         
3248         * aot-compiler.c (emit_line_number_info): Optimize this.
3249
3250 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
3251
3252         * aot-compiler.c: Disassemble tokens in the IL disassembly.
3253         
3254         * aot-compiler.c: Add debug info for methods without debug info by
3255         emitting an IL file and having the line number info referencing that file.
3256
3257         * aot-compiler.c: Optimize the size of the generated line number info.
3258
3259         * aot-compiler.c: Emit line number info in xdebug mode.
3260
3261         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
3262         million arguments.
3263
3264 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
3265
3266         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
3267
3268         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
3269         is used.
3270
3271 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3272
3273         * basic-calls.cs: Test for the weird crash found on arm.
3274         
3275 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3276
3277         * cpu-arm.md: Increase the size of storer8_membase_reg and
3278         loadr8_membase_reg to 24 bytes to accomodate the extra add.
3279
3280         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
3281         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
3282         reg to LR otherwise we'll be loading/storing from just the offset.
3283
3284 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3285
3286         Question: if we are storing gint32's inside the "*native_offset",
3287         should we change the signature to "gint32 *native_offset" to
3288         ensure that we do not have type definition problems?
3289         
3290         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
3291         an int * as this is what the other function expects, causes
3292         problems with Freescale's compiler that defined int32_t to be a
3293         long and makes int incompatible 
3294
3295 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3296
3297         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
3298         filename conflict with bjam.
3299
3300 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3301
3302         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
3303         as it might use decomposed ops.
3304
3305 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3306
3307         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
3308
3309         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
3310         is defined.
3311
3312         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
3313
3314         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
3315         offsets.
3316
3317         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
3318         way registers are stored in MonoContext on arm.
3319
3320         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
3321         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
3322
3323         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
3324
3325         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
3326
3327         * mini.c (mini_init): Register mono_isfinite.
3328
3329         * jit-icalls.c (mono_isfinite): New jit icall.
3330
3331         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
3332         
3333         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
3334         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
3335         the parent frame.
3336
3337 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3338
3339         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
3340         separate frame and stack pointers, so we must use FP to find the register
3341         spill area.
3342         The FP reg is retrieved from the MonoContext::regs array.
3343
3344 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3345
3346         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
3347         as FPA requires it.
3348
3349 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3350
3351         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
3352         return R4 and R8 when not running under softfloat.
3353
3354         Fixes basic-calls.exe
3355
3356 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3357
3358         * mini-arm.c: Implement some overflow opcodes.
3359
3360 2009-01-29  Miguel de Icaza  <miguel@novell.com>
3361
3362         * ssa.c: handle another alloca.h
3363
3364         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
3365         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
3366         MONO_ARCH_USE_SIGACTION. 
3367
3368         * aot-runtime.c, mini-exceptions.c: Replace platform define with
3369         capability defines.
3370
3371         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
3372
3373         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
3374         PPC targets as sigaction does not exist on all platforms, define
3375         this on a per-platform basis.
3376
3377         Instead of erroring out if the platform is not defined, include
3378         mini-ppc-os.h, and expect that the OS specific setting provides
3379         the required information.   
3380
3381 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3382
3383         * aot-compiler.c: Fix --enable-minimal=aot.
3384
3385 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3386
3387         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
3388         previous change.
3389
3390 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
3391
3392         * exceptions-arm.c: Fix warnings.
3393
3394         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
3395         ARM.
3396
3397         * mini-x86.c: Fix --enable-minimal=jit build.
3398
3399         * mini.c: Really fix --enable-minimal=jit build.
3400         
3401         * mini.c (construct_object_context_for_method): Move this outside
3402         the DISABLE_JIT block to fix the --enable-minimal=jit build.
3403
3404         "Backported" of r124984 from 2.0 branch.
3405         
3406         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
3407
3408         "Backport" of r124977 + r124978 from 2.0 branch.
3409         
3410         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
3411         to avoid calling mono_exception_from_token () from the throw trampoline.
3412         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
3413         for throwing corlib exceptions, this fixes full-aot support for corlib
3414         exceptions.
3415
3416         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
3417
3418 2009-01-29  Miguel de Icaza  <miguel@novell.com>
3419
3420         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
3421         part of the changes to split the code in mini into operating
3422         system specific files.
3423
3424         This patch was done by copying mini.c to the respective files to
3425         preserve SVN history.
3426
3427 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
3428
3429         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
3430
3431 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
3432
3433         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
3434         remoting-invoke-with-check wrappers of shared methods.
3435
3436         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
3437
3438 2009-01-27  Mark Probst  <mark.probst@gmail.com>
3439
3440         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
3441         optimization if the top of stack is the last instruction in the
3442         bblock.  Otherwise it might have been used after its definition.
3443         Fixes #469742.
3444
3445 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
3446
3447         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
3448         method as well when get_vcall_slot () fails to match a code sequence.
3449
3450         * mini-arm.c: Fix the android build, which doesn't have
3451         __aeabi_read_tp.
3452
3453 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3454
3455         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
3456         the s390x build.
3457
3458 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
3459
3460         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
3461
3462 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3463
3464         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
3465         and put its id into jinfo->used_regs. This is only used on amd64,
3466         which is currently the only platform generating unwind info.
3467
3468         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
3469         the dwarf unwinder. This is required to correctly handle async exceptions
3470         like thread abort and stack overflows, which can happen while a method
3471         is in the middle of its prolog or epilog.
3472         
3473         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
3474         the unwind info belonging to an AOTed method.
3475
3476         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
3477         into cfg->unwind_ops.
3478         
3479         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
3480
3481         * mini.c (mini_init): Call mono_unwind_init ().
3482         (mini_cleanup): Call mono_unwind_cleanup ().
3483
3484         * unwind.c: Add functions for managing a set of unwind info entries, allowing
3485         unwind info to be shared between methods.
3486
3487         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
3488         saved in the LMF.
3489
3490         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
3491         get_throw_pending_exception () to avoid initialization races.
3492
3493         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
3494         mono_arch_exceptions_init () function.
3495
3496         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
3497
3498 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
3499
3500         * mini.c (mono_get_domain_intrinsic): New helper function.
3501         (mono_get_thread_intrinsic): Ditto.
3502
3503         * mini-arm.c mini-ia64.c: Use the new helper functions.
3504         
3505         * method-to-ir.c (mono_method_to_ir): Fix the comment for
3506         the last constrained_call change, since it is needed in the non-AOT
3507         case as well.
3508
3509         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
3510         
3511         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
3512         mono_get_lmf_addr () on arm eabi linux.
3513
3514 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
3515
3516         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
3517         code sequence which matches a non-virtual call.
3518
3519 2009-01-23  Mark Probst  <mark.probst@gmail.com>
3520
3521         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
3522         stack pointer (r1).
3523
3524 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
3525
3526         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
3527         runtime-invoke wrappers, since they are also shared based on signature.
3528
3529 2009-01-22  Mark Probst  <mark.probst@gmail.com>
3530
3531         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
3532         info from the (correct) context.
3533
3534 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
3535
3536         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
3537         
3538         * unwind.c (mono_unwind_frame): New function to unwind through a frame
3539         using dwarf unwinding info. Not yet used.
3540
3541         * mini.c (mini_init): When using xdebug, disable freeing of domains.
3542
3543 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3544
3545         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
3546         descriptors.
3547
3548         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
3549         special case and handle mono_arch_delegate_invoke_impl() returning
3550         function descriptors.
3551
3552         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
3553         trampolines return function descriptors, too.
3554
3555 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3556
3557         * method-to-ir.c (handle_alloc): Avoid generic instances in the
3558         out_of_line optimization.
3559
3560 2009-01-21  Martin Baulig  <martin@ximian.com>
3561
3562         * mini.h
3563         (MonoCompile): Added `disable_deadce_vars' to disable removing
3564         unused variables.
3565
3566         * mini.c
3567         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
3568         inside the debugger.
3569
3570         * liveness.c (mono_analyze_liveness): Don't remove any unused
3571         variables if `cfg->disable_deadce_vars' is set.
3572
3573 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3574
3575         * method-to-ir.c: Only apply exception constructor optimization if
3576         the the method actually belongs to an exception class.  Fixes
3577         #467456.
3578
3579 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3580
3581         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
3582         change inside a #ifdef __mono_ppc64__.
3583
3584         * aot-compiler.c (compile_method): Remove the previous limitation.
3585
3586         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
3587         on type variables in AOTed code.
3588         
3589         * aot-compiler.c (compile_method): Skip generic methods having type 
3590         constraints on their generic parameters.
3591
3592         * aot-compiler.c (compile_method): Check for methods which cannot be
3593         encoded inside RGCTX_FETCH patches as well.
3594
3595         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
3596         build.
3597
3598 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3599
3600         * method-to-ir.c: Force the vtable variable in shared generic code
3601         for the case that they might show up on a stack trace where they
3602         are needed.
3603
3604         * mini-exceptions.c: Save and use generic sharing info as well as
3605         IP in stack traces to resolve shared generic instantiations.
3606
3607 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
3608
3609         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
3610         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
3611
3612 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3613
3614         * method-to-ir.c: Do generic sharing for array constructors.
3615
3616 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
3617
3618         * mini-exceptions.c (mono_print_thread_dump): Add information
3619         about the thread state using wapi_current_thread_desc.
3620
3621 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
3622
3623         * basic-simd.cs: Tests for the new constructors. 
3624
3625 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
3626
3627         * mini-ops.h: Added OP_EXPAND_*
3628
3629         * cpu-x86.md: Same.
3630
3631         * mini-x86.c (mono_arch_output_basic_block): Same.
3632         
3633         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
3634
3635 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
3636
3637         * iltests.il.in: Add a test for #467385.
3638
3639 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
3640
3641         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
3642         thread been cleaned up is not the same currently in execution.
3643
3644         Fixes appdomain-unload crashes on windows, osx and linux variants
3645         without the __thread keyword.
3646
3647 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
3648
3649         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
3650         (koush@koushikdutta.com). Implement this for android.
3651
3652         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
3653         begins with a digit.
3654
3655         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
3656         mono_marshal_get_write_barrier ().
3657
3658 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
3659
3660         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
3661         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
3662         that pass them on a register pair.
3663
3664         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
3665         test was crashing due to that.
3666
3667 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
3668
3669         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
3670         trampoline code. Include ucontext.h only if available.
3671
3672 2009-01-15  Mark Probst  <mark.probst@gmail.com>
3673
3674         * mini.c: mono_domain_lookup_shared_generic() takes an open method
3675         and doesn't check whether it's sharable, like it was before
3676         removing the shared generics hash.  This brings IronPython
3677         performance back to what it was before that change.
3678
3679 2009-01-14  Mark Probst  <mark.probst@gmail.com>
3680
3681         * method-to-ir.c: Handle delegate invocation optimization earlier,
3682         otherwise it would be handled (much more slowly) by the
3683         final/sealed optimization.
3684
3685 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
3686
3687         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
3688         domain is not set. Fixes #465864.
3689
3690 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3691
3692         * method-to-ir.c: Don't stop sharing of generic methods with catch
3693         clauses - we already handle those.
3694
3695 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3696
3697         * mini.c, mini.h: lookup_generic_method() is now
3698         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
3699         making the shared_generics_hash obsolete.
3700
3701 2009-01-12  Mark Probst  <mark.probst@gmail.com>
3702
3703         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
3704         use the red zone.  Make room on the stack first and then use it,
3705         not the other way around.
3706
3707 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
3708
3709         * mini.c (mini_init): Call mono_xdebug_init ().
3710
3711         * aot-compiler.c (mono_xdebug_init): Make this non-static.
3712
3713 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
3714
3715         * TestDriver.cs: Add an --iter argument to run tests multiple times.
3716
3717         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
3718         trampolines.
3719
3720         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
3721         debug+unwind info for trampolines.
3722
3723         * mini.c (mono_create_unwind_op): New helper function.
3724
3725         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
3726
3727 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
3728
3729         * aot-compiler.c: Fix the build.
3730
3731 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
3732
3733         * Makefile.am: Update dtrace-prelink.sh location.
3734
3735 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
3736
3737         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
3738         optimization. Fixes #464520.
3739
3740 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
3741
3742         * mini-amd64.c : Adding code to save/restore non-volatile registers
3743            on Winx64.
3744
3745         * exceptions-amd64.c : Adding code to save/restore non-volatile 
3746           registers on Winx64.
3747
3748         Contributed under MIT/X11 license.
3749
3750 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
3751
3752         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
3753         __GNUC_MINOR__ which can break when the major version changes.
3754
3755 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
3756
3757         * basic-simd.cs: Add tests for usage of the sizeof opcode.
3758
3759 2009-01-07  Geoff Norton  <gnorton@novell.com>
3760
3761         * helpers.c:  Allow mono -v -v -v to work on darwin.
3762
3763 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
3764
3765         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
3766           pattern. 
3767
3768         Contributed under MIT/X11 license.
3769
3770 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
3771
3772         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
3773         instead of directly accessing type->data.klass. Fixes #462016.
3774         (mono_allocate_stack_slots_full): Ditto.
3775
3776         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
3777         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
3778
3779         * aot-compiler.c (emit_plt): Fix ARM build.
3780
3781 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
3782
3783         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
3784         
3785         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
3786         change.
3787
3788         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
3789         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
3790         #463357.
3791
3792         * iltests.il.in: Add a regression test.
3793
3794 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3795
3796         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
3797
3798 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3799
3800         * basic-simd.cs: Add a regression test for #462457.
3801
3802 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3803
3804         * mini-ops.h: Add a definition of XPHI.
3805
3806         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
3807
3808         * ssa.c (op_phi_to_move): Handle XPHI.
3809
3810         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
3811
3812         Fixes #462457
3813
3814 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
3815
3816         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
3817
3818 2008-12-31  Geoff Norton  <gnorton@novell.com>
3819
3820         * mini-ppc.c: The prolog size allocated can be too small for darwin
3821         ppc32 under certain circumstances.  Also fix a small logic bug.
3822
3823 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
3824
3825         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
3826         while loading AOT methods.
3827
3828         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
3829         since only the former is nulled out after a successful cast. This prevents
3830         crashes with rethrown exceptions when using --debug=casts.
3831
3832 2008-12-24  Mark Probst  <mark.probst@gmail.com>
3833
3834         * mini.h: New macro for checking whether a method is final,
3835         i.e. whether the method or its class is marked final.
3836
3837         * method-to-ir.c: Use the new macro for all final-checks
3838         consistently.  Fixes the crash in the System.ServiceModel tests.
3839
3840 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3841
3842         * mini-exceptions.c (get_exception_catch_class): Corrected another
3843         overly strict assertion.
3844
3845 2008-12-23  Mark Probst  <mark.probst@gmail.com>
3846
3847         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
3848         Clobbering it is not allowed because the caller might use it as
3849         the vtable register in the interface call.
3850
3851 2008-12-19  Mark Probst  <mark.probst@gmail.com>
3852
3853         * mini-exceptions.c (get_exception_catch_class): Corrected an
3854         overly strict assertion.
3855
3856 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
3857         
3858         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
3859
3860         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
3861
3862         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
3863
3864         * cpu-mips.md: correct lengths for certain long_ opcodes.
3865
3866         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
3867
3868         * 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().
3869         
3870 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3871
3872         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
3873         
3874 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
3875         
3876         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
3877         
3878 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
3879
3880         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
3881         next basic block.
3882         
3883 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
3884
3885         * 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
3886
3887         * 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)
3888         
3889 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
3890         
3891         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
3892         
3893 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
3894
3895         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
3896         gshared code. Fixes #458947.
3897
3898         * generics.cs: Add a test.
3899
3900 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3901         
3902         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3903         
3904         * mini-mips.c: first pass n32 code generation.
3905
3906         * mini-mips.h: datatypes and defines for n32 support.
3907
3908         * exceptions-mips.c: first pass n32 code generation.
3909         
3910         * tramp-mips.c: first pass n32 code generation.
3911         
3912         * cpu-mips.md: add long_ opcodes.
3913         
3914 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
3915
3916         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3917
3918         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3919         
3920         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3921         
3922         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3923
3924         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3925
3926         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3927
3928         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3929
3930         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
3931
3932         * helpers.c: for mips/n32, don't pass -mips32 to objdump
3933
3934 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
3935
3936         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
3937
3938 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
3939
3940         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
3941
3942 2008-12-12  Mark Probst  <mark.probst@gmail.com>
3943
3944         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
3945         descriptors for helper functions directly in front of the code.
3946
3947 2008-12-11  Mark Probst  <mark.probst@gmail.com>
3948
3949         * method-to-ir.c: Removed an unnecessary assertion.
3950
3951 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3952
3953         * method-to-ir.c: Merge SGEN changes from the old JIT.
3954
3955 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
3956
3957         * driver.c (compile_all_methods_thread_main): Handle failure of
3958         mono_get_method ().
3959
3960 2008-12-10  Mark Probst  <mark.probst@gmail.com>
3961
3962         * mini-ppc.c: Merged with mini-ppc64.c.
3963
3964         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
3965
3966         * Makefile.am: Use the same sources for PPC and PPC64.
3967
3968         * mini-ppc64.c: Removed.
3969
3970 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3971
3972         * branch-opts.c (remove_block_if_useless): Extract fall through detection
3973         code to mono_bb_is_fall_through.
3974         
3975         * branch-opts.c (mono_remove_critical_edges): Same.
3976
3977 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3978
3979         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
3980         expect that an OP_BR_REG will be there.
3981
3982 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
3983
3984         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
3985         for the many branch ops. The original check miss OP_BR_REG.
3986
3987         Fixes #457574.
3988         
3989 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3990
3991         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
3992
3993 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
3994
3995         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
3996         while holding the aot lock.
3997
3998 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
3999
4000         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
4001         
4002 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4003
4004         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
4005           to release all runtime callable wrappers held by the runtime.
4006
4007         Contributed under MIT/X11 license.
4008
4009 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4010
4011         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
4012           for Winx64.
4013
4014         Contributed under MIT/X11 license.
4015
4016 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4017
4018         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
4019         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
4020
4021 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4022
4023         * cpu-mips.md: fix ckfinite length
4024
4025         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
4026         (mono_arch_lowering_pass): cleanup, rearrange for clarity
4027         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
4028         
4029 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
4030
4031         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
4032         
4033 2008-12-08  Geoff Norton  <gnorton@novell.com>
4034
4035         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
4036         size by 8 bytes as well.
4037
4038 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4039
4040         * basic-simd.cs: Fix method names for Vector16b.
4041         
4042 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4043
4044         * basic-simd.cs: Fix method names for Vector16sb.
4045
4046 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4047
4048         * basic-simd.cs: Fix method names for Vector8us.
4049         
4050 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4051
4052         * basic-simd.cs: Fix method names for Vector8s.
4053         
4054 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4055
4056         * basic-simd.cs: Fix method names for Vector4ui.
4057
4058 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4059
4060         * basic-simd.cs: Fix method names for Vector2l.
4061
4062 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4063
4064         * basic-simd.cs: Fix method names for Vector2d.
4065
4066 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4067
4068         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
4069         that are extension methods.
4070
4071 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4072
4073         * basic-simd.cs: Fix method names for Vector4f.
4074
4075 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
4076
4077         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
4078         as such. Fixes #456669.
4079
4080 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4081
4082         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
4083         
4084 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4085
4086         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
4087         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
4088         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
4089         (mips_adjust_stackframe): handle FP spills
4090                 
4091         * mini-ops.h: add mips_mtc1_s2
4092         
4093         * cpu-mips.md: add mips_mtc1_s2
4094         
4095 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
4096
4097         * unwind.c: New file, move the unwind info encoding functions here from
4098         aot-compiler.c, so they could be used at runtime too.
4099
4100 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4101
4102         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
4103         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
4104         
4105 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4106
4107         * mini-mips.c: cleanup warnings
4108         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
4109         (mips_adjust_stackframe): handle case of taking the address of stack locals
4110         
4111 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4112
4113         * aot-compiler.c: Implement a few functions missing from the asm writer.
4114         (emit_method_code): Only write symbols for methods when using the bin
4115         writer, since the assembler can't deal with the characters in our method
4116         names.
4117
4118         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
4119
4120         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
4121         call.
4122
4123         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
4124         a bit to also restore %rax.
4125
4126 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4127
4128         * mini-ppc.c: Some simple merges from mini-ppc64.c.
4129
4130 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4131
4132         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
4133         arguments.
4134
4135 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4136
4137         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
4138
4139         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
4140         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
4141
4142         * exceptions-ppc64.c: Removed.
4143
4144         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
4145
4146 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4147
4148         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
4149         tramp-ppc64.c.
4150
4151         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
4152
4153         * tramp-ppc64.c: Removed.
4154
4155 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4156
4157         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
4158         the TYPESPEC table.
4159
4160 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4161
4162         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
4163
4164         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
4165         mini-ppc.h instead of mini-ppc64.h.
4166
4167         * mini-ppc64.h: Removed.
4168
4169 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4170
4171         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
4172         
4173         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
4174         
4175 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4176
4177         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
4178         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
4179         code easier.
4180
4181 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4182
4183         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
4184
4185 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4186
4187         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
4188
4189 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4190
4191         * basic-simd.cs: Tests for operator == and != on Vector4f.
4192
4193 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4194
4195         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
4196
4197         * simd-intrinsics.c: Kill useless enum.
4198
4199 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4200
4201         * cpu-mips.md: add long_conv_to_ovf_i4_2
4202         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
4203
4204 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4205
4206         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
4207         
4208         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
4209
4210 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4211
4212         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
4213         
4214 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4215
4216         * basic-simd.cs: Add tests for new methods.
4217
4218 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4219
4220         * simd-intrinsics.c: Add support for operator == and !=
4221         on Vector4(u)i.
4222
4223         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
4224
4225 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4226
4227         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
4228
4229 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
4230
4231         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
4232
4233         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
4234         MONO_PATCH_INFO_ICALL_ADDR.
4235
4236         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
4237
4238         * aot-compiler.c: Resurrect full-aot support.
4239
4240 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4241
4242         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
4243         
4244 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4245
4246         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
4247         
4248 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
4249
4250         * basic-simd.cs: Fix tests to work under ppc.
4251         Remove tests for methods that will be removed.
4252
4253 2008-12-03  Mark Probst  <mark.probst@gmail.com>
4254
4255         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
4256         generic type (via a typedef or typeref) correctly.
4257
4258 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
4259
4260         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
4261         diagnose an assertion failure.
4262
4263 2008-12-02  Mark Probst  <mark.probst@gmail.com>
4264
4265         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
4266         Fix trampoline size.
4267
4268         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
4269         conversion opcodes are implemented natively instead via emulation.
4270
4271 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4272
4273         * cpu-mips.md: remove mips_xori
4274
4275         * mini-ops.h:  remove mips_xori
4276
4277         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
4278
4279         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
4280         
4281         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
4282         
4283 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4284
4285         * cpu-mips.md: fix instruction lengths.
4286
4287         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
4288
4289         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
4290
4291         * mini-ops.h: fix slti / sltiu op profiles.
4292         
4293 2008-12-02  Martin Baulig  <martin@ximian.com>
4294
4295         * method-to-ir.c (mono_method_to_ir): Disable debugging
4296         information for the init locals block to make the debugger stop
4297         after all locals have been initalized.
4298
4299 2008-12-02  Martin Baulig  <martin@ximian.com>
4300
4301         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
4302         running inside the debugger.
4303
4304 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
4305
4306         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
4307         is enabled.
4308
4309         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
4310         alu->alu imm optimization which only shows if deadce is disabled.
4311
4312         * aot-compiler.c: Rename the function names for the binary and asm writers
4313         so they can coexist in the same process. Rework the xdebug code to use the
4314         asm writer. This avoids the need to call into the runtime to dump the
4315         debugging info. Add more debugging info for types.
4316
4317         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
4318
4319         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
4320         cpu description tables, they can't occur in cpu-<ARCH>.md.
4321
4322         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
4323         the stack in CEE_LDFLDA. Fixes #450542.
4324
4325         * generics.cs: Add a new test.
4326
4327 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4328
4329         * mini-ops.h: updated MIPS opcodes
4330         * mini-mips.c: decompose long opts
4331         * mini-mips.h: decompose long opts
4332         
4333 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
4334
4335         * cpu-mips.md: fix length on int_rem_un
4336         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
4337         
4338 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
4339
4340         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
4341
4342         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
4343
4344 2008-11-29  Martin Baulig  <martin@ximian.com>
4345
4346         * mini-exceptions.c (mono_handle_native_sigsegv): Check
4347         mono_debug_using_mono_debugger() in addition to the
4348         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
4349
4350 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4351
4352         * mini-ops.h: updated more MIPS opcodes
4353         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
4354         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
4355         
4356 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4357
4358         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
4359
4360 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4361
4362         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
4363         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
4364         * mini-ops.h: correct selected mips opcode entries
4365         
4366 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4367
4368         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
4369         make them work.
4370
4371 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4372
4373         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
4374
4375 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4376
4377         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
4378         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
4379         * mini-mips.h: disable IMT
4380         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
4381         
4382 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4383
4384         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
4385
4386 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4387
4388         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
4389
4390 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
4391
4392         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
4393         consistency.
4394
4395 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4396
4397         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
4398         for Set/GetVector aligned versions.
4399
4400 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4401
4402         * basic-simd.cs: Add tests for Get/SetVector.
4403
4404 2008-11-27  Mark Probst  <mark.probst@gmail.com>
4405
4406         * mini.c: Removed g_slist_append_mempool().  Now in
4407         metadata/mempool.c.
4408
4409 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4410
4411         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
4412         size properly and make the bounds check optional.
4413
4414         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
4415         for SetVector and IsAligned.
4416
4417 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
4418
4419         * mini.c: Remove unused mono_normalize_opcodes () function.
4420
4421 2008-11-26  Mark Probst  <mark.probst@gmail.com>
4422
4423         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
4424         using the new atomic add ops now.
4425
4426         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
4427         add.
4428
4429 2008-11-26  Mark Probst  <mark.probst@gmail.com>
4430
4431         * mini-ppc64.c: Several fixes.
4432
4433 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4434
4435         * cpu-mips.md: added jump_table
4436         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
4437
4438 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4439
4440         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
4441
4442 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4443
4444         * mini-ops.h: corrected a handful of MIPS opcodes.
4445
4446 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4447
4448         * aot-compiler.c: MIPS to use ELF writer
4449
4450 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4451
4452         * mini-codegen.c: remove MIPS specific assert.
4453
4454 2008-11-25  Mark Probst  <mark.probst@gmail.com>
4455
4456         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
4457         fixes.  PPC64 now passes most of the runtime regressions.
4458
4459 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
4460
4461         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
4462         volatile intervals a bit.
4463
4464 2008-11-24  Mark Probst  <mark.probst@gmail.com>
4465
4466         * basic-long.cs: New test case.
4467
4468 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
4469
4470         * mini.c (mini_method_compile): Disable globalra for large methods for 
4471         now.
4472
4473         * regalloc2.c (order_moves): Add fp support.
4474
4475         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
4476         source bblock ends with an OP_BR_REG.
4477
4478         * ratests.cs: Add a new test.
4479
4480 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4481
4482         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
4483         sharing.  PPC64 now passes generics.exe.
4484
4485 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4486
4487         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
4488
4489 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
4490
4491         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
4492         memory when mono_jit_info_table_find () can't find the method in the
4493         LMF case.
4494
4495         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
4496         AOTed code too.
4497         
4498         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
4499         writer too.
4500
4501 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4502
4503         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
4504         Several fixes.  PPC64 now runs exceptions.exe and
4505         devirtualization.exe.
4506
4507 2008-11-22  Mark Probst  <mark.probst@gmail.com>
4508
4509         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
4510         arrays.exe and basic-math.exe.
4511
4512 2008-11-22  Mark Probst  <mark.probst@gmail.com>
4513
4514         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
4515         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
4516
4517 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4518
4519         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
4520
4521 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4522
4523         * method-to-ir.c: Move bounds checking macros to ir-emit.h
4524
4525         * ir-emit.h: Move macros from method-to-ir.c to here.
4526
4527 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4528
4529         * mini-ops.h: Correct the long simd ops to use LREG.
4530
4531 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
4532
4533         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
4534         
4535         * mini-ops.h: Correct the dreg type of a few long opcodes.
4536
4537         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
4538         Add netbsd support.
4539
4540 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
4541
4542         * mini-ppc.c: remove negative stack references in epilog
4543         for platforms that don't support the red zone.
4544
4545 2008-11-21  Mark Probst  <mark.probst@gmail.com>
4546
4547         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
4548         point regs.  Now PPC64 passes basic-calls.exe.
4549
4550 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4551
4552         * basic-simd.cs: Add tests for accessors of Vector2l.
4553
4554 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4555
4556         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
4557
4558         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
4559         
4560         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
4561
4562 2008-11-21  Mark Probst  <mark.probst@gmail.com>
4563
4564         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
4565         PPC64 passes basic-long.exe.
4566
4567 2008-11-20  Mark Probst  <mark.probst@gmail.com>
4568
4569         * decompose.c: Decompose carry and overflow add on PPC64 like on
4570         other 64 bit archs.  Don't decompose sub at all on PPC64.
4571
4572         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
4573         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
4574         basic-long.exe.
4575
4576 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4577
4578         * basic-simd.cs: Add tests for accessors of Vector2d.
4579
4580 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4581
4582         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
4583
4584         * cpu-x86.md: Same.
4585
4586         * mini-x86.c (mono_arch_output_basic_block): Same.
4587         
4588         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
4589
4590 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4591
4592         * basic-simd.cs: Add tests for accessors of Vector4f.
4593
4594 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4595
4596         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
4597
4598         * cpu-x86.md: Same.
4599
4600         * mini-x86.c (mono_arch_output_basic_block): Same.
4601         
4602         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
4603
4604 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4605
4606         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
4607
4608 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4609
4610         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
4611
4612         * cpu-x86.md: Same.
4613
4614         * mini-x86.c (mono_arch_output_basic_block): Same.
4615         
4616         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
4617
4618 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4619
4620         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
4621
4622 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4623
4624         * simd-intrinsics.c: Enable setters for Vector16sb.
4625
4626 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4627
4628         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
4629
4630         * cpu-x86.md: Same.
4631
4632         * mini-x86.c (mono_arch_output_basic_block): Same.
4633         
4634         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
4635
4636 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
4637
4638         * simd-intrinsics.c: Implement setter for Vector8us.
4639
4640 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
4641
4642         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
4643         for dead variables.
4644
4645 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
4646
4647         * mini-ppc.c: remove references to the red zone in the prolog
4648         (for systems that don't support it).
4649
4650 2008-11-19  Mark Probst  <mark.probst@gmail.com>
4651
4652         * cpu-ppc64.md: Fixed a few instruction lengths.
4653
4654         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
4655         now.
4656
4657 2008-11-19  Mark Probst  <mark.probst@gmail.com>
4658
4659         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
4660         basic.exe now.
4661
4662 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
4663
4664         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
4665
4666 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
4667
4668         * mini-ops.h: Added OP_INSERT_I2.
4669
4670         * cpu-x86.md: Same.
4671
4672         * mini-x86.c (mono_arch_output_basic_block): Same.
4673         
4674         * simd-intrinsics.c: Implement setter for Vector8s.
4675
4676         * simd-methods.h: Add the names of get setters of Vector8s.
4677
4678 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
4679
4680         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
4681         
4682         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
4683         parameters.
4684
4685         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
4686
4687 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4688
4689         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
4690         for PPC64.  An empty program runs now.
4691
4692 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
4693
4694         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
4695
4696         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
4697         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
4698         info for JITted code is emitted into a shared library, loadable into gdb.
4699
4700 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4701
4702         * Makefile.am: Changes to build PPC64.
4703
4704         * mini-arch.h: Include mini-ppc64.h on PPC64.
4705
4706 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4707
4708         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
4709         in PPC code up to r119147.
4710
4711 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4712
4713         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
4714         cpu-ppc64.md: Changes for PPC64.
4715
4716         Based on code submitted by andreas.faerber@web.de at
4717         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
4718         X11/MIT license.
4719
4720 2008-11-18  Mark Probst  <mark.probst@gmail.com>
4721
4722         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
4723         cpu-ppc64.md: Copied from the corresponding PPC files from
4724         r118846.
4725
4726 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
4727
4728         * mini-ops.h: Added OP_ROUND.
4729
4730         * cpu-x86.md: Added round.
4731
4732         * mini-x86.c: Added support for intrinsicing Math.Round (double).
4733
4734         * basic-math.cs: Added test_0_round to test rounding.
4735
4736         Contributed under MIT/X11 license.
4737
4738 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
4739
4740         * aot-compiler.c : Fix the Winx64 build.
4741
4742         Contributed under MIT/X11 license.
4743
4744 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4745
4746         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
4747         in OP_EXTRACT_R8 to avoid possible stack corruption.
4748
4749 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4750
4751         * mini-ops.h: Added OP_EXTRACT_R8/I8.
4752
4753         * cpu-x86.md: Added extract_r8.
4754
4755         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
4756         
4757         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
4758         a couple of OP_EXTRACT_I4.
4759
4760         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
4761
4762         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
4763
4764 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
4765
4766         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
4767         and not 4.1. 
4768
4769 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4770
4771         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
4772         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
4773
4774         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
4775         are not needed any more.
4776
4777         * mini.h: Remove the unused INS_LIST macros.
4778
4779         * mini.c (mini_method_compile): Remove a disable globalra case which is no
4780         longer needed.
4781
4782         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
4783         ir-emit.h.
4784
4785         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
4786         mono_alloc_ireg () instead.
4787
4788         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
4789         macros.
4790
4791         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
4792         on amd64.
4793
4794         * aot-runtime.c (load_aot_module): Disable AOT when running under
4795         CAS.
4796
4797         * mini-amd64.h: Change the monitor fastpath defines to check for
4798         !PLATFORM_WIN32 so they work on *bsd too.
4799
4800         * mini.h mini.c mini-hhpa.c: Remove more unused code.
4801
4802         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
4803
4804         * mini.h (MonoCompile): Remove new_ir flag.
4805
4806         * regalloc.h regalloc.c: Remove unused code.
4807
4808         * cpu-*.md: Remove more unused opcodes.
4809
4810         * simple-cee-ops.h simple-mini-ops.h: Removed.
4811
4812         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
4813         
4814 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
4815
4816         * aliasing.h: Removed.
4817
4818         * *.c: Remove references to aliasing.h and inssel.h.
4819
4820         * mini.c: Remove additional unused functions.
4821
4822         * mini-ops.h cpu-*.md: Remove unused opcodes.
4823
4824 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4825
4826         Remove the old JIT code.
4827
4828         * inssel*.brg: Removed.
4829
4830         * ssa.c abcremoval.c aliasing.c: Removed.
4831
4832         * ssa2.c: Renamed to ssa.c.
4833
4834         * abcremoval2.c: Renamed to abcremoval.c.
4835
4836         * *.c: Removed all !cfg->new_ir code.
4837
4838         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
4839         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
4840
4841         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
4842         
4843 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
4844
4845         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
4846         to simplify the code and cut back on the number of global symbols in the AOT
4847         file.
4848         
4849         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
4850
4851 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
4852
4853         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
4854         with the got/got_info tables.
4855
4856         * mini.h: Bump AOT file format version.
4857         
4858         * unwind.h: New file, contains definitions for stack unwinding.
4859
4860         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
4861         to cfg->unwind_ops.
4862         
4863         * aot-compiler.c: Generalize the emitting of unwind information to use the
4864         information in cfg->unwind_ops.
4865
4866         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
4867
4868         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
4869         AOT method frames. Enable writing symbols for methods by default.
4870
4871 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
4872
4873         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
4874         and make it work with vectors of element sizes 1, 2 and 4.
4875
4876         * simd-intrinsics.c: Enable getter for all vectors with element size
4877         1, 2 or 4.
4878
4879         * simd-methods.h: Add the names of other getters.
4880
4881         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
4882
4883         * cpu-x86.md: Same.
4884
4885         * mini-x86.c: Same.
4886
4887 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
4888
4889         * mini-ppc.h: portability fix.
4890
4891 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
4892
4893         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
4894         buggy and will overwrite it.
4895
4896 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4897
4898         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
4899         Use it to emit local symbols for all methods so AOTed methods show up with
4900         their full name in gdb/valgrind output.
4901
4902 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
4903
4904         * mini-ppc.c: portability fixes.
4905
4906 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
4907
4908         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
4909         entries out of the if (!generic_shared...) code so it is always done.
4910         (mono_class_init_trampoline): Do the patching when running under valgrind
4911         too, newer versions of valgrind have no problems with it.
4912
4913 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4914
4915         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
4916         further sections.
4917
4918 2008-11-13  Mark Probst  <mark.probst@gmail.com>
4919
4920         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
4921         filters.
4922
4923 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4924
4925         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
4926
4927 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4928
4929         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
4930
4931         * cpu-x86.md: Same.
4932
4933         * mini-x86.c: Same.
4934
4935         * simd-intrinsics.c: Same.
4936
4937 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4938
4939         * simd-intrinsics.c: Enable constructor intrinsics for all types.
4940
4941 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4942
4943         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
4944         to work with more Vector types.
4945
4946 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
4947
4948         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
4949         store the elemens directly instead of using and intermediate.
4950
4951 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
4952
4953         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
4954
4955         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
4956         to preserve %eax for aot plt trampolines.
4957
4958         * aot-compiler.c (compile_method): Don't skip synchronized methods.
4959         (encode_method_ref): Flag synchronized methods so they won't go through
4960         the AOT trampoline.
4961
4962         * aot-compiler.c: Additional work to support AOTing synchronized methods/
4963         wrappers.
4964
4965         * cpu-ia64.md (jmp): Increase max length.
4966
4967 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
4968
4969         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
4970         open generic classes.
4971
4972         * aot-compiler.c: Enable the ELF writer on ELF platforms.
4973
4974         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
4975         box+brtrue optimization since it causes test failures on x86.
4976
4977 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4978
4979         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
4980
4981         * cpu-x86.md: Same.
4982
4983         * mini-x86.c: Same.
4984
4985         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
4986         for simd ctor values. 
4987
4988         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
4989         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
4990
4991 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
4992
4993         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
4994         LogicalRightShift.
4995
4996         * simd-instrincs.c: Same.
4997
4998         * basic-simd.cs: Same.
4999
5000 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5001
5002         * ratests.cs: Add more tests.
5003
5004         * regalloc2.c (add_spill_code): Handle more corner cases.
5005
5006 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5007
5008         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
5009         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
5010         both the source an destination of an instruction.
5011
5012 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5013
5014         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
5015         wapihandles.c: more portability changes.
5016
5017 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
5018
5019         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
5020         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
5021         safe to execute in a signal handler and the kernel provides better
5022         the info in /proc/self/smaps. Avoid the assert on sigaction during
5023         cleanup.
5024
5025 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5026
5027         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
5028         do the bblock linking hack if it is actually needed.
5029
5030         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
5031         up linking.
5032
5033         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
5034         crash problem is fixed.
5035
5036         * branch-opts.c (mono_remove_critical_edges): Link up newly added
5037         bblocks.
5038
5039         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
5040         for catch clauses.
5041         (mini_method_compile): Set the starting value of next_vreg to 
5042         MAX_IREGS + MAX_FREGS when using globalra.
5043
5044         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
5045         filter clauses with BB_EXCEPTION_HANDLER.
5046
5047         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
5048
5049 2008-11-10  Mark Probst  <mark.probst@gmail.com>
5050
5051         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
5052         space for stdcall.  Fixes regressions on Win32.
5053
5054 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
5055
5056         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
5057         bblocks.
5058         (linear_scan): Remove an assert which doesn't seem to be needed.
5059
5060         * local-propagation.c (mono_local_deadce): Avoid a call to
5061         MONO_DELETE_INS which would screw up the instruction linking.
5062
5063         * mini.c (mono_decompose_op_imm): Make this work with globalra.
5064
5065         * regalloc2.c: Upgrade to work the current JIT code.
5066
5067 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
5068
5069         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
5070         case.
5071
5072         * aot-runtime.c: Remove some dead code.
5073
5074         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
5075         consistency.
5076         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
5077
5078         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
5079         trampolines using sscanf since atoi doesn't work on large unsigned values.
5080
5081         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
5082         Initialize code_size.
5083
5084 2008-11-08  Mark Probst  <mark.probst@gmail.com>
5085
5086         * method-to-ir.c (mini_emit_inst_for_method): Make
5087         Interlocked.CompareExchange work for Int arguments on 32 bit
5088         archs, as well.
5089
5090 2008-11-07  Mark Probst  <mark.probst@gmail.com>
5091
5092         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
5093
5094 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
5095
5096         * main.c Fix MSVC build.
5097
5098         Contributed under MIT/X11 license.
5099
5100 2008-11-06  Mark Probst  <mark.probst@gmail.com>
5101
5102         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
5103         alignment larger than 8 bytes are aligned correctly, too.
5104
5105         * mini.c: Honor the min_align field of MonoClass when laying out
5106         the stack.
5107
5108 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
5109
5110         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
5111
5112         * aot-compiler.c (emit_plt): Fix a warning.
5113         
5114         * aot-compiler.c: Implement ARM support in the binary writer.
5115
5116 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5117
5118         * basic-simd.cs: Add test for getter with byref arg.
5119         Fix the naming of a few tests.
5120         Add missing checks to a test.
5121
5122 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5123
5124         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
5125
5126         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
5127         most of the full-aot support for monitor enter/exit trampolines.
5128
5129         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
5130         enter/exit trampoline creation functions.
5131
5132         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
5133         make dist.
5134
5135 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
5136
5137         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
5138         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
5139         implement the needed functionality without adding crap to the runtime.
5140
5141 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5142
5143         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
5144         non-x86 builds.
5145
5146         * mini.c (mono_build_date): New global version holding the build date in
5147         string format.
5148         
5149         * Makefile.am (buildver.c): Generate a file containing the build date.
5150
5151         * main.c: Set the build date from the generated file.
5152
5153         * mini.c (mono_get_runtime_build_info): New helper function returning build
5154         information in a string format.
5155         
5156         * driver.c (mono_main): Print the build date in --version.
5157
5158         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
5159         file when the bind-to-runtime-version option is used.
5160
5161 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5162
5163         * simd-intrinsics.c: Fix bug when using getters and byref args. 
5164
5165 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5166
5167         * simd-methods.h: Rename prefetch methods.
5168
5169         * simd-intrinsics.c: Same.      
5170
5171 2008-11-05  Mark Probst  <mark.probst@gmail.com>
5172
5173         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
5174         sizes.
5175
5176 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5177
5178         * aot-compiler.c: Use the bundled elf header files instead of depending on
5179         the system one.
5180         
5181         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
5182         mempool.
5183
5184         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
5185         on every call.
5186
5187 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
5188
5189         * cpu-x86.md: Add store nta ops.
5190
5191         * mini-ops.h: Same.
5192
5193         * mini-x86.c: Same.
5194
5195         * mini.h: Add an enum for simd prefetch modes.
5196
5197         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
5198         of store. Use the changed code to support store nta.
5199
5200         * simd-intrinsics.c: Add prefetch ops for all vector types.
5201
5202 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5203
5204         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
5205         threads.
5206         
5207         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
5208         names.
5209
5210         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
5211         trampolines.
5212
5213 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5214
5215         * mini-x86.c: Fixed commit.
5216
5217 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5218
5219         * aot-compiler.c (emit_plt): Align the plt section only on x86.
5220
5221 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5222
5223         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
5224         and MONITOR_EXIT, for the ASM fastpaths.
5225
5226         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
5227         available.
5228
5229         * mini.c, patch-info.h: Signature and patch infos for
5230         Monitor.Enter/Exit trampolines.
5231
5232         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
5233
5234         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
5235         Monitor.Enter/Exit ASM fastpath for Linux.
5236
5237 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5238
5239         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
5240
5241         * objects.cs: Add a new test.
5242         
5243         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
5244
5245         * aot-runtime.c (load_method): Run class initialization in the PLT case even
5246         if MONO_LOG_LEVEL is set.
5247
5248         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
5249
5250         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
5251
5252         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
5253         
5254         * aot-compiler.c: Change the relocation code to use virtual addresses instead
5255         of file offsets. Align the sections belonging to the data segment to 
5256         PAGESIZE.
5257
5258 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5259
5260         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
5261         elf.h. Port it to amd64.
5262
5263 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5264
5265         * driver.c: Enable SIMD by default.
5266
5267 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5268
5269         * cpu-x86.md: Add prefetch op.
5270
5271         * mini-ops.h: Same.
5272
5273         * mini-x86.c: Same.
5274
5275         * mini.h: Add an enum for simd prefetch modes.
5276
5277         * simd-methods.h: Add prefetch function names.
5278
5279         * simd-intrinsics.c: Add prefetch ops for all vector types.
5280
5281 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5282
5283         * aot-compiler.c (emit_bytes): Speed this up a little.
5284
5285 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
5286
5287         * aot-compiler.c: Add JIT time etc. statistics.
5288         
5289         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
5290
5291         * mini.h (MonoCompile): Add 'got_offset' field.
5292
5293         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
5294         method_got_offsets array.
5295
5296         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
5297         wrappers.
5298
5299         * aot-compiler.c (compile_method): Add generic method instances referenced
5300         by the method to the list of methods to be compiled, this is required so if
5301         A<T> references B<T>, and another assembly references A<int>, then it will
5302         also get a copy of B<int>.
5303
5304         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
5305         when checking for monitor enter/exit.
5306
5307 2008-10-30  Mark Probst  <mark.probst@gmail.com>
5308
5309         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
5310         for Monitor.Enter and Monitor.Exit if enabled.
5311
5312         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
5313         Solaris.
5314
5315 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
5316
5317         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
5318         of an OP_MOVE. Fixes #440046.
5319
5320         * basic-long.cs: Add a new test.
5321
5322 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5323
5324         * mini.h: Add synchronization note for the managed counter-part.
5325
5326         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
5327         returns the simd caps of the current cpu.
5328
5329 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5330
5331         * basic-simd.cs: Remove Console.WriteLine.
5332
5333 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5334
5335         * basic-simd.cs: New tests for Vector2ul.
5336
5337 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5338
5339         * simd-intrinsics.c: Add new vector type Vector2ul.
5340
5341 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5342
5343         * basic-simd.cs: New tests for Vector2l.
5344
5345 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5346
5347         * cpu-x86.md: Add long version of most packed int ops.
5348
5349         * mini-ops.h: Same.
5350
5351         * mini-x86.h: Same.
5352
5353         * simd-intrinsics.c: Add new vector type Vector2l.
5354
5355 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5356
5357         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
5358
5359         * simd-methods.h: Remove SN_op_BitwiseXor.
5360
5361 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
5362
5363         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
5364         alignment.
5365
5366 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5367
5368         * basic-simd.cs: Test for Vector2d.
5369
5370         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
5371         value.
5372
5373 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5374
5375         * cpu-x86.md: Add double version of all packed float ops.
5376
5377         * mini-ops.h: Same.
5378
5379         * mini-x86.h: Same.
5380
5381         * simd-intrinsics.c: Add new vector type Vector2d.
5382
5383         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
5384
5385         * simd-methods.h: Add Duplicate.
5386
5387 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5388
5389         * basic-simd.cs: Test for packing with signed saturation.
5390
5391 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
5392
5393         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
5394         found in the TYPESPEC table.
5395
5396 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
5397
5398         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
5399         too.
5400
5401         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5402
5403         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
5404         instead of the RVA, since the RVA can be changed by tools like the cil 
5405         stripper.
5406
5407         * method-to-ir.c (mono_method_to_ir2): Ditto.
5408
5409         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
5410         (deserialize_variable): Ditto.
5411
5412 2008-10-25  Martin Baulig  <martin@ximian.com>
5413
5414         * debug-mini.c (write_variable): Use
5415         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
5416
5417 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5418
5419         * cpu-x86.md: Add unsigned variants of packd and packw.
5420
5421         * mini-ops.h: Same.
5422
5423         * mini-x86.h: Emit the right instruction for packd and packw.
5424         Add unsigned variants of packd and packw.
5425
5426         * simd-intrinsics.c: Packd and packw were used in place of their
5427         unsigned variants. Change that.
5428         Add intrinsics for (Signed)PackWithSignedSaturation.
5429
5430         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
5431
5432 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5433
5434         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
5435
5436 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5437
5438         * mini-ops.h: Remove dword packed add/sub with saturation ops.
5439
5440         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
5441
5442         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
5443         sse instructions.
5444
5445         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
5446
5447 2008-10-24  Mark Probst  <mark.probst@gmail.com>
5448
5449         * method-to-ir.c, mini.c: Special casing for the synchronized
5450         wrapper for the ldtoken+GetTypeFromHandle case.
5451
5452 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
5453
5454         * mini.c (mono_replace_ins): Move this to branch-opts.c.
5455
5456         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
5457         created/split bblocks.
5458
5459 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5460
5461         * mini-ops.h: Add packed signed mul high.
5462         
5463         * cpu-x86.md: Same.
5464
5465         * mini-x86.c (mono_arch_output_basic_block): Same.
5466
5467         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
5468
5469         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
5470
5471 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5472
5473         * basic-simd.cs: Tests for Vector16sb.
5474
5475 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
5476
5477         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
5478
5479 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
5480
5481         * mini-ops.h: Add packed signed min, max and compare greater.
5482         
5483         * cpu-x86.md: Same.
5484
5485         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
5486         saturation.
5487
5488         * simd-methods.h: Add CompareGreaterThan.
5489
5490         * simd-methods.h: Remove CompareEquals.
5491
5492         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
5493
5494         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
5495
5496         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
5497         CompareEqual.
5498
5499 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
5500
5501         * basic-simd.cs: Fix tests due to change in the API.
5502
5503 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5504
5505         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
5506
5507 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5508
5509         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
5510
5511         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
5512         inst_offset as this has invalid values for LDADDR.
5513
5514 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5515
5516         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
5517
5518         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
5519
5520 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5521
5522         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
5523         for accessing field->data.
5524
5525 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5526
5527         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
5528
5529 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5530
5531         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
5532
5533         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
5534
5535 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5536
5537         * dominators.c (mono_compute_natural_loops): Allocate GList enties
5538         from the cfg mempool.
5539
5540 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
5541
5542         * basic-simd.cs: Tests for new methods in Vector8us.
5543
5544 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
5545
5546         * mini-ops.h: Add multiply and store high.
5547         
5548         * cpu-x86.md: Same.
5549
5550         * mini-x86.c (mono_arch_output_basic_block): Same.
5551
5552         * simd-methods.h: Same.
5553
5554         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
5555         and CompareEqual.
5556
5557 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
5558
5559         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
5560         mono_class_setup_vtable ().
5561
5562         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
5563         mono_class_get_vtable_entry () for accessing klass->vtable.
5564
5565         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
5566
5567         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
5568         found.
5569
5570         * method-to-ir.c (mono_save_token_info): Don't save references made from
5571         wrappers.
5572
5573         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
5574         of generic instances.
5575
5576         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
5577
5578 2008-10-19  Mark Probst  <mark.probst@gmail.com>
5579
5580         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
5581         OP_JMP depends on the method signature.  Calculate it properly.
5582
5583 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
5584         
5585         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
5586         called directly.
5587
5588         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
5589         instances.
5590         (emit_extra_methods): Add another table mapping method indexes to 
5591         offsets in the extra_method_info table.
5592
5593         * mini.h: Bump AOT file format version.
5594         
5595         * aot-runtime.c: Merge most of the code from mono_aot_get_method
5596         and mono_aot_get_method_from_token () into one function.
5597
5598 2008-10-19  Mark Probst  <mark.probst@gmail.com>
5599
5600         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
5601         separate counter.
5602
5603 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
5604
5605         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
5606         methods.
5607
5608         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
5609         disable_aot.
5610
5611         * mini.c (mono_patch_info_equal): Compare the generic context as well.
5612
5613         * mini.h: Bump aot file format version.
5614
5615         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
5616         AOT file can contain native code for methods which are not in the METHOD
5617         table. Generate code for non-sharable generic instances of generic methods
5618         found in the METHODSPEC table.
5619         
5620         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
5621         encoding generic type handles.
5622
5623         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
5624         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
5625
5626         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
5627         macros + MONO_ADD_INS.
5628
5629         * mini.c (mono_jump_info_token_new2): New function which takes a generic
5630         context as well.
5631
5632         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
5633
5634         * mini.h: Bump aot file format version.
5635
5636         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
5637
5638 2008-10-17  Mark Probst  <mark.probst@gmail.com>
5639
5640         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
5641         platforms, with definable stack alignment value.  Set to 16 now
5642         for all platforms.
5643
5644         * mini.c, mini.h, driver.c: Command line option for disabling
5645         stack alignment.
5646
5647 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5648
5649         * basic-simd.cs: Tests for new methods in Vector4ui.
5650
5651 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5652
5653         * mini-ops.h: Add packed int shuffle.
5654         
5655         * cpu-x86.md: Same.
5656
5657         * mini-x86.c (mono_arch_output_basic_block): Same.
5658
5659         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
5660         extract mask, max, min, shuffle.
5661
5662         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
5663
5664 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
5665
5666         * basic-simd.cs: Tests for new methods in Vector8us.
5667
5668 2008-10-17  Mark Probst  <mark.probst@gmail.com>
5669
5670         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
5671         RuntimeTypeHandle, not a TypedReference.
5672
5673 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
5674
5675         * simd-intrinsics.c: remove relocations.
5676
5677 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
5678
5679         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
5680         optimizations from the x86 backend.
5681
5682 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
5683
5684         * simd-methods.h, simd-intrinsics.c: debloat method names and
5685         prepare for no relocations.
5686
5687 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5688
5689         * mini-ops.h: Add packed min/equal and sum of absolute differences.
5690         
5691         * cpu-x86.md: Same.
5692
5693         * mini-x86.c (mono_arch_output_basic_block): Same.
5694
5695         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
5696         extract mask, max, min and sum of absolute differences.
5697
5698         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
5699         method name.
5700
5701 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5702
5703         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
5704         Renamed one test for consistency.
5705
5706 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5707
5708         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
5709         fix to the code that deal with other blocks.
5710
5711 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5712
5713         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
5714
5715 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
5716
5717         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
5718         that deals with vreg interference. Explicitly check for OP_LDADDR to be
5719         able to process the source reg.
5720
5721 2008-10-16  Martin Baulig  <martin@ximian.com>
5722
5723         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
5724
5725         * inssel.brg: Add `OP_HARD_NOP'.
5726
5727         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
5728
5729         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
5730         `OP_HARD_NOP' instruction when running inside the debugger.
5731
5732         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
5733         `OP_HARD_NOP' instruction when running inside the debugger.
5734
5735 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5736
5737         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
5738         now works. The issue with the regalloc tripping up no longer
5739         happens.
5740
5741         * simd-intrinsics.c (load_simd_vreg): Same.
5742
5743 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5744         
5745         * basic-simd.cs: Tests for new Vector8ui methods.
5746
5747 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5748
5749         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
5750         only for type. This fixes crashes where MonoInst::klass is checked
5751         for ops of type != VTYPE or OBJ.
5752
5753         * simd-intrinsics.c (load_simd_vreg): Same.
5754
5755 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
5756
5757         * mini-ops.h: Add ops for packed shuffle/max/avg and
5758         extract mask.
5759         
5760         * cpu-x86.md: Same.
5761
5762         * mini-x86.c (mono_arch_output_basic_block): Same.
5763
5764         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
5765         extract mask.
5766
5767         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
5768         to emit extract mask op.
5769
5770         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
5771         to emit word shuffles.
5772
5773 2008-10-15  Mark Probst  <mark.probst@gmail.com>
5774
5775         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
5776         the largest alignment needed by a variable, but at least
5777         sizeof(gpointer).
5778
5779 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5780
5781         * basic-simd.cs: Tests for the fixes in the last commit.
5782
5783 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5784
5785         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
5786         no longer handles STACK_PTR input.
5787
5788         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
5789
5790         * simd-intrinsics.c (load_simd_vreg): New function that works like 
5791         get_simd_vreg   but handles STACK_PTR input.
5792
5793         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
5794         as the input can be an arbitrary pointer.
5795
5796         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
5797         LDADDR local optimization directly otherwise use a store op.
5798
5799 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5800
5801         * basic-simd.cs: Tests for dup low and dup high.
5802
5803 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
5804
5805         * mini-ops.h: Add dup low and dup high ops.
5806         
5807         * cpu-x86.md: Same.
5808
5809         * mini-x86.c (mono_arch_output_basic_block): Same.
5810
5811         * simd-intrinsics.c (vector4f_intrinsics): Same.
5812
5813 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5814
5815         * basic-simd.cs: Tests for recently added functionality.
5816
5817 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5818
5819         * mini-ops.h: Add remaining sse1 fp ops.
5820         
5821         * cpu-x86.md: Add remaining sse1 fp ops.
5822
5823         * mini-x86.c (mono_arch_output_basic_block): Same.
5824
5825         * mini.h: Add enum for simd FP compare conditions.
5826
5827         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
5828
5829         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
5830         so the backed can generate the appropriate op.
5831
5832 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
5833         This patch squeese one more byte from the SimdIntrinsc struct.
5834
5835         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
5836         a a shift amount intead of simply or'ing it.
5837
5838         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
5839
5840         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
5841         byte so we can have an aditional flags field without increasing struct size.
5842
5843         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
5844         against the simd_supported_versions bitmask.
5845
5846         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
5847
5848 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
5849
5850         * mini.c: remove rawbuffer code (the only use here is unsafe because
5851         it takes locks during signal handling and the kernel now provides much
5852         better info in proc/pid/smaps these days).
5853
5854 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
5855
5856         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
5857         OP_X86_PUSH_OBJ. Fixes #434620.
5858
5859         * objects.cs: Add a test.
5860         
5861 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
5862
5863         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
5864         that the packuswb/packusdw don't work with unsigned numbers for what
5865         would be negative numbers in signed format.
5866
5867         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
5868         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
5869
5870         * mini-ops.h: Add doubleword forms of many ops and packing ones.
5871
5872         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
5873
5874         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
5875
5876         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
5877
5878         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
5879         add more ops.
5880
5881         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
5882         version as the enum in mini.h.
5883
5884         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
5885         for sse3 ops, check the simd_version field if present. This way the code
5886         works with all versions of sse.
5887
5888 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5889
5890         * simd-intrinsics.c: Fixed intrinsic name typo.
5891
5892         * mini.h: Added missing simd exported function.
5893
5894         * basic-simd.cs: Added tests for Vector4ui.
5895         Fixed broken test for Vector16b.
5896
5897 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
5898
5899         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
5900         the max length to 64.
5901
5902 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5903
5904         * method-to-ir.c: Only do the fast virtual generic method call for
5905         non-wrapper methods.
5906
5907         * mini.h, mini-trampolines.c: The new generic virtual remoting
5908         trampoline handles virtual method calls via the vtable (as done by
5909         the fast virtual generic method calls) to remoting proxies.
5910
5911         * mini.c (mono_jit_create_remoting_trampoline): For generic
5912         methods reate a generic virtual remoting trampoline.
5913
5914         * mini-amd64.h: Enable fast virtual generic method calls again.
5915
5916 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5917
5918         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
5919         restore registers when doing tail calls.
5920
5921 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5922
5923         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
5924         Vector4ui.
5925
5926 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5927
5928         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
5929
5930 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5931
5932         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
5933
5934 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5935
5936         * basic-simd.cs: Retrofit for API changes.
5937
5938 2008-10-10  Mark Probst  <mark.probst@gmail.com>
5939
5940         * mini-ppc.c: Handle integer stack arguments for tail calls.
5941
5942 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
5943
5944         * optflags-def.h: Removed sse3 optimization.
5945
5946         * driver.c: Same.
5947
5948         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
5949         sse3.
5950
5951         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
5952
5953         * mini.h: Added enumeration with simd versions.
5954
5955         * simd-intrinsics.c (emit_intrinsics): Use the new static var
5956         for detecting SSE3.
5957
5958         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
5959
5960         * mini.c (mini_init): Call mono_simd_intrinsics_init.
5961
5962 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5963
5964         * basic-simd.cs: Added tests for Vector8u and Vector16u.
5965
5966         * basic-simd.cs: Fixed test naming.
5967
5968 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
5969
5970         * mini-ops.h: Added ops for packed and saturated math, shifts
5971         and packing/unpacking.
5972
5973         * cpu-x86.md: Added descriptors for the above ops.
5974
5975         * mini-x86.c: Added code to emmit the above ops.
5976
5977         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
5978
5979 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
5980
5981         * aot-compiler.c (compile_method): Enable AOT for generic code.
5982
5983         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
5984
5985 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
5986
5987         * mini.c: add a workaround for a common screwup that ends up blamed
5988         to mono (other processes blocking signal delivery).
5989
5990 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
5991
5992         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
5993         in the LDFLD/STFLD opcodes. Fixes #432673.
5994
5995         * iltests.il.in: Add a new test.
5996
5997 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
5998
5999         * mini-arm.c: attach the thread in unmanaged->managed transitions
6000         using delegates (bug #433148).
6001
6002 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6003
6004        * basic-simd.cs: Use new ShuffleSel constants.
6005
6006 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6007
6008         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
6009
6010         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
6011         only disable simd intrinsics if no sse2 is detected.
6012
6013         * optflags-def.h: Added sse3.
6014
6015         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
6016         is disabled.
6017
6018 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6019
6020         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
6021         when adding delegate-invoke wrappers.
6022
6023 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6024
6025         * Makefile.am: Reenable the simd tests.
6026
6027 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6028
6029         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
6030           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
6031           other vreg is allocated to that hreg.
6032
6033         Contributed under MIT/X11 license.
6034
6035 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6036
6037         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
6038         yet checked in.
6039
6040 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6041
6042         * basic-simd.cs: New test suite for SIMD intrinsics.
6043
6044         * Makefile.am: Added new tests.
6045
6046 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6047
6048         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
6049
6050         * mini-ops.h: Same.
6051
6052         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
6053
6054         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
6055         using SSE2 aware opcodes.
6056
6057         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
6058         is enabled, this code path is only reachable if conversion ops are emmited after
6059         mono_method_to_ir.
6060
6061         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
6062
6063         This optimization saves 6 bytes per conversion against the old version.
6064
6065 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6066
6067         * aot-compiler.c (compile_method): Don't skip methods referencing 
6068         generic methods without a corresponding entry in token_info_hash, since
6069         encode_method_ref () can handle all generic methods now.
6070
6071         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
6072         generic context is set.
6073         
6074         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
6075         generic sharing of LDTOKEN.
6076
6077 2008-10-06  Mark Probst  <mark.probst@gmail.com>
6078
6079         * mini-amd64.h: Temporarily disabled fast virtual generic method
6080         calls because it breaks the System.Runtime.Remoting tests.
6081
6082 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6083
6084         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
6085
6086         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
6087         so inlining actually works.
6088         (check_inline_caller_method_name_limit): Ditto.
6089
6090 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
6091
6092         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
6093         64 bit safety (from Olaf Hering and Andreas Farber).
6094
6095 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6096         
6097         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
6098         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
6099         unused virtual call support code.
6100
6101         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
6102         
6103         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
6104         which can't use aot trampolines.
6105         (decode_patch): Don't create aot trampolines for methods which can't use
6106         them.
6107
6108         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
6109         use aot trampolines.
6110
6111         * mini.h: Bump AOT image format version.
6112         
6113 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
6114
6115         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
6116         to save_token_info () since cmethod is inflated for constrained calls.
6117
6118         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
6119
6120 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
6121
6122         * Makefile.am: Add build rules for ppc64.
6123         This avoids the build failing at pedump with unresolved symbols
6124         due to lack of arch_sources. Instead it will now fail earlier
6125         due to lack of cpu-ppc64.md.
6126
6127         Contributed under MIT/X11 license.
6128
6129 2008-10-04  Mark Probst  <mark.probst@gmail.com>
6130
6131         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
6132         tail calls.
6133
6134         * iltests.il.in: Add test case for tail call with many arguments.
6135
6136 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6137
6138         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
6139         to the fast virtual generic method code until the aot case is fixed.
6140
6141 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6142
6143         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
6144
6145 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6146
6147         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
6148         thunks.
6149
6150 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6151         
6152         * simd-intrinsics.c: Forgot to add this one.
6153
6154         * mini-codegen.c: Fix macro in case SIMD is not supported.
6155
6156 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6157         
6158         This patch land initial JIT support for simd intrinsics.
6159
6160         * mini-x86.h: Added new define to make --enable_minimal work on x86.
6161
6162         * Makefile.am: Added simd-intrinsics.c
6163
6164         * simd-intrinsics.c: New file with simd instrinsic related
6165         code.
6166
6167         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
6168
6169         * cpu-x86.md: Add simd related instructions.
6170
6171         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
6172
6173         * driver.c: Added two new --regression variants.
6174
6175         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
6176
6177         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
6178
6179         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
6180         extract some complicated logic to helper functions.
6181
6182         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
6183
6184         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
6185
6186         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
6187         the specialized simplification pass.
6188
6189         * method-to-ir.c (mono_spill_global_vars): Use new macro.
6190
6191         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
6192
6193         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
6194         table.
6195
6196         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
6197         if MONO_ARCH_NEED_SIMD_BANK is defined.
6198
6199         * mini-ops.h: Added the new simd ops.
6200
6201         * mini-x86.c: Added mono_arch_xregname.
6202
6203         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
6204
6205         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
6206
6207         * mini-x86.h: Define simd related MONO_ARCH macros.
6208
6209         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
6210
6211         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
6212
6213         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
6214         MONO_CLASS_IS_SIMD to deal with simd related IR.
6215
6216         * mini.h (MonoInst): Added spill_var to the backend union.
6217
6218         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
6219
6220         * mini.h: Added forward declarations of the new simd fuctions.
6221
6222         * optflags-def.h: Added new optimization names SIMD.
6223
6224         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
6225
6226         * regalloc.h: Added support for working with 3 register banks.
6227
6228         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
6229
6230         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
6231
6232 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
6233
6234         * mini-exceptions.c: remove 64 bit related ifdef clutter.
6235
6236 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6237
6238         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
6239         instead of one on 64 bit systems.
6240
6241         * method-to-ir.c: Remove unused includes.
6242
6243 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
6244
6245         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
6246         cfg->used_int_regs, since the two are different on arm.
6247
6248 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6249
6250         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
6251         mono_method_get_vtable_index() to get the vtable index.
6252
6253 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6254
6255         * method-to-ir.c (mono_method_to_ir2): Don't create native
6256         wrappers for array methods, because they're never called (and if
6257         they were called they wouldn't work).
6258
6259 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6260
6261         * method-to-ir.c (mono_method_to_ir2): Array methods are
6262         special-cased and must not be invoked indirectly via the (M)RGCTX
6263         when generic sharing is turned on.  Fixes #431413.
6264
6265 2008-10-01  Mark Probst  <mark.probst@gmail.com>
6266
6267         * method-to-ir.c: When generic sharing is active, call
6268         non-interface virtual generic methods via the standard trampoline.
6269
6270         * mini-trampolines.c: Handle virtual generic shared methods.
6271
6272         * mini.h, mini-x86.c, mini-x86.h: New argument for
6273         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
6274         method thunks and which is the trampoline to call if the lookup
6275         fails.  Enable the virtual generic method thunk for x86.
6276
6277         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
6278         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
6279         argument but assert that it's NULL, because these archs don't yet
6280         implement the virtual generic method thunk.  Changes in the IMT
6281         thunk data structures.
6282
6283 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
6284
6285         * aot-compiler.c (emit_globals): Avoid invalid characters in
6286         the static linking symbol.
6287
6288         * objects.cs: Add a test for the range check optimization. Fix warnings.
6289
6290         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
6291         optimization from the current JIT.
6292
6293         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
6294         later in decompose_array_access_opts () to allow more optimizations.
6295
6296         * method-to-ir.c (mono_handle_soft_float): Rename this to 
6297         mono_decompose_soft_float () for consistency.
6298
6299         * mini-ops.h: Fix arguments of OP_STRLEN.
6300
6301         * method-to-ir.c (save_cast_details): Extract the cast details saving code
6302         into a separate function.
6303         (reset_cast_details): Ditto.
6304         (handle_unbox): Save cast details. Fixes #431254.
6305
6306         * method-to-ir.c: Remove some obsolete FIXMEs.
6307
6308 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6309
6310         * ir-emit.h (alloc_dreg): Write a warning before crashing.
6311
6312 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6313
6314         * mini-codegen.c: More work on macros to make them
6315         ready for multiple regbanks.
6316
6317 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6318
6319         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
6320
6321         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
6322
6323 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6324
6325         * mini-codegen.c (mono_spillvar_offset): Proper support for
6326         multiple regbanks.
6327
6328 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6329
6330         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
6331         the stack overflow changes.
6332
6333 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6334
6335         * mini-codegen.c: Make all bank macros depend on reg_bank.
6336
6337         * mini-codegen.c (mono_local_regalloc): Make free mask
6338         initialization regbank aware.
6339
6340 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6341
6342         * mini-codegen.c (mono_local_regalloc): Extract callee
6343         mask selection to a function and make it regbank aware.
6344
6345 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6346
6347         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
6348         code to deal with many regbanks.
6349
6350 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6351
6352         * mini-codegen.c: More fp->regbank changes.
6353
6354 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6355
6356         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
6357         of a hardcoded constant.
6358
6359 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6360
6361         * method-to-ir.c (type_from_stack_type): Fix typo.
6362
6363 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
6364
6365         * mini-ia64.c (emit_move_return_value): Convert float return values to
6366         double.
6367
6368         * objects.cs: Add a new test.
6369         
6370         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
6371         VARARG methods to fix an assert later.
6372
6373         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
6374         end so it at least compiles.
6375
6376 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
6377
6378         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
6379
6380 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
6381
6382         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
6383         optimization to a new function (emit_optimized_ldloca_ir) and enable
6384         it for both ldloca and ldloca_s.
6385
6386 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
6387
6388         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
6389         gshared CASTCLASS code.
6390
6391         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
6392         amd64, where the libc stack unwinder encounters stack frames referring to
6393         native code in unmapped memory.
6394
6395         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
6396         sharing.
6397
6398         * generics.cs: Add new test.
6399
6400 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
6401
6402         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
6403         add a check that one of the ARM_FPU_ constants is defined.
6404
6405         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
6406         
6407         * mini-exceptions.c: Fix build on non-altstack platforms.
6408
6409         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
6410         sharing of vtypes.
6411
6412         * ir-emit.h: Add a comment to NEW_PCONST.
6413
6414         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
6415
6416         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
6417
6418         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
6419         after the changes to MonoJitDomainInfo.
6420
6421 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6422
6423         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
6424
6425 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6426
6427         * mini-ppc.c: Compiler warning fixes.
6428
6429 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6430
6431         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
6432         for pinvokes.
6433
6434 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6435
6436         * exceptions-ppc.c, mini-ppc.h: Compile
6437         mono_arch_handle_altstack_exception() on Darwin, too.
6438
6439 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6440
6441         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
6442         work on archs which don't have generic sharing implemented, only
6443         without the vtable_arg.
6444
6445 2008-09-26  Mark Probst  <mark.probst@gmail.com>
6446
6447         * mini.c: Added comment explaining why delegate ctor icall
6448         wrappers are compiled.
6449
6450 2008-09-26  Mark Probst  <mark.probst@gmail.com>
6451
6452         * mini.c: Don't produce trampolines to delegate ctor icall
6453         wrappers but compile them upfront.
6454
6455 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
6456
6457         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
6458         runtime-set function when going back to managed code. Currently this
6459         is used to set back the protection on the soft ovf pages and/or to
6460         throw the stack overflow exception that happened in unmanaged code.
6461
6462 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
6463
6464         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
6465         runtime-set function when going back to managed code. Currently this
6466         is used to set back the protection on the soft ovf pages and/or to
6467         throw the stack overflow exception that happened in unmanaged code.
6468
6469 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6470
6471         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
6472         the support code for restoring stack protection after stack overflows
6473         that happen in unmanaged code. Don't set the exec permission on the
6474         soft overflow area.
6475
6476 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
6477
6478         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
6479         delegate->method_ptr is set. Fixes #428054.
6480
6481 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
6482
6483         * tests.cs: Rename to ratests.cs.
6484
6485         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
6486         emit_get_rgctx_... functions.
6487
6488 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6489
6490         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
6491
6492 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6493
6494         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
6495         before asserting that method is sharable.
6496
6497 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6498
6499         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
6500         whether method needs a static RGCTX wrapper used instead of
6501         complex conditions.
6502
6503         * generic-sharing.c, mini.h: A few functions moved to
6504         metadata/generic-sharing.c.
6505
6506 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6507
6508         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
6509         Generic code sharing for value types, which essentially means
6510         treating value type methods like static methods.  The RGCTX is
6511         passed in the same way.
6512
6513 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
6514
6515         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
6516         opcode when creating multi-dimensional arrays of open types.
6517
6518         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
6519         open generic types.
6520
6521         * generics.cs: Add a test.
6522
6523         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
6524
6525 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
6526
6527         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
6528
6529         * mini.c (mini_method_compile): Set it when running under the debugger. 
6530
6531         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
6532         vreg optimization if the flag is set.
6533
6534         * driver.c (mono_main): Add --attach= option to pass options to
6535         the attach agent.
6536
6537         * mini.c (sigquit_signal_handler): Start the attach agent.
6538
6539         * ssapre.c: Disable this to save space since it is not yet ported to
6540         linear IR.
6541
6542         * regalloc2.c: Disable this to save space.
6543
6544         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
6545
6546 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
6547
6548         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
6549         the -v option useful again.
6550
6551 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
6552
6553         * mini-amd64.c (mono_arch_output_basic_block): Add support for
6554         --break-at-bb.
6555
6556         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
6557         arrays of arrays. Fixes #428406.
6558
6559         * method-to-ir.c (mini_emit_castclass): Ditto.
6560
6561         * objects.cs: Add new test.
6562         
6563 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
6564
6565         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
6566         was wrong at it choked against target_type_is_incompatible for byref types.
6567
6568 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
6569
6570         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
6571         places.
6572
6573 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
6574
6575         * mini-exceptions.c: update a few more exceptions-related counters.
6576
6577 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
6578
6579         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
6580         new functions to allocate from persistent mempools.
6581
6582 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
6583
6584         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
6585         multiple register banks in the future.
6586
6587         * mini-codegen.c (mono_local_regalloc): Fix a warning.
6588
6589 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
6590
6591         * mini.c (type_to_eval_stack_type): Remove duplicated function.
6592
6593         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
6594
6595         * mini.h: Export type_to_eval_stack_type.
6596
6597         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
6598         is only ins->klass of byref types.
6599
6600 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
6601
6602         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
6603         (mini_emit_memcpy2): Ditto.
6604
6605         * mini-amd64.c: Fix a warning.
6606
6607 2008-09-21  Mark Probst  <mark.probst@gmail.com>
6608
6609         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
6610         linking.
6611
6612 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
6613
6614         * method-to-ir.c: Extract stloc micro-optimization to a
6615         function and apply it to all cases.
6616
6617 2008-09-19  Mark Probst  <mark.probst@gmail.com>
6618
6619         * method-to-ir.c: Don't fail generic code sharing in cases we
6620         already support.
6621
6622 2008-09-18  Mark Probst  <mark.probst@gmail.com>
6623
6624         * mini-ppc.c: Handle structs in tailcalls on Darwin.
6625
6626 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
6627
6628         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
6629         implementation.
6630
6631 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
6632
6633         * trace.c: make tracing more useful and correct, with per-thread
6634         id and indent info.
6635
6636 2008-09-15  Mark Probst  <mark.probst@gmail.com>
6637
6638         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
6639         doing a method call and the argument is an R4.
6640
6641 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
6642
6643         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
6644         generic methods.
6645
6646 2008-09-13  Mark Probst  <mark.probst@gmail.com>
6647
6648         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
6649
6650 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
6651
6652         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
6653         (MONO_JUMP_TABLE_FROM_INS): Ditto.
6654
6655 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
6656
6657         * driver.c: Add a --agent argument (not supported yet) to load managed
6658         agent assemblies before loading the main assembly, similarly to how the
6659         Java VM handles agents.
6660
6661 2008-09-11  Mark Probst  <mark.probst@gmail.com>
6662
6663         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
6664         function to do stack layout of local variables.
6665
6666 2008-09-11  Mark Probst  <mark.probst@gmail.com>
6667
6668         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
6669         calculation.
6670
6671 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
6672
6673         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
6674         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
6675         JIT if DISABLE_JIT is defined.
6676
6677         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
6678         defined.
6679
6680 2008-09-10  Mark Probst  <mark.probst@gmail.com>
6681
6682         * iltests.il.in: Disable the fconv test on PPC (the result is
6683         undefined according to ECMA).
6684
6685 2008-09-10  Mark Probst  <mark.probst@gmail.com>
6686
6687         * iltests.il.in: Enable tail call tests for PPC.
6688
6689         * mini.h: Add variable for storing incoming valuetype argument
6690         addresses for tail calls.
6691
6692         * mini-ppc.c: Implement valuetype arguments and return values for
6693         tailcalls on Linux.
6694
6695 2008-09-09  Mark Probst  <mark.probst@gmail.com>
6696
6697         * mini-ppc.c: Partially implement tail calls (struct arguments and
6698         return values not supported).
6699
6700         * method-to-ir.c: Enable tail calls on PPC.
6701
6702 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
6703
6704         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
6705         runtime-invoke wrappers to work around the problem of them getting
6706         assigned to a random class.
6707
6708         * aot-runtime.c (mono_aot_get_method): Ditto.
6709         
6710 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
6711
6712         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
6713         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
6714
6715 2008-09-07  Mark Probst  <mark.probst@gmail.com>
6716
6717         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
6718         until they're implemented properly.
6719
6720         * exceptions-ppc.c: Use arch-independent exception-handling code
6721         instead of custom one.
6722
6723         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
6724         for Linear IR.
6725
6726         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
6727
6728         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
6729         applies when __powerpc__ is defined.
6730
6731 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
6732
6733         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
6734         methods to their code to avoid computing the full name of wrappers and
6735         doing a lookup in a string hash table.
6736
6737 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
6738
6739         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
6740         we identify bblocks before method_to_ir () is ran.
6741
6742         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
6743         Also avoid optimizing branches pointing to themselves.
6744
6745         * mini.c (mini_method_compile): Ditto. Fixes #422947.
6746
6747 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
6748
6749         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
6750
6751 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
6752
6753         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
6754         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
6755         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
6756         'buf'.
6757
6758         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
6759         jumped to the same entry in plt_jump_table.
6760
6761 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
6762
6763         * method-to-ir.c (initialize_array_data): Handle field with RVA from
6764         dynamic images.
6765
6766 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
6767
6768         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
6769         other assignment can be if converted. Saves 1.5% on corlib size and fixes
6770         #421807.
6771
6772 2008-08-29  Geoff Norton  <gnorton@novell.com>
6773
6774         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
6775         segment, and doesn't properly handle .space as .text.  Fixes
6776         AOT Mach/ARM
6777
6778 2008-08-29  Geoff Norton  <gnorton@novell.com>
6779
6780         * mini.c: Disable the mach exception handler when running on 
6781         ARM
6782
6783 2008-08-29  Geoff Norton  <gnorton@novell.com>
6784
6785         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
6786         globals on Darwin/ARM
6787
6788 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
6789
6790         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
6791         since too many things depend on it. Instead, call 
6792         mono_runtime_set_no_exec ().
6793         
6794         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
6795         the new JIT.
6796
6797         * aot-compiler.c: Add an 'asm-only' AOT option.
6798
6799         * mini.c: Avoid initializing the runtime when doing AOT compilation.
6800                 
6801         * aot-compiler.c (compile_method): Disable gshared support for now as it
6802         doesn't yet work.
6803
6804 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6805
6806         * mini-amd64.h : Fix a compiler warning.
6807
6808         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
6809           Changed to use a callback function to retrieve the unwind info.
6810           This avoids problems observed when code blocks were removed by
6811           unloading an app domain.
6812
6813         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
6814           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
6815           to work properly.
6816
6817         Contributed under MIT/X11 license.
6818
6819 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
6820
6821         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
6822           case to keep the stack aligned to 8.
6823
6824         Contributed under MIT/X11 license.
6825
6826 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
6827
6828         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
6829         avoid repeated linear searches.
6830
6831 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
6832
6833         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
6834         methods it can't handle.
6835         
6836         * aot-compiler.c (add_method): Avoid adding a method twice.
6837         (add_wrappers): Add runtime invoke wrappers for all methods.
6838
6839         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
6840         function to create an aot-compatible version of this trampoline.
6841
6842         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
6843
6844 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
6845
6846         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
6847
6848         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
6849         with a generic sharing failure.
6850
6851         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
6852
6853         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
6854         CEE_RETHROW. Fixes #419634.
6855
6856         * mini.c (mono_method_to_ir): Ditto.
6857
6858         * exceptions.cs: Add a new test.
6859         
6860         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
6861         to mono_type_stack_size_internal () since some callers might not pass in
6862         an rgctx.
6863
6864         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
6865         instrument_prolog. Fixes #419878.
6866
6867         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
6868         doubles in soft float mode volatile.
6869
6870 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
6871
6872         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
6873
6874         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
6875         to handle soft float correctly.
6876
6877         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
6878         the fast path.
6879
6880         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
6881
6882         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
6883         to sp, since the generics catch code requires it.
6884
6885         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
6886         copying.
6887
6888         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
6889         mono_arch_emit_imt_argument ().
6890
6891         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
6892
6893         * mini-arm.c tramp-arm.c: Generic sharing updates.
6894
6895 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
6896
6897         * mini-arm.c: Fix the arm build.
6898
6899         * generic-sharing.c (mini_type_get_underlying_type): New helper function
6900         handling enums, generic instances and generic sharing.
6901         (mini_type_stack_size_full): Ditto.
6902
6903         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
6904         
6905         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
6906
6907         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
6908
6909         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
6910         trampolines.
6911
6912         * mini-arm.c: Various small generic sharing changes.
6913
6914         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
6915         this for x86.
6916         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
6917         custom code.
6918
6919         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
6920         helper function to return a generic class init trampoline.
6921
6922         * method-to-ir.c mini.c: Use it.
6923         
6924         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
6925         arch-specfic function to return a generic class init trampoline.
6926
6927         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
6928         the GENERIC_CLASS_INIT custom code.
6929
6930         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
6931         a fatal error, not a sharing failure.
6932
6933         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
6934         needed.
6935
6936         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
6937         trampoline argument from MONO_ARCH_VTABLE_REG.
6938
6939         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6940         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6941         argument, and pass the vtable in VTABLE_REG.
6942
6943         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
6944         order of the arguments to the C trampoline: pass 'slot' as the trampoline
6945         argument, and pass the vtable in VTABLE_REG.
6946         (mono_arch_create_trampoline_code_full): Remove some special casing for
6947         the rgctx fetch trampoline.
6948
6949         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
6950         Fixes #419273.
6951
6952         * iltests.il: Add a test for it.
6953
6954 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
6955
6956         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
6957
6958         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
6959         no longer needed.
6960
6961         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
6962         use mono_jit_info_table_find () to avoid recursion.
6963         (mono_delegate_trampoline): Add a sync wrapper here.
6964
6965         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
6966         here.
6967
6968         * mini.c (mono_method_to_ir): Ditto.
6969         
6970         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
6971         add_sync_wrapper argument. Don't add a sync wrapper here.
6972         (mono_create_jump_trampoline): Don't add a sync wrapper here.
6973
6974         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
6975         
6976 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6977
6978         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
6979           of nonvolatile registers back from MonoContext to CONTEXT.
6980
6981         Contributed under MIT/X11 license.
6982
6983 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6984
6985         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
6986           arguments on Winx64 there are only 4 argument registers.  For this
6987           logic to work the last argument must be pulled from the stack.  
6988
6989         Contributed under MIT/X11 license.
6990
6991 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
6992
6993         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
6994
6995         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
6996         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
6997         encode/decode_method_ref ().
6998
6999         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
7000
7001         * aot-runtime.c (decode_patch): Ditto.  
7002
7003         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
7004         MONO_PATCH_INFO_METHOD.
7005
7006         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
7007         MonoGenericJitInfo.
7008
7009         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
7010         MonoGenericJitInfo.
7011
7012         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
7013
7014         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
7015         one from the caller.
7016
7017         * aot-runtime.c (decode_generic_inst): New function to decode and
7018         return a interned generic inst.
7019         (decode_klass_ref): Use it.
7020         (decode_method_ref): Ditto.
7021
7022         * aot-compiler.c (emit_exception_debug_info): Save 
7023         jinfo->has_generic_jit_info too.
7024
7025 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7026
7027         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
7028
7029         * iltests.il.in: Add a test for fconv_to_i.
7030
7031         * liveness.c: Disable the liveness2 pass for now to save space.
7032
7033         * regalloc2.c: Include mempool-internals.h to fix warnings.
7034
7035         * aot-compiler.c (encode_method_ref): Encode the context of generic
7036         instance methods.
7037
7038         * aot-runtime.c (decode_method_ref): Inflate generic methods using
7039         the context saved in the aot file.
7040
7041         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7042
7043         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
7044
7045         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
7046         volatile so they won't be optimized away.
7047
7048 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
7049
7050         * ssa.c:
7051         * ssa2.c:
7052         * mini.c:
7053         * regalloc2.c:
7054         * dominators.c: Remove duplicated functions that now are in
7055         mempool-internals.h.
7056
7057 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * aot-compiler.c: Fix warnings.
7060
7061         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
7062
7063         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
7064
7065         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
7066         as the patch type.
7067
7068         * mini.c (mono_resolve_patch_target): Ditto.
7069         
7070         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
7071         (encode_klass_ref): Add support for encoding VARs/MVARs.
7072
7073         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
7074
7075         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
7076         the handling of the got entries into a separate 'decode_got_entry' function.
7077         Add support for RGCTX_FETCH.
7078
7079         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
7080         clobbered by the trampoline code.
7081
7082         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
7083         not clobbered by the indirect calling code.
7084
7085 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7086
7087         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
7088         to fix the build.
7089
7090 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
7091
7092         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
7093         signature using the compilation mempool otherwise we would leak it.
7094
7095 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7096
7097         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
7098         mono_emit_abs_call ().
7099
7100         * patch-info.h: Add GENERIC_CLASS_INIT.
7101
7102         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
7103
7104         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
7105         as their target as a near call.
7106
7107         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
7108         ABS handling code.
7109         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
7110
7111         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
7112         call to a runtime function described by a patch.
7113
7114         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
7115         mono_emit_abs_call, this has the advantage that the ABS handling code in
7116         mono_codegen () can handle them both, and can handle other stuff in the
7117         future without additional code.
7118
7119         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
7120         entry.
7121         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
7122         abs addresses.
7123
7124         * mini.h: Add missing bblock related prototypes.
7125
7126         * mini.h (MonoCompile): Remove unused reverse_inst_list and
7127         reverse_inst_list_len fields.
7128
7129         * mini.c: Refactor this file a bit by moving branch optimizations to 
7130         branch-opts.c.
7131
7132         * method-to-ir.c: Merge generic sharing changes missed earlier.
7133
7134         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
7135
7136         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
7137         shared patches. Process METHODCONST as a shared patch.
7138
7139         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
7140         as it crashes on the 2.0 mscorlib.
7141
7142         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
7143         to cause crashes.
7144         
7145         * aot-compiler.c: Use is_plt_patch () in a few additional places.
7146         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
7147         by IMT.
7148
7149         * aot-compiler.c: Reorganize the got handling code to be a bit more
7150         understandable.
7151
7152 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7153
7154         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
7155         mono_patch_info_equals/hash, and use it to massively simplify
7156         get_plt_index ().
7157
7158         * mini.c (mono_patch_info_hash): Simplify this and add support for
7159         more patch types.
7160
7161         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
7162
7163         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
7164         handling code, since an offset is not enough to identify a trampoline.
7165
7166         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
7167
7168 2008-08-17  Mark Probst  <mark.probst@gmail.com>
7169
7170         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
7171
7172         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
7173
7174         * mini-ops.h: Argument and result types for OVF_CARRY ops.
7175
7176         * decompose.c: PPC decompositions for various ops.
7177
7178         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
7179
7180 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7181
7182         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
7183         call the generic trampoline code using a call, instead of a jump, to
7184         remove some special casing from the generic trampoline code.
7185
7186         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
7187         (mono_codegen): Ditto.
7188
7189         * aot-compiler.c aot-runtime.c: Ditto.
7190
7191         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
7192
7193         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
7194         helper function to find the offset corresponding to a lazy fetch trampoline.
7195
7196         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
7197         when doing generic sharing.
7198
7199         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
7200         places.
7201         
7202         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
7203         mini-trampolines.c to be with the other trampoline creation functions.
7204
7205         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
7206         as it is equal to method->signature in most cases, add a 
7207         mono_emit_method_call_full variant which takes a signature and an imt
7208         argument as well.
7209
7210 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
7211
7212         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
7213         to this function, since it could be computed easily from the method 
7214         argument.
7215         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
7216         more.
7217
7218         * method-to-ir.c mini.c: Remove references to 
7219         compile_generic_method_wo_context.
7220
7221         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
7222         generic method calls.
7223         
7224         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
7225         dimensional non-szarrays.
7226
7227         * mini.c (mini_init): Register mono_array_new_1.
7228
7229         * jit-icalls.c (mono_array_new_1): New jit icall.
7230
7231         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
7232         pointing to the method.
7233
7234         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
7235         method addresses belonging to METHOD_JUMP patches in the 
7236         jump_target_got_slot_hash.
7237         (mono_aot_load_method): Ditto.
7238
7239         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
7240         METHOD_JUMP patches.
7241
7242         * mini.c (mini_create_jit_domain_info): New helper function which 
7243         initializes/frees domain->runtime_info.
7244         (mini_free_jit_domain_info): Ditto.
7245         (mini_init): Install the domain hook functions with the runtime.
7246
7247         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
7248         information maintained by the JIT.
7249
7250         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
7251         insertion into jump_table_hash into mono_codegen (), also implement proper
7252         locking.
7253
7254         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
7255         tail calls, it is already done by the aot code.
7256         
7257         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
7258         mechanism on amd64.
7259
7260         * iltests.il.in: Make the jmp test a bit more complex.
7261
7262         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
7263         generic instances which doesn't have a token.
7264
7265         * aot-runtime.c (decode_method_ref): Ditto.
7266         
7267         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
7268         can handle this case now.
7269         (handle_box): Ditto.
7270
7271 2008-08-15  Geoff Norton  <gnorton@novell.com>
7272
7273         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
7274         debugging check.
7275
7276 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
7277
7278         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
7279         calling generic methods.
7280
7281         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
7282
7283         * aot-runtime.c (decode_patch_info): Ditto.
7284
7285         * mini.c (mono_resolve_patch_target): Ditto.
7286         
7287         * patch-info.h: Add METHOD_RGCTX.
7288
7289         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
7290
7291 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
7292
7293         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
7294         arguments in registers.
7295
7296         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
7297         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
7298
7299         * mini.c (mini_method_compile): Abort aot compilation for generic
7300         methods if generic sharing is disabled.
7301         
7302         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
7303         an mrgctx.
7304
7305         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
7306         requiring an mrgctx.
7307
7308         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
7309         store instructions when converting a vcall to a normal call.
7310
7311         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
7312         mono_arch_find_jit_info.
7313
7314 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
7315
7316         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
7317         avoid calling mono_method_full_name () for every method even if the
7318         env var is not set.
7319         (check_inline_caller_method_name_limit): Ditto.
7320
7321 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7322
7323         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
7324         assemblies in one run.
7325
7326         * aot-compiler.c (mono_compile_assembly): Only print out a count of
7327         skipped methods if it is not 0.
7328
7329         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
7330
7331 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7332
7333         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
7334           MONO_ARCH_HAVE_UNWIND_TABLE.
7335
7336         Contributed under MIT/X11 license.
7337
7338 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7339
7340         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
7341           from default optimizaton list on Winx64.
7342
7343         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
7344
7345         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
7346           the LMF from the MonoJitTlsData structure.
7347
7348         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
7349
7350         Contributed under MIT/X11 license.
7351
7352 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7353
7354         * mini.c (sigsegv_signal_handler): Fix the build.
7355
7356         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
7357         assembly->aot_module.
7358
7359         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
7360         hash table. This simplifies and speeds up a lot of code, and fixes support
7361         for .netmodules.
7362
7363         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
7364         with the runtime.
7365
7366         * mini-exceptions.c: Ditto.
7367         
7368         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
7369         'native_offset' argument, since these are computed in the 
7370         mono_find_jit_info () function.
7371
7372         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
7373         is used by exceptions-ppc.c.
7374
7375         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
7376         mono_arch_find_jit_info ().
7377         
7378         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
7379         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
7380         generic code in mini-exceptions.c.
7381
7382 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
7383
7384         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
7385
7386         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
7387         
7388         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
7389         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
7390         called while holding the loader lock. Fixes #415608.
7391         (mono_aot_get_method_from_token_inner): Ditto.
7392
7393 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
7394
7395         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
7396         to reduce differences between this and the generic implementation in
7397         mini-exceptions.c.
7398         (ves_icall_get_frame_info): Ditto.
7399
7400         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
7401
7402         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
7403         longer neccesarry.
7404
7405         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
7406         mono_arch_get_call_filter () and make it non-static, for consistency with the
7407         other architectures.
7408
7409 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
7410
7411         * mini.c:
7412         * local-propagation.c:
7413         * mini-x86.c: Correct the name of arch defines.
7414
7415 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
7416
7417         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
7418         NO_EMULATE_LONG_SHIFT_OPS define.
7419
7420 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
7421
7422         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
7423         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
7424
7425         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
7426         MACH fixes. Merged from the 2.0 branch.
7427
7428         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
7429
7430         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
7431         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
7432
7433         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
7434
7435         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
7436         mono_marshal_get_native_wrapper () signature changes.
7437
7438 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
7439
7440         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
7441         conversion bug under arm.
7442
7443 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
7444
7445         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
7446
7447         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
7448         with overflow checking.
7449
7450 2008-08-05  Marek Habersack  <mhabersack@novell.com>
7451
7452         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
7453         to the genmdesc.pl file
7454
7455 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
7456
7457         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
7458         arg_array in the soft-float versions of the LOAD/STORE macros.
7459
7460         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
7461         implementation.
7462
7463         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
7464
7465 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
7466
7467         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
7468         a float HFA. Fixes #413621.
7469
7470 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
7471
7472         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
7473         frame_size to args_size. Fixes build.
7474
7475 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
7476
7477         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
7478         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
7479
7480         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
7481         the stack are not unaligned. Fixes #413247.
7482         
7483 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
7484
7485         * mini.c: update jitted methods performance counters.
7486
7487 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7488
7489         * mini-exceptions.c: increase the exceptions thrown performance
7490         counter in mono_handle_exception ().
7491
7492 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
7493
7494         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
7495         can work with netmodules.
7496
7497 2008-07-28  Geoff Norton  <gnorton@novell.com>
7498
7499         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
7500         regression tests.
7501
7502 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
7503
7504         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
7505         correct place.
7506
7507 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
7508
7509         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
7510           The float param registers and other param registers must be the 
7511           same index on Windows x64.
7512
7513         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
7514           ArgValuetypeAddrInIReg argument case.  Setting the argument
7515           op to OP_VTARG_ADDR (OP_REGOFFSET)).
7516
7517         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
7518           variable computed above as the copy length for arguments of storage
7519           type ArgValuetypeAddrInIReg.
7520
7521         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
7522           ArgValuetypeAddrInIReg argument case.  This case will rely on
7523           mono_arch_emit_outarg_vt to emit the correct code later in the process.
7524
7525         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
7526           a 32 byte stack allocation for all calls.  We will omit the adjustment for
7527           jump and tail call instructoins as they do not follow the typical call behavior.
7528
7529         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
7530           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7531           local variable and pass the local variable by reference to the called method.
7532
7533         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
7534           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
7535           of a struct is passed in a register it must be saved with the other
7536           volatile argument on the stack.
7537
7538         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
7539           frame pointer the stack adjustment value must be saved to the unwind 
7540           info structure.
7541
7542         Contributed under MIT/X11 license.
7543
7544 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
7545
7546         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
7547         which got lost in the merge.
7548
7549 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
7550
7551         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
7552         build.
7553
7554         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
7555         
7556         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
7557         icalls, since they won't be patched.
7558
7559         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
7560         different code sequence when running under valgrind to prevent some valgrind
7561         errors.
7562
7563         * iltests.il.in: Add new regression test.
7564
7565         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
7566         end with a throw.
7567
7568         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
7569         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
7570
7571         * iltests.il.in: Add new test.
7572
7573         * aot-compiler.c: Fix some warnings.
7574
7575         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
7576         Fixes #412494.
7577
7578 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
7579
7580         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
7581         (mini_usage_jitdeveloper): Add a missing --wapi option.
7582
7583 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7584
7585         * mini-codegen.c: Simplify the is_fp macros.
7586         (free_up_ireg): Remove, use free_up_reg instead.
7587         (free_up_reg): Fix the fp case.
7588
7589 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
7590
7591         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
7592         lowered earlier.
7593
7594         * exceptions-x86.c: Merge some changes which seemed to have got lost
7595         in the linear-ir merge.
7596
7597         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
7598
7599         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
7600         long vreg volatile even if the variable was already created.
7601
7602         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
7603         volatile variables.
7604
7605 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
7606
7607         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
7608
7609         * mini.c (mono_jit_compile_method_inner): Add support for 
7610         MONO_EXCEPTION_BAD_IMAGE.
7611
7612         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
7613         mini_method_get_context () returns NULL. Fixes #356531.
7614
7615         * mini.c (mono_method_to_ir): Ditto.
7616         
7617         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
7618         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
7619
7620 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7621
7622         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
7623         in the LDFTN implementation.
7624
7625 2008-07-25  Mark Probst  <mark.probst@gmail.com>
7626
7627         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
7628         code, patch calls to icalls, too, even if they're not in the
7629         shared generic code hash.  Fixes #411962.
7630
7631 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7632
7633         * cpu-x86.md: Increase the length of the fcall opcodes.
7634
7635         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
7636         calls returning floats.
7637
7638         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
7639         on NEWARR.
7640         
7641         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
7642         missed earlier.
7643
7644         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
7645         into the domain->method_code_hash.
7646
7647         * aot-compiler.c: Fix win32 build.
7648
7649         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
7650         
7651         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
7652         gshared NEWARR implementation.
7653
7654         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
7655
7656         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
7657         can be used outside of method_to_ir.
7658
7659         * mini.h (MonoCompile): Add arg_types field.
7660
7661         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
7662         
7663         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
7664         the values of the local arg_array and param_types array.
7665
7666 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
7667
7668         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
7669         got accesses might only get generated later when NEWOBJ is decomposed.
7670         
7671         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
7672         looking up the native code of the target method when a delegate is called
7673         for the first time.
7674
7675         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
7676         optimization.
7677
7678         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
7679
7680         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
7681         AOT work on platforms without a working dlsym implementation.
7682
7683         * mini.h: Bump AOT image format version.
7684         
7685 2008-07-24  Mark Probst  <mark.probst@gmail.com>
7686
7687         * mini-exceptions.c: Free a MonoType with
7688         mono_metadata_free_type() instead of g_free().
7689
7690         * aot-runtime.c: Free a MonoType.
7691
7692 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
7693
7694         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
7695         optimization.
7696
7697         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
7698         fp stack on x86.
7699
7700 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
7701         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
7702         profiler hook.
7703
7704 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
7705
7706         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
7707         NEWOBJ calls on valuetypes.
7708
7709         * iltests.il.in: Add new test.
7710
7711         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
7712
7713 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
7714
7715         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
7716         is no longer needed.
7717
7718         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
7719         non register sized integer arguments.
7720         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
7721         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
7722         emit_memcpy2 ().
7723
7724         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
7725         CEE_MONO_RETOBJ.
7726         
7727         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
7728         two a binop with different sized arguments is emitted.
7729
7730         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
7731         instruction in the ins==NULL case.
7732
7733 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
7734
7735         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
7736
7737         * mini-x86.c: Fix osx build.
7738
7739         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
7740         opcodes as well.
7741
7742         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
7743         instruction for non int sized variables.
7744
7745         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
7746         implementation.
7747
7748 2008-07-23  Robert Jordan  <robertj@gmx.net>
7749
7750         * method-to-ir.c: Fix MSVC build.
7751
7752 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
7753
7754         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
7755         a non int sized type, widen it to an int since newer versions of gcc seem to
7756         generate code which needs this.
7757
7758         * ssa2.c abcremoval2.c: Fix warnings.
7759
7760         * *: Merge the Linear IR branch.
7761
7762         The original branch is at trunk/branches/vargaz/mini-linear-il, and
7763         the ChangeLog file there describes all the changes done over the years. 
7764         Further documentation can be found at www.mono-project.com/Linear_IL.
7765
7766 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
7767
7768         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
7769           The float param registers and other param registers must be the 
7770           same index on Windows x64.
7771
7772         Contributed under MIT/X11 license.
7773
7774 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
7775
7776         * mini.c: Make the previous fix GC safe.
7777
7778 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
7779
7780         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
7781
7782 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
7783
7784         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
7785           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
7786           ArgValuetypeAddrInIReg instead.
7787
7788         Contributed under MIT/X11 license.
7789
7790 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
7791
7792         * mini-codegen.c (get_register_spilling): Fix a warning.
7793
7794 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
7795
7796         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
7797         for types which the initialization fails. Raises the provided exception
7798         at the right stop after cleanup.
7799
7800 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
7801
7802         * aot-compiler.c: Free most of the memory allocated during compilation.
7803
7804         * mini.c (mini_parse_debug_options): Fix a leak.
7805         
7806         * mini.c (mini_method_compile): Don't add the method to the jit info tables
7807         during aot compilation.
7808
7809 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
7810
7811         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
7812         it has too much register pressure.
7813
7814 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
7815
7816         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
7817
7818 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7819
7820         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7821         on x86.
7822
7823         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
7824         on amd64 similar to the way it is done on arm.
7825
7826         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
7827
7828         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
7829         consistency, normalize error messages, avoid loading aot-only modules in
7830         normal mode.
7831
7832         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
7833         for consistency.
7834
7835         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
7836
7837 2008-07-11  Martin Baulig  <martin@ximian.com>
7838
7839         * debug-debugger.h
7840         (MonoDebuggerInfo): Add `interruption_request'.
7841
7842 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7843
7844         * aot-compiler.c (emit_plt): Remove some dead code.
7845
7846         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
7847
7848         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
7849         return the plt info offset belonging to a given plt entry.
7850
7851         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
7852         mono_aot_get_plt_info_offset.
7853         
7854         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
7855         similar to the amd64 code by makeing jumps through a separate jump table 
7856         instead of embedding the jump addresses into the code.
7857
7858 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
7859
7860         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
7861         method.
7862
7863 2008-07-10  Martin Baulig  <martin@ximian.com>
7864
7865         * mini.c (mini_method_compile): Disable generics sharing when
7866         running in the debugger.
7867
7868 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7869
7870         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
7871
7872         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
7873         the local register allocator from running out of registers on x86 when 
7874         using aot.
7875
7876 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
7877
7878         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
7879         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
7880         C4146.
7881
7882         Contributed under MIT/X11 license.
7883
7884 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
7885
7886         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
7887         speed up the assembler.
7888
7889 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7890
7891         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
7892         support.
7893
7894         * mini.c: Move the soft float handling macros a bit earlier, add 
7895         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
7896         place.
7897
7898         * mini.h: Add prototype for mono_arch_fixup_jinfo.
7899
7900         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
7901         read-only to help catch code allocation requests.
7902         
7903         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
7904         and turn it off when using --aot-only or when compiling with --aot=full.
7905
7906         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
7907         jump table for switches from the normal domain mempool, not the code
7908         manager.
7909
7910         * mini-trampolines.c (get_unbox_trampoline): New function to return an
7911         unbox trampoline which handles aot-only mode too.
7912
7913         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
7914         an AOTed unbox trampoline.
7915
7916         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
7917
7918 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7919
7920         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
7921         ""
7922
7923         Contributed under MIT/X11 license.
7924
7925 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
7926
7927         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
7928           the unwind information for the method at the end of the allocated block.
7929           
7930         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
7931           MonoCompileArch to hold the unwind info for SEH on Winx64
7932         
7933         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
7934           frame pointer info for the method being compiled.
7935           
7936         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
7937           the call to mono_exception_from_token.
7938           
7939         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
7940           storing the method prolog information in a format that the Winx64 SEH can understand.  This
7941           information is stored a the end of the method block because it is all 32-bit offset based.
7942
7943         Contributed under MIT/X11 license.
7944
7945 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
7946
7947         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
7948
7949         * wapihandles.c: Fix warnings.
7950
7951         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
7952         mode.
7953
7954         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
7955         mono_jit_compile_method in aot-only mode since that calls the type 
7956         initializer.
7957         
7958         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
7959         get_delegate_invoke_impl in aot-only mode.
7960
7961         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
7962
7963 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
7964
7965         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
7966
7967         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
7968         is on by default.
7969
7970         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
7971
7972         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
7973         init trampoline from the AOT file as well.
7974
7975         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
7976         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
7977         code.
7978
7979         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
7980         mono_init.
7981
7982         * exceptions-amd64.c: Add _full variants for the remaining exception code
7983         creation functions as well, allow emission of relocatable code, remove
7984         caching since that is now done by the caller.
7985
7986         * mini-exceptions.c: Add _full variants for the remaining exception code
7987         creation functions as well, add aot-only support.
7988
7989         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
7990         if we can determine a proper token for them.
7991         (add_wrappers): Add a few more wrappers.
7992         (emit_method_code): Remove some dead code.
7993         (emit_trampolines): Emit exception code too.
7994
7995         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
7996
7997         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
7998         mono_array_new_va which avoids varargs.
7999
8000         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
8001
8002         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
8003         mono_arch_create_specific_trampoline () in all places.
8004
8005         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
8006         a bit so it can be used for other things as well.
8007         
8008         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
8009         on demand as well.
8010
8011         * exceptions-amd64.c: Rename the caching from the exception code creation
8012         functions, it is done by the caller instead.
8013         
8014         * exceptions-amd64.c: Change the signature of the exception code creation 
8015         functions to allow the creation of relocatable code later.
8016
8017         * mini-exceptions.c: Add a set of functions to query the various 
8018         runtime-generated exception functions.
8019
8020         * mini.c mini-exceptions.c: Use the newly added functions instead of the
8021         mono_arch_.. () functions.
8022         
8023 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8024
8025         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
8026
8027         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
8028
8029         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
8030         (mini_get_vtable_trampoline): Ditto.
8031
8032         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
8033         code in the AOT case by returning the code size and a list of relocations to
8034         the caller.
8035
8036         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
8037
8038 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
8039
8040         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
8041           clean the stack.
8042
8043         Contributed under MIT/X11 license.
8044
8045 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8046
8047         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
8048         so the buffer size can be computed correctly. Fixes #404735.
8049
8050         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
8051         normally as cfg->debug_info is already freed.
8052
8053 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
8054
8055         * mini-amd64.c: For calls returning vtypes in registers, don't store
8056         the return address on the stack, instead allocate a separate local for
8057         it. Fixes #404729.
8058
8059 2008-07-05  Mark Probst  <mark.probst@gmail.com>
8060
8061         * mini-trampolines.c, mini.h: Add an argument to
8062         mono_create_jit_trampoline_in_domain() for turning off the adding
8063         of the sync wrapper.
8064
8065         * mini.c: Use the JIT trampoline without sync instead of
8066         ldftn_nosync in static RGCTX invoke wrappers so that the call can
8067         be patched.
8068
8069 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8070
8071         * driver.c: Turn on GSHARED optimization by default.
8072
8073 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
8074
8075         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
8076         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
8077
8078         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
8079         create a variant of the generic trampoline code callable from AOTed trampolines.
8080
8081         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
8082         trampoline code callable from AOTed trampolines.
8083
8084         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
8085
8086 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8087
8088         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
8089         pass-through manner.
8090
8091         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
8092         and don't fail sharing for them anymore.
8093
8094         * mini-exceptions.c: Handle exceptions in shared generic methods.
8095
8096         * generic-sharing.c: When checking the context of a generic
8097         method, also check its class's context.  Don't treat wrappers as
8098         sharable.
8099
8100         * mini-trampolines.c: Some code factored out to
8101         metadata/generic-sharing.c.  Handle the MRGCTX case.
8102
8103         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
8104         we must deal with the method being of another instantiation of the
8105         class.  Add static rgctx invoke wrappers to generic methods.
8106
8107 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8108
8109         * mini.c: Provide all jit infos of generic shared methods with a
8110         generic jit info.
8111
8112         * mini-exceptions.c: Handle the new situation that a generic info
8113         might be available, but not info about the this/vtable/mrgctx
8114         variable.
8115
8116 2008-07-03  Mark Probst  <mark.probst@gmail.com>
8117
8118         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
8119         generic methods.
8120
8121 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
8122
8123         * dominators.c (check_dominance_frontier): Fix a warning.
8124
8125         * mini.h: Add some missing prototypes.
8126
8127         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
8128
8129         * driver.c (mono_jit_init_version): Correct the comments since the first
8130         argument should be the name of the root domain, not a filename.
8131
8132         * aot-runtime.c (make_writable): Error out if this is called while running
8133         with --aot-only.
8134         (load_aot_module): Ditto.
8135
8136         * aot-compiler.c: Really fix the computation of method indexes.
8137
8138         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
8139         optimizations as this is no longer called frequently.
8140
8141         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
8142         method and the invoke impl code and pass it to the delegate trampoline instead of
8143         just the delegate class.
8144
8145 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
8146
8147         * aot-compiler.c: Fixup the computation of method indexes.
8148         (add_wrappers): Create the base methods of the runtime invoke wrappers using
8149         the method builder infrastructure.
8150
8151         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
8152         has no header.
8153
8154         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
8155         mode, load the method right away instead of creating a trampoline.
8156
8157         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
8158
8159         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
8160         some checks a bit.
8161
8162 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
8163
8164         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
8165         (mono_aot_load_method): Use method_index instead of method->token.
8166
8167         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
8168         can handle icalls etc. properly.
8169
8170         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8171
8172         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
8173
8174         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
8175         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
8176         JIT_ICALL_ADDR patch type.
8177
8178         * patch-info.h: Add JIT_ICALL_ADDR patch type.
8179
8180         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
8181         request flag.
8182         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
8183
8184         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
8185
8186 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
8187
8188         * mini.c: Use domain->jit_code_hash_lock for controlling access to
8189         domain->jit_code_hash.
8190
8191 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
8192
8193         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
8194
8195 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
8196
8197         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
8198         get_this_arg_from_call, let it compute it when needed.
8199
8200         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
8201         gsctx from code only when needed.
8202
8203         * mini-trampolines.c (get_generic_context): Rename this to 
8204         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
8205         it can be called by the arch backends.
8206
8207         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
8208
8209 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
8210
8211         * driver.c (mono_main): Add experimental --aot-only command line option.
8212
8213         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
8214         set.
8215
8216 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
8217
8218         * driver.c (DllMain): Remove mono_module_handle.
8219
8220         Contributed under MIT/X11 license.
8221
8222 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
8223
8224         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
8225         for emitting methods which are not in the source assembly. Detect and report
8226         failure of assembling+linking.
8227         
8228         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
8229
8230         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
8231
8232 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
8233
8234         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
8235
8236 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
8237
8238         * mini.h: Remove some obsolete prototypes.
8239
8240         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
8241
8242 2008-06-24  Mark Probst  <mark.probst@gmail.com>
8243
8244         * mini.c (get_object_generic_inst): Variable-sized arrays are not
8245         supported by Visual Studio, so use alloca().
8246
8247 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
8248
8249         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
8250         Fixes #402585.
8251
8252 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8253
8254         * mini.c: Fail sharing of a generic method if it contains an open
8255         catch clause (because we don't pass MRGCTXs yet).
8256
8257 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8258
8259         * mini.c: When compiling a method with generic sharing, insert the
8260         method instantiated with an all-Object generic context into the
8261         jit info table, instead of the context of the first instantiation
8262         of the method we happen to compile.
8263
8264 2008-06-18  Martin Baulig  <martin@ximian.com>
8265
8266         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
8267         `major_version' and `minor_version'.
8268
8269 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8270
8271         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
8272         mono_method_is_generic_sharable_impl() takes an additional
8273         argument specifying whether to treat type variables as reference
8274         types.
8275
8276 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8277
8278         * mini.h: Removed obsolete prototypes.
8279
8280 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8281
8282         * mini.c: Don't fail generic sharing for initobj and sizeof - we
8283         already handle them.
8284
8285 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8286
8287         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
8288         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
8289         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
8290         tramp-x86.c: Added a MonoGenericContext* argument to
8291         mono_arch_get_unbox_trampoline() so that it can call other
8292         functions which require it.
8293
8294 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8295
8296         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
8297         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
8298         mono_arch_get_this_arg_from_call() takes a
8299         MonoGenericSharingContext* as well.
8300
8301 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8302
8303         * mini.c: Factor out code for emitting unbox into emit_unbox() and
8304         implement generic sharing of unbox.
8305
8306 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8307
8308         * mini.c: Don't compute the vtable to determine whether a field is
8309         special static, because it might not work for open types.
8310
8311 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8312
8313         * mini.c: Removed the unused token_type and token_source arguments
8314         from get_runtime_generic_context_ptr().
8315
8316 2008-06-17  Marek Habersack  <mhabersack@novell.com>
8317
8318         * mini.c (ADD_BINOP): fix the build
8319
8320 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
8321
8322         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
8323         a widening op.
8324
8325 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8326
8327         * mini.h: Removed class relations enum that's not used anymore.
8328
8329 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8330
8331         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
8332
8333         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
8334         the lazy fetch trampoline access code.
8335
8336 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
8337
8338         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
8339
8340 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
8341
8342         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
8343
8344         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
8345
8346         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
8347
8348 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8349
8350         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
8351         intrinsics.
8352
8353         * mini-ops.h: Add MIN/MAX_UN opcodes.
8354
8355         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
8356         intrinsics.
8357
8358         * basic-math.cs: Add more min/max tests.
8359
8360         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
8361
8362 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8363
8364         * mini.c: Small fix in the prologue of emit_castclass.
8365
8366 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8367
8368         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
8369
8370         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
8371         do not work even for unsigned types. Fixes #400014.
8372
8373         * basic-math.cs: Add regression tests for unsigned Min/Max.
8374
8375 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8376
8377         * mini.c: Added additional context_used argument to several
8378         functions, which will be needed for sharing generic methods.  Use
8379         GET_RGCTX macro wherever appropriate.  Declare only one
8380         context_used in mono_method_to_ir().
8381
8382 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8383
8384         * mini.c, generic-sharing.c: Removed generic class relations.
8385
8386         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
8387         functions due to MRGCTX changes.
8388
8389 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8390
8391         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
8392         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
8393         with calculated IMT.
8394
8395         * mini.c: Generic sharing of calls via generic interfaces.
8396
8397         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
8398         generic method with non-constant MonoGenericContext*.  Instead,
8399         the context is taken out of the method itself.
8400
8401 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8402
8403         * mini.c: Generic sharing of ldvirtftn.
8404
8405 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8406
8407         * mini.c: Generic sharing of ldftn.
8408
8409 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8410
8411         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
8412
8413 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8414
8415         * mini.c: Generic sharing of the special case of ldtoken followed
8416         by a call to GetTypeFromHandle.
8417
8418 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8419
8420         * mini.c: Generic sharing of box for nullable types.
8421
8422 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8423
8424         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
8425         are passed on the stack. Fixes #324807.
8426
8427 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
8428
8429         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
8430         for the ArgValuetypeAddrInIReg case.
8431
8432         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
8433         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
8434
8435         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
8436         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8437         local variable and pass the local variable by reference to the called method.
8438           
8439         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
8440         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
8441
8442         Contributed under MIT/X11 license.
8443
8444 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
8445
8446         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
8447
8448         * debug-mini.c (mono_debug_print_vars): Release memory after printing
8449         everything.
8450
8451 2008-06-10  Martin Baulig  <martin@ximian.com>
8452
8453         * debug-mini.c
8454         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
8455
8456 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
8457
8458         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
8459         possible error when no arguments are passed.
8460
8461         Contributed under MIT/X11 license.
8462
8463 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
8464
8465         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
8466         where the file name is NULL.
8467
8468 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
8469
8470         * mini.c: Fix s390 build.
8471
8472 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
8473
8474         * trace.c (mono_trace_parse_options): Fix warnings.
8475
8476         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
8477
8478 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
8479
8480         * mini.c (remove_block_if_useless): Avoid printing the method name.
8481         
8482         * mini.c: Remove needless setting of ins->cil_code which is now done by 
8483         MONO_INST_NEW.
8484
8485         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
8486         LMF. Not yet used.
8487
8488         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
8489         translated code after it has been patched.
8490
8491 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
8492
8493         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
8494         avoid problems during code patching on SMP systems.
8495         (emit_call): Avoid adding a patch info which is already added by 
8496         emit_call_body.
8497         (mono_arch_emit_exceptions): Ditto.
8498
8499 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
8500
8501         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
8502         MONO_TYPE_ISSTRUCT already checks for it.
8503
8504 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
8505
8506         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
8507           structs with floats on Winx64 the float registers are not used.  
8508           The integer registers are always used..
8509         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
8510           only one register will be used and only if the size of the struct 
8511           is 1,2,4, or 8 bytes.
8512
8513         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
8514           to work for Winx64.
8515
8516         Contributed under MIT/X11 license.
8517
8518 2008-06-05  Martin Baulig  <martin@ximian.com>
8519
8520         * debug-debugger.c (debugger_lookup_class): Also call
8521         mono_class_setup_methods() here; we're only called from RTI.
8522
8523 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
8524
8525         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
8526         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
8527         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
8528         Post-process object files and add dtrace-generated object, if necessary.
8529
8530         Contributed under MIT/X11 license.
8531
8532 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8533
8534         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
8535         element class.
8536
8537         * mini.c: Generic sharing for unbox.any and castclass.
8538
8539 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8540
8541         * mini.c: Ignore tailcall prefix in shared generic code and when
8542         doing calls which require a vtable/rgctx argument.
8543
8544 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8545
8546         * mini.c: Don't free the JIT info.
8547
8548         * driver.c: Changes in the JIT info table testing code.
8549
8550 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
8551
8552         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
8553         interruption. Fix some warnings.
8554
8555         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
8556         interruption_checkpoint.
8557
8558 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
8559
8560         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
8561         from embedding applications.
8562
8563 2008-06-02  William Holmes  <billholmes54@gmail.com>
8564
8565         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
8566           reserving 32 bytes on the stack when making calls. 
8567
8568         Contributed under MIT/X11 license.
8569
8570 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
8571
8572         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
8573         the linear IL branch.
8574
8575         * driver.c: Print out more information for --version on arm.
8576
8577 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
8578
8579         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
8580         bb_exit instead, since out of line bblocks might not actually be emitted
8581         out-of-line.
8582         
8583         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
8584         maximum epilog size for out of line bblocks if tracing is enabled.
8585
8586         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
8587
8588 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
8589
8590         * arrays.cs: Regression tests for allocating arrays with negative sizes.
8591
8592 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
8593
8594         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
8595         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
8596         opcodes.
8597
8598 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
8599
8600         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
8601         the 'value' to store is a constant.
8602
8603         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
8604
8605         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
8606         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
8607
8608 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
8609
8610         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
8611         for accessing method->generic_container.
8612
8613 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
8614
8615         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
8616         
8617         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
8618
8619         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
8620
8621         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
8622         fails.
8623
8624 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
8625
8626         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
8627
8628         * mini.c: Handle the case when mono_class_vtable () fails.
8629
8630 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
8631         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
8632         the stat profiler.
8633
8634 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8635
8636         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
8637         together with domain sharing.
8638
8639 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8640
8641         * mini.c: Treat callvirts to final methods like non-virtual calls
8642         when doing generic sharing, i.e. look them up in the runtime
8643         generic context.
8644
8645 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8646
8647         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
8648         with computed types (for generic sharing).
8649
8650         * mini.c: Generic sharing for mkrefany and refanyval.
8651
8652 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
8653
8654         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
8655         possible.
8656
8657         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
8658         the generic sharing code.
8659         
8660         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
8661         when needed.
8662
8663 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
8664
8665         * mini.h: Remove the declaration of mono_aot_init_vtable ().
8666
8667 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
8668
8669         * driver.c: updated copyright date
8670
8671 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
8672
8673         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
8674         needed.
8675
8676 2008-05-19  Martin Baulig  <martin@ximian.com>
8677
8678         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
8679         pointing to the new `_mono_debug_using_mono_debugger' variable.
8680
8681         * driver.c
8682         (mono_main): Check mono_debug_using_mono_debugger() rather than
8683         the `MONO_INSIDE_MDB' environment variable to check whether we're
8684         inside the debugger.
8685
8686 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
8687
8688         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
8689         argument.
8690
8691 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
8692
8693         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
8694
8695         * mini.c: Added mini_assembly_can_skip_verification. This
8696         function checks if the assembly requested to skip verification. 
8697         Fixes part of #387274.
8698
8699 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
8700
8701         * mini.c (mini_get_method): Disable the check for open generic classes when
8702         using generic sharing.
8703
8704         * generics.cs: Add a test for #387034.
8705
8706         * mini.c (mini_get_method): Check whenever the method class is an open generic
8707         type, and return NULL in that case, causing a verification error. Fixes
8708         #384123.
8709
8710 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8711
8712         * driver.c (mono_main): Revert r102623. The right
8713         thing to do is to enable the verifier under verifiable
8714         unless a --security flag was passed.
8715
8716         We need this non-trivial behavior for --verify-all otherwise
8717         mcs-compileall won't be able to use it. As it needs everything to
8718         be verified under validil.
8719
8720 2008-05-06  Martin Baulig  <martin@ximian.com>
8721
8722         Fix #383749.
8723
8724         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
8725         (mono_debugger_thread_cleanup): Likewise.
8726         (mono_debugger_extended_notification): Likewise.
8727
8728 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8729
8730         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
8731         against both inflated and non-inflated methods. We need to check against the
8732         generic definition for cases where the instantiated method is not visible.
8733         We need to check against the inflated types for cases where the instantiation
8734         changes any super type. This fixes #382986.
8735
8736         Note that this doesn't need to be applied to other parts of mono_method_to_ir
8737         that check for visibiliy as generic params only appears as the type subject
8738         of tokens on call opcodes. Field manipulation and ldftn must always
8739         target an exact type.
8740
8741 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
8742
8743         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
8744         if no related --security flag is passed.
8745
8746 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8747
8748         * mini-arch.h: Prepare support for ppc64.
8749
8750         Contributed under MIT/X11 license.
8751
8752 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8753
8754         * aot-runtime.c: Prepare support for ppc64.
8755
8756         Contributed under MIT/X11 license.
8757
8758 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
8759
8760         * mini-ops.h: Prepare support for ppc64.
8761
8762         Contributed under MIT/X11 license.
8763
8764 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
8765
8766         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
8767
8768         Contributed under MIT/X11 license.
8769
8770 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
8771
8772         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
8773         assemblies, since aot_name is not a full path, causing us to load MS.NET 
8774         assemblies on windows.
8775
8776 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
8777
8778         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
8779         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
8780         * main.c: Use UTF-8 encoded command line instead of Windows default code
8781         page on Windows to support Unicode.
8782         * driver.c (DllMain): New function for mixed-mode assembly support.
8783         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
8784         export __stdcall functions without decoration.
8785
8786         Contributed under MIT/X11 license.
8787
8788 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8789
8790         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
8791         saving it very early.
8792
8793 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8794
8795         * mini.h, mini.c: Lots of code for accessing the old RGCTX
8796         deleted.  The only way to access the new RGCTX is via the
8797         trampline.
8798
8799         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
8800         vtable instead of the RGCTX to static methods.
8801
8802         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
8803         accessing the new RGCTX.
8804
8805         * generic-sharing.c: There is no separation between self, type
8806         arguments and other types in the RGCTX anymore.
8807
8808 2008-04-25  Jonathan Chambers <joncham@gmail.com>
8809
8810         * mini-amd64.c (add_general): Remove previous stack adjustment.
8811         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
8812         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
8813         for 32 bytes of stack space reserved for all calls.
8814         
8815         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
8816         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
8817         adjustment.
8818         
8819         Code contributed under MIT/X11 license.
8820
8821 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
8822
8823         * mini.c (mini_method_verify): Only verify non-inflated methods, check
8824         against the root definition, peeling out method and type instantiations.
8825         Cache verify success results, code that fails verification is still
8826         checked multiple times.
8827
8828 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
8829
8830         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
8831
8832 2008-04-23  Jonathan Chambers <joncham@gmail.com>
8833
8834         * mini-amd64.c (add_general): Always increment stack on Win64.
8835         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
8836         on Win64.
8837         
8838         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
8839         stack based argument handling on Win64.
8840         
8841         Code contributed under MIT/X11 license.
8842
8843 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
8844
8845         * Makefile.am (version.h): Add support for git-svn.
8846
8847 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
8848
8849         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
8850         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
8851         avoiding allocations and libc functions which might deadlock.
8852         
8853         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
8854         'no-gdb-backtrace' option is set.
8855
8856         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
8857
8858         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
8859
8860 2008-04-21  Martin Baulig  <martin@ximian.com>
8861
8862         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
8863         and `get_lmf_addr'; `notification_address' is no longer a pointer.
8864
8865 2008-04-21  Martin Baulig  <martin@ximian.com>
8866
8867         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
8868         `thread_vtable', `event_handler_ptr' and `event_handler'.
8869
8870 2008-04-21  Martin Baulig  <martin@ximian.com>
8871
8872         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
8873         allows delayed initialization of the `executable_code_buffer' when
8874         attaching.
8875
8876 2008-04-21  Martin Baulig  <martin@ximian.com>
8877
8878         * mini.h (mono_debugger_create_notification_function): Removed.
8879         * tramp-*.c (mono_debugger_create_notification_function): Removed.
8880
8881         * mdb-debug-info64.s
8882         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8883
8884         * mdb-debug-info32.s
8885         (MONO_DEBUGGER__notification_function): Added this in the .text section.
8886
8887         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
8888         currently only works on x86 and x86_64, so don't create it on ppc.
8889
8890 2008-04-21  Martin Baulig  <martin@ximian.com>
8891
8892         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
8893
8894         * mini.c
8895         (mini_method_compile): In the fp elimination check, check
8896         `debug_options.mdb_optimizations' in addition to
8897         mono_debug_using_mono_debugger().       
8898
8899         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
8900         disable some JIT optimizations which are only disabled when
8901         running inside the debugger.
8902         Added `--help-debug' option to describe the debugging options.
8903         (parse_debug_options): New static function to parse the `--debug'
8904         options, so we can easily add more stuff in future.
8905
8906 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
8907
8908         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
8909         the method has no body.
8910
8911 2008-04-19  Jonathan Chambers <joncham@gmail.com>
8912
8913         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
8914         assembly is not allowed in MSVC 64-bit compiler. 
8915         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
8916         as we get floating point exceptions everywhere.
8917         
8918         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
8919         correctly align arguments for call to throw_exception.
8920         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
8921         
8922         Code contributed under MIT/X11 license.
8923
8924 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
8925
8926         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
8927
8928 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
8929
8930         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
8931
8932         * mini-amd64.c (NEW_INS): Set cil_code.
8933
8934         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
8935         from mini-amd64.c so all debugger related logic is in one place.
8936
8937         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
8938         later won't have a random ip assigned to them.
8939
8940 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
8941
8942         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
8943         the arch specific function initializes code_size.
8944         (mono_create_delegate_trampoline): Ditto.
8945
8946         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
8947         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
8948         platforms.
8949
8950         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
8951         running under the debugger.
8952
8953         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
8954         debugger.
8955
8956         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
8957         debugger. Also move the disabling of optimizations here from driver.c.
8958         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
8959         debugger.
8960
8961         * mini.h (MonoCompile): Add a few new flags.
8962
8963 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
8964
8965         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
8966         so the cil_code field of created MonoInst's is properly set.
8967         (mini_select_instructions): Ditto.
8968
8969         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
8970         (MONO_INST_NEW_CALL): Ditto.
8971
8972         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
8973         in many places so the ins->cil_code field is properly initialized.
8974
8975         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
8976         place.
8977
8978 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
8979
8980         * mini.c (mini_method_compile): Print a different message when compiling a 
8981         shared method.
8982         
8983         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
8984         > 1.
8985
8986 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8987
8988         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
8989         SSE2 instructions.
8990
8991         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
8992         
8993 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
8994
8995         * mini.c (handle_stack_args): Make this return void since its return value was
8996         never used. Also set cfg->unverifiable for invalid IL instead of calling
8997         G_BREAKPOINT ().
8998
8999 2008-04-10  Mark Probst  <mark.probst@gmail.com>
9000
9001         * mini.c: Make sure "this" is live in catch clauses with type
9002         variables in shared generic code.
9003
9004 2008-04-08  Mark Probst  <mark.probst@gmail.com>
9005
9006         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
9007         generic_class_is_reference_type() to ensure the proper behaviour
9008         when sharing generic code and the type in question is a type
9009         argument.
9010
9011 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9012
9013         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
9014         race conditions when printing thread dumps. Fixes #377738.
9015
9016 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
9017         
9018         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
9019         shows up when both MonoInst arguments can cause aliasig.
9020         There is likely no way in the current JIT to trigger this problem, but
9021         it showed up in the development of generics sharing, when in a new
9022         opcode both args of an OP_GROUP can be aliases (addresses of a local).
9023         When the generics sharing code will be committed, its tests will be
9024         valid also for this bug.
9025
9026 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9027
9028         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
9029         PATCH_INFO_METHOD.
9030
9031         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
9032         NULL.
9033
9034 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
9035
9036         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
9037         use a more detailed exception message for InvalidCastException.
9038
9039         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
9040
9041         * driver.c (mono_main): Add --debug=casts option to turn on better 
9042         InvalidCastException message details.
9043
9044         * mini.c (mini_get_debug_options): New helper function to return the address of
9045         the debug_options variable.
9046
9047         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
9048         the jit_tls TLS variable.
9049
9050         * mini.c (mono_jit_tls): New TLS variable.
9051
9052         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
9053         option is used.
9054
9055 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
9056
9057         * mini.h: Removed verifer related stuff. This code was moved to verify.c
9058
9059         * mini.c: Removed verifer related stuff, code moved to verify.c.
9060
9061         * driver.c: Using code from verify.c instead of mini.c.
9062
9063 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
9064
9065         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
9066         longer valid.
9067
9068 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
9069
9070         * mini.c (check_for_method_verify): Enabling verification of
9071         corlib if mono_verify_all is set. Bugs in the verifier preventing that
9072         have been fixed.
9073
9074 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
9075
9076         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
9077         caller saved registers as well.
9078         
9079         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
9080         saved registers as well.
9081
9082 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
9083
9084         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
9085
9086         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
9087         code.
9088
9089 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
9090
9091         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
9092         to get_call_info.
9093         (get_call_info): Take a gsctx argument instead of 'cfg'.
9094
9095 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
9096
9097         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
9098         mono_verify_all is set.
9099
9100         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
9101
9102         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
9103
9104 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
9105
9106         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
9107         an exception.
9108
9109         * driver.c mini.c mini.h: Add a --verify-all development option to test the
9110         verifier and the code generated by the compiler.
9111
9112 2008-03-25  Mark Probst  <mark.probst@gmail.com>
9113
9114         * mini.c: Generic sharing of the non-nullable case of the box
9115         instruction.
9116
9117 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
9118
9119         * inssel.brg: Fix the build.
9120
9121         * iltests.il.in: Add a test for lconv.ovf.u8.un.
9122
9123 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
9124
9125         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
9126         Array:Address. Fixes #372410.
9127
9128         * iltests.il.in: New tests for readonly prefix.
9129
9130 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
9131
9132         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
9133         mini-trampolines.c.
9134
9135         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
9136         mini-exceptions.c.
9137
9138         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
9139         
9140         * mini.c (mono_decompose_op_imm): New helper function.
9141
9142         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
9143         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9144         return value.
9145
9146         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9147         mono_arch_output_basic_block. Fix warnings.
9148
9149         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
9150         for now.
9151
9152 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
9153
9154         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
9155         since the extra frame is now detected automatically inside the loop.
9156
9157         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
9158         opts which are now in mono_peephole_ins ().
9159         
9160         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
9161
9162         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
9163         frames and skip duplicate managed-to-native frames. Fixes #367665.
9164
9165         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9166         opts which are now in mono_peephole_ins ().
9167         (mono_arch_peephole_pass_2): Ditto.
9168
9169         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
9170
9171         * mini-codegen.c (mono_peephole_ins): New helper function containing the
9172         arch independent peephole optimizations.
9173
9174         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9175         opts which are now in mono_peephole_ins ().
9176
9177         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
9178         
9179         * mini-s390.c (mono_arch_output_basic_block): Fix build.
9180
9181         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
9182         pattern.
9183
9184         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
9185         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
9186         opcode. 
9187
9188 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
9189
9190         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
9191         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9192         return value.
9193
9194         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9195         mono_arch_output_basic_block. Fix warnings.
9196
9197 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9198
9199         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9200         conv.ovf.u.un.
9201
9202 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9203
9204         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9205         conv.ovf.u.un.
9206
9207         * iltests.il: Add new tests.
9208
9209 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
9210
9211         * mini.c: Removed Windows version macros.
9212
9213 2008-03-20  Mark Probst  <mark.probst@gmail.com>
9214
9215         * generic-sharing.c: Put reflection types in the extensible part
9216         of the runtime generic context.
9217
9218         * mini.c: Generic sharing of the GetTypeHandle special case of the
9219         ldtoken instruction.
9220
9221 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9222
9223         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
9224
9225         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
9226         
9227         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
9228         consistency with the other version on the linear IR branch.
9229
9230         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
9231
9232         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
9233
9234         * iltests.il.in: Add new tests.
9235
9236 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
9237
9238         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
9239
9240         * iltests.il.in: Add new tests.
9241
9242 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9243
9244         * mini.c: Two variables with the same name were declared in
9245         nesting contexts and one wasn't initialized.  Fixed.
9246
9247 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9248
9249         * mini.c: Generic sharing of the initobj instruction.
9250
9251 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
9252
9253         * mini.c: make the test to optimize ldtoken from typeof() more
9254         precise.
9255
9256 2008-03-18  Mark Probst  <mark.probst@gmail.com>
9257
9258         * mini.c: Generic sharing of the initobj instruction for reference
9259         types.
9260
9261 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
9262
9263         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
9264         the mono_breakpoint_clean_code() code to perform bound checks.
9265
9266 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
9267
9268         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
9269         mono_arch_patch_callsite() to include the start of the managed method
9270         to be able to perform bound checks.
9271
9272 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9273
9274         * mini.c: Generic sharing for the isinst instruction.
9275
9276 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9277
9278         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9279         inssel-long32-mips.brg: Added opcodes for doing indirect calls
9280         with the runtime generic context argument.
9281
9282         * mini.c: Share calls to several types of unsharable methods by
9283         putting the address of the method code in the runtime generic
9284         context and doing an indirect call.
9285
9286         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9287         to switches.
9288
9289 2008-03-16  Mark Probst  <mark.probst@gmail.com>
9290
9291         * generic-sharing.c: Change due to a change in the runtime genric
9292         context API.
9293
9294 2008-03-15  Martin Baulig  <martin@ximian.com>
9295
9296         * tramp-x86.c
9297         (mono_arch_nullify_class_init_trampoline): Add call to
9298         mono_breakpoint_clean_code() to make things work when running
9299         inside the debugger.
9300
9301         * tramp-amd64.c
9302         (mono_arch_nullify_class_init_trampoline): Add call to
9303         mono_breakpoint_clean_code() to make things work when running
9304         inside the debugger.
9305
9306 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9307
9308         * inssel-long.brg (reg): Fix 64 bit build.
9309
9310 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9311
9312         * mini.c, mini.h: Share static generic code by passing it an
9313         implicit argument pointing to the runtime generic context.
9314
9315         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9316         inssel-long32-mips.brg: New opcodes for calling shared static,
9317         which need to be passed the runtime generic context.
9318
9319         * mini-amd64.c, mini-x86.c: Save the runtime generic context
9320         argument on the stack in the prologue if needed.  New function for
9321         finding the runtime generic context argument from the registers
9322         saved by the trampoline.
9323
9324         * mini-amd64.h, mini-x86.h: Specify which register to use for the
9325         runtime generic context argument.
9326
9327         * tramp-amd64.c: Also restore the register used for the runtime
9328         generic context argument.
9329
9330         * mini-trampoline.c: Resolve shared static calls by consulting the
9331         runtime generic context via the new argument.
9332
9333         * generic-sharing.c: Add an argument to sharability-checking
9334         functions that specifies whether type variables should be treated
9335         as sharable type arguments.
9336
9337         * inssel-x86.brg: Removed a superfluous, buggy rule.
9338
9339         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9340         to switches.
9341
9342 2008-03-14  Martin Baulig  <martin@ximian.com>
9343
9344         * debug-debugger.c (main_thread_handler): Call
9345         mono_runtime_run_main() without sending any notifications.
9346
9347         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
9348
9349 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9350
9351         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
9352
9353 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9354
9355         * tramp-x86.c: Fixed register restore offsets in the trampoline
9356         code for ECX and EDX.
9357
9358 2008-03-12  Geoff Norton  <gnorton@novell.com>
9359
9360         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
9361         different ucontext_t implementations.
9362         * exceptions-arm.c: Use the above defines to get exceptions working on 
9363         iPhone (based on a patch by Luke Howard lukeh@padl.com)
9364         * mini-arm.c: Implement iPhone icache support (based on a patch by
9365         Luke Howard lukeh@padl.com)
9366
9367 2008-03-12  Mark Probst  <mark.probst@gmail.com>
9368
9369         * mini.c: Enable generic sharing of calls to non-static
9370         non-interface non-generic non-value-type methods.
9371
9372         * mini-trampolines.c: Resolve calls from shared generic code.
9373
9374 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
9375
9376         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
9377
9378         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
9379
9380 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
9381
9382         * mini.c: some fixes for the AOT compiler.
9383
9384 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
9385
9386         * cpu-amd64.md: Add clob:1 to some float opcodes.
9387
9388 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
9389
9390         * mini.h: Added MiniVerifierMode enumeration.
9391
9392         * mini.c: Added mini_verifier_set_mode to control
9393         the usage of the new verifier.
9394
9395         * mini.c (mono_method): Integrated the new verifier.
9396
9397         * driver.c: Extended --security option with validil and
9398         verifiable options to activate the new verifier.
9399
9400 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
9401
9402         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
9403         optimization to ctors taking 0 or 2 arguments too.
9404
9405         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
9406         a bit.
9407
9408         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
9409
9410         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
9411
9412 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
9413
9414         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
9415         non-aot case as well.
9416
9417         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
9418
9419         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
9420         changes.
9421
9422         * aot-compiler.c (encode_patch): Ditto.
9423
9424         * mini.h (G_MININT32): Fix the definition of this.
9425
9426 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
9427
9428         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
9429
9430         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
9431
9432 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
9433
9434         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
9435         methods returning vtypes in registers.
9436         (mono_arch_allocate_vars): Ditto.
9437
9438         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
9439
9440         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
9441
9442         * generics.cs: Add a test from the linear IR branch.
9443
9444         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
9445
9446         * mini.c (inline_method): Cache failed inline attempts.
9447
9448 2008-03-04  Mark Probst  <mark.probst@gmail.com>
9449
9450         * mini.c: For shared methods of generic classes put the location
9451         of "this" into the MonoGenericJitInfo.
9452
9453         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
9454         register out of a MonoContext by register number.  Add the generic
9455         sharing context as an argument to mono_arch_find_this_argument().
9456
9457         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
9458         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
9459         for new arch function.
9460
9461         * mini-exception.c: Handle open exception clauses in shared
9462         generic code.
9463
9464         * mini-trampolines.c: Supply additional argument to
9465         mono_arch_find_this_argument().
9466
9467 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
9468
9469         * Makefile.am (regtests): Run the bench.exe tests last.
9470
9471 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
9472
9473         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
9474         a bit.
9475
9476 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
9477
9478         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
9479         with MS.
9480
9481         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
9482         
9483         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
9484
9485         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
9486         whose class has no cctor.
9487
9488         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
9489
9490 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
9491
9492         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
9493         unverified.
9494
9495 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
9496
9497         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
9498         to be in sync with the code on the linear IR branch.
9499
9500         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
9501
9502         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
9503
9504 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
9505
9506         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
9507
9508         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
9509
9510         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
9511
9512         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
9513
9514         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
9515         
9516         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
9517         body.
9518
9519 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
9520
9521         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
9522         OP_LOADR4_MEMBASE emission.
9523
9524         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
9525         (mono_spillvar_offset_float): Ditto.
9526
9527         * mini-mips.c (mono_arch_emit_prolog): Ditto.
9528
9529         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
9530         emission.
9531
9532         * basic-long.cs: Add regression tests for them.
9533
9534         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
9535         use.
9536         (mono_arch_allocate_vars): Fix representation of single-precision float
9537         argument.
9538         (mono_arch_output_basic_block): Ditto.
9539
9540         * inssel-mips.brg: Ditto, remove duplicate items.
9541
9542         * mini-mips.c (emit_load_volatile_arguments): New function to handle
9543         arguments of tail calls as on other platforms.
9544         (mono_arch_output_basic_block): Handle tail calls.
9545
9546         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
9547         register.
9548
9549         * objects.cs (test_5_pass_static_struct): Add test for it.
9550
9551         Contributed under MIT/X11 license.
9552
9553 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
9554
9555         * Makefile.am: Use gmcs for compiling the regression tests.
9556
9557         * *.2.cs *.2.il: Rename to *.cs and *.il.
9558
9559 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
9560
9561         * regalloc.h: Make the vassign array smaller.
9562
9563         * mini.c (mini_method_compile): Remove an unused field in cfg.
9564
9565         * mini-codegen.c: Add a bunch of micro optimizations.
9566
9567 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
9568
9569         * regalloc.h: Remove some unused fields.
9570
9571 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
9572
9573         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
9574
9575         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
9576
9577 2008-02-22  Mark Probst  <mark.probst@gmail.com>
9578
9579         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
9580
9581         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
9582         trampoline: Fetch an entry from the runtime generic context.  If
9583         it's NULL, jump to the actual trampoline to fill the runtime
9584         generic context.  Otherwise, return it.
9585
9586         * mini.c: Call the lazy fetch trampoline to get entries out of the
9587         runtime generic context.
9588
9589         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
9590         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
9591         tramp-sparc.c: Stubs for the lazy fetch trampoline.
9592
9593 2008-02-21  Mark Probst  <mark.probst@gmail.com>
9594
9595         * mini.c: Fetch data out of the extensible part of the runtime
9596         generic context instead of calling a helper function.
9597
9598         * generic-sharing.c: Some functions moved into
9599         metadata/generic-sharing.c.  Helper function for fetching other
9600         types now checks and asserts against extensible rgctx (just for
9601         debugging purposes - the helper function isn't called anymore
9602         unless for debugging).
9603
9604 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
9605
9606         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
9607         for tail calls up to the point that the tests in iltests.exe run. Also add a
9608         dummy CKFINITE implementation.
9609         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
9610         needed for trampoline LMF frames.
9611
9612         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
9613         trampoline LMF frames.
9614
9615 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
9616
9617         * mini.c (inline_method): clean any pending loader error when inlining fail.
9618         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
9619
9620 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
9621
9622         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
9623
9624         * aot-runtime.c (decode_patch_info): Ditto.
9625
9626         * mini.c (mono_resolve_patch_target): Ditto.
9627         
9628         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
9629         icall wrappers.
9630
9631         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
9632         
9633         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
9634         if it references an icall address.
9635
9636 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
9637
9638         * cpu-s390x.md: Remove some more unused opcodes.
9639         
9640         * cpu-s390x.md: Remove some unused opcodes.
9641
9642         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
9643         mono_op_imm_to_op ().
9644
9645         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
9646         instead of a switch statement.
9647         
9648         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
9649         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
9650
9651         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
9652         
9653         * mini-codegen.c: Remove unused mono_regstate2_... functions.
9654
9655         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
9656         -1.
9657
9658 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
9659
9660         * driver.c (mono_main): Improve error reporting when an assembly cannot be
9661         opened. Fixes #362607.
9662
9663         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
9664
9665         * iltests.il.in: Add a test for static methods in interfaces.
9666
9667 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
9668
9669         * genmdesc.c (build_table): Fix a crash on older glib versions.
9670
9671         * cpu-sparc.md: Remove some unused opcodes.
9672         
9673         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
9674         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
9675
9676         * cpu-amd64.md: Remove some unused opcodes.
9677
9678         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
9679         like the other opcodes.
9680
9681 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
9682
9683         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
9684
9685         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
9686
9687         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
9688         variables 'cfg' instead of 'm' for consistency.
9689
9690         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
9691
9692         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
9693         argument holding the vtype return address, to avoid the ambigious use of
9694         cfg->ret for this purpose.
9695
9696         * mini.c (NEW_RETLOADA): Use vret_addr if set.
9697
9698         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
9699         
9700         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
9701         new mono_print_ins () function which only takes one argument.
9702
9703 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
9704
9705         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
9706         macro arguments.
9707
9708 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
9709
9710         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
9711
9712         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
9713
9714         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
9715         opcodes and other small changes.
9716
9717         * mini-ops.h: Add some new opcodes from the linear IR branch.
9718
9719         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
9720
9721         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
9722         opcodes, use the REG_MEMBASE opcodes instead.
9723         
9724         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
9725         opcodes, use the REG_MEMBASE opcodes instead.
9726         
9727         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
9728         linear IR branch.
9729
9730         * mini.c (mono_op_imm_to_op): New helper function.
9731
9732         * mini-ops.h: Add some opcodes from linear IR branch.
9733
9734 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
9735
9736         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
9737         <tsv@solvo.ru>.
9738
9739 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
9740
9741         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
9742         OP_ICONV_TO_R4/R8.
9743
9744         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
9745
9746 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
9747
9748         * aot-compiler.c (emit_method_code): Add an assert.
9749
9750         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
9751         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
9752         methods.
9753
9754 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
9755
9756         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
9757         some load/store opcodes so they are consistent. 
9758         (mono_arch_emit_prolog): Simplify some code.
9759
9760         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
9761
9762         * objects.cs: Add tests for large argument offsets on ARM.
9763
9764         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
9765         stack offsets. Fixes #359651.
9766
9767         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
9768
9769         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
9770
9771         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
9772
9773         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
9774
9775         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
9776
9777         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
9778         rid of CEE_CONV_R_UN.
9779
9780         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
9781
9782 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
9783
9784         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
9785
9786         * mini.c (mono_normalize_opcodes): Add some more opcodes.
9787
9788         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
9789
9790         * cpu-amd64.md: Remove some unused opcodes.
9791
9792         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
9793
9794         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
9795
9796         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
9797         arch specific functions for its parts. Call the peephole pass after local
9798         regalloc so the prolog can compute a more accurate max_offset.
9799         
9800         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
9801         the corresponding OP_I/OP_L opcodes.
9802
9803         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
9804
9805         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
9806
9807 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9808
9809         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
9810         as they are handled in mini.c.
9811
9812         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
9813         
9814         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
9815         case since it is handled in mini.c.
9816
9817         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
9818
9819         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
9820
9821         * *.c: Use the new opcodes in the IR and back end code.
9822
9823         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
9824
9825         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
9826
9827 2008-02-06  Mark Probst  <mark.probst@gmail.com>
9828
9829         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
9830         an assert because it has a race condition.
9831
9832 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9833
9834         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
9835
9836         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
9837
9838         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
9839
9840         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
9841         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
9842
9843 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
9844
9845         * cpu-amd64.md (move): Correct the maximum size of move.
9846
9847 2008-02-05  Mark Probst  <mark.probst@gmail.com>
9848
9849         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
9850         the generic class init trampoline to return quickly if the class
9851         is already inited.
9852
9853 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
9854
9855         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
9856         issues where an 32 bit callsite cannot be patched by a 64 bit address.
9857
9858 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
9859
9860         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
9861         branch.
9862
9863 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
9864
9865         * objects.cs: Add some soft-float tests.
9866
9867         * mini.c: Fix a couple more soft-float issues.
9868
9869         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
9870
9871         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
9872         avoid a REX prefix.
9873
9874 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
9875
9876         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
9877         exception happens while compiling a virtual method.
9878
9879 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
9880
9881         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
9882         
9883         * mini-sparc.c: Fix build.
9884
9885         * mini-sparc.c (get_call_info): Add support for generic sharing.
9886
9887         * mini-exceptions.c: Add a FIXME.
9888
9889 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
9890
9891         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
9892         altstack handling code.
9893
9894         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
9895         
9896         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
9897
9898         * mini-s390.c: Add support for generic sharing.
9899
9900         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9901         Fix CAS on s390.
9902         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9903
9904         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
9905
9906         * mini-s390x.c: Add support for generic sharing.
9907         
9908         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
9909         Fix CAS on ia64.
9910         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
9911
9912         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
9913         can be used since it takes a 16 bit signed immediate.
9914
9915         * inssel-s390x.brg: Fix OP_SETRET.
9916
9917         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
9918
9919         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
9920
9921         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
9922
9923         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
9924
9925         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
9926         in one place.
9927
9928         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
9929         stuff.
9930
9931         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
9932         of the unused mono_arch_patch_delegate_trampoline stuff.
9933
9934 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
9935
9936         * basic-long.cs: Move the fp related tests to basic-float.cs.
9937
9938         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
9939
9940         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
9941
9942         * basic-calls.cs: Add a test for proper float argument passing.
9943
9944         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
9945         if the context corresponds to an exception received through a signal.
9946
9947         * exceptions.cs: Add a test for nullref handling at the start of a try
9948         clause.
9949
9950         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
9951
9952         * jit-icalls.c (mono_break): New JIT icall.
9953
9954         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
9955
9956         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
9957
9958 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
9959
9960         * cpu-*.md: Get rid of unused opcodes.
9961
9962         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
9963
9964         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
9965         by all platforms.
9966
9967         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
9968         define.
9969
9970         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
9971         the arch independent trampoline code in mini-trampolines.c.
9972
9973         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
9974
9975         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
9976
9977         * mini-s390.h: Remove an unused define.
9978         
9979         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
9980         the arch independent trampoline code in mini-trampolines.c.
9981
9982         * mini-arm.c (mono_arch_emit_prolog): Fix build.
9983
9984 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
9985
9986         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
9987
9988         * mini-s390.c (mono_arch_emit_prolog): Fix build.
9989
9990         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
9991
9992         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
9993
9994         * cpu-amd64.md: Use smaller sizes for int opcodes.
9995
9996         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
9997
9998         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
9999         objects.cs.
10000
10001         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
10002         debugging.
10003
10004         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
10005         instead of though a pointer to save an indirection when accessing elements of
10006         the array.
10007
10008         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
10009         some typos.
10010         (NOT_IMPLEMENTED): New helper macro.
10011         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
10012         of a bb.
10013
10014         * *.c: Use the new helper macro.
10015
10016 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
10017
10018         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
10019
10020 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
10021
10022         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
10023         stack slots.
10024
10025 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
10026
10027         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
10028         profiling is enabled.
10029         
10030         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
10031         the end.
10032         (mono_arch_emit_prolog): Add more first bblock optimizations.
10033
10034         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
10035         in order if possible.
10036         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
10037         bblock, since the arguments are still in their original registers.
10038
10039         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
10040
10041 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
10042
10043         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
10044         as well.
10045
10046         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
10047         offset 0.
10048
10049         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
10050
10051         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
10052         process async exceptions received while in unmanaged code.
10053
10054         * mini.c (mini_init): Install a callback with the runtime which will be called
10055         when a thread receives an async exception while in unmanaged code.
10056
10057         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
10058
10059         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
10060
10061 2008-01-16  Wade Berrier  <wberrier@novell.com>
10062
10063         * cpu-g4.md:
10064         * cpu-arm.md:
10065         * cpu-s390x.md:
10066         fix build
10067
10068 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
10069
10070         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
10071         compilation with sun cc.
10072
10073         * cpu-*.md: Fix the build.
10074
10075         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
10076
10077         * mini-amd64.h: Add some comments to the MonoLMF structure.
10078
10079         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
10080         
10081         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
10082         in the LMF structure if possible. This saves two instructions in the
10083         managed->native wrappers.
10084
10085         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
10086
10087 2008-01-16  Mark Probst  <mark.probst@gmail.com>
10088
10089         * generic-sharing.c: New type argument lookup code which uses the
10090         runtime generic context template.
10091
10092 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
10093
10094         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
10095
10096         * mini-arm.c (add_general): Fix arm eabi parameter passing.
10097         (mono_arch_output_basic_block): Fix localloc implementation.
10098
10099         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
10100
10101         * mini-ia64.c (peephole_pass): Fix ia64 build.
10102
10103         * mini-amd64.c (peephole_pass): Fix a warning.
10104         
10105         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
10106         at a constant offset from sp/fp.
10107
10108         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
10109         instead of obtaining it from *lmf in the managed method case.
10110
10111 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
10112
10113         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
10114
10115 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
10116
10117         * mini.h (MonoInstList): New type.
10118         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
10119         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
10120         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
10121         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
10122         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
10123         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
10124         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
10125         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
10126         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
10127         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
10128         MONO_INST_LIST_FOR_EACH_ENTRY,
10129         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
10130         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
10131         mono_inst_list_first, mono_inst_list_last,
10132         mono_inst_list_next, mono_inst_list_prev): New instruction
10133         list handling interfaces.
10134         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
10135         list head 'ins_list'.
10136         (MonoInst): Replace next pointer with list head 'node'.
10137         (MonoCallInst): Make 'out_args' a MonoInstList.
10138         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
10139         (MonoCompile): Delete reverse_inst_list and
10140         reverse_inst_list_len.
10141         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
10142         mono_arch_lowering_pass, mono_arch_local_regalloc,
10143         mono_arch_output_basic_block, mono_arch_emit_prolog):
10144         Convert to new instruction lists.
10145         (insert_after_ins): Delete.
10146         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
10147         instruction lists.
10148         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
10149         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
10150         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
10151         mono_emulate_opcode, mono_emit_load_got_addr,
10152         inline_method, mono_method_to_ir, mono_print_bb_code,
10153         print_dfn, decompose_pass, nullify_basic_block,
10154         replace_out_block_in_code, remove_block_if_useless,
10155         merge_basic_blocks, move_basic_block_to_end,
10156         try_unsigned_compare, optimize_branches, mono_print_code,
10157         mini_select_instructions, remove_critical_edges): Likewise.
10158         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
10159         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
10160         mono_arch_output_basic_block, mono_arch_emit_prolog):
10161         Likewise.
10162         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
10163         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10164         mono_arch_output_basic_block): Likewise.
10165         (inst_list_prepend, insert_after_ins): Delete.
10166         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
10167         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
10168         instruction lists.
10169         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
10170         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
10171         mono_arch_emit_prolog): Likewise.
10172         * cfold.c (mono_constant_fold): Likewise.
10173         * liveness.c (visit_bb, mono_analyze_liveness,
10174         optimize_initlocals): Likewise.
10175         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
10176         * graph.c (mono_draw_code_cfg): Likewise.
10177         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
10178         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
10179         mono_ssa_cprop): Likewise.
10180         * abcremoval (get_relations_from_previous_bb, process_block):
10181         Likewise.
10182         * local-propagation (mono_cprop_invalidate_values,
10183         mono_local_cprop_bb): Likewise.
10184         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
10185         peephole_pass, mono_arch_output_basic_block,
10186         mono_arch_emit_prolog): Likewise.
10187         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
10188         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10189         mono_arch_emit_prolog): Likewise.
10190         (insert_after_ins): Delete.
10191         * aliasing.c (print_code_with_aliasing_information,
10192         mono_build_aliasing_information, mono_aliasing_deadce):
10193         Convert to new instruction lists.
10194         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
10195         peephole_pass, NEW_INS, mono_arch_lowering_pass,
10196         mono_arch_local_regalloc, mono_arch_output_basic_block):
10197         Likewise.
10198         (insert_after_ins): Delete.
10199         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
10200         peephole_pass, mono_arch_output_basic_block): Convert to
10201         new instruction lists.
10202         * mini-codegen (InstList, inst_list_prepend,
10203         insert_after_ins): Delete.
10204         (insert_before_ins, get_register_force_spilling,
10205         get_register_spilling, free_up_ireg, free_up_reg,
10206         create_copy_ins, create_spilled_store, alloc_int_reg,
10207         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
10208         to new instruction lists.
10209         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
10210         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10211         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
10212         (insert_after_ins): Delete.
10213         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
10214         mono_arch_local_regalloc, mono_arch_output_basic_block,
10215         mono_arch_call_opcode): Convert to new instruction lists.
10216         (insert_after_ins): Delete.
10217         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
10218         peephole_pass, mono_arch_output_basic_block,
10219         mono_arch_emit_prolog): Convert to new instruction lists.
10220
10221 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
10222
10223         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
10224
10225         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
10226         Fixes #353182.
10227
10228         * Makefile.am (version.h): Make this work with non-bash shells.
10229
10230 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
10231
10232         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
10233
10234 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
10235
10236         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
10237         the InitializeArray optimization.
10238
10239 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
10240
10241         * mini.c driver.c: Don't include os/gc_wrapper.h.
10242
10243 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
10244
10245         * mini.c (print_jit_stats): Print GC statistics if available.
10246
10247 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
10248
10249         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
10250
10251 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
10252
10253         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
10254
10255 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
10256
10257         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
10258         
10259         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
10260
10261         * driver.c (mono_main): Ditto.
10262
10263 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
10264
10265         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
10266
10267         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
10268         in the vtable can't be encoded.
10269         (compile_method): Ditto.
10270
10271 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
10272
10273         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
10274         defined.
10275
10276         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
10277         lmf->rbp.
10278
10279         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
10280         the top LMF entry belongs to the current method.
10281
10282         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
10283
10284 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
10285
10286         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
10287         
10288         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
10289
10290         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
10291
10292         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
10293
10294         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
10295
10296         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
10297         implementation.
10298
10299         * basic-float.cs: Add an ulong->double cast test.
10300
10301 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
10302
10303         * mini.c (mono_method_to_ir): Fix a warning.
10304
10305 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
10306
10307         * mini-ops.h: Add OP_SWITCH.
10308
10309         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
10310         CEE_SWITCH in back-end code, use OP_SWITCH instead.
10311
10312 2007-12-11  Geoff Norton  <gnorton@novell.com>
10313
10314         * mini-s390x.c: Minor change to the MAX() define to allow
10315         it to compile with other gcc versions.
10316
10317 2007-12-11  Geoff Norton  <gnorton@novell.com>
10318
10319         * cpu-s390x.md:
10320         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
10321
10322 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10323
10324         exceptions-arm.c (mono_arch_get_restore_context): Restore
10325         the frame pointer.
10326
10327         exceptions-arm.c (throw_exception): Save the frame pointer.
10328         This is a partial fix for #323747. Only the client side is
10329         fixed.
10330
10331 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10332
10333         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
10334         was using an unrelated variable to log the class which
10335         needed the cctor to be called. This was crashing on arm.
10336
10337 2007-12-09  Robert Jordan  <robertj@gmx.net>
10338
10339         * mini-x86.c (mono_arch_emit_epilog):
10340         Consider all kinds of 64-bit types. Fixes #323114.
10341
10342 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
10343
10344         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
10345
10346 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10347
10348         * mini-amd64.c (peephole_pass): Add a missing instruction check.
10349
10350 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10351
10352         * mini.c: run type ctor before allocating an object, not only
10353         when running it's constructor method (fixes at least part of bug #342507).
10354
10355 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10356         
10357         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
10358         
10359         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
10360         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
10361         function.
10362
10363         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
10364         mono_generic_class_init_trampoline () the same as it is done with the other
10365         trampolines.
10366
10367         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
10368         aot-runtime.c aot-compiler.c: Implement AOT support.    
10369
10370 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10371
10372         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
10373         build for archs which don't have the vtable trampoline defined
10374         yet.
10375
10376 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10377
10378         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
10379
10380         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
10381
10382         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
10383
10384         * tramp-<ARCH>.c: Use the new helper function.
10385
10386 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10387
10388         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
10389         trampoline call, which takes a vtable argument.
10390
10391         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
10392         OP_TRAMPCALL_VTABLEs like other calls.
10393
10394         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
10395         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
10396         call.  Implemented a support function which fetches the vtable
10397         from a register set.
10398
10399         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
10400         Implemented a generic class init trampoline, using the
10401         OP_TRAMPCALL_VTABLE opcode.
10402
10403         * mini.c: Implemented static field access when sharing generic
10404         code.  This implies initing the class using the new
10405         OP_TRAMPCALL_VTABLE call.
10406
10407 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10408
10409         * mini.c: Don't compile methods with sharing enabled if their
10410         classes are disabled for sharing.
10411
10412 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
10413
10414         * inssel.brg: Add a missing sign extension to the GETCHR and array access
10415         opcodes. Fixes #346563.
10416
10417         * objects.cs: Add a new test.
10418
10419         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
10420
10421         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
10422         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
10423
10424 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
10425
10426         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
10427
10428 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
10429
10430         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
10431         code stream.
10432
10433 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
10434
10435         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
10436
10437         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
10438         optimization in the AOT case.
10439         
10440 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
10441
10442         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
10443         
10444         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
10445
10446         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
10447
10448         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
10449
10450         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
10451         is created by the inlined delegate ctor.
10452
10453         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
10454
10455         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
10456
10457 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
10458
10459         * cpu-x86.md: Fix the length of ckfinite.
10460
10461 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
10462
10463         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
10464         
10465         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
10466         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
10467
10468         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
10469
10470         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
10471         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
10472
10473 2007-11-28  Martin Baulig  <martin@ximian.com>
10474
10475         * mini-x86.c
10476         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
10477         after creating the trampoline.
10478
10479 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
10480
10481         * aot-runtime.c (load_aot_module): Check runtime version if needed.
10482
10483         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
10484         the same version.
10485
10486         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
10487         instead of the calling method to help AOT.
10488
10489         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
10490
10491 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
10492
10493         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
10494         is defined.
10495
10496 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
10497
10498         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
10499         
10500         * aot-compiler.c (compile_method): Correct check for generic method definitions.
10501         (encode_method_ref): No need to handle generic method definitions specially.
10502
10503         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
10504
10505         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
10506         decode_klass_info.
10507
10508         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
10509         encode_klass_info.
10510         (compile_method): Enable generic sharing.
10511
10512 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
10513
10514         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
10515         (mini_method_compile): Add preliminary support for AOTing shared generic code.
10516
10517         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
10518         generic code.
10519
10520         * mini-trampolines.c: Fix a warning.
10521
10522         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
10523         NEW_PCONST.
10524         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
10525         (generic_class_is_reference_type): Remove unused function.
10526
10527         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
10528         in the generic vtable trampoline case.
10529
10530         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
10531         
10532         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
10533         return an AOT method based on a vtable slot.
10534
10535         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
10536
10537         * mini.c (mini_get_vtable_trampoline): Export this.
10538
10539 2007-11-22  Martin Baulig  <martin@ximian.com>
10540
10541         * debug-debugger.h
10542         (MonoDebuggerInfo): Move `debugger_version' up.
10543
10544 2007-11-22  Martin Baulig  <martin@ximian.com>
10545
10546         * mini-amd64.c
10547         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
10548
10549         * mini-trampolines.c
10550         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
10551         after compiling the method.
10552
10553 2007-11-20  Martin Baulig  <martin@ximian.com>
10554
10555         * debug-mini.c
10556         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
10557         (mono_debugger_remove_breakpoint): Likewise.
10558         (mono_debugger_check_breakpoints): Likewise.
10559
10560         * debug-debugger.c: Implement the new breakpoint interface here.
10561
10562 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
10563
10564         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
10565         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
10566
10567         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
10568
10569 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
10570
10571         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
10572
10573         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
10574         mini.c.
10575
10576         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
10577         mini.c.
10578
10579         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
10580         returning a vtype in a register.
10581
10582         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
10583         here from the arch specific code.
10584
10585         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
10586         mini.c.
10587
10588         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
10589         (mono_arch_emit_prolog): Increment maximum prolog size.
10590
10591         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
10592         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
10593
10594         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
10595         MonoGenericSharingContext.
10596
10597         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
10598         MonoGenericSharingContext. Allocate memory from the cfg mempool.
10599
10600 2007-11-15  Mark Probst  <mark.probst@gmail.com>
10601
10602         * mini.c, mini.h, generic-sharing.c: Functions for producing code
10603         which extract fields out of the runtime generic context.  Full
10604         sharing of the NEWARR opcode.
10605
10606 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
10607
10608         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
10609         --enable-minimal=ssa.
10610
10611 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
10612
10613         * mini-trampolines.c (mono_delegate_trampoline): Update after 
10614         mono_marshal_get_delegate_invoke () signature change.
10615
10616 2007-11-13  Mark Probst  <mark.probst@gmail.com>
10617
10618         * mini.c: Removed the shared context in favor of the generic
10619         sharing context.  Allocate the MonoJitInfo structure with room for
10620         the generic sharing context if it's needed.
10621
10622         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
10623         domain-internals.h now.
10624
10625         * mini-x86.c: Pass the generic sharing context to get_call_info ().
10626
10627         * generic-sharing.c: Several changes for working without a shared
10628         context and instead operating on open types instead.
10629
10630 2007-11-12  David S. Miller  <davem@davemloft.net>
10631
10632        * inssel-sparc.brg: Fix double instruction emit.
10633
10634 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
10635
10636         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
10637         Get/Set/Address methods.
10638         
10639         * mini.c debug-debugger.c mini-trampolines.c: Update after 
10640         mono_marshal_get_delegate_invoke signature change.
10641
10642 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
10643
10644         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
10645         This can happens with dynamic methods. Fixes the other bug in #322722.
10646
10647 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
10648
10649         * tramp-arm.c (mono_arch_patch_callsite): Support patching
10650         BX call sequence.
10651
10652         * mini-arm.c (arm_patch): Implement patching of BX call
10653         sequence. Fixes one of the bugs in #322722.
10654
10655 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
10656
10657        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
10658        under Linux.  We only need to flush every 32-byte cache line.    
10659
10660 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
10661
10662         * mini.c:
10663         move_basic_block_to_end: Add branches when needed, eventually creating
10664         a new BB.
10665         optimize_branches: added a parameter that tells if it's ok to create
10666         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
10667         and avoid calling move_basic_block_to_end when it's not ok.
10668         Fixes bug 318677.
10669
10670 2007-11-07  Mark Probst  <mark.probst@gmail.com>
10671
10672         * mini.c: Abort inlining call to InitializeArray if something
10673         looks wrong.  Let the icall handle it, which now has proper safety
10674         checks.
10675
10676 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
10677
10678         * mini.c (mono_spill_call): add support for soft-float.
10679
10680         * mini.c (mono_method_to_ir): add support for soft-float
10681         to inlined functions that return float.
10682
10683         * mini.c (mono_method_to_ir): add support for soft-float
10684         to cee_stsfld opcode on float fields.
10685
10686 2007-11-05  Geoff Norton  <gnorton@novell.com>
10687
10688         * mini-x86.h: Fix the structure access for X86 Leopard.
10689
10690
10691 2007-11-05  Martin Baulig  <martin@ximian.com>
10692
10693         * mini-trampolines.c
10694         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
10695         after compiling the method to notify the debugger.
10696
10697 2007-11-05  Martin Baulig  <martin@ximian.com>
10698
10699         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
10700
10701 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
10702
10703         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
10704         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
10705
10706 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
10707
10708         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
10709         native-to-managed wrappers.
10710         
10711 2007-11-01  Geoff Norton  <gnorton@novell.com>
10712
10713         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
10714         members.
10715
10716 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
10717
10718         * mini.c, mini-x86.c: when getting back from unmanaged code
10719         to managed via a marshaled delegate we also need to set the
10720         right domain.
10721
10722 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
10723
10724         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
10725         for amd64.
10726
10727 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
10728
10729         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
10730         let the debugger or other external agents to tell the JIT when
10731         a sw breakpoint has been inserted in the code that the JIT needs
10732         to be able to inspect.
10733
10734 2007-10-31  Martin Baulig  <martin@ximian.com>
10735
10736         * debug-debugger.h
10737         (MonoDebuggerInfo): Remove `runtime_class_init'.
10738
10739 2007-10-30  Martin Baulig  <martin@ximian.com>
10740
10741         * debug-mini.h
10742         (mono_debugger_thread_created): Added `MonoThread *' argument.
10743         (mono_debugger_extended_notification): New public method.
10744         (mono_debugger_trampoline_compiled): New public method.
10745
10746         * debug-mini.c
10747         (MonoDebuggerThreadInfo): Added `thread' and
10748         `extended_notifications' fields.
10749
10750         * debug-debugger.c
10751         (debugger_executable_code_buffer): New static variable.
10752
10753         * debug-debugger.h
10754         (MonoDebuggerInfo): Added `executable_code_buffer',
10755         `executable_code_buffer_size', `breakpoint_info_area',
10756         `breakpoint_table' and `breakpoint_table_size'.
10757
10758 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
10759
10760         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
10761         that IP  either is an unused value or the vtable pointer. IMT 
10762         calls use vtable + offset now. Reduced by almost half the size
10763         of IMT entries.
10764
10765 2007-10-26  Jonathan Chambers <joncham@gmail.com>
10766
10767         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
10768         defines to access param registers. Replace long usage with
10769         gsize as sizeof(long) != sizeof(void*) on Win64.
10770
10771         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
10772         on Win64. Fix intrinsic, use _AddressOfReturnAddress
10773         instead of non-existant _GetAddressOfReturnAddress.
10774
10775         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
10776         param registers. Save/restore %rdi and %rsi in MonoLMF.
10777
10778         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
10779         param registers. Modify (throw_exception) signature to take 
10780         %rdi and %rsi on Win64. 
10781
10782         Code is contributed under MIT/X11 license.
10783
10784 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
10785
10786         * helpers.c: unlink debugging output files.
10787
10788 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
10789
10790         * mini.c: Move mono_create_ftnptr () to object.c.
10791
10792 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
10793
10794         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
10795         optional. This function can now be used to disassemble code generated
10796         outside the JIT such as trampolines and IMT thunks.
10797
10798         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
10799
10800         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
10801         vtable pointer from a ldr instruction.
10802
10803         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
10804         new IMT call sequence.
10805
10806         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
10807         call sequence for interface invocations.
10808
10809         * mini-arm.c (mono_arch_emit_imt_argument): added, required
10810         for imt support. This function is empty since IMT on ARM requires no
10811         special handling on the IR side.
10812
10813         * mini-arm.c (mono_arch_find_imt_method): added, required for
10814         imt support.
10815
10816         * mini-arm.c (mono_arch_find_this_argument): added, required
10817         for imt support.
10818
10819         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
10820         a ldr instruction to load a value stored in the code stream.
10821
10822         * mini-arm.c (mono_arch_build_imt_thunk):added, required
10823         for imt support.
10824
10825
10826 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
10827
10828         * mini.c (mini_init): Install the jump trampoline callback.
10829
10830 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10831
10832         * mini-trampolines.c: handle synchronized methods with the common
10833         vtable trampoline (bug #335601).
10834
10835 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
10836
10837         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
10838
10839         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
10840         64 bit platforms.
10841
10842         * mini-ia64.h mini-ia64.c: Add support for IMT.
10843
10844         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
10845         prolog. Fixes #331958.
10846
10847 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
10848
10849         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
10850
10851 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10852
10853         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
10854         trampoline.
10855
10856 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
10857
10858         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
10859         trampoline.
10860
10861 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
10862
10863         * mini-x86.c, mini-x86.h: x86 support for the common vtable
10864         trampoline.
10865
10866 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
10867
10868         * mini-trampolines.c: changed the magic rampoline to understand
10869         the common vtable trampoline method: the method to invoke is
10870         determined by the vtable displacement of the call.
10871
10872 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
10873
10874         * mini.c, mini.h: register the common vtable trampoline if the
10875         architecture supports it.
10876
10877 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
10878
10879         * cpu-amd64.md: use the correct max length for tls_get.
10880
10881 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
10882
10883         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
10884         CEE_STELEM_ANY. Fixes #333696.
10885
10886 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
10887
10888         * exceptions-x86.c: provide more graceful handling of the case where
10889         we followed a bogus function pointer from managed code (bug #332866).
10890
10891 2007-10-11  Mark Probst  <mark.probst@gmail.com>
10892
10893         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
10894         replaces the generic_shared flag and will carry more information
10895         in the future.
10896
10897         * generic-sharing.c: Added mini_type_stack_size() which allows
10898         allows open types if given a generic sharing context.
10899         mini_get_basic_type_from_generic() takes a
10900         MonoGenericSharingContext* instead of a MonoCompile* now.
10901
10902         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
10903         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
10904         mini-sparc.c, mini-x86.c: Trivial changes required by the two
10905         changes above.  Just passing arguments through to the right
10906         places.
10907
10908 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
10909
10910         * mini-arm.c: unify the call emission to emit_code_seq().
10911
10912 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
10913
10914         * tramp-arm.c: reduced the trampoline size.
10915
10916 2007-10-10  Mark Probst  <mark.probst@gmail.com>
10917
10918         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
10919         variable handling out of arch-specific code.
10920
10921 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
10922
10923         * mini-arm.c: implemented fast delegate dispatch.
10924
10925 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10926
10927         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
10928         that fp elimination is turned off if the space required by locals is too
10929         big. Fixes #331958.
10930
10931 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
10932
10933         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
10934         ARM to the new style trampoline.
10935
10936 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
10937
10938         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
10939
10940         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
10941
10942 2007-10-09  Martin Baulig  <martin@ximian.com>
10943
10944         * debug-debugger.h
10945         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
10946         `field_info_offset_offset'.     
10947
10948 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
10949
10950         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
10951         removed more internal usage of the r11 register and made it available
10952         to the register allocator.
10953
10954 2007-10-08  Mark Probst  <mark.probst@gmail.com>
10955
10956         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
10957         when sharing generics and treat type variables as references.
10958
10959 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
10960
10961         * mini-ppc.c: started removing the internal uses of register r11
10962         to eventually allow the register allocator to manage it as an
10963         additional available register.
10964
10965 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
10966
10967         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
10968
10969 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
10970
10971         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
10972         specific trampolines as they are not performance critical as a jump
10973         target (maybe align as before only for AOT code?). This saves about
10974         200 KB of native code on x86 for monodevelop startup.
10975
10976 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
10977
10978         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
10979         monodevelop startup.
10980
10981 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
10982
10983         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
10984
10985         * mini-sparc.h mini-sparc.c: Implement IMT support.
10986
10987         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
10988         its smaller and doesn't clobber sparc_g1.
10989
10990         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
10991
10992 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
10993
10994         * mini-ppc.c: optimized the size of the IMT thunks a bit.
10995
10996 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
10997
10998         * mini-ppc.c: implemented fast delegate invocation.
10999
11000 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11001
11002         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
11003
11004 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11005
11006         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
11007         code to the new style trampoline in preparation for IMT support.
11008
11009 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
11010
11011         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
11012         systems already. This also reduces the specific trampiline sizes and
11013         prepares for the use of r12 as the IMT identifier register.
11014
11015 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11016
11017         * mini-mips.h: endianess fix (simplified from a patch by
11018         Thomas Kunze <thommy@tabao.de>, bug #323737).
11019
11020 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11021
11022         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
11023         to access ucontext fields and enable netbsd support
11024         (partially from Magnus Henoch <mange@freemail.hu>).
11025
11026 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11027
11028         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
11029         use the preprocessor from the CPP env var if it is set.
11030
11031 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11032
11033         * mini-trampolines.c: fixed an assertion and moved it earlier in the
11034         code, before interface_offset gets used.
11035
11036 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
11037
11038         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
11039         mono_class_setup_vtable () before accessing klass->vtable.
11040
11041 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
11042
11043         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
11044         hackish.
11045
11046 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11047
11048         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
11049         IMT slots (this saves hundreds of KB of memory in programs like
11050         IronPython and Monodevelop).
11051
11052 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11053
11054         * mini.c: print the delegate counter.
11055
11056 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
11057
11058         * mini-x86.c: make it easier to enable the debugging code for IMT
11059         slots.
11060
11061 2007-09-28  Martin Baulig  <martin@ximian.com>
11062
11063         * debug-debugger.h
11064         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
11065         `mono_method_klass_offset' and `mono_method_token_offset'.
11066
11067 2007-09-20  Mark Probst  <mark.probst@gmail.com>
11068
11069         * mini.c: First generics sharing implementation.  Can only share
11070         in very simple cases.  If sharing doesn't work it falls back to
11071         dedicated compilation.
11072
11073         * mini.h: Flag in MonoCompile to specify whether generic
11074         compilation is shared.  Flags enum for marking which generic inst
11075         of a context is used.  Prototypes for helper functions.
11076
11077         * generic-sharing.c: Helper functions for generic method sharing.
11078
11079         * optflags-def.h: Optimization flag (gshared) for enabling generic
11080         method sharing added.
11081
11082         * Makefile.am: generic-sharing.c added.
11083
11084 2007-09-19 Daniel Nauck <dna@mono-project.de>
11085
11086         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
11087
11088 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
11089         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
11090         fixes bug 325507.
11091
11092 2007-09-19  Martin Baulig  <martin@ximian.com>
11093
11094         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
11095         mono_debug_cleanup() is now part of mono_cleanup().
11096
11097 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
11098
11099         * driver.c (mono_main): Fix a warning.
11100
11101 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
11102
11103         * aot-compiler.c: Optimize various parts when processing large assemblies.
11104         Fixes ##325568.
11105
11106         * mini.c (mono_patch_info_hash): Improve hash function.
11107
11108 2007-09-14  Jonathan Chambers <joncham@gmail.com>
11109
11110         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
11111         
11112         Code is contributed under MIT/X11 license.
11113
11114 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11115
11116         * mini.c (mini_init): Fix a leak.
11117
11118         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
11119
11120 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11121
11122         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
11123
11124 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11125
11126         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
11127
11128 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
11129
11130         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
11131         variance tests.
11132
11133         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
11134
11135         * mini.c (handle_alloc): Enable managed allocators in AOT code.
11136
11137         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
11138
11139         * aot-runtime.c (decode_patch_info): Ditto.
11140
11141 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11142
11143         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
11144         static case. Cache delegates in architecture specific code, 
11145         based on number of parameters.
11146         
11147         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
11148         in architecture specific code, based on number of parameters.
11149         
11150         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
11151         caching happen in architecture specific code now.
11152         
11153         Code is contributed under MIT/X11 license.
11154
11155 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11156
11157         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
11158         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
11159         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
11160
11161         Code is contributed under MIT/X11 license.
11162
11163 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11164         * mini.c: (mono_thread_abort) Fixed bug #82416.
11165
11166 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11167
11168         * mini.: hook the new managed GC allocation feature into the JIT.
11169
11170 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11171
11172         * mini.c: implementation for the new runtime tls opcode.
11173
11174 2007-09-11  Martin Baulig  <martin@ximian.com>
11175
11176         * debug-debugger.h
11177         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
11178         `mono_method_inflated_offset'.
11179
11180 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
11181
11182         * driver.c mini.h mini.c: Add a new devel command line option for injecting
11183         async exceptions into a method.
11184
11185         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
11186         purpose of testing whenever the unwinder works at every instruction.
11187
11188 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
11189
11190         * mini.c: check accessibility of method used in ldftn (fixes
11191         bug #82635).
11192
11193 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
11194
11195         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
11196
11197         * inssel.brg: Fix a warning.
11198
11199 2007-09-03  Martin Baulig  <martin@ximian.com>
11200
11201         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
11202         now takes the `main_method' as argument.
11203
11204 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
11205
11206         * cpu-sparc.md (endfilter): Add missing src1:i argument.
11207
11208 2007-08-30  Jonathan Chambers <joncham@gmail.com>
11209
11210         * driver.c: include the cil-coff.h header on Windows.
11211         
11212         Code is contributed under MIT/X11 license.
11213
11214 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11215
11216         * mini.c, driver.c: don't include the cil-coff.h header.
11217
11218 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11219
11220         * mini.c: flag places that needs fixes fo soft-float support.
11221
11222 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
11223
11224         * mini.h, inssel-float.brg: fix soft-float constant loads on big
11225         endian systems (partially from Dean Jenkins, bug #81924).
11226
11227 2007-08-28  Mark Probst  <mark.probst@gmail.com>
11228
11229         * mini.c (check_linkdemand): Remove embedded reference object in
11230         call to LinkDemandSecurityException.
11231         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
11232         with an IntPtr instead of a reference object.
11233
11234 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
11235
11236         * mini.c (handle_initobj): Handle alignment properly.
11237
11238         * inssel.brg (mini_emit_memset): Ditto. 
11239
11240         * inssel.brg (mini_emit_memcpy): Ditto. 
11241
11242         * inssel-sparc.brg: Ditto.              
11243
11244         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
11245
11246 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
11247
11248         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
11249         exceptions raised in unmanaged code. Fixes part of #82594.
11250
11251 2007-08-24  Mark Probst  <mark.probst@gmail.com>
11252
11253         * mini.c (mono_method_to_ir), declsec.c
11254         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
11255
11256 2007-08-22  Martin Baulig  <martin@ximian.com>
11257
11258         * debug-mini.h
11259         (MonoDebuggerThreadInfo): New typedef.
11260         (mono_debugger_thread_table): New global variable.
11261         (mono_debugger_thread_created): New public function.
11262         (mono_debugger_thread_cleanup): New public function.
11263
11264         * debug-debugger.h
11265         (MonoDebuggerInfo):
11266         - removed `get_current_thread' and `lookup_assembly'.
11267         - removed `data_table'.
11268         - added `thread_table'.
11269
11270         * mini.c
11271         (mono_thread_start_cb): Call mono_debugger_thread_created().
11272         (mono_thread_attach_cb): Likewise.
11273         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
11274         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
11275         initial domain.
11276
11277         * driver.c (mono_main): Move mono_debug_init() up, before calling
11278         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
11279
11280 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11281
11282         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
11283         together when passing several arguments of type double (gives a small
11284         speedup and saves a few bytes of generated code).
11285
11286 2007-08-20  Jb Evain  <jbevain@novell.com>
11287
11288         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
11289
11290 2007-08-20  Jb Evain  <jbevain@novell.com>
11291
11292         * mini.c (mono_method_to_ir): throw MethodAccessException
11293         and FieldAccessException instead of InvalidProgramException.
11294
11295 2007-08-20  Mark Probst  <mark.probst@gmail.com>
11296
11297         * mini.c: CoreCLR security checks.
11298
11299         * mini.h: Removed MonoSecurityMode (moved to
11300         metadata/security-manager.h) and mono_security_mode global var
11301         (replaced by set/get functions in security-manager.h).
11302
11303         * driver.c: Added "core-clr-test" security mode for testing.  Used
11304         set-function for setting security mode.
11305
11306 2007-08-17  Mark Probst  <mark.probst@gmail.com>
11307
11308         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
11309         the new jit_info_table.
11310
11311         * driver.c: Test code for the new jit_info_table (enabled by the
11312         define MONO_JIT_INFO_TABLE_TEST).
11313
11314 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
11315
11316         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11317         detection of call <REG> instruction sequence. Fixes build on freebsd.
11318
11319 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
11320
11321         * mini-exceptions.c: Fix a warning.
11322
11323 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
11324
11325         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
11326         stack overflow handling code on amd64 too.
11327
11328         * mini-exceptions.c (mono_setup_altstack): Make this use 
11329         mono_thread_get_stack_bounds ().
11330
11331         * mini-x86.h: Disable sigaltstack on solaris x86.
11332
11333 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
11336
11337 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
11338
11339         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
11340
11341 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
11342
11343         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
11344
11345         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
11346
11347 2007-08-03  Neale Ferguson <neale@sinenomine.net>
11348
11349         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
11350         due to alignment.
11351
11352 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11353
11354         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
11355         to be emitted (bug #82281).
11356
11357 2007-08-01  Martin Baulig  <martin@ximian.com>
11358
11359         Merged the `debugger-dublin' branch.
11360
11361         * debug-debugger.h (MonoDebuggerInfo):
11362         Removed the `old_*' compatibility entries.
11363         Added `debugger_version' and `data_table'.
11364         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
11365         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
11366
11367         * debug-mini.c
11368         (MiniDebugMethodBreakpointInfo): Add `address_list'.
11369         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
11370         instead of a `gconstpointer'.
11371         (mono_debugger_insert_method_breakpoint): Return a
11372         `MonoDebugMethodAddressList *'.
11373
11374 2007-06-28  Martin Baulig  <martin@ximian.com>
11375
11376         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
11377
11378 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
11379
11380         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
11381         __builtin_frame_address () since it is broken on older gcc versions.
11382
11383 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11384
11385         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
11386         on the stack overflow handling and made the managed stack overflows
11387         catchable in most cases using soft guard pages.
11388         * exceptions-x86.c: added code to restore the protection in the soft
11389         guard pages at the end of exception handling.
11390
11391 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
11392
11393         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
11394
11395 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11396
11397         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
11398         exception handling.
11399
11400 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11401
11402         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
11403         signal handling support until it has been ported to the new mechanism.
11404         * mini.c: fixed stack overflow detection and use the new
11405         architecture code  to handle signals on the altstack.
11406
11407 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
11408
11409         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
11410         stack overflows on the alt stack.
11411
11412 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
11413
11414         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
11415         stack overflows on the alt stack.
11416
11417 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
11418
11419         * exceptions-ppc.c: cleanup preparing for altstack support.
11420
11421 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
11422
11423         * exceptions-arm.c: cleanup preparing for altstack support.
11424
11425 2007-07-27  Mark Probst  <mark.probst@gmail.com>
11426
11427         * mini.c (print_jit_stats): Output hazard pointer stats.
11428
11429 2007-07-26  Mark Probst  <mark.probst@gmail.com>
11430
11431         * driver.c, mini.c: Replaced security mode flags with a single
11432         enum variable.
11433
11434 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11435
11436         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
11437
11438 2007-07-25  Mark Probst  <mark.probst@gmail.com>
11439
11440         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
11441         (which doesn't do anything yet) for activating Core CLR
11442         (Silverlight) security.
11443
11444 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
11445
11446         * mini-codegen.c: work around a possible gcc bug on arm.
11447
11448 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11449
11450         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
11451         message for platforms that don't support AOT compilation.
11452
11453 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
11454
11455         * mini.h, mini.c, driver.c: temporary smcs hack.
11456
11457 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
11458
11459         * mini-arm.h, mini-arm.c: arm EABI fixes.
11460
11461 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
11462
11463         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
11464         case.
11465
11466         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
11467         trampolines taking a method argument.
11468
11469         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
11470
11471         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
11472         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
11473
11474         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
11475         JIT compilation throws an exception. Fixes #82050.
11476
11477 2007-07-19  Mark Probst  <mark.probst@gmail.com>
11478
11479         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
11480         with the MONO_EXCEPTION_ defines.
11481
11482 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
11483
11484         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
11485         #82117.
11486         
11487         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
11488         the cause of an assertion.
11489
11490 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
11491
11492         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
11493         removed.
11494
11495 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
11496
11497         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
11498         assert. Should fix #82103.
11499
11500 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
11501
11502         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
11503         here too. Fixes #82095.
11504
11505         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
11506         addresses.
11507
11508         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
11509
11510         * mini-amd64.h: Enable IMT for amd64.
11511         
11512         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
11513
11514 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
11515
11516         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
11517
11518 2007-07-12  Mark Probst  <mark.probst@gmail.com>
11519
11520         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
11521         as soon as check_linkdemand sets an exception_type.
11522
11523 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11524
11525         * mini-x86.c: fixed offsets for IMT call sequence.
11526         * mini-x86.h: enable IMT again.
11527
11528 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
11529
11530         * trace.c (mono_trace_enter_method): Decode MonoType too.
11531
11532         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
11533
11534         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
11535
11536         * mini-amd64.c: Add preliminary IMT implementation.
11537         
11538 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11539
11540         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
11541         understand the new IMT-base interface invocation (thanks to
11542         Daniel Nauck for the report and the remote debugging session).
11543
11544 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11545
11546         * mini-x86.c: size and speed optimizations for the IMT bsearch.
11547
11548 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
11549
11550         * Makefile.am (aotcheck): Make this actually use the AOTed code.
11551
11552 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
11553
11554         * mini-trampolines.c: implement AOT IMT support.
11555         * mini-x86.h: enable IMT support for wider testing.
11556
11557 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11558
11559         * inssel.brg (emit_imt_argument): Add aot support here.
11560
11561         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
11562
11563 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11564
11565         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
11566         of the IMT implementation, partially from massi, with my
11567         implementation of the bsearch sequence. Disabled by default until
11568         the AOT code is implemented.
11569
11570 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11571
11572         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
11573
11574         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
11575
11576 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11577
11578         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
11579         arch-independent IMT JIT code from Massimiliano
11580         Mantione (massi@ximian.com) with small cleanups from me.
11581
11582 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
11583
11584         * Makefile.am: fix svn invocation to get the svn revision to be
11585         independent of the local language (build fix).
11586
11587 2007-07-09  Mark Probst  <mark.probst@gmail.com>
11588
11589         * mini.c (inline_method): Reset cfg->exception_type if the
11590         inlining is aborted.  Fixes: 82049.
11591
11592 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
11593
11594         * mini.c: remove assert from exception handling code when exception_ptr
11595         is not set.
11596
11597 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11598
11599         * mini.c (mono_codegen): Add an assert.
11600
11601         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
11602         enter and leave code.
11603         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
11604
11605 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11606
11607         * mini-ppc.c: fixed memory corruption for localloc(0)
11608         (bug #81852).
11609
11610 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11611         
11612         * mini.c: Fix warnings.
11613
11614 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
11615
11616         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
11617         to emit better double->int conversions.
11618
11619 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11620
11621         * mini.c: the provided Min/Max optimizations are valid for unisgned
11622         ints.
11623
11624 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
11625
11626         * 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
11627
11628 2007-06-28  Miguel de Icaza  <miguel@novell.com>
11629
11630         * mini.c (mono_running_on_valgrind): Add support for reporting the
11631         method and  its boundaries to valgrind.
11632
11633 2007-06-28  Martin Baulig  <martin@ximian.com>
11634
11635         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
11636
11637 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
11638
11639         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
11640
11641         * generic.2.cs: Add new test case.
11642
11643 2007-06-25  Martin Baulig  <martin@ximian.com>
11644
11645         Merged the `debugger-dublin' branch.
11646
11647         * debug-mini.c
11648         (mono_debugger_insert_method_breakpoint): New public method.
11649         (mono_debugger_remove_method_breakpoint): Likewise.
11650         (mono_debugger_check_breakpoints): New static method.
11651         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
11652
11653         * debug-debugger.h (MonoDebuggerInfo):
11654         Renamed (to keep backward compatibility in the vtable):
11655         `insert_breakpoint' -> `old_insert_breakpoint'.
11656         `remove_breakpoint' -> `old_remove_breakpoint'.
11657         `create_string' -> `old_create_string'.
11658         `lookup_class' -> `old_lookup_class'.
11659         `lookup_type' -> removed; changed into a dummy field.
11660         `lookup_assembly' -> `old_lookup_assembly'.
11661         Added (same functionality, but different signature):
11662         `create_string', `lookup_class', `lookup_assembly'
11663         Added new:
11664         `get_method_addr_or_bpt', `remove_method_breakpoint',
11665         `runtime_class_init'.
11666
11667         * debug-debugger.c: Merged the `debugger-dublin' branch.
11668
11669 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
11670
11671         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
11672         well.
11673         (peephole_pass): Likewise.
11674
11675 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
11676
11677         * driver.c: hopefully make setaffinity work also for ancient
11678         versions of linux.
11679
11680 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
11681
11682         * driver.c : win32 build fix.
11683
11684 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11685
11686         * driver.c: check for the MONO_NO_SMP env var and bind to a single
11687         processor if it is set.
11688
11689 2007-06-21  Martin Baulig  <martin@ximian.com>
11690
11691         * debug-mini.h: New file.
11692
11693         * debug-mini.c
11694         (mono_debugger_insert_breakpoint_full): Moved here from
11695         ../metadata/mono-debug-debugger.c.
11696         (mono_debugger_remove_breakpoint): Likewise.
11697         (mono_debugger_breakpoint_callback): Likewise.
11698
11699 2007-06-15  Raja R Harinath  <rharinath@novell.com>
11700
11701         * jit-icalls.c (mono_helper_compile_generic_method): Update to
11702         changes in MonoGenericClass.
11703
11704 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
11705
11706         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
11707
11708 2007-06-14  Raja R Harinath  <rharinath@novell.com>
11709
11710         * jit-icalls.c (mono_helper_compile_generic_method): Update to
11711         removal of MonoGenericMethod.
11712
11713 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11714
11715         * mini-exceptions.c: hooks for the exception events profiling API.
11716
11717 2007-06-14  Randolph Chung  <tausq@debian.org>
11718
11719         * Makefile.ma: Add hppa target.
11720         * mini-arch.h: Include mini-hppa.h
11721         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
11722         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
11723         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11724
11725 2007-06-14  Randolph Chung  <tausq@debian.org>
11726
11727         * inssel.brg: Add rules for "chained" compare-branch operations so that
11728         a single compare op can affect multiple branches.  Adjust cost for
11729         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
11730         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
11731         cost for some rules so that they can more easily be overridden by
11732         per-arch rules (with fixes from lupus).
11733         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11734
11735 2007-06-13  Randolph Chung  <tausq@debian.org>
11736
11737         * mini-ops.h: Reorder branch ops so that they match the order of the
11738         corresponding CEE_* ops.  The code expects them this way.
11739         Add new ops for HPPA target.
11740         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11741
11742 2007-06-13  Randolph Chung  <tausq@debian.org>
11743
11744         * mini-exceptions.c: Handle cases where the stack grows towards
11745         larger addresses.
11746         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
11747
11748 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11749
11750         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
11751         counter.
11752         * driver.c: explain where a non-matching corlib is found.
11753
11754 2007-06-13  Mark Probst  <mark.probst@gmail.com>
11755
11756         * mini.c (print_jit_stats): Output dynamic code allocation stats.
11757
11758 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
11759
11760         * mini-exceptions.c: Generate a method profile leave event during
11761         an exception to ensure that the profiler gets notified.
11762
11763 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
11764
11765         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
11766         branch.
11767
11768         * cpu-amd64.md: Add long_and/or/xor opcodes.
11769
11770 2007-06-06  Wade Berrier  <wberrier@novell.com>
11771
11772         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
11773         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
11774         length of instruction shr_imm (expected 8, got 10)
11775
11776 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
11777
11778         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
11779
11780 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11781
11782         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11783         MonoInternalHashTable again (fixed bug in the internal hash table
11784         code).
11785
11786 2007-06-06  Mark Probst  <mark.probst@gmail.com>
11787
11788         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
11789         Have to figure out what makes it crash the SWF regression.
11790
11791 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
11792
11793         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
11794
11795 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11796
11797         * mini.c: optimize out the type check when storing null in a
11798         reference array.
11799
11800 2007-06-04  Mark Probst  <mark.probst@gmail.com>
11801
11802         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
11803         MonoInternalHashTable.
11804
11805 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
11806
11807         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
11808         signed integer methods.
11809
11810 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11811
11812         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
11813         permanently since the current approach doesn't work.
11814
11815 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
11816
11817         * inssel.brg (stmt): Only call delegate->invoke_impl if 
11818         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
11819
11820 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11821
11822         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
11823         the sreg2==rdx case.
11824         
11825         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
11826         account if it contains a rex prefix.
11827         (peephole_pass): Handle OP_FMOVE as well.
11828
11829 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
11830
11831         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
11832         as it causes regressions.
11833
11834 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
11835
11836         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
11837         static case as well.
11838
11839         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
11840
11841         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11842         (mono_arch_get_this_arg_from_call): Ditto.
11843
11844         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
11845
11846         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
11847         invoke_impl field.
11848
11849         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
11850         (mono_arch_get_this_arg_from_call): Ditto.
11851
11852         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
11853         
11854         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
11855         try to create optimized invoke code and use that for further invocations. 
11856         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
11857
11858         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
11859
11860 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
11861
11862         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
11863         sealed classes or methods.
11864         *devirtualization.cs: tests for the new optimization
11865
11866 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
11867
11868         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
11869         by the update_volatile () function.
11870
11871 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
11872
11873         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
11874         require it.
11875
11876         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
11877
11878 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
11879
11880         * mini.c: Add configure checks for header files.
11881         * mini-x86.c: Add configure checks for header files.
11882         * trace.c: Add configure checks for header files.
11883         * aot-runtime.c: Add configure checks for header files.
11884         * aot-compiler.c: Add configure checks for header files.
11885         * driver.c: Add configure checks for header files.
11886         * mini-codegen.c: Add configure checks for header files.
11887         
11888         Code is contributed under MIT/X11 license.
11889
11890 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
11891
11892         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
11893         icompare_imm -128 + op_iclt. Fixes #81703.
11894
11895 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
11896
11897         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
11898
11899 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11900
11901         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
11902         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
11903         so that all isinst checks now use "interface_bitmap".
11904
11905 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
11906
11907         * cpu-amd64.md (jmp): Fix a warning.
11908
11909         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
11910
11911         * basic.cs: Add new regression test.
11912
11913         * basic.cs: Remove test which is now in basic-long.cs.
11914
11915         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
11916
11917         * basic-long.cs: Add new test.
11918         
11919 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
11920
11921         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
11922
11923 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
11924
11925         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
11926
11927         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
11928         places.
11929         
11930         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
11931         throwing code a bit.
11932
11933         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
11934         the exception throwing code a bit.
11935
11936         * mini-x86.c (get_call_info): Allocate result from a mempool.
11937
11938 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
11939
11940         * aot-compiler.c (find_typespec_for_class): Fix the assert.
11941
11942         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
11943
11944         * mini.h (MonoCompile): Add 'token_info_hash' field.
11945
11946         * mini.c: Save token->method associations during compilation so the AOT 
11947         compiler can use it.
11948         
11949         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
11950         which reference generic classes and methods.
11951
11952 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
11953
11954         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
11955
11956         * aot-compiler.c (compile_method): Fix a typo in a comment.
11957
11958         * aot-runtime.c (decode_cached_class_info): Skip generic types.
11959
11960         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
11961         everything generic.
11962
11963         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
11964
11965 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
11966
11967         * mini.h (MonoCompile): Add 'args' field.
11968
11969         * mini.c (mono_compile_create_vars): Store variables representing the arguments
11970         into cfg->args.
11971
11972         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
11973
11974 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
11975
11976         * mini.c (mono_compile_get_interface_var): Remove this unused function.
11977
11978         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
11979
11980         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
11981         opcodes for some opcodes.
11982
11983         * mini.h *.brg *.c: Use the new opcodes.
11984
11985 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
11986
11987         * mini.h: Bumped aot revision.
11988
11989         * inssel.brg: modified code generation of type checks for interfaces
11990         to use the new "MonoClass.interface_bitmap" instead of the old
11991         "MonoClass.interface_offsets".
11992
11993 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
11994
11995         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
11996
11997 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
11998
11999         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
12000         64 bit platforms.
12001
12002 2007-04-27  Neale Ferguson <neale@sinenomine.net>
12003
12004         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
12005
12006 2007-04-27  Wade Berrier  <wberrier@novell.com>
12007
12008         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
12009         mini.h) to fix build.
12010
12011 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
12012
12013         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
12014         
12015         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
12016         causes the corlib unit tests to fail.
12017
12018 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
12019
12020         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
12021
12022         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
12023
12024         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
12025         opcodes to the comparison relations.
12026
12027         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
12028         opcodes to their types.
12029         
12030         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
12031
12032         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
12033         it in cfg->arch.cinfo.
12034
12035         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
12036
12037         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
12038         cfg->cil_offset_to_bb.
12039
12040 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
12041
12042         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
12043         created becase of initlocals.
12044
12045 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
12046
12047         * mini-alpha.c cpu-alpha.md: More alpha port work from 
12048         Sergey Tikhonov <tsv@solvo.ru>.
12049
12050 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
12051
12052         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
12053
12054 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
12055
12056         * cpu-s390.md (break): Correct the length of break instruction.
12057
12058 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12059
12060         * mini.c: fix a couple of soft-float issues and comments.
12061
12062 2007-04-15  Miguel de Icaza  <miguel@novell.com>
12063
12064         * trace.c (is_filenamechar): - is also a filename char.
12065
12066 2007-04-15  Neale Ferguson <neale@sinenomine.net>
12067
12068         * mini-s390.c: Correct checking for enum type in return value processing.
12069
12070 2007-04-14  Raja R Harinath  <rharinath@novell.com>
12071
12072         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
12073         (version.h): Makefile is in the build directory.
12074
12075 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
12076
12077         * mini-amd64.h: fix for assertion failure on Solaris/amd64
12078
12079 2007-04-11  Martin Baulig  <martin@ximian.com>
12080
12081         * mini.c (can_access_member): Fix handling of generic classes;
12082         fixes #81259.
12083
12084 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
12085
12086         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
12087
12088 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
12089
12090         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
12091
12092 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12093
12094         * mini-codegen.c: make sure the right spill amount is
12095         used for fp or integer registers (fixes the float_sub_spill() on ppc).
12096
12097 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
12098
12099         * mini-ppc.c: fixes for the fp_branch_nan test.
12100
12101 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
12102
12103         * basic.cs: Comment out new test which still fails on ia64.
12104
12105 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12106
12107         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
12108
12109 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12110
12111         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
12112
12113 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
12114
12115         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
12116         on 64 bit machines. Fixes part of #80738.
12117
12118         * basic.cs: Add regression test.
12119
12120 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12121
12122         * inssel.brg basic.cs: Revert previous change to fix build.
12123
12124         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
12125         platforms.
12126         
12127         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
12128
12129         * basic.cs: Add new regression test.
12130
12131 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12132
12133         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
12134         many arguments.
12135
12136 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12137
12138         * cpu-s390x.md: Correct length of break instruction.
12139
12140 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12141
12142         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
12143         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
12144
12145 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
12146
12147         * *.c: Begin WIN64 port.
12148         * mini.c:  Use correct register in profiler.
12149         * mini-amd64.c: No inline assembly on Win64.
12150         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
12151         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
12152         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
12153         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
12154         mono_arch_ip_from_context for Win64.
12155         
12156         Contributed under MIT/X11 license.
12157
12158 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
12159
12160         * exceptions-amd64.c (seh_handler): Ditto.
12161
12162         * exceptions-x86.c (seh_handler): Fix a memory leak.
12163
12164 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
12165
12166         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
12167         mini-s390x.c: fixed peephole optimizations to deal
12168         correctly with 1 and 2 byte reload avoidance.
12169
12170 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
12171
12172         * cpu-s390.md, cpu-s390x.md: update localloc length.
12173
12174 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12175
12176         * cpu-g4.md: added missing descriptions.
12177
12178 2007-03-14  Miguel de Icaza  <miguel@novell.com>
12179
12180         *  Makefile.am: Add support so the tail tests are not executed on
12181         PowerPC as that is a known limitation of the PowerPC port.
12182
12183 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12184
12185         * runmdesc.bat:  Move to msvc directory.
12186         
12187 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12188
12189         * runmdesc.bat:  Run executable that was produced by the current
12190         target and sent via an argument.
12191         
12192 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
12193
12194         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
12195         #81102.
12196
12197         * generics.2.cs: Add regression test.
12198
12199 2007-03-09  Wade berrier  <wberrier@novell.com>
12200
12201         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
12202
12203 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
12204
12205         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
12206         AOT code depends on this.
12207
12208 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
12209
12210         * mini.c: more precise tracking of types in the eval stack
12211         (part of fix for bug #81044).
12212
12213 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
12214
12215         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
12216
12217         * aot-compiler.c (encode_patch): Remove an obsolete comment.
12218
12219 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
12220
12221         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
12222
12223         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
12224
12225 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
12226
12227         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
12228         a pointer on 64 bit systems. Fixes #80190.
12229
12230         * iltests.il: Add new regression test.
12231
12232 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12233
12234         * mini.c: inline a constant for Environment.IsRunningOnWindows.
12235
12236 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
12237
12238         * trace.c: Remove an erroneous alignemnt check when tracing.
12239           Fixes --trace on OSX86.
12240
12241 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
12242
12243         * mini-$(arch).h: initialize SP in context for all the archs.
12244
12245 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
12246
12247         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
12248         regressions in the thread tests.
12249
12250 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
12251
12252         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
12253         - fixed implementation of LOCALLOC opcode
12254         - implemented non-un compare for floats
12255         - code cleanup
12256         - implementation of FDIV and CKFINITE opcodes
12257         - fixes for latest mono updates
12258         - additional arch opcodes
12259
12260 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12261
12262         * Makefile.am: simplify and merge rules for cross-compilation.
12263
12264 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
12265
12266         * local-propagation.c: Actually *apply* the fix for bug 80591...
12267
12268 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12269
12270         * mini-exceptions.c: backuot part of the last change
12271         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
12272
12273 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
12274         * inssel.brg: Fix bug 59286.
12275
12276
12277 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
12278
12279         * mini-exceptions.c: patch from Zoltan to correctly check for
12280         stack boundaries (using the stack register, not the frame register),
12281         fixes bugs #80724, #79717.
12282
12283 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
12284
12285         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
12286         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
12287
12288         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
12289         presence of frame pointer elimination.
12290
12291 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
12292         
12293         * mini-x86.h: NetBSD UCONTEX_REG defines.
12294
12295 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
12296
12297         * inssel-amd64.brg: Fix amd64 build.
12298
12299 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
12300
12301         * mini.h: remove extern to workaround what looks likes gcc bug 26905
12302         on amd64.
12303
12304 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
12305
12306         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
12307         ends.
12308
12309         * mini-<ARCH>.c: Use mono_is_regsize_var ().
12310
12311 2007-01-30 Mark Mason <mason@broadcom.com>
12312
12313            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
12314            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
12315            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
12316            beginning support for CEE_JMP [not quite working yet]
12317            * tramp-mips.c: LMF handling now works
12318         
12319 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
12320
12321         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
12322
12323         * mini.h (NULLIFY_INS): New macro.
12324
12325 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12326
12327         * mini.c: statistical profiler fix for windows, patch
12328         from Tor Lillqvist (tml@novell.com).
12329
12330 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
12331         * local-propagation.c: Fix bug 80591.
12332
12333 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
12334
12335         * Makefile.am: put back the --export-dynamic option as with
12336         the previous gmodule flags (thanks to Robert Jordan).
12337
12338 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
12339
12340         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
12341
12342         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
12343         simplify and speed up the local register allocator. Also rename some fields
12344         like iassign->vassign.
12345         
12346         * regalloc.c: Remove some functions which are no longer used since their
12347         inlined version is in mini-codegen.c.
12348         
12349         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
12350
12351         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
12352
12353 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
12354
12355         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
12356         narrowing. Fixes #80622.
12357
12358         * iltests.il: Add new regresssion test. 
12359
12360 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12361
12362         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
12363         debug-debugger.c, debug-debugger.h: warning fixes.
12364         * driver.c: updated copyright year and made it fit in one line.
12365
12366 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
12367
12368         * aot-runtime.c: updated to use mono-dl instead of gmodule.
12369
12370 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
12371
12372         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
12373
12374         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
12375
12376         * iltests.il: Add new test for bug #80507.
12377
12378 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12379
12380         * mini-arm.h: use soft-float also on vfp for now.
12381
12382 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
12383
12384         * mini.c: fix some more soft-float issues.
12385
12386 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
12387
12388         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
12389
12390 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
12391         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
12392         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
12393         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
12394
12395 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
12396
12397         * mini-arm.c: typo fix.
12398
12399 2007-01-23  Neale Ferguson <neale@sinenomine.net>
12400
12401         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
12402
12403 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
12404
12405         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
12406         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
12407
12408         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
12409
12410         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
12411
12412         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
12413         
12414         * inssel.brg: Fix a warning.
12415
12416         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
12417
12418         * abcremoval.c ssa.c ssapre.c: Update after this change.
12419         
12420         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
12421
12422         * dominators.c (df_set): Use mono_bitset_union_fast.    
12423
12424 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
12425
12426         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
12427         mini-codegen.c: reduce relocations and memory usage for the cpu
12428         description.
12429
12430 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
12431
12432         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
12433
12434         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
12435         to reduce their size.
12436
12437 2007-01-19 Mark Mason <mason@broadcom.com>
12438
12439         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
12440         * mini-mips.c: more configuration macros, support long conditional branches, additional
12441         asserts, fix epilog instrumentation.
12442         * mini-mips.h: use standard stack walk
12443         * cpu-mips.md: increase size of div, rem and conditional branches
12444         
12445 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
12446
12447         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
12448         to cpu spec data.
12449
12450 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
12451
12452         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
12453         (compile_method): Ditto.
12454
12455         * aot-runtime.c (decode_klass_info): Ditto.
12456
12457         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
12458         needed by the code generated by inssel.brg. Also fix a warning.
12459
12460 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
12461
12462         * mini.c: deal with enums that become genericinsts by
12463         being nested in a generic class (bug #79956).
12464
12465 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
12466
12467         * mini.c: match the generic definition to check for
12468         private access with generic types (bug #78431).
12469
12470 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
12471
12472         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
12473         to make life easier for people cross-compiling that insist on not
12474         using scratchbox.
12475
12476 2007-01-17 Mark Mason <mason@broadcom.com>
12477
12478         * inssel-long.brg: patch to deal with mips missing flags
12479         * inssel-long32-mips.brg: implement overflow checks
12480         * insset-mips.brg: implement overflow checks
12481         * mini-mips.h: implement conditional exception handling
12482         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
12483           Remove unused code, minor cleanups.
12484         * exceptions-mips.c: minor cleanups
12485         * mini-ops.h: add mips conditional exception ops
12486         * cpu-mips.md: add mips conditional exception ops
12487
12488         
12489 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
12490
12491         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
12492         to deal with mips missing of flags.
12493
12494 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
12495
12496         * exceptions-ppc.c: execute fault handlers.
12497
12498 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
12499
12500         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
12501
12502 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12503
12504         * mini.c: handle also floating point values in initialize_array.
12505
12506 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
12507
12508         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
12509         array initialization and make it conditional on the intrins option.
12510
12511 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12512
12513         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
12514         relocations and put the patch info names close to the enum definition.
12515
12516 2007-01-15 Mark Mason <mason@broadcom.com>
12517
12518         * basic.cs, exceptions.cs: break up large tests to increase debugability.
12519
12520 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12521
12522         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
12523
12524 2007-01-12  Raja R Harinath  <rharinath@novell.com>
12525
12526         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
12527
12528 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
12529
12530         * Makefile.am: distribute the mips sources.
12531
12532 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12533
12534         * mini-codegen.h: handle bug #80489 here, by excluding ecx
12535         directly.
12536
12537 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
12538
12539         * cpu-x86.md: back out for now as this triggers other regressions.
12540
12541 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12542
12543         * cpu-x86.md: force src1 and dest regpair for long shift instructions
12544         to eax:edx, so ecx can't get allocated to them (bug #80489).
12545
12546 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
12547
12548         * mini.c, mini-exceptions.c: enabled running fault handlers
12549         (bug #80469).
12550
12551 2007-01-03  Miguel de Icaza  <miguel@novell.com>
12552
12553         * driver.c: If nothing fail, do not use the string "failed",
12554         because it makes it very annoying to view test result logs on the
12555         web. 
12556
12557 2006-12-30  Miguel de Icaza  <miguel@novell.com>
12558
12559         * debug-debugger.c (mono_debugger_main): Rename "main" to
12560         "main_method" to prevent a warning.
12561
12562         Remove a warning for unused field.
12563
12564 2006-12-28  Martin Baulig  <martin@ximian.com>
12565
12566         * debug-debugger.c
12567         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
12568
12569 2006-12-22  Martin Baulig  <martin@ximian.com>
12570
12571         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
12572         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
12573         seperate `.mdb_debug_info' section, so we can access it from the
12574         debugger even if the binary is stripped.
12575
12576         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
12577         from the `.mdb_debug_info' here to prevent the linker from
12578         removing that section.
12579
12580         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
12581         mdb-debug-info64.s.
12582
12583 2006-12-19  Robert Jordan  <robertj@gmx.net>
12584
12585         * mini-x86: enable the code to return small structures in
12586         registers for FreeBSD as well. Fixes bug #80278.
12587         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
12588
12589 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12590
12591         * mini-x86.c: align the stack when calling the profiler
12592         function instrumenting the prolog (on OSX).
12593
12594 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12595
12596         * mini.c: emit a break opcode where Debugger.Break () is called.
12597
12598 2006-12-13  Miguel de Icaza  <miguel@novell.com>
12599
12600         * mini.c (mono_method_to_ir): Provide useful information on this
12601         assert, to prevent others from debugging like I did.
12602
12603 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
12604
12605         * mini.c: enable code which was incorrectly commented
12606         (bug #80235).
12607
12608 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
12609
12610         * mini-x86.c: enable on OSX, too, the code to return small
12611         structures in registers.
12612
12613 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12614
12615         * mini-x86.c: remove the use of the dynamic code manager here, too.
12616
12617 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12618
12619         * mini.h, debug-debugger.c, tramp-*.c: fixed 
12620         mono_debugger_create_notification_function() to use
12621         mono_global_codeman_reserve () instead of a dynamic code manager.
12622
12623 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
12624
12625         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
12626         ves_array_element_address() jit icall and use a generated
12627         managed method instead (which is about 4 times faster for a rank 3
12628         array access).
12629
12630 2006-11-29  Mark Mason  <mason@broadcom.com>
12631
12632         * basic-calls.cs: additional tests for passing
12633         structures as function arguments.
12634
12635 2006-11-29  Mark Mason  <mason@broadcom.com>
12636
12637         * mini-mips.h: disable custom exception handling
12638         * mini-mips.c: throw/rethrow should use jalr to call
12639         exception stubs.  Fixed bug with passing structures
12640         by value. More support for tracing floating point
12641         functions.
12642
12643 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12644
12645         * mini.c: fixed typo in the soft-float ldind.r4 handling
12646         (bug #80086).
12647
12648 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
12649
12650         * mini.c, mini.h, driver.c: added --runtime command line
12651         option to select a different runtime than the autodetected one.
12652         * jit.h: added API for embedders to initialize with a specific
12653         runtime version.
12654
12655 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
12656
12657         * mini.c: handle also boxing of r4 values (bug #80024).
12658
12659 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
12660
12661         * mini-ppc.c: force indirect calls until we reserve
12662         enough address space for all the generated code.
12663
12664 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
12665
12666         * exceptions-arm.c: workaround bugs in the libc definition
12667         of struct ucontext.
12668
12669 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
12670
12671         * inssel.brg: fixes from me and Mark Mason.
12672
12673 2006-11-23  Dick Porter  <dick@ximian.com>
12674
12675         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
12676         semaphore display now we've fixed the initial value
12677
12678 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12679
12680         * inssel.brg: partially revert the last change to fix the build.
12681
12682 2006-11-21  Mark Mason  <mason@broadcom.com>
12683
12684         * inssel.brg: Add and use compare-and-branch macros to support
12685         architectures that do not have condition code registers (ie. MIPS).
12686         * *-mips.{c,brg,md}: Fix copyright statements
12687
12688 2006-11-20  Mark Mason  <mason@broadcom.com>
12689
12690         * Makefile.am: remove mini-codegen.c from list of MIPS sources
12691         * mini.c: Allow GET_CONTEXT to be specified by the arch port
12692         * mini.h: Added declaration for mono_print_ins()
12693         * mini-codegen.c: added ins_spec initializer for MIPS
12694         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
12695         vreg to be virtual and hreg to be non-virtual.
12696         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
12697         is not yet working/implemented correctly.
12698         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
12699         non-static, fixup calls to print_ins() from other parts in the file.
12700
12701 2006-11-20  Mark Mason  <mason@broadcom.com>
12702
12703         * basic-calls.cs: added tests for passing structures as arguments
12704         to calls.
12705
12706 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
12707
12708         * inssel-long32.brg: optimize signed division by power of two.
12709
12710 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
12711
12712         * mini-arm.c: added support for interworking with thumb code
12713         (mono must be still be built using the ARM instruction encoding).
12714
12715 2006-11-19  Miguel de Icaza  <miguel@novell.com>
12716
12717         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
12718         verifier has different rules for it.   Fixes a few verifier issues
12719         in the test suite.
12720
12721         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
12722         at the end, so people know what happened.
12723
12724 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
12725
12726         * brach-opts.c: in optimize_exception_target() make sure we
12727         are in a catch clause (fixes bug #79871).
12728
12729 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12730
12731         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
12732         more soft-float support fixes.
12733
12734 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
12735
12736         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
12737         that are passed half on the stack and half in registers.
12738
12739 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
12740
12741         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
12742         more mips integration work from Mark E Mason 
12743         <mark.e.mason@broadcom.com>.
12744
12745 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
12746
12747         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
12748         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
12749         tramp-mips.c: added sources for the mips port, not
12750         integrated in the build yet. Contributed by
12751         Mark E Mason <mark.e.mason@broadcom.com>.
12752
12753 2006-11-14  Neale Ferguson <neale@sinenomine.net>
12754
12755         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
12756
12757 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
12758
12759         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
12760         put the soft-float rules in its own file since it seems to
12761         break s390 compilation.
12762
12763 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
12764
12765         * mini-arm.c: fixed wrnings.
12766
12767 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
12768
12769         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
12770         inssel-arm.brg: ARM support for soft-float.
12771
12772 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
12773
12774         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
12775         loads and stores of 32 bit fp values.
12776
12777 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
12778
12779         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
12780
12781         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
12782         works. Fixes #79852 and #79463.
12783
12784 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
12785
12786         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
12787         more soft-float support WIP and fixes.
12788
12789 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
12790
12791         * mini-arm.c: some VFP updates.
12792
12793 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
12794
12795         * mini-exceptions.c: 0 is a valid local var offset in some
12796         architectures, don't assert (bug #78508).
12797
12798 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
12799
12800         * exceptions-arm.c: fixed off by one error in stack walk code.
12801
12802 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
12803
12804         * mini.h, mini.c: more precise tracking of type load exceptions.
12805
12806 2006-11-03  Robert Jordan  <robertj@gmx.net>
12807
12808         * Makefile.am: [WIN32] Add monow.exe target.
12809         * driver.c: [WIN32] Don't detach the console when debugging.
12810         Fixes bug #79797.
12811         
12812 2006-10-30  Miguel de Icaza  <miguel@novell.com>
12813
12814         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
12815
12816 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
12817
12818         * aot-compiler.c (emit_method_info): Add a case missed earlier.
12819
12820         * driver.c (mini_regression): Fix --regression with AOT.
12821
12822         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
12823
12824 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
12825
12826         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
12827
12828         * mini-sparc.h: Don't use sigaction on sparc/linux.
12829
12830         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
12831
12832         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
12833
12834         * mini-exceptions.c: Add proper include files for getpid ().
12835
12836 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
12837
12838         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
12839         address instead of a MonoJitInfo* to avoid decoding the exception info for the
12840         method.
12841
12842         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
12843         name cache to reduce its size.
12844
12845         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
12846
12847 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
12848
12849         * mini-x86.c: Save/restore the current LMF structure more efficiently using
12850         the mono_lmf TLS variable.
12851
12852         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
12853         trampoline lmf frames.  
12854
12855         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
12856
12857 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
12858
12859         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
12860         the mono_lmf TLS variable.
12861
12862         * mini-exceptions.c: Access the LMF structure through accessors.
12863
12864         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
12865         variable instead of in jit_tls->lmf.
12866
12867         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
12868         
12869         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
12870         trampoline lmf frames.
12871
12872         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
12873
12874 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
12875
12876        * mini.c trace.c mini-x86.c: Revert these too.
12877         
12878        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
12879        signature change.
12880
12881 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
12882
12883         * genmdesc.c: removed now dead code.
12884
12885 2006-10-09  Robert Jordan <robertj@gmx.net>
12886
12887         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
12888
12889 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
12890
12891         * mini.h: do not leave gaps in the opcode values.
12892
12893 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
12894
12895         * jit-icalls.h: flag functions as internal here, too.
12896
12897 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
12898
12899         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
12900         functions with the internal attribute.
12901
12902 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
12903
12904         * aot-compiler.c: fclose the file descriptor in the profile read loop.
12905
12906 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
12907
12908         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
12909         for soft-float.
12910
12911 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
12912
12913         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
12914         tail calls as on other platforms.
12915
12916         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
12917
12918         * iltests.il: Add a few tailcall tests.
12919
12920 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12921
12922         * driver.c: fix loop for old compilers (bug #79521).
12923
12924 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
12925
12926         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
12927
12928         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
12929
12930         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
12931         metadata without any code.
12932
12933         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
12934         more precise debugging information using gdb.
12935
12936 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
12937
12938         * inssel-ia64.brg: Make the helper methods static.
12939
12940 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12941
12942         * inssel-x86.brg: make the helper methods static.
12943
12944 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
12945
12946         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
12947
12948 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
12949
12950         * mini.c: updates for monoburg changes.
12951         * inssel.brg: make a few helper functions static as they should.
12952
12953 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
12954
12955         * Makefile.am: Move mini-codegen.c to common_sources.
12956
12957 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
12958
12959         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
12960         instructions.
12961         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
12962         mini-ppc.h: port to use the common local register allocator.
12963
12964 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12965
12966         * mini.h: Remove the comment too then.
12967
12968 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
12969
12970         * mini.h: put back backend.data which is to be used shortly and
12971         doesn't increase the size of MonoInst. If any 64 bit arch aligned
12972         pointers on 4 byte boundaries it'd have much bigger issues running
12973         and you can ifdef it out anyway.
12974
12975 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12976
12977         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
12978         MonoInst size by 4 bytes on 64 bit machines.
12979
12980 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
12981
12982         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
12983         replacement with more meaningful field names. Arch maintainers, please
12984         check the assigned names are good enough for your arch.
12985
12986 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
12987
12988         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
12989         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
12990
12991 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
12992
12993         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
12994         relocations and memory requirements, put the optimization flags
12995         definitions in their own file.
12996
12997 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
12998
12999         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
13000
13001         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
13002
13003 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
13004
13005         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
13006
13007 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
13008
13009         * inssel.brg: use the correct function to get the size of an item
13010         in an array, given an element class.
13011         * aot-compiler.c: do not access class->class_size directly.
13012
13013 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13014
13015         * mini.h, debug-mini.c: added a debugging function to print
13016         info about local variables and arguments in a jitted method.
13017
13018 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
13019
13020         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13021
13022         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
13023
13024 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13025
13026         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
13027         inner and outer loops when passing vtypes.
13028
13029 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
13030
13031         * mini-ppc.c: take into account the cpu errata for cache flushing
13032         which caused some random errors (bug #79381).
13033
13034 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13035
13036         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
13037         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
13038
13039 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
13040
13041         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
13042         loaded.
13043
13044         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
13045         freebsd ports tree.
13046
13047         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
13048         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
13049
13050         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
13051         displacement.
13052
13053 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
13054
13055         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
13056
13057 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
13058
13059         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
13060         macro does not have to be changed during debugging.
13061
13062         * 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>.
13063
13064         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
13065
13066         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
13067         
13068         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
13069         MONO_ARCH_NO_EMULATE_MUL is defined.
13070
13071         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
13072
13073         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
13074
13075         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
13076
13077         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
13078         
13079 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
13080
13081         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
13082         stuff to mini-exceptions.c where it is used.
13083
13084         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
13085         setup code, the real one is in mini-exceptions.c.
13086
13087         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
13088         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
13089         some changes from the freebsd ports tree.
13090
13091         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
13092         constants.
13093         
13094         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
13095
13096 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
13097
13098         * mini.c: on Linux, check for /proc to be mounted
13099         (bug# 79351, novell bug#201204).
13100
13101 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
13102
13103         * mini.c: handle cases where pthread_attr_getstack() behaves
13104         incorrectly (bug #78096).
13105
13106 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
13107
13108         * mini-arm.c: support larger stack frames (bug #79272).
13109
13110 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
13111
13112         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
13113
13114         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
13115         tokens.
13116
13117         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
13118         mono_class_from_name () to find a class from its name.
13119
13120         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
13121
13122 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
13123
13124         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
13125
13126 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
13127
13128         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
13129
13130 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
13131
13132         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
13133         callinfo->trampoline.
13134
13135         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
13136         fixes #79271.
13137         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
13138         future.
13139
13140 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
13141
13142         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
13143
13144 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
13145
13146         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
13147         stats.method_trampolines, it is already done by the generic trampoline code.
13148
13149         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
13150         
13151 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
13152
13153         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
13154
13155         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
13156
13157         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
13158
13159         * mini.c (print_jit_stats): Print mscorlib mempool size too.
13160         
13161         * mini.c (print_jit_stats): Print new stats.
13162
13163         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13164
13165 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
13166
13167         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
13168         Address on two dimensional arrays. Fixes #78729.
13169
13170         * mini.h (MonoCompile): Add a 'skip_visibility' field.
13171
13172         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
13173         a method.
13174
13175         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
13176
13177         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
13178         #79130.
13179         
13180         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
13181         a race condition.
13182         (mini_get_ldelema_ins): Ditto.
13183
13184 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
13185
13186         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
13187         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
13188         Fixes #79213.
13189
13190 2006-08-29 Neale Ferguson <neale@sinenomine.net>
13191
13192         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
13193         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
13194
13195         * exceptions-s390x.c: Cosmetic change.
13196
13197         * tramp-s390.c: Fix warning.
13198
13199         * cpu-s390.md: Correct length of mul_imm.
13200
13201 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13202
13203         * aot-compiler.c: added binary writer with ELF backend
13204         implementation (only on Linux/x86 for now).
13205
13206 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13207
13208         * Makefile.am: Don't run net 2.0 AOT tests.
13209
13210         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
13211         (mono_compile_assembly): Skip net 2.0 assemblies as well.
13212
13213         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
13214
13215 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13216
13217         * aot-compiler.c: simplified and refactored the asm-writing code
13218         to allow different backends.
13219
13220 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13221
13222         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
13223
13224         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
13225         little. Share patches of type TYPE_FROM_HANDLE as well.
13226
13227         * mini.c (mono_patch_info_equal): New helper function.
13228         (mono_patch_info_hash): Ditto.
13229
13230         * aot-compiler.c (emit_method_code): Fix s390 build.
13231
13232         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
13233         is not handled because it is stored as a flag and not as a type ctor. Fixes
13234         #79016.
13235
13236 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
13237
13238         * aot-compiler.c: Fix computation of GOT slot statistics.
13239         
13240         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
13241         Also remove support for not PIC AOT.
13242
13243         * mini.h: Bump AOT file format version.
13244
13245         * objects.cs: Add a test for #78990.
13246
13247         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
13248         (peter.dettman@iinet.net.au). Fixes #79087.
13249
13250         * basic-long.cs: Add a test for the above.
13251
13252 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
13253
13254         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
13255         
13256         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
13257         code somewhat.
13258
13259 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
13260
13261         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
13262         exceptions.
13263
13264 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
13265
13266         * mini.c: Don't verify COM proxy invoke calls
13267         
13268
13269 2006-08-10  Dick Porter  <dick@ximian.com>
13270
13271         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
13272         which process is holding semaphores locked.
13273
13274 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
13275
13276         * mini-ia64.c mini-amd64.c: Fix #79027.
13277
13278         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
13279
13280         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
13281
13282         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
13283         implicit arguments in a vararg call. Fixes #79027.
13284
13285 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
13286
13287         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
13288         (mono_get_array_new_va_signature): Ditto.
13289
13290 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
13291
13292         * aot-runtime.c: Call init_plt lazily.
13293
13294         * inssel-long.brg: Fix unsigned long->int conversion.
13295
13296         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
13297
13298         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
13299         that most data is now in the .rss/.data section.
13300
13301 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
13302
13303         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
13304
13305         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
13306
13307         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
13308
13309         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
13310
13311         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
13312         virtual call. Fixes #79010.
13313
13314         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
13315         and use the result as the this argument in the real call.
13316
13317         * generics.2.cs: Add a new test for #79010.
13318         
13319 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
13320
13321         * mini-x86.c: Fix a warning.
13322
13323         * aot-compiler.c: Add a bunch of statistics.
13324
13325         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
13326
13327 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
13328
13329         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
13330
13331 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
13332
13333         * 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>.
13334
13335 2006-07-13  Miguel de Icaza  <miguel@novell.com>
13336
13337         * mini.c (mono_method_to_ir): Obtain the original method in the
13338         CIL stream and use this to perform validation.
13339
13340         Fixed: #78816
13341
13342 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
13343
13344         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
13345         (mono_arch_call_opcode): Ditto.
13346
13347         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
13348         #78826.
13349
13350         * mini.c (mono_patch_info_dup_mp): New helper function.
13351         
13352         * aot-compiler.c (compile_method): Fix some of the memory allocated during
13353         compilation. Fixes #78827.
13354
13355 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
13356
13357         * declsec.c: Use original security informations for
13358           MONO_WRAPPER_MANAGED_TO_MANAGED.
13359
13360 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
13361
13362         * mini.c: Allow Com Interop methods/classes and
13363         don't verify COM wrapper calls
13364         
13365
13366 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
13367
13368         * inssel-long32.brg: Fix long->i4 checked conversion.
13369
13370         * exceptions.cs: Add a test for the above.
13371
13372 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
13373
13374         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
13375
13376         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
13377         leaks.
13378
13379         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
13380         #78775.
13381
13382 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
13383
13384         * mini.c: Fix solaris/x86 exception handling.
13385
13386         * Makefile.am: Get rid of $(ICU_LIBS).
13387
13388 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
13389
13390         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
13391         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
13392         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
13393
13394         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
13395
13396         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
13397         this function causes a SIGSEGV.
13398
13399 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
13400
13401         * mini.c: Remove unused solaris/x86 includes.
13402
13403 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
13404
13405         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
13406
13407 2006-06-20  Jb Evain  <jbevain@gmail.com>
13408
13409         * cpu-g4.md: fix max length of start_handler instruction.
13410
13411 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
13412         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
13413
13414 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
13415         * ssa.c: Fixed bug 78653 for SSA based deadce.
13416         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
13417         MonoInst.flags, used in SSA based deadce.
13418         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
13419         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
13420
13421 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13422
13423         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
13424         it can end up using non executable memory on ppc64 systems
13425         running ppc32 userspace (fix from Johannes Berg).
13426
13427 2006-06-14  Dick Porter  <dick@ximian.com>
13428
13429         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
13430         4.1.1
13431
13432 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
13433         * mini.c: Made so that inline is locally disabled if it would
13434         trigger a .cctor, because too many apps depend on this behavior
13435         (which seems to be also the one of the MS CLR).
13436
13437 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
13438
13439         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
13440         No idea why this worked before.
13441
13442         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
13443         which branch to outer exception clauses since they could skip the
13444         inner finally clauses. Fixes #78633.
13445
13446         * exceptions.cs: Add a test for the above.
13447
13448         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
13449         Fixes #78629.
13450
13451         * iltests.il: Add a test for the above.
13452
13453 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
13454
13455         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
13456         after the end of a try bblock, to prevent asserts in mini_method_compile ().
13457
13458         * iltests.il: Add a test for the above.
13459
13460 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
13461
13462         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
13463         
13464         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
13465         methods as instrinsics.
13466
13467 2006-06-09  Wade Berrier <wberrier@novell.com>
13468
13469         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
13470         (simple-cee-ops.h ssapre-mini-ops.h)
13471
13472 2006-06-09  Neale Ferguson <neale@sinenomine.net>
13473
13474         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
13475         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
13476         instruction).
13477         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
13478         * cpu-s390x.md: Fix max. length values for a couple of instructions.
13479
13480 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13481
13482         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
13483
13484 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
13485
13486         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
13487         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
13488         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
13489         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
13490         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
13491         of opcodes, so that bug 78549 should not happen again.
13492         * ssapre.c: Updated to use the renamed files.
13493
13494 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
13495
13496         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
13497         in OP_ATOMIC_EXCHANGE_I4.
13498
13499 2006-06-07  Wade Berrier <wberrier@novell.com>
13500
13501         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
13502         in mono_debugger_create_notification_function)
13503
13504 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
13505
13506         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
13507         
13508         * mini.c (type_from_stack_type): Disable some changes which do not
13509         seem to work.
13510
13511         * driver.c: Reenable opts.
13512
13513         * mini.h (MonoStackSlot): New structure to keep track of the verification state
13514         of the evaluation stack.
13515         
13516         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
13517         evaluation stack trace at entry to the bblock.
13518
13519         * mini.c (merge_stacks): New function to perform verification of stack merges.
13520         Turned off by default.
13521
13522         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
13523         STACK_MP.
13524         
13525 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
13526
13527         * local-propagation.c: Fixed bug 78549.
13528
13529 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
13530
13531         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
13532
13533 2006-06-02  Miguel de Icaza  <miguel@novell.com>
13534
13535         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
13536         tramp-arm.c, tramp-ia64.c
13537         (mono_debugger_create_notification_function): Update signature to
13538         new signature and use new protocol for creating the notification
13539         function.  
13540
13541         Should fix the build.
13542
13543 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
13544
13545         * exceptions-ppc.c (mono_jit_walk_stack)
13546         (ves_icall_get_frame_info): Fix the build
13547
13548 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
13549
13550         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
13551
13552 2006-05-31  Raja R Harinath  <rharinath@novell.com>
13553
13554         * il2tests.2.il: New file for generics CIL tests.  Add test for
13555         #78019.
13556         * Makefile.am: Update.
13557
13558         Fix #78019
13559         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
13560         to nullable types.
13561
13562 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
13563
13564         * aliasing.c: Fixed bug 78311.
13565
13566 2006-05-29  Martin Baulig  <martin@ximian.com>
13567
13568         * mini-exceptions.c (mono_find_jit_info): When computing the
13569         native offset, check whether we're actually inside the method's
13570         code; call mono_debug_print_stack_frame() to format the frame.
13571         (ves_icall_System_Exception_get_trace): Call
13572         mono_debug_print_stack_frame() to format the stack frame.
13573         (ves_icall_get_trace): Update to the new debugging API.
13574         (mono_jit_walk_stack_from_ctx): Likewise.
13575         (ves_icall_get_frame_info): Likewise.
13576
13577         * mini.c (get_method_from_ip): Use the new debugging API.
13578         (mono_print_method_from_ip): Likewise.
13579
13580         * exceptions-ppc.c
13581         (mono_jit_walk_stack): Use the new debugging API.
13582         (ves_icall_get_frame_info): Likewise.   
13583
13584 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
13585
13586         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
13587
13588 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
13589
13590         * mini.c: Added "limitator" to inline for debugging.
13591
13592 2006-05-24  Martin Baulig  <martin@ximian.com>
13593
13594         * debug-debugger.c (mono_debugger_init): Create a private,
13595         malloc()-based code manager for the notification function and
13596         intentionally leak it on exit.  This fixes the crash-on-exit race
13597         condition.
13598
13599         * tramp-amd64.c
13600         (mono_debugger_create_notification_function): Added
13601         `MonoCodeManager *' argument.
13602
13603         * tramp-x86.c
13604         (mono_debugger_create_notification_function): Added
13605         `MonoCodeManager *' argument.
13606
13607 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
13608
13609         * aliasing.c: Fixed 64 bit issue.
13610         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
13611         default since all known bugs are fixed (one more time!).
13612
13613 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13614
13615         * mini.c: write barrier support.
13616
13617 2006-05-23  Martin Baulig  <martin@ximian.com>
13618
13619         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
13620         check at the top of the file.
13621
13622 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
13623
13624         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
13625         reverting changes without reason and without changelog entries.
13626
13627 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13628
13629         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
13630         to a few opcodes. Fixes #78439.
13631
13632         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
13633         consistency with other archs.
13634
13635         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
13636
13637 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
13638
13639         * debug-debugger.c: fix the build.
13640
13641 2006-05-17  Martin Baulig  <martin@ximian.com>
13642
13643         * debug-debugger.c
13644         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
13645         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
13646         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
13647         (debugger_attach): Call GC_mono_debugger_add_all_threads().
13648
13649 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
13650
13651         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
13652
13653 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
13654
13655         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
13656         MONO_TYPE_GENERICINST.
13657         
13658         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
13659         MONO_TYPE_GENERICINST.
13660
13661 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
13662
13663         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
13664         #78325.
13665
13666 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
13667
13668         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
13669         mempool.
13670         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
13671
13672 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
13673
13674         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
13675         mono_trace_cleanup ().
13676
13677         * iltests.il: Fix problem with the newly added test.
13678
13679         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
13680         due to register constraints, free up the previous hreg. Fixes #78314.
13681
13682         * iltests.il: Add new test for #78314.  
13683
13684         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
13685         Interlocked.Add. Fixes #78312.
13686
13687         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
13688         
13689 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
13690
13691         * inssel.brg (mini_emit_virtual_call): Fix a warning.
13692
13693 2006-05-05  Martin Baulig  <martin@ximian.com>
13694
13695         * debug-mini.c (mono_debug_open_block): New method.
13696
13697         * mini-amd64.c
13698         (mono_arch_output_basic_block): Call mono_debug_open_block() at
13699         the beginning of each basic block.
13700
13701         * mini-x86.c
13702         (mono_arch_output_basic_block): Call mono_debug_open_block() at
13703         the beginning of each basic block.
13704
13705 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
13706
13707         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
13708         default until I understand why they break the build on amd64.
13709
13710 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
13711
13712         * mini.c (mini_cleanup): Call mono_cleanup ().
13713
13714         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
13715         errors.
13716
13717 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
13718
13719         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
13720         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
13721         default since all known bugs are fixed, and I cannot reproduce bug
13722         77944... I'm asking Matt Hargett to test again after this commit.
13723
13724 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
13725
13726         * mini-codegen.c: Fixed typo that thrashed inline.
13727
13728 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
13729
13730         * dominators.c (compute_dominators): Avoid using a worklist since
13731         it is not correct in some cases. Instead, iterate over all bblocks as
13732         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
13733
13734 2006-04-28  Miguel de Icaza  <miguel@novell.com>
13735
13736         * mini.c (mono_jit_compile_method_inner): Use
13737         mono_prepare_exception_from_error that resets the value
13738         internally.
13739
13740 2006-04-27  Miguel de Icaza  <miguel@novell.com>
13741
13742         * mini.c: Move the mini_loader_error_to_exception to metadata. 
13743         
13744 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
13745
13746         * aliasing.c: Fixed bug 78210.
13747
13748 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
13749
13750         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
13751         default until all their problems (or the ones they trigger) are fixed.
13752
13753 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
13754
13755         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
13756         
13757         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
13758         as loaded only after resolving patches since that could invoke the same method.
13759
13760         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
13761
13762         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
13763         functions.
13764
13765         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
13766         AOT loader.
13767
13768         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
13769         stack.
13770
13771         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
13772         made from AOT code through the PLT table.
13773
13774         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
13775         holding the plt offset when a call is made to the aot plt trampoline.
13776         
13777 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13778
13779         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
13780         amd64 AOT support.
13781
13782         * Makefile.am (common_sources): Fix build breakage.
13783
13784         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
13785         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
13786         intra-assembly calls if possible.
13787         
13788         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
13789
13790         * mini-trampolines.c: Handle PLT entries.
13791
13792         * mini.c: Avoid creating a GOT var for calls.
13793
13794         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
13795         from mscorlib code.
13796
13797         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
13798         from mscorlib code.
13799
13800         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
13801         AOT code.       
13802
13803         * mini.h: Bump AOT file format version.
13804         
13805         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
13806         covers more cases.
13807
13808 2006-04-25  Martin Baulig  <martin@ximian.com>
13809
13810         * driver.c: Disable copyprop, consprop and inline when running
13811         inside the debugger.
13812
13813 2006-04-25  Martin Baulig  <martin@ximian.com>
13814
13815         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
13816         with `get_current_thread' and added `detach'.
13817         (MonoDebuggerMetadataInfo): Added `thread_size',
13818         `thread_tid_offset', `thread_stack_ptr_offset' and
13819         `thread_end_stack_offset'.
13820
13821 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
13822
13823         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
13824         aot-runtime.c.
13825
13826         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
13827         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
13828
13829         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
13830
13831         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
13832
13833         * aot.c: Add support for ADJUSTED_IID.  
13834
13835 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
13836
13837         * aot.c (emit_method_order): Don't align method_order_end.
13838
13839         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
13840         the interface ID changes.
13841
13842 2006-04-21  Dick Porter  <dick@ximian.com>
13843
13844         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
13845         cleaning up a thread.  Fixes the new part of bug 77470.
13846
13847 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
13848
13849         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
13850         to managed wrapper.
13851                      
13852 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
13853
13854         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
13855         
13856         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
13857         SIGSEGV. Fixes #78072.
13858
13859         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
13860         unregister our SIGABRT handler.
13861
13862 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
13863
13864         * mini.c: Disabled inline where it can alter the call stack in a
13865         way visible from managed code.
13866         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
13867         default.
13868
13869 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
13870
13871         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
13872         on other platforms. Fixes #78089.
13873
13874 2006-04-13  Martin Baulig  <martin@ximian.com>
13875
13876         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
13877         determine whether we're inside the debugger.
13878
13879         * debug-debugger.h
13880         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
13881
13882 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
13883
13884         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
13885         handler clauses. Fixes #78024.
13886
13887         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
13888         in the CALL_MEMBASE opcodes. Fixes #78088.
13889         (mono_arch_get_vcall_slot_addr): Ditto.
13890
13891 2006-04-10  Martin Baulig  <martin@ximian.com>
13892
13893         * debug-debugger.c: The thread handling code has now been moved
13894         into ../metadata/threads.c.
13895
13896 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13897
13898         * driver.c (mono_main): Fix --with-gc=none build.
13899
13900         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
13901         (mono_spillvar_offset_float): Ditto.
13902         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
13903         hreg, not when its !global, since on ia64, there is a third category: stacked
13904         registers.      
13905
13906 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
13907
13908         * mini.c: set MonoInst->klass for load field address and a few other
13909         places.
13910
13911 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
13912
13913         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
13914
13915 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
13916
13917         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
13918         the branch opt changes.
13919
13920 2006-04-06  Dick Porter  <dick@ximian.com>
13921
13922         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
13923         
13924         * wapihandles.c (mini_wapi_seminfo): 
13925         * driver.c (mono_main): Add semaphore info option
13926
13927 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
13928
13929         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
13930         branch optimization changes. Fixes #78009.
13931
13932 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
13933
13934         * mini.c: ignore accessibility of methods in managed->native wrappers.
13935
13936 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
13937
13938         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
13939         
13940         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
13941
13942 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
13943
13944         * mini.c: Modify the branch optimizations to preserve the invariant that
13945         the entries inside the in_bb and out_bb arrays are unique.
13946         (mono_unlink_bblock): Avoid creation of new arrays.
13947
13948 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
13949
13950         * mini.c (mono_unlink_bblock): Fix regression caused by previous
13951         change (#77992).
13952
13953 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
13954
13955         * mini.c (optimize_branches): Remove the "optimizations" in
13956         the cbranch1/cbranch2 -> branch cases which were causing several
13957         problems in the past. Fixes #77986.
13958
13959 2006-03-31  Chris Toshok  <toshok@ximian.com>
13960
13961         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
13962         default optimizations :(
13963
13964 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
13965
13966         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
13967         branch.
13968
13969 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
13970
13971         * local-propagation.c: Added comments to structs and removed
13972         "Mono" prefixes from local tree mover types.
13973
13974 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
13975
13976         * Makefile.am (arch_sources): Define this for each architecture so 
13977         libmono_la_SOURCES is defined in one place.
13978
13979 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
13980
13981         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
13982         from handles/.
13983
13984 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
13985
13986         * driver.c: print the GC name supplied by configure.
13987
13988 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
13989
13990         * local-propagation.c: Added tree mover, and moved here all the
13991         local propagation code from mini.c
13992         * mini.c: Added support for treeprop, and moved all the local
13993         propagation code to local-propagation.c
13994         * mini.h: Added support for treeprop
13995         * driver.c: Added support for treeprop, enabled consprop, copyprop,
13996         treeprop, inline and deadce by default
13997         * Makefile.am: Added local-propagation.c
13998
13999 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
14000
14001         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
14002
14003 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
14004
14005         * debug-debugger.c: make it compile without the Boehm GC.
14006
14007 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14008
14009         * mini.c: fixed issue with mismatch when an icall is registered
14010         with multiple names but same address.
14011
14012 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14013
14014         * declsec.c, mini-exceptions.c: use write barrier to set reference
14015         fields of managed objects.
14016
14017 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14018
14019         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
14020         (can_access_internals): Fix a warning.
14021
14022         * mini.c (print_method_from_ip): Rename this to 
14023         mono_print_method_from_ip so it gets exported.
14024
14025         * trace.c: Deal with strings inside StringBuilder's containing garbage
14026         and fix memory leaks. Fixes #77848.
14027
14028 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14029
14030         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
14031         fixes #77787.
14032
14033 2006-03-16 Neale Ferguson <neale@sinenomine.net>
14034         
14035         * mini-s390.c: Remove OP_X86_TEST_NULL.
14036
14037 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14038
14039         * mini.c: use the correct GetHashCode() for the moving collector.
14040
14041 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
14042
14043         * liveness.c: Regalloc spill cost tuning.
14044
14045 2006-03-15 Neale Ferguson <neale@sinenomine.net>
14046         
14047         * mini-s390x.h: Correct S390_LONG macro.
14048
14049         * mini-s390x.c: Cleanup unused code.
14050
14051 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14052
14053         * jit-icalls.h: New file.
14054
14055         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
14056         icalls and include that instead of including jit-icalls.c.
14057
14058         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
14059         OP_X86 opcodes.
14060
14061 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
14062
14063         * mini.c: when checking for member accessibility, also check for
14064         friend assemblies and for explicit interface implementations.
14065
14066 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14067
14068         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
14069
14070         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
14071
14072         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14073         common cases are done first.    
14074
14075         * mini-ops.h: Only define platform specific opcodes on the given platform.
14076
14077         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
14078         branch.
14079         
14080 2006-03-14  Martin Baulig  <martin@ximian.com>
14081
14082         Revert Paolo's change from r57348:
14083
14084         * mini.h: don't use gboolean for bitfields.
14085         * mini.c: verifier changes for fields and methods accessibility.
14086
14087 2006-03-13  Neale Ferguson <neale@sinenomine.net>
14088
14089         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
14090
14091         * mini-s390x.c: Fix conv_r_un.
14092
14093         * cpu-s390, cpu-s390x.md: Fix lengths.
14094
14095 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
14096
14097         * mini.c: nested types have access to all the nesting
14098         levels, not just the enclosing types.
14099
14100 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14101
14102         * mini.c: added a few more verification checks.
14103
14104 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
14105
14106         * liveness.c: Merge optimizations from the linear-il branch.
14107
14108 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14109
14110         * mini-ia64.c (emit_call): Add a comment.
14111
14112         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
14113
14114         * tramp-ia64.c: Fix some warnings.
14115
14116 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
14117
14118         * mini.h: don't use gboolean for bitfields.
14119         * mini.c: verifier changes for fields and methods accessibility.
14120
14121 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14122
14123         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
14124         lazy icall wrapper changes.
14125
14126         * dominators.c: Replace all the dominator algorithms with faster
14127         ones from the linear-il branch.
14128
14129         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
14130         the mempool.
14131
14132         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14133         common cases are done first.
14134
14135         * mini-amd64.c: Fix some warnings.
14136
14137         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
14138         from the mempool.
14139
14140         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
14141         added code.
14142
14143         * mini.h: Add a missing prototype.
14144
14145 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14146
14147         * mini.c: Compile icall wrappers lazily.
14148
14149         * mini-codegen.c: Use printf instead of g_print since its much faster.
14150
14151         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
14152         function.
14153
14154         * mini.c (optimize_branches): Cache the negative result from 
14155         remove_block_if_useless ().
14156
14157         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
14158         Also fix some bblock linking issues.
14159
14160         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
14161         assembly files.
14162
14163         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
14164
14165         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
14166         accessed fields first, for better cache behavior.
14167         
14168 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14169
14170         * mini.c: speedup IList<T> array accesses.
14171
14172 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14173
14174         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
14175         inline_costs counter. Fixes #77190.
14176
14177 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
14178
14179         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
14180         trace messages. Fixes #77706.
14181
14182 2006-03-04  Martin Baulig  <martin@ximian.com>
14183
14184         * tramp-amd64.c, tramp-x86.c
14185         (mono_debugger_create_notification_function): Use
14186         mono_global_codeman_reserve() to allocate a buffer at runtime and
14187         return it.
14188
14189         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
14190
14191         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
14192         notification function at runtime and then call `initialize' in the
14193         `MONO_DEBUGGER__debugger_info' vtable.
14194
14195 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14196
14197         * iltests.il: Fix a visibility problem.
14198
14199 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14200
14201         * driver.c, mini.c: add hooks for the counters API.
14202
14203 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14204
14205         * driver.c: show disabled options.
14206
14207 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14208
14209         * linear-scan.c: always use cost-driven selection.
14210
14211 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14212
14213         * jit-icalls.c (helper_compile_generic_method): Revert change from
14214         2006-02-24.
14215
14216 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
14217
14218         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
14219
14220 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14221
14222         * inssel.brg: style fixes, mostly to force the updated monoburg
14223         to run for people using svn.
14224
14225 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
14226
14227         * mini.c: match monoburg changes.
14228
14229 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14230
14231         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
14232         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
14233         declaration in the header file.
14234
14235 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14236
14237         * helpers.c: reduce relocations and mem usage.
14238
14239 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14240
14241         * mini.h, mini-codegen.c: disable logging features if
14242         requested by configure.
14243
14244 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
14245
14246         * mini.c: tiny verifier changes.
14247
14248 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14249
14250         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
14251         cpu-pentium.md: stack alignment changes for osx/x86,
14252         partially from Geoff Norton <gnorton@customerdna.com>.
14253
14254 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14255
14256         * jit-icalls.c (helper_compile_generic_method): Update to changes
14257         in metadata/class.c.
14258
14259 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14260         
14261         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
14262         
14263         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
14264         interface calls with large offsets.
14265
14266 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14267
14268         * jit-icalls.c (helper_compile_generic_method): Document the
14269         special-case we depend on so that we can inflate the method twice
14270         with the same context with no bad side-effects.
14271
14272 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
14273
14274         * mini-x86.c, mini-amd64.c: fix for case when xen support
14275         is disabled.
14276
14277 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
14278
14279         * mini-x86.c, mini-amd64.c: generate code to access tls items
14280         in a faster way for Xen systems.
14281
14282 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14283
14284         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
14285         updates and compilation fixes for the OSX/x86 port, mostly from
14286         Geoff Norton <gnorton@customerdna.com>.
14287
14288 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14289
14290         * inssel.brg: faster interface call implementation
14291         to sync with the interface_offsets MonoVTable changes.
14292
14293 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14294
14295         * mini.c: more verification checks.
14296
14297 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
14298
14299         * mini.c: added a few more verification checks.
14300
14301 2006-02-17      Neale Ferguson <neale@sinenomine.net>
14302
14303         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
14304         facility on the processor and use it if available.
14305
14306 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14307
14308         * driver.c, aot.c, mini.c: throw exception if the IL code is
14309         invalid or unverifiable.
14310
14311 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14312
14313         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
14314         m.StructField.
14315
14316 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
14317
14318         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
14319
14320 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14321
14322         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
14323         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
14324         handling of instantiated generic valuetypes.
14325
14326 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14327
14328         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
14329         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
14330         instead.
14331
14332         * generics.2.cs: Revert the nullable reftypes tests.
14333
14334 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
14335
14336         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
14337         using __builtin_frame_address (1) as it doesn't work in the presence
14338         of optimizations. Hopefully fixes #77273.
14339
14340         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
14341         -> generics.cs change as it doesn't work with some automake versions.
14342
14343 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14344
14345         * mini.c: handle systems that sue a different way to
14346         retrieve the stack address of the current thread.
14347
14348 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14349
14350         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
14351         it specially in the makefile.
14352
14353         * generics.2.cs: Add tests for nullable reference types.
14354
14355 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14356
14357         * mini.c: always handle the case when mono_jit_init()
14358         is called in a thread different from the main thread,
14359         confusing libgc (bug #77309).
14360
14361 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
14362
14363         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
14364
14365 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14366
14367         * mini.c: change optimize_branches () to use a single loop
14368         and introduce a new optimization to simplify some range checks.
14369
14370 2006-02-03  Martin Baulig  <martin@ximian.com>
14371
14372         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
14373         and merged with debugger_thread_manager_add_thread().
14374         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
14375         inform the debugger about the main thread.
14376
14377 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
14378
14379         * basic.cs: Add test for div.un/rem.un constant folding.
14380
14381 2006-02-03  Neale Ferguson <neale@sinenomine.net>
14382
14383         * cpu-s390x.md: correct int_xor_imm length
14384
14385 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
14386
14387         * generics.2.cs: New test for #77442.
14388
14389         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
14390         #77442.
14391
14392 2006-02-02  Martin Baulig  <martin@ximian.com>
14393
14394         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
14395         <mono/metadata/mono-debug-debugger.h>   
14396
14397         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
14398
14399 2006-02-02  Martin Baulig  <martin@ximian.com>
14400
14401         * debug-debugger.h: New header file for debug-debugger.c.
14402
14403         * debug-debugger.c: Big API cleanup; don't run the managed Main()
14404         function is a separate thread anymore; add support for attaching.
14405
14406 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14407
14408         * tramp-x86.c: Fix a warning.
14409
14410 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14411
14412         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
14413         on very large methods.
14414
14415         * aot.c (load_patch_info): Fix a warning.
14416
14417 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
14418
14419         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
14420         mini-ops.h: alu membase optimizations.
14421
14422 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
14423
14424         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
14425         to speedup StringBuilder.
14426
14427 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
14428
14429         * dominators.c (mono_compute_natural_loops): Fix detection of
14430         loop body start blocks.
14431
14432         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
14433
14434 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14435
14436         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
14437         #75145.
14438
14439 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
14440
14441         * aliasing.c: Fixed aliasing issue on 64 bit archs.
14442
14443 2006-01-25  Martin Baulig  <martin@ximian.com>
14444
14445         * debug-debugger.c: Moved the `MonoDebuggerManager' and
14446         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
14447         started to cleanup this file a little bit.
14448
14449 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
14450
14451         * mini.c: optimize a codepath frequently happening in generics code.
14452
14453 2006-01-23  Martin Baulig  <martin@ximian.com>
14454
14455         * Makefile.am: Only compile debug-debugger.c on supported platforms.
14456
14457         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
14458         functions directly.
14459
14460         * driver.c: debug-debugger.c is only available if
14461         `MONO_DEBUGGER_SUPPORTED' is defined.   
14462
14463 2006-01-23  Martin Baulig  <martin@ximian.com>
14464
14465         * debug-debugger.c: Only enable this on platforms where the Mono
14466         Debugger is working (x86 and x86_64).
14467
14468 2006-01-21  Martin Baulig  <martin@ximian.com>
14469
14470         The Mono Debugger is now using the normal `mono' instead of the
14471         `mono-debugger-mini-wrapper' when executing managed code.
14472
14473         * debug-debugger.c: New file; previously known as
14474         debugger/wrapper/wrapper.c.
14475
14476         * debug-mini.c (mono_init_debugger): Removed.
14477
14478         * driver.c (mono_main): Added new `--inside-mdb' command line
14479         argument which is used when running inside the debugger.
14480
14481 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
14482
14483         * liveness.c (mono_analyze_liveness): Remove some unused data
14484         structures.
14485
14486 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14487
14488         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
14489
14490 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
14491
14492         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
14493         depends on implementation details of monobitset.
14494
14495         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
14496         Fixes #77271.
14497
14498 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
14499
14500         * liveness.c: Update after monobitset changes.
14501
14502 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
14503
14504         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
14505
14506 2006-01-11 Neale Ferguson <neale@sinenomine.net>
14507
14508         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
14509
14510         * mini-s390x.c: Remove warning messages.
14511
14512 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14513
14514         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
14515
14516 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
14517
14518         * generics.2.cs: Add ldelem/stelem_any test.
14519
14520 2006-01-10 Neale Ferguson <neale@sinenomine.net>
14521
14522         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
14523
14524 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
14525
14526         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
14527         
14528 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
14529
14530         * generics.2.cs: Reenable vtype tests.
14531
14532         * inssel-x86.brg: Remove an icorrect valuetype rule.
14533
14534 2006-01-06 Neale Ferguson <neale@sinenomine.net>
14535
14536         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
14537         initial support for OP_ABS.
14538
14539 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14540
14541         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
14542
14543 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14544
14545         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
14546         conversion and implement LADD/LSUB.
14547
14548         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
14549         architectures.
14550
14551 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14552
14553         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
14554
14555         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
14556         architectures.
14557
14558 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14559
14560         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
14561         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
14562         (stack walk problem).
14563
14564 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
14565
14566         * aot.c (mono_aot_load_method): Fix a warning.
14567
14568 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14569
14570         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
14571
14572 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14573
14574         * iltests.il: Add test for #77148.
14575
14576         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
14577         #77148.
14578
14579 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14580
14581         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
14582
14583 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14584
14585         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
14586         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
14587
14588         * basic-long.cs: Add lconv-to-r4/r8 tests.
14589
14590 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14591
14592         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
14593
14594         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
14595         here as on other archs.
14596
14597 2005-12-29 Neale Ferguson <neale@sinenomine.net>
14598
14599         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
14600
14601 2005-12-29 Neale Ferguson <neale@sinenomine.net>
14602
14603         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
14604         
14605         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
14606
14607         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
14608         instrument_prolog; Add memory_barrier instruction.
14609
14610 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
14611
14612         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
14613
14614 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
14615
14616         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
14617
14618         * aliasing.c inssel.brg: Fix warnings.
14619
14620         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
14621         could skip initialization of some parts of memory.
14622
14623         * mini.c mini-ia64.c: Fix warnings.
14624
14625         * inssel-sparc.brg: Add an implementation of lneg which actually works.
14626
14627 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14628
14629         * aliasing.c (mono_build_aliasing_information): Add a workaround for
14630         a crash seen on sparc.
14631
14632         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
14633         
14634         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
14635
14636 2005-12-21 Neale Ferguson <neale@sinenomine.net>
14637
14638         * mini-ops.h: Add s390_backchain instruction
14639
14640         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
14641
14642         * cpu-s390.md: Add s390_backchain instruction
14643
14644         * mini-s390.c: Significant ABI changes
14645
14646         * mini-s390.h: Cater for zero length structures
14647
14648 2005-12-20 Neale Ferguson <neale@sinenomine.net>
14649
14650         * mini-s390.c: ABI fixes
14651
14652         * inssel-s390.brg: Remove debug statements
14653
14654         * cpu-s390.md: Fix length of ATOMIC_xx operations
14655
14656 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
14657
14658         * basic-float.cs: Add float<->long conversion tests.
14659
14660 2005-12-16 Neale Ferguson <neale@sinenomine.net>
14661
14662         * mini-s390.c: Fix LOCALLOC processing.
14663
14664         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
14665
14666 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
14667
14668         * iltests.il: Add tests for some opcodes not covered by the other
14669         tests.
14670
14671 2005-12-15 Neale Ferguson <neale@sinenomine.net>
14672
14673         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
14674         register loading for Tail processing; Correct trace output.
14675
14676         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
14677
14678         * cpu-s390.md: Correct size of jmp instruction. 
14679
14680 2005-12-13 Neale Ferguson <neale@sinenomine.net>
14681
14682         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
14683
14684 2005-12-13 Neale Ferguson <neale@sinenomine.net>
14685
14686         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
14687           Bring s390 up to current level.
14688
14689 2005-12-12  Zltan Varga  <vargaz@gmail.com>
14690
14691         * generics.2.cs: Disable the newly added tests as they do not work yet.
14692         
14693         * generics.2.cs: Add valuetype tests.
14694
14695 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
14696
14697         * basic-long.cs: Add i4->u8 test.
14698
14699         * objects.cs: Add tests for JIT intrinsic.
14700
14701         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
14702         optimizations lost by a mistake.
14703
14704 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
14705
14706         * basic-long.cs: Remove a test moved to objects.cs.
14707
14708         * arrays.cs: Add more array tests.
14709
14710 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
14711
14712         * arrays.cs: Add new tests for multi-dimensional arrays.
14713
14714 2005-12-06  Raja R Harinath  <rharinath@novell.com>
14715
14716         * Makefile.am (test_sources2): Add generics.2.cs.
14717         (EXTRA_DIST): Add test_sources2.
14718
14719 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
14720
14721         Support for boxing and unboxing nullable types as well as the
14722         isinst operation on nullables, per the CLI ammendment.
14723
14724         * inssel.brg (CEE_ISINST): Special case for nullable
14725
14726         * mini.c (handle_unbox_nullable): new method
14727         (handle_box): Special case for nullable types
14728         (mono_method_to_ir): Call handle_unbox_nullable in correct
14729         places.
14730
14731         * generics.2.cs: New test suite
14732
14733         * Makefile.am: Support for regression tests with generics.
14734
14735 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
14736
14737         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
14738         allocated to registers. Fixes #76800.
14739
14740 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
14741
14742         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
14743
14744 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
14745
14746         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
14747         of platforms.
14748
14749 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
14750
14751         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
14752         objects.cs.
14753
14754         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
14755         
14756         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
14757 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
14758
14759         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
14760         single precision before storing to a single precision location.
14761
14762 2005-11-28  Raja R Harinath  <rharinath@novell.com>
14763
14764         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
14765
14766 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
14767
14768         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
14769         correct files.
14770
14771         * basic.cs: Remove test_0_byte_compares test which was moved to
14772         objects.cs a long time ago.
14773
14774 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
14775
14776         * aliasing.c: Fixed aliasing issue on 64 bit archs.
14777
14778 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
14779
14780         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
14781         handlers are called.
14782
14783         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
14784         throwing code.
14785
14786          * mini-ia64.c: Add support for the throw->branch exception 
14787         optimization.   
14788
14789         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
14790
14791 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14792
14793         * mini.c: Enabled "fastpath" deadce :-)
14794         
14795 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
14796
14797         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
14798         alias analysis pass to support it.
14799         * mini.h: Likewise.
14800         * ssa.c: Likewise.
14801         * liveness.c: Likewise (liveness computation can use aliasing
14802         information to be more accurate).
14803         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
14804         moreover made so that "--compile-all" uses the given optimization
14805         flags and not the default ones.
14806         * aliasing.c: Alias analysis (new file).
14807         * aliasing.h: Likewise.
14808         * Makefile.am: added "aliasing.c" and "aliasing.h".
14809         
14810 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
14811
14812         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
14813         OP_L opcodes.
14814
14815 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
14816
14817         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
14818         fp >= end_of_stack exit condition, as it is not needed, and it might
14819         become true for fp eliminated frames.
14820
14821 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
14822
14823         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
14824         coded offsets.
14825
14826 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
14827
14828         * mini-arm.c: fixed alignment of doubles/longs to match
14829         the C ABI (bug #76635).
14830
14831 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
14832
14833         * aot.c: fix compilation with --enable-minimal=aot.
14834
14835 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
14836
14837         * mini-arm.c: fixed compatibility with the new
14838         floating point emulator package for compares.
14839
14840 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
14841
14842         * mini.c : reverted sig->pinvoke changes (r51396-51397).
14843
14844 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
14845
14846         * mini-exceptions.c (print_stack_frame): Output to stderr.
14847         (mono_handle_native_sigsegv): Ditto.
14848
14849 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14850
14851         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
14852         OP_LCONV_TO_OVF_I implementation.
14853
14854         * mini-amd64.c: Add support for the throw->branch exception 
14855         optimization.
14856
14857         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
14858         when the catch clause catches a more general exception, i.e. Object.
14859
14860 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
14861
14862         * cpu-ia64.md: Remove unused opcodes.
14863
14864         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
14865         specific defines for architectures defining USE_SIGACTION.
14866
14867         * mini-ia64.c: Fix some warnings.
14868
14869         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
14870         version seemed to skip a frame.
14871
14872 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
14873
14874         * mini.c: Clean up the usage of sig->pinvoke flag. Now
14875         only calls which are made to native code use this flag.
14876
14877 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
14878
14879         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
14880         varargs methods as well.
14881         
14882         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
14883         which have save_lmf set. Reorganize methods prologs a bit.
14884
14885         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
14886         debugger to the proper place.
14887
14888 2005-10-29  Martin Baulig  <martin@ximian.com>
14889
14890         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
14891         when running inside the debugger until the debugger has support
14892         for it.
14893
14894 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
14895
14896         * mini.h: Fix a warning.
14897
14898 2005-10-24  Miguel de Icaza  <miguel@novell.com>
14899
14900         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
14901         we expose publicly, this returns the string.
14902
14903 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
14904
14905         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
14906         with fp elimination.
14907
14908 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
14909
14910         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
14911         native stacktrace using the glibc 'backtrace' function if available.
14912
14913 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
14914
14915         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
14916
14917         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
14918         handle SIGSEGVs received while in native code.
14919
14920         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
14921         code, call mono_handle_native_sigsegv which will abort the runtime
14922         after printing some diagnostics, instead of converting it into a
14923         confusing NullReferenceException.
14924
14925 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
14926
14927         * cpu-pentium.md: Remove unused opcodes.
14928
14929 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
14930
14931         * mini-amd64.h (MonoLMF): Add rsp field.
14932
14933         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
14934         the lmf too.
14935
14936 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
14937
14938         * mini-codegen.c (get_register_spilling): Fix some warnings.
14939
14940 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
14941
14942         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
14943         elimination during exception handling. Enable fp elimination by
14944         default.
14945
14946         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
14947         elimination.
14948
14949 2005-10-16  Martin Baulig  <martin@ximian.com>
14950
14951         * mini-exceptions.c
14952         (mono_debugger_run_finally): New public method for the debugger.
14953
14954 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
14955
14956         * debug-mini.c (mono_debug_init_method): Fix warning.
14957
14958         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
14959         the 'exname' parameter const to fix some warnings.
14960
14961 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
14962
14963         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
14964         introduced by the previous patch.
14965
14966 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
14967
14968         * basic-float.cs: Add test for precision of float arithmetic.
14969
14970         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
14971         when loading/storing single values from/to memory.
14972
14973         * mini.c (mono_jit_compile_method_with_opt): Create the function
14974         pointers in the correct domain.
14975
14976 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
14977
14978         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
14979         introduced by previous patch.
14980         
14981         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
14982         when out_filter_idx is NULL.
14983
14984         * mini-exceptions.c: Don't run filter clauses twice during exception
14985         handling. Fixes #75755.
14986
14987 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
14988
14989         * aot.c: Add support for ldflda wrappers.
14990
14991         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
14992         #75902.
14993
14994 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
14995
14996         * mini.c, mini.h: do not consider exception handlers blocks when
14997         setting up interface variables.
14998
14999 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
15000
15001         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
15002
15003 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
15004
15005         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
15006         causes a regression.
15007
15008         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
15009
15010 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
15011
15012         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
15013         of the OP_P definitions.
15014
15015         * TODO: Add a proposal for dealing with the CEE/OP mess.
15016
15017         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
15018         optimizations from the x86 port.
15019
15020         * cpu-amd64.md: Ditto.
15021
15022         * basic.cs basic-long.cs: Add tests.
15023
15024 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
15025
15026         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
15027         Patrik Torstensson's implementation of my exception-handling
15028         optimization idea, when the exception object is not used
15029         (bug #62150).
15030
15031 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
15032
15033         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
15034         of the mul_imm optimizations from the old jit.
15035
15036 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
15037
15038         * mini.c, liveness.c: patch by Patrik Torstensson and
15039         Zoltan Varga to improve performance in methods with
15040         exception clauses.
15041
15042 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15043
15044         * driver.c: Remove 'Globalization' entry from --version.
15045
15046 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
15047
15048         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
15049         there is a profiler interested in JIT events.
15050
15051         * aot.c: Load profile files produced by the AOT profiling module, and
15052         reorder methods based on the profiling info. Add a 'method_order' table
15053         to the AOT file to make mono_aot_find_jit_info work with the reordered
15054         methods.
15055
15056         * mini.h: Bump AOT file version info.
15057
15058 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
15059
15060         * mini-arm.h: work around what looks like a gcc bug when optimizations
15061         are enabled.
15062
15063 2005-09-28  Raja R Harinath  <rharinath@novell.com>
15064
15065         * Makefile.am (AM_CFLAGS): Don't use += to append inside
15066         conditionals.  Use ...
15067         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
15068
15069 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
15070
15071         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
15072         to determine the amount of memory to copy when passing valuetypes.
15073
15074         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
15075         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
15076
15077 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
15078
15079         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
15080         information about aot.
15081
15082 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15083
15084         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15085         macros. This will allow a deadlock debugger to easily be plugged
15086         in.
15087
15088 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
15089
15090         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
15091
15092 2005-09-27  Raja R Harinath  <rharinath@novell.com>
15093
15094         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
15095         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
15096         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
15097         ($(arch_built)) [CROSS_COMPILING]: Error out.
15098
15099 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15100
15101         * aot.c: Add support for the no_special_static flag for classes.
15102
15103 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15104
15105         * Reapply reverted patches.
15106
15107         * *: Revert r50174 as well.
15108
15109         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
15110
15111 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15112
15113         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
15114
15115 2005-09-23  Miguel de Icaza  <miguel@novell.com>
15116
15117         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
15118         part of the SIG_HANDLER_SIGNATURE.  
15119
15120 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15121
15122         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
15123         statistics.
15124
15125         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
15126         introduced by previous patch.
15127
15128 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
15129
15130         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
15131         saved registers too.
15132
15133         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
15134         upon the information returned by get_call_info ().
15135         
15136         * mini-x86.c (add_float): Fix stack size calculation.
15137         (mono_arch_call_opcode): Rewrite this so it works based up the
15138         information returned by get_call_info ().
15139         (mono_arch_get_this_vret_args): Ditto.
15140
15141 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
15142
15143         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
15144         in cinfo to determine the registers which need to be used.
15145
15146 2005-09-20  Miguel de Icaza  <miguel@novell.com>
15147
15148         * driver.c (mono_main): Add --server and --desktop flags. 
15149
15150 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
15151
15152         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
15153         registers as global registers.
15154
15155         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
15156         longer needed with the new register allocator.
15157
15158         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
15159
15160         * cpu-ia64.md: Remove unused opcodes.
15161         
15162         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
15163         
15164 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
15165
15166         * cpu-amd64.md: Remove unused opcodes.
15167
15168         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
15169         needed with the new register allocator.
15170
15171         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
15172         reg-reg moves.
15173
15174 2005-09-16  Raja R Harinath  <rharinath@novell.com>
15175
15176         * Makefile.am (check-local): Don't invoke semdel-wrapper.
15177
15178 2005-09-16  Martin Baulig  <martin@ximian.com>
15179
15180         * exceptions-amd64.c
15181         (throw_exception): Don't call mono_debugger_throw_exception() if
15182         we're a rethrow - see the FIXME in the code.
15183
15184 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
15185
15186         * mini.c (mono_init_exceptions): This only works on some architectures.
15187         
15188 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15189
15190         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
15191         on ia64.
15192
15193         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
15194
15195         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
15196         now in mini-exceptions.c.
15197
15198 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
15199
15200         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
15201         now in mini-exceptions.c.
15202
15203 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15204
15205         * exceptions-x86.c: Applied patch from Patrik Torstensson 
15206         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
15207
15208         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
15209         code into mini-exceptions.c. Add some assertions to it.
15210
15211 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15212
15213         * aot.c (emit_section_change): Applied patch from "The Software Team" 
15214         (<software@solmersa.com>). Fix as errors on windows.
15215
15216 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15217
15218         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
15219         method info into the LMF.
15220
15221 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15222         
15223         * mini-ia64.c: Add proper unwind info for method epilogs.
15224
15225         * exceptions-ia64.c: Add some code to help debugging.
15226         
15227         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
15228
15229         * mini-exceptions.c: Fix warning.
15230
15231 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15232
15233         * mini.c: Really fix build.
15234
15235         * mini-x86.c mini-amd64.c: Fix build.
15236
15237 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15238
15239         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
15240
15241         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
15242         some Interlocked methods as intrinsics.
15243
15244         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
15245         for Thread methods as well.
15246
15247         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
15248
15249         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
15250
15251         * mini-ia64.c mini-x86.c mini-amd64.c 
15252         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
15253         OP_MEMORY_BARRIER.
15254         
15255         * mini.c (mono_init_exceptions): Fix build breakage.
15256
15257 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
15258
15259         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
15260         of instructions. Use the new ia64_unw_op macros for emitting unwind
15261         info.
15262
15263         * mini.c (mono_init_exceptions): Initialize exception handling
15264         related trampolines at startup.
15265
15266 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
15267
15268         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
15269
15270 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15271
15272         * mini.c: Handle type loading errors gracefully during compilation and
15273         throw the appropriate exception.
15274
15275 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
15276
15277         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
15278         for the mono binary.
15279
15280 2005-09-09  Martin Baulig  <martin@ximian.com>
15281
15282         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
15283         the release.
15284
15285 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15286
15287         * mini-arm.h: use emulation for conv.r.un for the release.
15288
15289 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15290
15291         * mini-arm.c, objects.cs: more fixes and tests for them.
15292
15293 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15294
15295         * mini-arm.c: align structures to at least 4 bytes to be able
15296         to keep our current optimized memcpy.
15297
15298 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
15299
15300         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
15301
15302 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15303
15304         * mini.c: ignore SIGPIPE.
15305
15306 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
15307
15308         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
15309
15310         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
15311
15312 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
15313
15314         * mini.h: Add prototype for mono_allocate_stack_slots_full.
15315
15316 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15317
15318         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
15319         exception handling support.
15320         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
15321         patch by Brian Koropoff <briank@marakicorp.com>).
15322
15323 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
15324
15325         * mini.c: revert another 'optimization' which breaks when
15326         items on the eval stack need to be saved at a basic block end
15327         (bug #75940).
15328
15329 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15330
15331         * jit-icalls.c: for arrays, ensure we always provide
15332         lower bounds.
15333
15334 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
15335
15336         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
15337         
15338         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
15339
15340 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15341
15342         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
15343         arguments in their original register.
15344
15345 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
15346
15347         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
15348         memset/memcpy.
15349
15350         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
15351         when ssapre is enabled.
15352
15353         * inssel-long.brg: Fix bug in previous patch.
15354
15355         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
15356         multiplication by a constant.
15357
15358 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
15359
15360         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
15361         icc.
15362
15363         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
15364         saving registers.
15365
15366 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
15367
15368         * inssel-arm.brg: apply changes tested by Brian Koropoff
15369         <briank@marakicorp.com>.
15370
15371 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15372
15373         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
15374         
15375 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
15376
15377         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
15378         to the same register if dreg is just a base register.
15379         (print_ins): Improve printing of membase opcodes.
15380
15381         * inssel-x86.brg: Add optimized ldind(reg) rules.
15382
15383         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
15384
15385 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
15386
15387         * mini.c: when running under valgrind, set the stack bottom for
15388         the GC at the actual approximate stack for the app (fixes running
15389         mono with valgrind).
15390
15391 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
15392
15393         * mini.c: do no break at the first valuetype to init found
15394         (fixes bug #75791).
15395
15396 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
15397
15398         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
15399
15400 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
15401
15402         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
15403
15404 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
15405
15406         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
15407
15408 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15409
15410         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
15411
15412         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
15413         code.
15414
15415         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
15416         code.
15417
15418         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
15419         methods.
15420
15421 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
15422
15423         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
15424
15425 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15426
15427         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
15428         in the tail recursion optimization.
15429
15430         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
15431         debug info into the assembly file.
15432
15433         * iltests.il: Add test for filter regions.
15434
15435         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
15436         initial stack of filter regions. Fixes #75755.
15437
15438 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
15439
15440         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
15441         stack requirements.
15442
15443 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15444
15445         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
15446         the check for an already compiled method on non-ia64 platforms.
15447         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
15448         proper domain.
15449
15450         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
15451
15452         * inssel-x86.brg: Add some optimized call rules.
15453
15454 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15455
15456         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
15457         method here.
15458
15459         * mini.h mini-trampolines.c: Pass the trampoline argument to 
15460         mono_arch_patch_delegate_trampoline.
15461
15462         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
15463
15464         * mini-trampolines.c: Fix build.
15465
15466         * mini-amd64.h: Add delegate trampolines.
15467
15468         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
15469
15470         * inssel-amd64.brg: Add optimized call rules.
15471         
15472         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
15473
15474         * inssel-ia64.brg: Add optimized ldind(reg) rules.
15475
15476 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15477
15478         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
15479         change.
15480
15481         * mini-ia64.c: Remove LMF fixmes.
15482
15483         * mini-ia64.h: Remove most fields from LMF.
15484
15485         * inssel-ia64.brg (stmt): Fix unaligned access errors.
15486
15487         * mini-trampolines.c: Add support for IA64 function descriptors.
15488
15489         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
15490         for IA64 function descriptors.
15491
15492 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
15493
15494         * tramp-arm.c: patch the vtable for virtual calls. Added
15495         support code to register/unregister the LMF.
15496         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
15497         more LMF work.
15498
15499 2005-08-19  Dick Porter  <dick@ximian.com>
15500
15501         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
15502         bit value if needed.
15503
15504 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15505
15506         * mini.c (mini_get_method): Move handling of wrapper data here.
15507
15508         * mini.c (mono_method_to_ir): Add support for dynamic methods.
15509
15510         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
15511         virtual.
15512
15513         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
15514         bblock->code does not remain empty.
15515
15516 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
15517
15518         * arrays.cs: Add regression test for #75832.
15519
15520         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
15521         rules. Fixes #75832.
15522
15523         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
15524         instruction scheduling.
15525
15526 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
15527
15528         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
15529
15530 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15531
15532         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
15533
15534         * mini-codegen.c: Fix VC build.
15535
15536         * cpu-pentium.md: Increase length of atomic_exhange_i4.
15537
15538 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15539
15540         * mini.h: fix signature for mono_register_opcode_emulation.
15541
15542 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
15543
15544         * mini.c: Get rid of most of the helper_sig_... constants using
15545         mono_create_icall_signature ().
15546
15547 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
15548
15549         * jit-icalls.c (helper_ldstr): New helper function.
15550
15551         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
15552
15553         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
15554         throw, load the string using a helper call instead of creating a string object.
15555
15556         * aot.c: Update after LDSTR changes.
15557
15558         * mini.h: Bump AOT file version.
15559         
15560         * aot.c: Save class size info into the AOT file. Print more statistics during
15561         compilation.
15562
15563         * mini.h: Bump AOT file version.
15564
15565         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15566         ordering of disasm cases. Fixes #74957.
15567
15568 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
15569
15570         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
15571         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
15572         the generic code needed for the ARM port.
15573
15574 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
15575
15576         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
15577         inssel-arm.brg: more ARM features and fixes.
15578
15579 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
15580
15581         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
15582         ARM port work in progress.
15583
15584 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
15585
15586         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
15587
15588         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
15589
15590         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
15591
15592         * inssel.brg (mini_emit_memset): Add support for unaligned access.
15593
15594         * *-ia64.*: Ongoing IA64 work.
15595         
15596         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
15597
15598 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15599
15600         * TODO: Remove out-of-data todo stuff.
15601
15602         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
15603         dead code.
15604
15605         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
15606
15607         * mini.h: Bump corlib version.
15608
15609 2005-07-27  Martin Baulig  <martin@ximian.com>
15610
15611         * mini-codegen.c
15612         (create_copy_ins): Added `const unsigned char *ip' argument; set
15613         `copy->cil_code' from it.
15614
15615 2005-07-27  Martin Baulig  <martin@ximian.com>
15616
15617         * mini-exceptions.c (mono_handle_exception): Don't call
15618         mono_debugger_handle_exception() for filters.
15619
15620 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
15621
15622         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
15623         as well.
15624
15625 2005-07-26  Martin Baulig  <martin@ximian.com>
15626
15627         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
15628
15629         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
15630         helper_compile_generic_method() if the method is actually virtual
15631         and non-final.
15632
15633 2005-07-26  Martin Baulig  <martin@ximian.com>
15634
15635         * mini.c
15636         (trampoline_code): Renamed to `mono_trampoline_code' and made it
15637         public; this is now accessed directly by the debugger.
15638         (mono_generic_trampoline_code): Removed.
15639
15640         * debug-mini.c
15641         (mono_debug_init_method): Also add interncalls and wrappers.
15642
15643 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
15644
15645         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
15646
15647 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
15648
15649         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
15650
15651 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
15652
15653         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
15654
15655 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15656
15657         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
15658         getting TLS offsets on AMD64 too.
15659
15660 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
15661
15662         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
15663
15664 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
15665
15666         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
15667         inssel-arm.brg, mini-arm.h: ARM port work in progress.
15668
15669 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
15670
15671         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
15672
15673         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
15674         to mini.c.
15675
15676         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
15677         mono_sparc_is_virtual_call ().
15678         
15679         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
15680
15681         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
15682         trampoline parameters.
15683
15684         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
15685         
15686         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
15687         to mono_arch_get_vcall_slot_addr.
15688
15689         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
15690         trampoline code.
15691
15692         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
15693
15694 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
15695
15696         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
15697
15698 2005-07-19  Martin Baulig  <martin@ximian.com>
15699
15700         * exceptions-amd64.c (throw_exception): Call
15701         mono_debugger_throw_exception() here like we're doing it on i386.
15702
15703 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
15704
15705         * mini-ia64.c: Add optimized TLS access support.
15706
15707 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
15708
15709         * mini-exceptions.c: Ongoing IA64 work.
15710
15711         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
15712
15713         * mini.c: Use the default optimization set when embedding. Fixes
15714         #75194.
15715
15716 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
15717
15718         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
15719         of trampolines to a separate file.
15720
15721         * mini-trampolines.c: New file.
15722
15723         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
15724         separate file.
15725         
15726         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
15727         amd64/ia64 code.
15728
15729         * mini-codegen.c: Fix cygwin build.
15730
15731 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
15732
15733         * mini.c: Add some minor changes needed by the IA64 port.
15734
15735         * *-ia64.*: Ongoing IA64 work.
15736
15737 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
15738
15739         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
15740         trampolines into arch-independent and arch-dependent parts.
15741
15742         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
15743
15744 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
15745
15746         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
15747
15748         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
15749         the xp-regalloc-branch for amd64.
15750
15751         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
15752         xp-regalloc-branch for x86.
15753
15754 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
15755
15756         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
15757
15758 2005-07-06  Martin Baulig  <martin@ximian.com>
15759
15760         * mini.c
15761         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
15762         (mono_jit_runtime_invoke): Likewise.
15763
15764 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
15765
15766         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
15767         on x86 too.
15768         
15769         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
15770         without loading their metadata. Reorganize the file format so exception handling+
15771         debug info is kept separate from normal method info. Create MonoJitInfo 
15772         structures for methods lazily.
15773
15774         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
15775         loading metadata.
15776         (x86_class_init_trampoline): Patch AOT class init trampolines too.
15777
15778         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
15779
15780         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
15781         in AOT code.
15782
15783         * mini.h: Bump AOT file version.
15784
15785 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
15786
15787         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15788
15789 2005-07-01  Raja R Harinath  <rharinath@novell.com>
15790
15791         * Makefile.am (check-local): Call semdel-wrapper.
15792
15793 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
15794
15795         * mini-x86.c: Revert the last change as it seems to break the build..
15796
15797 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
15798
15799         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
15800         
15801         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
15802
15803 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
15804
15805         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
15806         outside of the macro, so strange stuff doesn't happen with gcc4
15807         (NEW_AOTCONST_TOKEN): Likewise.
15808
15809 2005-06-28  Martin Baulig  <martin@ximian.com>
15810
15811         * mini.c (mini_class_is_system_array): New static method; use this
15812         instead of `klass->parent == mono_defaults.array_class' everywhere
15813         since this also works for the new generic array class.
15814
15815 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
15816
15817         * inssel.brg: Remove warnings.
15818
15819 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
15820
15821         * mini-ia64.c: Ongoing IA64 work.
15822
15823         * basic-float.cs: Add float->i1 conversion test.
15824
15825         * iltests.il: Add conv.u4 test.
15826
15827 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
15828
15829         * inssel-long.brg: Fix bug caused by last change.
15830
15831 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
15832
15833         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
15834         BSDs.  Allows the x86 JIT to work on OSX86
15835
15836 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
15837
15838         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
15839         u4->i8 conversion.
15840
15841         * mini-ia64.c: Ongoing IA64 work.
15842
15843 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
15844
15845         * mini-ia64.c: Ongoing IA64 work.
15846
15847         * driver.c: Clean up jit_code_hash as well when using --regression.
15848
15849         * inssel-long.brg: Fix long->i4/u4 conversion rules.
15850
15851         * basic-long.cs: Add tests for long->u4 conversion.
15852
15853 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
15854
15855         * mini.c: Take mono_get_domainvar out of macros. This makes sure
15856         that we do not depend on undefined C behavior: the order stuff
15857         gets evaluated within an expression. Fixes mono when compiled on
15858         GCC 4.
15859
15860 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
15861
15862         * *-ia64.*: Ongoing IA64 work.
15863
15864         * aot.c: Lower memory usage while loading AOT methods.
15865
15866         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
15867
15868         * mini.h: Bump AOT file format version.
15869
15870 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
15871
15872         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
15873
15874 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
15875
15876         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
15877         not on callee assembly). Fixed some comments.
15878
15879 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
15880
15881         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
15882         it gets proper disassembly.
15883         (emit_method_info): Remove some dead code.
15884
15885         * mini.c (mini_method_compile): Allways allocate the GOT var in
15886         mono_method_to_ir for emulating opcodes.
15887
15888 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
15889
15890         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
15891         before freeing the code memory. Fixes #74990.
15892
15893         * objects.cs: Add regression test for #74992.
15894
15895         * liveness.c: Extend live ranges of arguments to the beginning of the
15896         method. Fixes #74992.
15897
15898         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
15899         so it points into the faulting instruction.
15900
15901 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
15902
15903         * jit-icalls.c (mono_imul_ovf): Add exception handling.
15904
15905         * *-ia64.*: Ongoing IA64 work.
15906
15907         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
15908
15909 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
15910
15911         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
15912
15913         * *-ia64.*: Ongoing IA64 work.
15914
15915 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
15916
15917         * basic-long.cs: Add tests for add/sub.ovf.
15918
15919         * basic.cs: Add tests for sub.ovf.
15920
15921         * *-ia64.*: Ongoing IA64 work.
15922
15923 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
15924
15925         * *-ia64.*: Ongoing IA64 work.
15926
15927         * basic.cs: Add conv.ovf.i4.un test.
15928
15929 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
15930
15931         * mini.c: (remove_block_if_useless) Fixed bug 75061.
15932         
15933 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15934
15935         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
15936
15937 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
15938
15939         * *-ia64.*: Ongoing IA64 work.
15940
15941 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15942
15943         * trace.[ch]:
15944         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
15945
15946 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
15947
15948         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
15949
15950 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
15951
15952         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
15953
15954         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
15955         of a call is callable by a near call.
15956
15957 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
15958
15959         * mini-ia64.c: Ongoing IA64 work.
15960
15961 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
15962
15963         * genmdesc.c: Make the generated array non-static.
15964
15965         * inssel-long.brg: Fix LSHR_IMM rule.
15966
15967         * *-ia64.*: Ongoing IA64 work.
15968
15969         * *-ia64.*: Ongoing IA64 work.
15970
15971 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15972
15973         * *-ia64.*: Ongoing IA64 work.
15974
15975         * *-ia64.*: Ongoing IA64 work.
15976         
15977         * mini-ia64.c: Ongoing IA64 work.
15978
15979         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
15980
15981 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
15982
15983         * objects.cs basic-calls.cs: Move some tests to objects.cs.
15984         
15985         * objects.cs basic-long.cs: Move some tests to objects.cs.
15986
15987 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
15988
15989         * *-ia64.*: Ongoing IA64 work.
15990
15991         * iltests.il: Add a new test.
15992
15993         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
15994         newobj. Fixes #75042.
15995
15996 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
15997
15998         * *-ia64.*: Ongoing IA64 work.
15999         
16000         * *-ia64.*: Ongoing IA64 work.
16001         
16002         * *-ia64.*: Ongoing IA64 work.
16003
16004         * basic.cs objects.cs: Move tests accessing static variables as well.
16005
16006         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
16007
16008 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
16009
16010         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
16011
16012         * driver.c: Always print failed tests.
16013
16014         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
16015         frame pointer.
16016
16017         * *ia64*: Ongoing IA64 work.
16018
16019 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16020
16021         * basic.cs: Add tests for add.ovf. Fix warnings.
16022
16023 2005-05-18  Miguel de Icaza  <miguel@novell.com>
16024
16025         * driver.c (mono_main): Avoid crash if no argument is passed to
16026         --break;  Do not use g_error, but f_printf.   And fix all other
16027         ocurrences of the same crash.
16028
16029 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
16030
16031         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
16032         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
16033         Fixes #74742.
16034
16035 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
16036
16037         * *-ia64.*: Add beginnings of IA64 backend.
16038
16039         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
16040
16041 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
16042
16043         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
16044         Fixes #74925.
16045
16046         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
16047
16048         * mini-amd64.c: Fix a warning.
16049
16050 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
16051
16052         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
16053         in float_neg. Fixes #74897.
16054
16055         * mini-amd64.c (emit_call): Fix another near call bug.
16056
16057 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
16058
16059         * declsec.c: Keep the appdomain information in the structure. Added a 
16060         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
16061         value gets overwritten).
16062         * declsec.h: Set the default MonoArray for the the stack to 6. Added
16063         an MonoAppDomain member to MonoSecurityFrame.
16064         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
16065         used in the stack walk. Now use a MonoArray which grow (double) when
16066         it gets full.
16067
16068 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16069
16070         * mini.c: Re-enabled runtime cleanup, since running threads should
16071         now properly stop when exiting.
16072
16073 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16074
16075         * mini-codegen.c: New file contaning the arch-independent local
16076         register allocator. Not used by any architectures yet.
16077
16078         * mini.h linear-scan.c: Merge some changes from the 
16079         mini-xp-local-regalloc branch.
16080
16081 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16082
16083         * mini-amd64.c (emit_call): Fix calls to native functions when the
16084         runtime is compiled as a shared library. Fixes #74756.
16085
16086         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
16087         on a literal field. Fixes #74751.
16088
16089 2005-04-25  Raja R Harinath  <rharinath@novell.com>
16090
16091         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
16092
16093 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16094
16095         * objects.cs: Add missing null casting test.
16096
16097 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16098
16099         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
16100         in wrapper methods. Also rename 'address' variable to 'offset'.
16101
16102 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16103
16104         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
16105         warnings.
16106         
16107         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
16108
16109         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
16110         work on windows.
16111
16112 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16113
16114         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
16115
16116 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16117
16118         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
16119         just the last bytes.
16120
16121 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16122
16123         * aot.c (mono_compile_assembly): Fix warning.
16124
16125         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
16126         by the _MSC_VER stuff.
16127
16128 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16129
16130         * inssel-long.brg: Fix #74588.
16131
16132         * cpu-amd64.md: Fix #74591.
16133
16134         * iltests.il: Add new regression tests.
16135
16136 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16137
16138         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
16139         valuetype.
16140
16141 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
16142
16143         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
16144
16145         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
16146         from Bill Middleton <flashdict@gmail.com>.
16147
16148 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
16149
16150         * arrays.cs: Add new regression test. Fix warnings.
16151
16152 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
16153
16154         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
16155         and leakage in CKFINITE.
16156
16157         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
16158         this to a null op since it is called on amd64 too.
16159
16160         * exceptions-amd64.c (get_throw_trampoline): Align stack.
16161
16162         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
16163         body since this is not used on amd64.
16164         
16165         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
16166
16167         * mini-amd64.c: Remove obsolete fixmes.
16168
16169         * mini.c (print_method_from_ip): Fix debugging support.
16170
16171 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16172
16173         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
16174         so that expressions that don't give much gain are not reduced.
16175         * ssapre.h: Likewise.
16176
16177 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
16178
16179         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
16180
16181         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
16182
16183         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
16184
16185 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
16186
16187         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
16188
16189         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
16190
16191 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
16192
16193         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
16194         stack touching.
16195
16196         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
16197
16198         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
16199
16200         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
16201
16202         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
16203         MONO_ARCH_USE_SIGACTION. Fixes #74252.
16204
16205         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
16206
16207         * mini-x86.c: Fix up stack overflow handling.   
16208
16209         * exceptions.cs: Add new regression test.
16210
16211 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
16212
16213         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
16214         mono_jit_thread_attach.
16215
16216         * mini.c (mono_method_to_ir): Verify called method is not abstract.
16217
16218 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16219
16220         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
16221         avoid calling constructors using callvirt.
16222
16223         * inssel.brg: Fix #74073.
16224
16225 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
16226
16227         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
16228         compilation with non-GCC compilers.
16229         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
16230         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
16231
16232 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
16233
16234         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
16235         klass->interface_offsets (will likely fix bug#74073).
16236
16237 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16238
16239         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
16240
16241 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
16242
16243         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
16244         to amd64_div_reg_size ().
16245         
16246         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
16247
16248 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
16249
16250         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
16251
16252 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16253
16254         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
16255
16256 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16257
16258         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
16259         
16260         * mini.c (mono_precompile_assembly): Load and precompile referenced
16261         assemblies as well. Fixes #74015.
16262
16263 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
16264
16265         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
16266
16267 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
16268
16269         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
16270         a lot of checks and (anyway) permissions cannot work until corlib is 
16271         loaded.
16272
16273 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
16274
16275         * mini-ppc.c: fixed ABI issue on sysv/ppc.
16276
16277 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
16278
16279         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
16280         calls (fixes bug#72824).
16281
16282 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16283
16284         * mini.c: fix tail recursion elimination (see test in bug#73936).
16285
16286 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
16287
16288         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
16289         some fp functions in sse2 mode.
16290
16291 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
16292
16293         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
16294
16295 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
16296
16297         * mini.h mini.c: Add mono_get_jit_tls_key ().
16298
16299         * mini-x86.c: Enable fast TLS support on windows.
16300
16301 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
16302
16303         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
16304         * mini.c: Check for p/invoke method when generating code. If a
16305         p/invoke method, or it's class, isn't decorated with [Suppress
16306         UnmanagedCodeSecurity] then generate code to call System.Security.
16307         UnmanagedDemand (only if the security manager is active).
16308
16309 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16310
16311         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
16312         last change as it seems to cause strange crashes.
16313         
16314 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16315
16316         * *.c: handle unsafe function pointers where needed.
16317
16318 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16319
16320         * mini.c (mono_jit_free_method): Remove the fixme too.
16321
16322 2005-03-15  Miguel de Icaza  <miguel@novell.com>
16323
16324         * mini.c: As discussed, make the code actually free the delegate
16325         thunk now, to enable the debugging of delegate problems, use
16326         MONO_DEBUG=1 when running Mono. 
16327
16328         This takes also care of parts of the leaks as seen by Joe.
16329
16330 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
16331
16332         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
16333         thread_tls_offset calculation.
16334
16335 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
16336
16337         * declsec.c: Reworked linkdemand checks for icall. The previous code
16338         was using the declaration code (untrusted) and didn't work as expected
16339         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
16340         specific case.
16341
16342 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
16343
16344         * iltests.il: Add new localloc test.
16345
16346         * mini-amd64.c: Handle large stack allocations the same way as on
16347         windows if stack overflow handling is working.
16348         
16349         * mini-amd64.c: Allocate the signal stack using mmap.
16350
16351         * mini.c (sigsegv_signal_handler): Fix reading of context.
16352
16353         * mini-exceptions.c: Fix up stack overflow handling.
16354
16355         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
16356
16357         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
16358
16359         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
16360
16361         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
16362
16363         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
16364         tramp_init functions as they are no longer needed.
16365
16366 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
16367
16368         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
16369         
16370         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
16371
16372         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
16373         
16374         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
16375         support that now.
16376
16377         * mini-ops.h: Add OP_LMUL_IMM.
16378
16379         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
16380         long mul/div opcodes as intrinsic.
16381
16382         * mini-amd64.c (emit_call): Handle the case when the callee might be
16383         an AOT method.
16384
16385 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
16386
16387         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
16388         extra safe.
16389         
16390         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
16391
16392         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
16393
16394 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
16395
16396         * mini.c (mono_codegen): Don't leak here, to help people running
16397         monogrind.
16398
16399 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
16400
16401         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
16402         conversions in sse2 mode.
16403
16404         * basic-float.cs: Add regression test.
16405         
16406         * mini-amd64.c: Reenable sse2.
16407
16408 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
16409
16410         * mini-amd64.c: Disable sse2 until some regressions are fixed.
16411
16412 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
16413
16414         * driver.c: Copyright text should include 2005.
16415         
16416 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
16417
16418         * cpu-amd64.md (load_membase): Fix more max lengths.
16419
16420 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
16421
16422         * cpu-amd64.md (load_membase): Fix max length.
16423
16424         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
16425
16426         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
16427
16428         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
16429         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
16430
16431         * basic-float.cs: Add rounding regression test.
16432
16433         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
16434
16435 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
16436
16437         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
16438         structures in registers for pinvoke wrappers.
16439
16440 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
16441
16442         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
16443
16444 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
16445
16446         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
16447         wrapper to mono_jit_thread_attach.
16448
16449         * mini.c (mini_jit_thread_attach): New jit icall.
16450
16451         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
16452         native->managed wrappers.
16453
16454         * exceptions.cs: Add new regression test.
16455
16456         * mini.c (optimize_branches): Check regions in the cbranch to throw
16457         block case as well. Fixes #73242.
16458
16459 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
16460
16461         * mini.c: thread safety fixes.
16462
16463 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
16464
16465         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
16466         patching stuff, since delegates use jump trampolines so there is
16467         no caller.
16468
16469         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
16470         jump trampolines.
16471         
16472         * tramp-amd64.c: Fix build.
16473
16474         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
16475         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
16476
16477         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
16478         Rename this to mono_arch....
16479         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
16480
16481         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
16482
16483         * mini-amd64.c (emit_call): If both the caller and the callee is
16484         guaranteed to have 32 bit addresses, emit a normal call.
16485
16486         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
16487
16488         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
16489         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
16490         method_ptr inside delegates.
16491
16492 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
16493
16494         * mini.c (mono_jit_free_method): Free the method info even if the native code is
16495         invalidated. Fixes #73001.
16496
16497         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
16498
16499         * mini-x86.c: Only use stdcall for pinvokes on windows.
16500
16501 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
16502
16503         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
16504         * mini-x86.c: remove unreliable __thread var offset detection,
16505         use the correct accessors and enable by default.
16506
16507 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
16508
16509         * mini.c (mono_jit_free_method): Fix memory leak.
16510
16511 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
16512
16513         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
16514
16515 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
16516
16517         * cpu-amd64.md: Fix lengths of atomic opcodes.
16518
16519 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
16520
16521         * driver.c: try to not imply using ICU is any good.
16522
16523 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
16524
16525         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
16526         functions as inline ops.
16527
16528         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
16529         some Interlocked functions as inline ops.
16530
16531         * mini.c (move_basic_block_to_end): Fix bug in last patch.
16532
16533         * mini.h (MonoBasicBlock): Reorganize fields a bit.
16534
16535         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
16536
16537         * mini.c: Add support for OP_NOT_TAKEN.
16538
16539         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
16540         structures in registers for pinvoke wrappers.
16541
16542         * mini-amd64.c: Fix warnings.
16543
16544 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
16545
16546         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
16547
16548         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
16549
16550         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
16551         address instead of loading the address from it.
16552
16553         * mini-x86.c: Add support for returning small structs in registers
16554         on Win32. Fixes part of #70864.
16555         
16556 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
16557
16558         * trace.c (get_token): Improve error checking.
16559
16560 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
16561
16562         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
16563
16564 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
16565  
16566         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
16567         it can be reused for MonoClass.
16568         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
16569         _LINKDEMAND.
16570
16571 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
16572
16573         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
16574         instead of a MonoReflectionMethod. The method information wasn't used
16575         when displaying SecurityException details (but will be now).
16576
16577 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
16578
16579         * Makefile.am : windows build fix.
16580
16581 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
16582
16583         * iltests.il: Add new regression test.
16584
16585         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
16586         #72522.
16587
16588 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
16589  
16590         * mini.c: Moved linkdemand check into helper function check_linkdemand
16591         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
16592         LDFTN, LDVIRTFTN).
16593
16594 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
16595
16596         * declsec.c: Added statistics counter for different kinds of 
16597         LinkDemands.
16598         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
16599         (and commented) declaration.
16600         * mini.c: Added statistics counter for security Demand code 
16601         generation. Added display of security statistics.
16602
16603 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
16604
16605         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
16606         Fix compilation errors under gcc-2.95.
16607
16608 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
16609
16610         * mini.c, driver.c: Use the new jit trampoline hashtable
16611
16612 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16613
16614         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
16615
16616 2005-02-11  Martin Baulig  <martin@ximian.com>
16617
16618         * debug-mini.c (mono_debug_close_method): Free the line number array.
16619
16620 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
16621
16622         * aot.c: Break up large methods into smaller ones. Share GOT slots for
16623         icalls.
16624
16625         * mini.h: Bump AOT file format version. 
16626
16627 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
16628
16629         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
16630         APTC and P/Invoke.
16631         * declsec.h: Added macros to get/set lazyly initialized security 
16632         informations about assemblies. Added new enum for different type of
16633         possible LinkDemand violation. Added function to check LinkDemands.
16634         * mini.h: Added a field to MonoCompile to hold any security violation
16635         detected when JITting a method (so it can be thrown later).
16636         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
16637         and CEE_CALLVIRT. Added code to throw exception at the end of
16638         mini_method_compile (note: the exception is unhandled right now).
16639
16640 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
16641
16642         * mini.c, jit-icalls.c: use the managed implementation of
16643         memset for initobj and memset, to avoid managed <-> unmanaged
16644         transitions.
16645
16646 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
16647
16648         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
16649         optimization if it would need a GOT var.
16650
16651         * basic.cs: Add tests for constant propagation and switch statements.
16652
16653         * ssa.c: Fix out-of-range constant propagation and switch statements.
16654
16655 2005-02-09    <vargaz@freemail.hu>
16656
16657         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
16658
16659 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
16660
16661         * cpu-amd64.md (load_membase): Fix max length of load_membase.
16662
16663 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16664
16665         * mini.c: update to new signature of mono_class_get_allocation_ftn().
16666
16667 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
16668
16669         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
16670         arithmetic operations.
16671
16672 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
16673
16674         * mini-ppc.c: add a workaround for broken user code that
16675         DllImports vararg functions with non-vararg signatures.
16676
16677 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
16678
16679         * mini.c (mono_jit_compile_method_inner): Add detection and a 
16680         meaningfull error message for assemblies written in Managed C++.
16681
16682         * tramp-amd64.c mini-amd64.h: Add support for 
16683         create_trampoline_from_token ().
16684
16685         * aot.c mini-x86.c abcremoval.c: Applied patch from
16686         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
16687
16688 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
16689
16690         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
16691         which takes a MonoImage/token as parameter instead of a MonoMethod.
16692
16693         * aot.c: Use the new trampoline for initializing vtables.
16694
16695         * aot.c: Add support for ldfld/stfld_remote wrappers.
16696
16697         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
16698         rules for compare <MEM>, IMM.
16699
16700         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
16701
16702         * aot.c: Handle inherited finalizers correctly.
16703
16704 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
16705
16706         * inssel.brg (stmt): Add a missing _setup_... ().
16707
16708         * aot.c: Save some parts of the class state to the AOT file and use it
16709         to recompute that state when a class is initialized.
16710
16711         * mini.c: Install AOT hooks into the runtime.
16712
16713         * mini.h: Bump AOT file format version.
16714         
16715         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
16716         Fixes #72148.
16717
16718         * iltests.il: Add new test.
16719
16720 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
16721
16722         * mini.c: fix typo.
16723
16724 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
16725
16726         * mini.c: setup the statistical profiler in the thread attach
16727         callback to cope with the new single thread code.
16728
16729 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
16730
16731         * mini-ppc.c: ensure we have enough room for the profiler
16732         calls (fixed bug#72084).
16733
16734 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
16735
16736         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
16737         it.
16738
16739 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16740
16741         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
16742
16743 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16744
16745         * ssapre.c: Fixed an issue with down safety (this allows IronPython
16746         to succesfully execute parrotbench).
16747         * ssapre.h: Likewise.
16748
16749 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16750
16751         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
16752         variable for stores to method arguments (fixes a SSAPRE issue).
16753
16754 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16755
16756         * mini.c: handle value types in dup, fixes gen-112.cs.
16757
16758 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
16759
16760         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
16761         sequence for calls in dynamic methods to avoid thunks.
16762
16763 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
16764
16765         * mini.c: correctly remove dynamic methods from the hashtable.
16766
16767 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16768
16769         * driver.c: Disabled SSAPRE until fix the bug that appears
16770         in IronPython's parrotbench.
16771
16772 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
16773
16774         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
16775
16776         * mini.c (mono_method_to_ir): Revert the previous change.
16777         
16778         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
16779         when AOT compiling.
16780
16781         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
16782         mono_jit_info_table_find () etc. when running under valgrind.
16783
16784         * inssel.brg: Fix warnings.
16785
16786         * mini-exceptions.c: Fix warnings.
16787
16788 2005-01-31  Martin Baulig  <martin@ximian.com>
16789
16790         * driver.c (compile_all_methods_thread_main): Don't try to compile
16791         generic methods or anything which has type parameters.
16792
16793 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
16794
16795         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
16796
16797         * TestDriver.cs: Add --verbose flags.
16798
16799         * graph.c ssa.c: Fix 64 bit warnings.
16800         
16801         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
16802         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
16803         Fix 64 bit warnings.
16804
16805         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
16806         variable not spotted by gcc.
16807         
16808         * mini-amd64.c inssel-amd64.brg: Applied patch from  
16809         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
16810         X86_COMPARE_MEMBASE opcodes.
16811
16812         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
16813
16814 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
16815
16816         * *: MonoMethod->signature might be NULL now. You *MUST* use
16817         mono_method_signature.
16818
16819 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16820
16821         * driver.c (compile_all_methods_thread_main): Compile the methods
16822         without invoking cctors.
16823
16824 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
16825
16826         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
16827         * basic-calls.cs: test for the above.
16828
16829 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
16830
16831         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
16832         MonoJitInfo changes.
16833
16834 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
16835
16836         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
16837         eagerly if it contains dynamic methods.
16838         
16839         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
16840
16841         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
16842         trace, it is now computed by an icall from trace_ips.
16843         
16844         * mini-exceptions.c: Fix a warning.
16845
16846 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
16847
16848         * mini-exceptions.c: don't bother getting stack trace info if
16849         it's not going to be used.
16850
16851 2005-01-27  Raja R Harinath  <rharinath@novell.com>
16852
16853         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
16854         ssapre-mini-ops.h.
16855
16856 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
16857
16858         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
16859
16860         * aot.c: Avoid calling mono_method_get_header () if not needed.
16861
16862         * mini.h: Bump AOT file format version.
16863         
16864         * mini.c (mono_emit_native_call): Allocate a GOT var here.
16865
16866         * mini.c (mono_print_tree): Print more info for calls.
16867
16868 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
16869
16870         * declsec.h: Remove warning by adding missing include for marshal.h
16871
16872 2005-01-26  Martin Baulig  <martin@ximian.com>
16873
16874         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
16875         `ip' twice.
16876
16877 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
16878
16879         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
16880         flags.
16881
16882         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
16883
16884         * aot.c (mono_compile_assembly): Fix a warning.
16885
16886 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
16887
16888         * declsec.c: Look for security attributes on the original MonoMethod 
16889         (and not the wrapped one). This fix permissions on icalls.
16890
16891 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16892
16893         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16894
16895         * mini.c (mono_allocate_stack_slots): Add a fixme.
16896
16897         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
16898
16899 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16900
16901         * inssel.brg: optimize casts of sealed types (more
16902         optimizations waiting for fixes in remoting).
16903
16904 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
16905
16906         * inssel.brg (stmt): Add another dummy rule.
16907
16908         * driver.c: Fix warnings.
16909
16910         * driver.c (mono_main): If running under valgrind, instruct glib to use
16911         the system allocation functions so valgrind can track the memory
16912         allocated by the g_... functions.
16913
16914         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
16915
16916         * mini-ops.h: Add OP_DUMMY_STORE opcode.
16917
16918         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
16919
16920         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
16921         variables in try regions.
16922
16923         * mini.c (mini_method_compile): Don't disable optimizations on large
16924         methods when AOT compiling.
16925
16926         * mini.c (mono_allocate_stack_slots): New arch independent method to 
16927         allocate stack slots. Not yet used.
16928
16929 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
16930
16931         * debug-mini.c (mono_debug_close_method): Plug some leaks.
16932
16933 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
16934
16935         * mini-ppc.c: make the branch info relative as the code
16936         buffer can be reallocated.
16937
16938 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
16939
16940         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
16941         * driver.c: Removed the AOT/security restriction. Now initialize the
16942         security manager (in metadata) if --security is used.
16943         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
16944         rather than the pointer to declarative security, when AOT is used.
16945
16946 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
16947
16948         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
16949         basic blocks, reduced intrinsic exception throwing code size.
16950
16951 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
16952
16953         * driver.c (mini_usage): Reorder the usage screen.
16954
16955 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
16956
16957         * mini.c (mono_resolve_patch_target): Fix warning.
16958
16959 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
16960
16961         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
16962         previous patch.
16963
16964         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16965
16966         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
16967         breaks the amd64 build.
16968
16969         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
16970         register allocation. Fixes #71454.
16971
16972         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
16973
16974         * arrays.cs: Add new regression test.   
16975
16976 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16977
16978         * ssapre.c: Turned usage of snprintf to GString.
16979         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
16980         (I left it on by mistake in my previous commit).
16981
16982 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
16983
16984         * mini.c, cfold.c, basic-calls.cs: preserve side effects
16985         on cond branch optimization (fixes bug# 71515).
16986
16987 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16988
16989         * abcremoval.c: Fixed bug 71062.
16990         * abcremoval.h: Likewise.
16991
16992 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
16993
16994         * mini.c: Added a new functionality to optimize_branches, the removal
16995         of useless basic blocks, and fixed some problem in the removal of
16996         critical edges; some utility functions added for both purposes.
16997         * ssapre.c: Added complex expression support, and fixed bug 70637.
16998         * ssapre.h: Likewise.
16999         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
17000         enabled in SSAPRE.
17001         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
17002         * driver.c: Re-enabled SSAPRE.
17003
17004 2005-01-19  Martin Baulig  <martin@ximian.com>
17005
17006         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
17007         the result of mono_get_method_constrained().
17008
17009 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
17010
17011         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
17012         manager.
17013
17014 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
17015
17016         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
17017         be detected.  Fixes #59296.
17018
17019 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17020
17021         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
17022         which can happen. Fixes #71361.
17023
17024 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17025
17026         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
17027         manager.
17028
17029 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17030
17031         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
17032         appdomain-unload.exe to fail.
17033         
17034         * mini.c: Fix some memory leaks.
17035
17036 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
17037
17038         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
17039         Fixed bug and sped up some codepaths.
17040
17041 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17042
17043         * mini.c: Fix some memory leaks.
17044
17045         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
17046         conversion.
17047
17048         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
17049
17050         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
17051         #71320.
17052
17053         * iltests.il: Add regression test for #71320.
17054
17055 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
17056
17057         * mini.c (mono_codegen): Fix installation of profiler hooks.
17058
17059         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
17060
17061 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17062
17063         * mini.h, mini.c, cfold.c: optimize access to enum
17064         readonly fields, too. Eval conditional branches if possible
17065         to perform unreachable code removal in more cases.
17066
17067 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
17068
17069         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
17070
17071         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
17072         code manager.
17073
17074         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
17075         WinXP DEP. Fixes #71244.
17076
17077 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
17078
17079         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
17080
17081 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
17082
17083         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
17084
17085 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
17086
17087         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
17088         changes.
17089
17090         * mini.h: Bump AOT version.
17091
17092         * mini.h (MonoCompile): Change exvar to a hash table.
17093
17094         * mini.c: Allocate a separate exvar for each handler block.
17095
17096         * mini.c: Get rid of the computation of filter_lengths, its not needed.
17097
17098         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
17099         ex var with the pending exception and only throw if the two are equal.
17100         Fixes #68552.
17101         
17102         * exceptions.cs: Add tests for rethrow and nested catch clauses.
17103
17104         * mini-x86.c: Fix warnings.
17105
17106         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
17107         used by all the ports now.
17108
17109         * aot.c: Add write-symbols and save-temps options.
17110
17111 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17112
17113         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
17114
17115 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
17116
17117         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
17118         operations.
17119
17120         * tramp-s390.c: Check vtable slot belongs to the domain.
17121
17122         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
17123         as per other platforms.
17124
17125         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
17126
17127 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
17128
17129         * driver.c: we don't run the Main() code in a subthread anymore.
17130
17131 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
17132
17133         * mini.c: added experimental rtc support in the statistical
17134         profiler: if the user has the permission, more accurate statistics
17135         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
17136         The MONO_RTC value must be restricted to what the linux rtc allows:
17137         power of two from 64 to 8192 Hz.
17138
17139 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17140
17141         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
17142
17143 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
17144
17145         * mini-ppc.c: better icache flush for smp.
17146
17147 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
17148
17149         * mini-amd64.c (emit_move_return_value): Fix memory leak.
17150
17151         * mini-x86.c (get_call_info): Add the get_call_info () code from the
17152         amd64 port, not yet used.
17153
17154 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17155
17156         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
17157         a struct type.
17158
17159 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
17160
17161         * driver.c: Added --security option to activate the security manager.
17162         Right now this will allow code generation for declarative demands and
17163         is disabled when AOT is specified.
17164         * mini.c: Add code generation for declarative security demands.
17165         * mini.h: Add mono_use_security_manager as an extern gboolean.
17166
17167 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17168
17169         * aot.c (mono_compile_assembly): Speed up compilation a bit by
17170         emitting more dense assembly code.
17171
17172         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
17173         exception throwing stuff.
17174
17175 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
17176
17177         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
17178         dead code.
17179
17180         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
17181         left in by mistake.
17182
17183         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
17184         fixed.
17185
17186         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
17187
17188         * tramp-*.c: Only patch vtable slots if the object is in the current
17189         domain. Fixes appdomain-unload.exe.
17190
17191         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
17192         
17193         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
17194         x86 branch.
17195
17196 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17197
17198         * mini.c (reverse_branch_op): New helper function.
17199
17200         * mini.c (optimize_branches): Run the new optimization only on 
17201         platforms which support it. Also reverse all kinds of branches.
17202
17203         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
17204
17205         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
17206         a throw statement.
17207
17208         * mini.c (optimize_branches): Reverse not-equals branches if the false
17209         bblock is a throw. This happens a lot of time with argument checking in
17210         corlib.
17211
17212         * mini.c (mono_codegen): Add support for placing basic blocks after
17213         the function epilogue.
17214
17215         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
17216         function epilogue.
17217         
17218 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
17219
17220         * mini.c (setup_stat_profiler): Only set this up if the platform
17221         supports ITIMER_PROF.
17222
17223 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17224
17225         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
17226         previous patch.
17227
17228         * inssel.brg: Fix a warning.
17229
17230 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
17231
17232         * mini.c: added support for statistical profiler 
17233         (run with: --profile=default:stat).
17234
17235 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
17236
17237         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
17238
17239         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
17240
17241         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
17242         related to global registers from the amd64 port.
17243
17244 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
17245
17246         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
17247
17248         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
17249         with global registers.
17250         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
17251
17252         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
17253
17254 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
17255
17256         * debug-mini.c (encode_value): Fix off-by-one.
17257
17258         * aot.c (encode_value): Likewise.
17259
17260         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
17261
17262 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
17263
17264         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
17265         AOT.
17266
17267         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
17268         
17269         * aot.c (emit_method_info): Increase size of temp buffer.
17270
17271         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
17272         the AOT case.
17273
17274 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
17275
17276         * aot.c (emit_method_info): Fix build.
17277         
17278         * aot.c: Further rework of the AOT file format to reduce the size of
17279         the method info data.
17280
17281         * mini.h: Bump AOT file format version.
17282
17283 2004-12-27  Martin Baulig  <martin@ximian.com>
17284
17285         * mini.c (mini_get_method): New static method; call
17286         mono_get_method_full() and mono_get_inflated_method().
17287         (mono_method_to_ir): Use mini_get_method() instead of
17288         mono_get_method_full(). 
17289
17290 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
17291
17292         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
17293
17294 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
17295
17296         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
17297
17298         * inssel-amd64.brg: Add some optimization rules.
17299
17300 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
17301
17302         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
17303         standard not GC'd stuff is fine.
17304
17305 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
17306
17307         * aot.c: Rework the AOT file format to get rid of most of the global
17308         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
17309
17310         * mini.h: Bump AOT file format version.
17311         
17312 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
17313
17314         * mini.h: Bump AOT file format version.
17315
17316         * aot.c (mono_aot_is_got_entry): New function to determine if an 
17317         address is inside a GOT.
17318
17319         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
17320
17321         * cpu-pentium.md: Increase the maximum size of some instructions which
17322         might involve a got access.
17323         
17324         * mini.c (get_method_from_ip): Another debug helper function.
17325
17326         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
17327         when got var accesses are created during the decompose phase.
17328
17329         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
17330
17331         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
17332         argument mini_compile_method and to MonoCompile, and use this to
17333         determine whenever a given method is compiled for AOT. This allows the
17334         other methods compiled during AOT compilation to be free of AOT stuff,
17335         so the backends does not need to add special support for them by
17336         creating a fake GOT etc.
17337
17338         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
17339         longer needed.
17340
17341 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17342
17343         * mini.c (mono_method_to_ir): It turns out that some of the
17344         x-appdomain wrappers are lax with types, so just ignore this for
17345         all wrappers.
17346
17347         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
17348         at the vtable->klass. If it is non-shared code we can just use the
17349         vtable.
17350
17351 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
17352
17353         * mini-ppc.c: access MonoDomain from tls, too.
17354
17355 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
17356
17357         * declsec.c: Removed unused variable (and related warning ;-)
17358
17359 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17360
17361         * iltests.il: New test for LDELEMA on an array of ref types.
17362
17363         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
17364         all ldelema's on reftypes.
17365         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
17366         it was the wrong place to put it.
17367
17368         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
17369         register to pop to make this cleaner, at the request of Paolo.
17370
17371 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
17372
17373         * mini-ops.h (OP_GETHASHCODE): New op.
17374
17375         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
17376
17377         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
17378         operation.
17379
17380         For a microbenchmark, this reduces the cost of Hashtable.get_Item
17381         by 25%.
17382         
17383         * mini-x86.c (mono_arch_output_basic_block): Rather than
17384
17385         add ebp, 4
17386
17387         Emit
17388
17389         pop edx
17390
17391         The first is 3 bytes while the second is 1. This saves 36 kb on
17392         mscorlib, quite a big saving. When bootstraping mcs, I was able to
17393         see a small boost because of icache locality.
17394
17395         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
17396
17397 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
17398
17399         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
17400         started code sharing with the generic code.
17401
17402 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
17403
17404         * mini-ppc.c, cpu-g4.md: added code for direct access to
17405         tls data slots.
17406
17407 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
17408
17409         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
17410          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
17411         to OP_TLS_GET.
17412
17413 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
17414
17415         * declsec.c|h: Added functions to cache the declarative stack modifiers
17416         in MonoJitInfo and to create a security frame from a MonoJitInfo 
17417         structure.
17418         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
17419         created. Register internal calls for System.Security.SecurityFrame::
17420         _GetSecurityFrame and _GetSecurityStack.
17421         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
17422         the definitions for the new stack walk/callback mechanism.
17423         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
17424         first security frame for LinkDemands and InheritanceDemands) and
17425         GetSecurityStack for Demands. Both use the new mono_walk_stack code
17426         from lupus.
17427         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
17428         walk initialization (lupus).
17429
17430 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
17431
17432         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
17433         idiom.
17434         (handle_loaded_temps): Do not create a temporary variable for
17435         things that we know are temps. They will never be modified.
17436         (mono_spill_call): Set MONO_INST_IS_TEMP
17437         (mono_emulate_opcode): ditto
17438         (emit_tree): ditto
17439         (mono_method_to_ir.CEE_DUP): ditto
17440
17441 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
17442
17443         * mini.c (type_to_eval_stack_type): Make this handle the void type
17444         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
17445         (emit_tree): use ip_in_bb to special case some common idioms
17446         Update all callers to pass in the IP.
17447         (mono_method_to_ir): Make CEE_CALL* do the above as well.
17448
17449         This gives us a nice 2% speedup in mcs bootstrap.
17450
17451         * mini-x86.c (peephole_pass): Peephole pass to make
17452         mov  [foo], eax
17453         push [foo]
17454
17455         into
17456
17457         mov [foo], eax
17458         push eax
17459
17460         * mini.c (ip_in_bb): new method.
17461         (mono_method_to_ir): use this method rather than doing the hash
17462         lookup ourselves.
17463
17464         * linear-scan.c (mono_linear_scan): When expiring actives, you
17465         don't need to keep around variables that expire on this
17466         instruction. This makes it so that:
17467              a = b + 1
17468         will turn into:
17469              store (ebx add (ebx, 1))
17470         which will become
17471              add ebx, 1
17472
17473 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
17474
17475         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
17476         combination to avoid doing two copies. Fix up problems with previous
17477         patch.
17478
17479         * mini.c: Fix 64 bit warnings.
17480
17481         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
17482
17483 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
17484
17485         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
17486         changes from the x86 code.
17487
17488         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
17489
17490 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
17491
17492         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
17493         throwing code to reduce its size, unify the AOT and non-aot code and 
17494         get rid of relocations in the AOT case.
17495
17496         * mini-x86.h mini.c exceptions-x86.c 
17497         (mono_arch_get_throw_corlib_exception): New arch specific function to 
17498         raise corlib exceptions which doesn't require relocations in the 
17499         caller.
17500
17501         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
17502
17503 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
17504
17505         * mini.c (mono_emit_method_call): Only allocate the got var when it is
17506         needed.
17507
17508         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
17509         in the AOT case.
17510
17511 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17512
17513         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
17514         with add function when used from Inc/dec atomic 
17515         functions. Re-enabled optimization on x86.
17516         * mini-ops.h: renamed atomic_add functions to
17517         allow _add to match the Interlocked::Add and
17518         _add_next to match Interlocked::Inc/Dec.
17519
17520 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
17521
17522         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
17523         linking of BBs to the end BB, and enabled SSAPRE also with
17524         consprop and copyprop (which was prevented by that bug).
17525
17526 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17527
17528         * mini-x86.c: disabling the Interlocked optimizing code. 
17529
17530 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
17531
17532         * aot.c (load_aot_module): Move reading of got_addr after the AOT
17533         file version check.
17534         
17535 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17536
17537         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
17538         interlocked optimization due lack of support on x86, rewrote 
17539         exchange to take into account that base may be in eax.
17540         
17541         xsp works again; activated Interlocked optimizing code.
17542         
17543 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
17544
17545         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
17546
17547 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
17548
17549         * mini-ops.h: Add new opcodes.
17550
17551         * mini.h: Add new patch types. Add got_var to MonoCompile.
17552
17553         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
17554         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
17555         make it work with all kinds of patchable code.
17556
17557         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
17558         address of the GOT, and referencing entries in the GOT.
17559
17560         * mini.c: Add code to load the GOT address if needed by an opcode.
17561
17562         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
17563         independent AOT code on the x86 using an elf-style Global Offset Table.
17564
17565 2004-12-14  Raja R Harinath  <rharinath@novell.com>
17566
17567         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
17568
17569 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17570
17571         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
17572         when running xsp.
17573
17574 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
17575
17576         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
17577         of Interlocked:Increment/Decrement/Add as inline ops.
17578         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
17579
17580 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
17581
17582         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
17583         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
17584
17585 2004-12-12  Duncan Mak  <duncan@ximian.com>
17586
17587         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
17588         again. `patch_info->table_size' is no longer valid after Zoltan's
17589         commit #37636.
17590
17591 2004-12-12  Martin Baulig  <martin@ximian.com>
17592
17593         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
17594         if we are the "real" method, ie. not an inlined method inside it.
17595
17596 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
17597
17598         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
17599         before we look in the special fields table. This fixes
17600         ../tests/thread-static-init.cs.
17601
17602 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17603
17604         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
17605         for Array get_Rank and get_Length. Fixes bug #70465.
17606
17607 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
17608
17609         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
17610         separate structure to reduce the size of MonoJumpInfo.
17611
17612 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
17613
17614         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
17615
17616 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
17617
17618         * mini.c (mini_get_inst_for_method): Changed to allow ports
17619         to return a MonoInst instead of opcode 
17620         (renamed mini_get_opcode_for_method to better reflect the new functionality)
17621         
17622         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
17623         Allow ports to return a created MonoInst instead of op-code, will enable
17624         new optimizations.
17625         (renamed mini_get_opcode_for_method to better reflected the functionality)
17626
17627 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
17628
17629         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
17630
17631 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
17632
17633         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
17634         Fixes #69985.
17635
17636 2004-12-08  Martin Baulig  <martin@ximian.com>
17637
17638         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
17639         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
17640
17641 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
17642
17643         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
17644         correctly.
17645
17646         * exceptions.cs: Disable some tests which depend on properties of x86 fp
17647         arithmetic.
17648
17649 2004-12-08  Raja R Harinath  <rharinath@novell.com>
17650
17651         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
17652
17653 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
17654
17655         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
17656         bug introduced by the previous patch.
17657
17658 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
17659
17660         * mini-ppc.c, objectc.cs: handle large structs passed by value
17661         (fixes bug #69972).
17662
17663 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
17664
17665         * mini-ppc.c: OP_ARGLIST implementation from
17666         Geoff Norton  <gnorton@customerdna.com>.
17667
17668 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
17669
17670         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
17671         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
17672
17673 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
17674
17675         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
17676
17677 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17678
17679         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
17680         support.
17681
17682 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
17683
17684         * mini-sparc.c: Zero out localled-ed memory.
17685
17686         * iltests.il: Add tests for zeroing out localloc-ed memory.
17687
17688 2004-12-04  Martin Baulig  <martin@ximian.com>
17689
17690         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
17691         mono_method_get_signature_full().       
17692
17693 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
17694
17695         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
17696         and some utility functions (always for SSAPRE), integrated SSAPRE.
17697         * mini.h: Likewise.
17698         * driver.c: Added ssapre option.
17699         * ssa.c: Small fix on OP_ARG handling.
17700         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
17701         * Makefile.am: Likewise.
17702
17703 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
17704
17705         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
17706         now in the xp code.
17707
17708         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
17709         icall.
17710
17711 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17712
17713         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
17714         
17715         * cpu-s390.md : Increase instruction length of oparglist.
17716
17717         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
17718
17719 2004-11-30  Martin Baulig  <martin@ximian.com>
17720
17721         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
17722         virtual generic methods.  We call a special helper_compile_generic_method()
17723         icall to retrieve the method from the vtable, inflate and compile
17724         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
17725
17726         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
17727
17728 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
17729
17730         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
17731
17732 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
17733
17734         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
17735         Fixes #69929.
17736
17737 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
17738
17739         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
17740         platforms with PIC aot.
17741
17742 2004-11-28  Martin Baulig  <martin@ximian.com>
17743
17744         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
17745         Fixes gen-112.cs.
17746
17747 2004-11-28  Martin Baulig  <martin@ximian.com>
17748
17749         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
17750         the result of mono_type_get_underlying_type() to check whether
17751         we're byref.
17752
17753 2004-11-26  Martin Baulig  <martin@ximian.com>
17754
17755         * mini.c
17756         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
17757         in the g_assert().
17758
17759 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
17760
17761         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
17762         the same way as the other arguments so they won't get clobbered.
17763
17764         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
17765         calls through R11 since it is clobbered by the trampoline code.
17766
17767 2004-11-26  Raja R Harinath  <rharinath@novell.com>
17768
17769         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
17770         pick up in-tree mscorlib.dll.
17771
17772 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
17773
17774         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
17775
17776         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
17777         runtime data/code are now stored in a table similar to the GOT in ELF. 
17778         This allows the code itself to be position independent.
17779
17780         * aot.c: Fix loading of referenced assemblies after the lazy assembly
17781         loading changes.
17782
17783         * aot.c: Attach ELF type (object/function) directives to all global
17784         symbols.
17785
17786         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
17787
17788         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
17789
17790         * mini-amd64.h: Turn on PIC AOT code.
17791
17792         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
17793         returning the offset within an OP_AOTCONST instruction where the GOT
17794         offset needs to be added.
17795
17796         * mini.h: Bump AOT file format version.
17797
17798 2004-11-25  Martin Baulig  <martin@ximian.com>
17799
17800         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
17801         uninflated generic methods.
17802
17803 2004-11-25  Martin Baulig  <martin@ximian.com>
17804
17805         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
17806
17807 2004-11-24  Martin Baulig  <martin@ximian.com>
17808
17809         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
17810         original klass (this only applies for generic instances).
17811
17812 2004-11-24  Martin Baulig  <martin@ximian.com>
17813
17814         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
17815         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
17816         that array).
17817
17818 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
17819
17820         * mini.c (mono_method_to_ir): Disable inlining for methods containing
17821         localloc. Fixes #69678.
17822
17823         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
17824         
17825 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
17826
17827         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
17828         used SSE registers on pinvoke calls. Fixes #69774.
17829
17830 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
17831
17832         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
17833         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
17834
17835 2004-11-23  Raja R Harinath  <rharinath@novell.com>
17836
17837         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
17838         Refer directly to the mcs/ tree.
17839
17840 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17841
17842         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
17843         Check if a trampoline for a synchronized method is required. 
17844
17845 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
17846
17847         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
17848         with localloc if needed. Throe arithmetric exception in
17849         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
17850         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
17851
17852 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
17853
17854         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
17855         types before switching on type.  Fixes #69622.
17856
17857 2004-11-19  Raja R Harinath  <rharinath@novell.com>
17858
17859         * Makefile.am (check-local): New.  Integrate into 'make check'.
17860         (MCS,RUNTIME): Define using in-tree mono and mcs.
17861         (ILASM): New.
17862         (%.exe): Use $(ILASM).
17863
17864 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
17865
17866         * mini-ppc.c: adjust initial prolog size (bug #69691).
17867
17868 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
17869
17870         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
17871         #69664.
17872
17873 2004-11-17  Raja R Harinath  <rharinath@novell.com>
17874
17875         * Makefile.am (clean-local): Rename from 'clean'.
17876
17877 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17878
17879         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
17880         to mono_arch_is_int_overflow. 
17881         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
17882         SIGFPE events.
17883
17884 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
17885
17886         * declsec.c|h: New files to support declarative security attributes.
17887         Added function to check if a method has (applicable) security.
17888         * mini.c|h: Add check for declarative security attributes in
17889         mono_method_check_inlining.
17890         * Makefile.am: Added declsec.c and declsec.h to the build.
17891
17892 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
17893
17894         * mini.c, mini.h: update to keep dynamic code info per-domain.
17895
17896 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
17897
17898         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
17899         (mini_init): Get rid of it from here too.
17900
17901 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
17902
17903         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
17904         implemented OP_RETHROW (patch by Geoff Norton
17905         <gnorton@customerdna.com>).
17906
17907 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
17908
17909         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
17910         between appdomains.  Fixes appdomain-unload on PPC.
17911
17912 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
17913
17914         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17915         mini-exceptions.c: handle the new wrapper types.
17916         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
17917         token value as a MonoClass* when compiling a wrapper.
17918         mono_jit_create_remoting_trampoline now takes an additional
17919         MonoRemotingTarget parameter.
17920         
17921 2004-11-10  Martin Baulig  <martin@localhost>
17922
17923         * mini.c (mono_method_to_ir): Use `generic_container->context'
17924         rather than creating a new one.
17925
17926 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
17927
17928         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
17929
17930         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
17931
17932 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
17933
17934         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
17935         the experimental aot cache stuff.
17936
17937 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
17938
17939         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
17940         mini-exceptions.c: update to exception clause structure changes.
17941
17942 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17943
17944         * exceptions-x86.c (throw_exception): Fix warnings.
17945
17946         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
17947         for OP_RETHROW.
17948
17949 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
17950
17951         * exceptions-sparc.c (get_throw_exception): Really fix this.
17952
17953 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
17954
17955         * tramp-*.c: we no longer support icalls without wrappers, so
17956         a bit of code can be removed here
17957
17958 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
17959
17960         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
17961         patch.
17962
17963         * cpu-sparc.md: Add op_rethrow.
17964
17965         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
17966
17967         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
17968
17969         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
17970         * mini-ops.h: Add OP_RETHROW.
17971
17972         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
17973
17974         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
17975
17976 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
17977         
17978         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
17979         Makes the output much easier to read
17980
17981 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
17982
17983         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
17984         prevents another huge leak when compiling with ssa. Secondly, the
17985         performance of doing this rather than freeing the lists is much
17986         better. GList does a lock every time you allocate a list link,
17987         so that it can use a memory pool. So, it is better to just use
17988         a memory pool of our own.
17989         
17990         * ssa.c, linear-scan.c: replace g_list_remove_link with
17991         g_list_delete.  The remove one does not free the GList, so we were
17992         leaking memory. On -O=all --compile-all with corlib, this cut down
17993         3 MB of allocations.
17994
17995 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
17996
17997         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
17998
17999         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
18000
18001         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
18002         into a new function mono_create_jit_trampoline ().
18003
18004 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
18005
18006         * trace.c (get_spec): Allow tracing of classes without a namespace.
18007
18008 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
18009
18010         * mini.c: Fix pointer overwrite in mini_method_compile.
18011
18012 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
18013
18014         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
18015         The darwin ABI needs some special handling for 1 and 2 byte structs
18016         Lets use lbz/lhz instead of lwz everywhere.
18017         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
18018         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
18019         Use stb/sth for the former, and put the latter always on stack instead of in
18020         argument registers.
18021
18022 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
18023
18024         * trace.c (is_filenamechar): Add '_'.
18025
18026 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
18027
18028         * mini-s390.c: Fix prolog length to allow for large trace requirements.
18029
18030         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
18031
18032 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
18033
18034         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
18035         depends on libmonogc. Fixes #68805.
18036
18037 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
18038
18039         * mini.c (mono_jit_free_method): Provide extra information for
18040         this error.  Currently this leaks, but will be turned into a
18041         developer option in the future.
18042
18043 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
18044
18045         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
18046
18047 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
18048
18049         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
18050         boundary. Fixes reading of PATCH_INFO_R4 and R8.
18051         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
18052
18053 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
18054
18055         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
18056         trampolines for AOT code.
18057
18058 2004-10-22    <vargaz@freemail.hu>
18059
18060         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
18061         constructed types. Fixes #68136.
18062
18063 2004-10-21  Martin Baulig  <martin@ximian.com>
18064
18065         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
18066         if it returns true, unwind the stack to the call instruction.
18067
18068 2004-10-21    <vargaz@freemail.hu>
18069
18070         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
18071
18072         * mini.h: Bump AOT version number.
18073
18074         * objects.cs: Add another test for unbox trampolines.
18075
18076         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
18077         valuetype methods.
18078
18079 2004-10-20    <vargaz@freemail.hu>
18080
18081         * driver.c: Add SHARED to the set of optimizations tested.
18082
18083         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
18084
18085         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
18086         used by CEE_NEWARR.
18087
18088         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
18089
18090 2004-10-20  Martin Baulig  <martin@ximian.com>
18091
18092         * mini-exceptions.c (mono_handle_exception): Call
18093         mono_debugger_handle_exception() to tell the debugger about
18094         catch/finally clauses.
18095
18096 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
18097
18098         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
18099
18100         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
18101         #68447.
18102
18103 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
18104
18105         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
18106         methods as their native size, fixed bug #57543, #57545.
18107         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
18108         This saves a temporary register and mullw call down into 1 (minor perf
18109         increase for cases like sum = sum * 5;  This use to translate into:
18110             li r11,5
18111             mullw r28,r28,r11
18112         It now translates to
18113             mulli r28,r28,5
18114
18115 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
18116
18117         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
18118         #68388.
18119
18120 2004-10-11  Martin Baulig  <martin@ximian.com>
18121
18122         * mini.c (mono_method_to_ir): If we're a generic method, get the
18123         MonoGenericContainer from our MonoMethodNormal and create a
18124         MonoGenericContext from it.
18125
18126 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
18127
18128         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
18129
18130         * basic-long.cs: Add test for checked i8->i2 cast.
18131
18132 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18133
18134         * inssel-ppc.brg: added a couple of speedup rules.
18135
18136 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
18137
18138         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
18139         to speed up rebuilds.
18140
18141 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18142
18143         * mini-s390.c: Minor fix to OP_OR_IMM.
18144
18145 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
18146
18147         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
18148         better. Fixes appdomain-unload.exe on sparc.
18149
18150 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
18151
18152         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
18153         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
18154         see bug 67324.
18155
18156 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
18157
18158         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
18159
18160 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
18161
18162         * mini.c: Always generate a field read/write wrapper for members
18163         of the class MarshalByRefObject since the actual instance could
18164         be a CBO.
18165
18166 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
18167
18168         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
18169
18170 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
18171
18172         * driver.c mini.h trace.c: Move the setting of the main assembly into
18173         a separate function called mono_trace_set_assembly () and call it after
18174         actually loading the main assembly. Fixes #66872.
18175
18176 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
18177
18178         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
18179         using the code manager.
18180
18181 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
18182
18183         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
18184
18185 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
18186
18187         * cpu-amd64.md: Fix bug in previous patch.
18188         
18189         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
18190         #66650.
18191
18192 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
18193
18194         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18195         mini-exceptions.c: updates for changed stack walk interface.
18196
18197 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18198
18199         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
18200
18201 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
18202
18203         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
18204
18205 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
18206
18207         * driver.c (mini_regression_list): Do not call mono_assembly_close 
18208         since assemblies can't be unloaded.
18209         
18210 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18211
18212         * cpu-amd64.md: Fix more instruction lengths.
18213
18214         * cpu-amd64.md: Fix lengths of some instructions.
18215
18216 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
18217
18218         * inssel.brg: Make the array ldelema check aot friendly.
18219
18220 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18221
18222         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
18223
18224         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
18225
18226 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
18227
18228         * mini-x86.c: Fix build.
18229
18230         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
18231         mono_type_get_underlying_type () helper function to simplify code.
18232         
18233 2004-09-09  Martin Baulig  <martin@ximian.com>
18234
18235         * mini-amd64.c: Don't access `type->data.klass' directly, call
18236         mono_class_from_mono_type() instead since the type may be a
18237         generic instance.
18238
18239 2004-09-09  Martin Baulig  <martin@ximian.com>
18240
18241         * mini-amd64.c (get_call_info): Fix support for generic instances.
18242         (add_valuetype): Use mono_class_from_mono_type() to get the class
18243         since we can be a generic instance.
18244
18245 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
18246
18247         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
18248
18249 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18250
18251         * liveness.c: reset spill costs on each scan: bug 62107
18252
18253 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
18254
18255         * exceptions-sparc.c (mono_arch_find_jit_info): remove
18256         unnecessary line that doesn't compile
18257
18258 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
18259
18260         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
18261         trampolines, make them call an error function so people can fix their
18262         code.
18263
18264 2004-09-06  Martin Baulig  <martin@ximian.com>
18265
18266         * mini.c (mono_method_to_ir): When initializing locals, handle a
18267         generic instances like a valuetype if it's a valuetype and like a
18268         class if it's a class.
18269
18270 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18271
18272         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
18273         stack. Fixes #64674.
18274
18275         * exceptions.cs: Add test for unwinding of call arguments.
18276
18277 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
18278
18279         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
18280         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
18281         set the carry/borrow flag). The sparc and s390 implementations
18282         can now use optimized versions (and simplify the code). ppc bugfixes.
18283
18284 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18285
18286         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
18287
18288 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
18289
18290         * inssel-amd64.brg: Remove leftover 32 bit rule.
18291
18292         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
18293
18294 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
18295
18296         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
18297         mono_arch_find_jit_info functions into a new function. Fix a memory
18298         leak.
18299
18300         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
18301         refactored code.
18302         
18303 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18304
18305         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
18306         as well.
18307         
18308         * exceptions.cs: Add array size tests.
18309
18310         * mini.c: Allocate a separate icall wrapper for each arity of 
18311         mono_array_new_va. Fixes #59509.
18312
18313         * exceptions.cs: Add testcase for 64578.
18314
18315         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
18316
18317         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
18318         
18319 2004-09-02  Martin Baulig  <martin@ximian.com>
18320
18321         * mini.c (mono_method_to_ir): When initializing the locals, call
18322         handle_initobj() on the generic instance itself, not its
18323         underlying type.
18324
18325 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18326
18327         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
18328         MonoJitInfo for dynamic methods.
18329
18330         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
18331
18332         * mini.c: Add support for freeing JIT data for dynamic methods.
18333         
18334 2004-09-01  Martin Baulig  <martin@ximian.com>
18335
18336         * mini-x86.c (is_regsize_var): Added support for generic
18337         instances.
18338         (mono_arch_emit_prolog): Make this compile again, use
18339         `x86_push_imm_template (code)'.
18340
18341 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
18342
18343         * mini-x86.c: make all push_imm instructions that get
18344         patched always emit the long form
18345
18346 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
18347
18348         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
18349         in a per-domain hash.
18350
18351         * mini-amd64.c (merge_argument_class_from_type): Handle generic
18352         types.
18353
18354 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
18355
18356         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
18357         work.
18358         
18359         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
18360         work.
18361
18362         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
18363         Beginnings of SSE2 support.
18364
18365         * exceptions.cs: Add more tests for checked int<->uint casts.
18366
18367 2004-08-28  Martin Baulig  <martin@ximian.com>
18368
18369         * mini-x86.c (mono_arch_instrument_epilog): Added support for
18370         generic instances.
18371
18372         * mini.c
18373         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
18374         Handle generic instances recursively.
18375
18376 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18377
18378         * iltests.il: test for conv.u8 on a constant
18379
18380 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18381
18382         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
18383         LCONV_x4 (shrun_32 (membase)).
18384
18385 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18386
18387         * inssel-x86.brg: c&p rules for push/setret of long
18388
18389 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
18390
18391         * inssel-x86.brg: c&p rules for compare (base, regvar) and
18392         compare (regvar, base)
18393
18394         * inssel-x86.brg: more burg love
18395
18396         * inssel.brg: more cleanup
18397
18398         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
18399
18400 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
18401
18402         * basic-long.cs, basic-calls.cs: new tests for optimization.
18403
18404 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
18405
18406         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
18407         patch.
18408
18409 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
18410
18411         * mini-amd64.c (read_tls_offset_from_method): Add another case.
18412         
18413 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
18414
18415         * inssel.brg (mini_emit_memcpy): use 
18416         NO_UNALIGNED_ACCESS to disable memcpy optimization
18417
18418 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
18419
18420         * mini-amd64.c: Handle generic types in various places.
18421
18422         * mini.c (mono_method_to_ir): Handle generic types in init locals.
18423
18424 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
18425
18426         * mini.c (handle_box): Fix warning.
18427
18428         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
18429
18430         * mini-amd64.h: Enable the emit_state optimization.
18431
18432         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
18433
18434         * mini-amd64.c: Add some new 64 bit peephole opts.
18435
18436         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
18437
18438         * cpu-amd64.md: sreg1 of div instructions must be %rax.
18439
18440         * mini-amd64.c: Register allocator fixes.
18441
18442         * mini.c: Add an optimization to emit_state to avoid allocation of new
18443         registers on some platforms.
18444
18445 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
18446
18447         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
18448
18449         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
18450         allocation. Fixes #63085.
18451
18452         * basic-long.cs: Add new regression test.
18453
18454         * mini-amd64.c: Register allocator improvements.
18455
18456 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
18457
18458         * mini-amd64.c (read_tls_offset_from_method): Add another code
18459         sequence.
18460
18461         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
18462         instruction sequence for nullifying class init trampolines.
18463
18464         * objects.cs: Add new regalloc test.
18465
18466         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
18467
18468 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
18469
18470         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
18471         
18472         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
18473         arguments.
18474
18475         * driver.c: Fix profiling after TLS changes.
18476         
18477         * driver.c (mono_main): Set mono_stats.enabled if needed.
18478
18479         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
18480         CEE_BOX.
18481
18482 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
18483
18484         * mini-x86.c: use a 1 op rather than a 2 op tls access
18485         instruction -> faster.
18486
18487 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
18488
18489         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
18490         x86 backend.
18491
18492 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
18493
18494         * exceptions-sparc.c (throw_exception): fix typo
18495
18496 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18497
18498         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
18499         set tree->dreg correctly with tls. Allow any
18500         register to be used.
18501
18502         * mini-x86.c (read_tls_offset_from_method): add new code
18503         generation pattern seen with GCC.
18504
18505
18506 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18507
18508         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
18509         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18510         exceptions-sparc.c: fix some performance issues in exception
18511         handling and setting of the stack trace for exceptions that were
18512         already thrown.
18513
18514 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18515
18516         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
18517         x86 backend.
18518         
18519         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
18520         registers.
18521
18522 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18523
18524         This patch inlines tls access, when possible.
18525         
18526         * mini.h: new arch functions for TLS intrinsics.
18527         All platforms updated with a stub.
18528
18529         * mini.c: use the new intrinsics
18530
18531         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
18532         arch specific intrinsic for tls variables
18533
18534 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18535
18536         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
18537         under windows.
18538
18539 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18540
18541         * mini.c: thread local allocation
18542
18543 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
18544
18545         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
18546
18547         * Makefile.am: Link against the static version of libmonogc.
18548         
18549         * Makefile.am: Link the static versions of the convenience libraries
18550         into the mono executable.
18551
18552         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
18553
18554 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
18555
18556         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
18557         on integer overflow.
18558
18559         * mini-amd64.c: Reorganize function call code.
18560
18561         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
18562
18563 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18564
18565         * inssel-x86.brg: use xor eax,eax.
18566         
18567         * basic.cs: new tests
18568
18569 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18570
18571         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
18572         in exception throwing code.
18573         
18574 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18575
18576         * inssel-x86.brg: use xor esi,esi.
18577
18578 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18579
18580         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
18581         can trace methods compiled during mini_init () too.
18582
18583         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
18584         CEE_CONV_U4.
18585
18586 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18587
18588         * Makefile.am: static link on x86 (r=zoltan)
18589
18590 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18591
18592         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
18593         code since it causes some programs to fail.
18594
18595 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
18596
18597         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
18598
18599 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
18600
18601         * mini.c: ovfops_op_map - add STACK_OBJ case for
18602         CONV_I 
18603         * basic.cs: add test_0_pin_string as test
18604         case for above.
18605
18606 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
18607
18608         * Makefile.am: build C# if srcdir != builddir
18609
18610 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18611
18612         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
18613         fall-through blocks.
18614
18615 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18616
18617         * driver.c: enable loop by default again and include abcrem in -O=all.
18618
18619 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
18620
18621         * iltests.il: Add some localloc tests.
18622
18623         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
18624
18625         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
18626         Fixes #62574.
18627
18628         * inssel-amd64.brg: Add some optimizations.
18629
18630         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
18631         for gcc-3.4.
18632
18633         * Makefile.am: Statically link mono against libmono on AMD64.
18634         
18635         * mini-amd64.c inssel-amd64.brg: Optimizations.
18636
18637 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
18638
18639         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
18640
18641         * tramp-amd64.c: Patch calling code in trampolines.
18642
18643 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
18644
18645         * mini-amd64.c: pinvoke struct passing fixes.
18646
18647 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
18648
18649         * mini-sparc.c: redo change, make mono_arch_cpu_init call
18650         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
18651
18652 2004-08-05  Duncan Mak  <duncan@ximian.com>
18653
18654         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
18655         CEE_LDELEM_ANY.
18656
18657 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18658
18659         * mini-amd64.c (emit_move_return_value): Move return value for normal
18660         calls too.
18661
18662 2004-08-05  Martin Baulig  <martin@ximian.com>
18663
18664         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
18665         `type->type'; just modify `type' itself when dealing with enums
18666         and generic instances.
18667         (check_call_signature): Make `simple_type' a `MonoType *'.
18668
18669 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18670
18671         * mini.c: Use OP_PADD to add offsets to addresses.
18672
18673         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
18674
18675 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
18676
18677         * mini-sparc.c (mono_arch_emit_epilog): fix check
18678         for folding last op into restore instruction
18679
18680 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
18681
18682         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
18683         helper methods using the code manager.
18684         
18685         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
18686
18687         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
18688
18689 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18690         
18691         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
18692           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
18693
18694         * mini-s390.c: fix tail processing
18695
18696 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
18697
18698         * mini-ppc.c: mul.ovf.un exception name fix.
18699
18700 2004-08-03  Martin Baulig  <martin@ximian.com>
18701
18702         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
18703         instances; before jumping to `handle_enum', also modify `ptype'.
18704
18705 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
18706
18707         * cpu-sparc.md: fcall maximal length too small.
18708
18709 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
18710
18711         * mini-amd64.c mini.h: Add initial support for passing/returning 
18712         structures to/from pinvoked methods.
18713
18714 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
18715
18716         * mini-ppc.c: reg allocator fix.
18717
18718 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
18719
18720         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
18721
18722         * inssel.brg: Optimize memset on 64 bit machines.
18723
18724         * mini-amd64.c: Fix some vararg cases.
18725
18726 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18727
18728         * mini-s390.c: Corrected macro in emit_float_to_int
18729
18730         * s390-abi.cs: Tests to exercise the s390 ABI
18731
18732 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18733
18734         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
18735         caller saved regs.
18736
18737         * basic.cs: Add a test for add.ovf.un.
18738
18739 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
18740
18741         * mini-sparc.c: add case for OP_IDIV_UN
18742
18743 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18744
18745         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
18746         
18747         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
18748
18749 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
18750
18751         * basic.cs: regression tests.
18752
18753         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
18754         regressions.
18755
18756 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
18757
18758         * basic.cs: Add a new test.
18759
18760         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
18761         and AOT. Various fixes and optimizations.
18762
18763         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
18764
18765 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
18766
18767         * mini-ppc.c: make sure temp regs are not used for global reg
18768         allocation.
18769
18770 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
18771
18772         * cpu-sparc.md: conv_i8 fix for 64bits
18773
18774         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
18775
18776 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
18777         
18778         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
18779         add opcode for cmp BYTE PTR [eax], imm.
18780
18781         * inssel.brg: Make memcpy and memset takes bases.
18782
18783 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18784
18785         * *-amd64.*: More AMD64 work.
18786         
18787 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18788
18789         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
18790         add a compare-not-equal opcode.
18791         
18792 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
18793
18794         * mini.c: Use mono_init_from_assembly instead of mono_init.
18795         
18796 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
18797
18798         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
18799
18800         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
18801
18802         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
18803
18804         * inssel.brg: 64 bit fixes.
18805
18806         * mini.h (MonoCallInst): Add some AMD64 specific data.
18807
18808         * mini.h: Add some OP_P opcodes.
18809
18810 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
18811
18812         * basic.cs: tests for 61797 and 61740
18813
18814 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
18815
18816         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
18817         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
18818
18819 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
18820
18821         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
18822
18823         * *-amd64*.*: Ongoing AMD64 work.
18824
18825 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
18826
18827         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
18828
18829         * *-amd64*: Ongoing AMD64 work.
18830
18831         * mini-arch.h: Add AMD64 support.
18832
18833         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
18834
18835         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
18836
18837         * mini-ops.h: Add new opcodes.
18838
18839         * Makefile.am: Add AMD64 support.
18840
18841         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
18842         rules into the inssel-long*.brg files.
18843
18844         * *-amd64.*: Add beginnings of AMD64 backend.
18845
18846 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
18847
18848         * mini.c (print_dfn): commenting out the code that prints
18849         the cil. With -O=deadce, this makes -v -v crash.
18850         
18851         * cpu-pentium.md: make checkthis have a length of 2
18852
18853 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
18854
18855         * mini-sparc.h: fix implementations of __builtin
18856         functions for Sun compiler for V9.
18857
18858 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
18859
18860         * mini.c: use the new stelem.ref wrapper
18861         * exceptions.cs, arrays.cs: new stelem.ref tests
18862
18863 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
18864
18865         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
18866         new XSP should work with these changes).
18867
18868 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
18869         
18870         * inssel-{long32,x86,}.brg: trivial optimizations.
18871         
18872 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
18873
18874         * mini.c: load value when emitting box operation in
18875         constrained calls.
18876
18877 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
18878
18879         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
18880         is one byte shorter than cmp DWORD PTR [eax], 0.
18881
18882 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
18883
18884         * inssel-ppc.brg: arguments on the stack are always
18885         relative to the stack pointer (spotted by Neale Ferguson).
18886
18887 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18888
18889         * exceptions-x86.c: delay appending the method name to the trace until
18890         after mono_jit_info_table_find is called, as this gets the real
18891         MonoMethod.
18892
18893 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
18894
18895         * aot.c: register roots
18896
18897 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18898
18899         * aot.c : I could just use PLATFORM_WIN32 flag.
18900
18901 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18902
18903         * aot.c : Reverting the previous fix. This time it broke linux build.
18904
18905 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
18906
18907         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
18908
18909 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
18910
18911         * mini.c (handle_stack_args): Remove some more debugging code.
18912         
18913         * mini.c (handle_stack_args): Remove debug output left in by mistake.
18914
18915         * driver.c mini.h aot.c: Allow additional options to be specified with
18916         --aot and pass them to mono_compile_assembly.
18917
18918         * aot.c: Add experimental code to AOT compile all loaded assemblies
18919         on demand and save the code into a cache in the filesystem.
18920
18921         * aot.c: Add support for more wrapper methods.
18922         
18923         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
18924         58863.
18925
18926         * cpu-*.md: Remove removed opcodes.
18927
18928         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
18929         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
18930         related icalls to marshal.c.
18931
18932 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
18933
18934         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
18935
18936         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
18937
18938         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
18939
18940 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
18941         * liveness.c: If liveness is recomputated we need to reset the information
18942         for each variable. This way, if the liveness range has been narrowed
18943         by optimizations that happened after the last computation, we can return
18944         a smaller range.
18945         
18946         For example, if you have
18947         
18948         {
18949                 int i = 0;
18950                 
18951                 // Tons of code that does not affect i
18952                 
18953                 i = foo ();
18954                 ...
18955         }
18956         
18957         i = 0 is dead code and will be removed by SSA. However, when
18958         linear scan gets to the code, i will still appear to be live
18959         throughout the entire block. This prevents good register allocation.
18960
18961 2004-07-06  Martin Baulig  <martin@ximian.com>
18962
18963         * debug-mini.c (mono_debug_init_method): Allow
18964         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
18965         (mono_debug_add_icall_wrapper): New method.
18966
18967         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
18968
18969 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
18970
18971         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
18972         optimization.
18973
18974 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
18975
18976         * aot.c (mono_aot_load_method): Fix loading of debug info.
18977
18978 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18979
18980         * aot.c: Add logging support.
18981
18982 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
18983
18984         * mini.h: Add prototype for mono_print_method_from_ip.
18985
18986         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
18987
18988         * inssel.brg: 64 bit fixes.
18989
18990         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
18991         inssel-long32.brg.
18992
18993         * Makefile.am: Add SPARC64 support.
18994
18995 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
18996
18997         * aot.c: Fix alignment problems on 32 bit platforms.
18998
18999 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19000
19001         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
19002         SPARC64.
19003
19004         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
19005         problems.
19006
19007         * mini.h: Bump AOT file version. Some 64 bit fixes.
19008
19009 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19010
19011         * inssel-sparc.brg: Add new rule to avoid register moves.
19012
19013         * inssel.brg: Add ldind_to_load_membase helper function.
19014
19015 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
19016
19017         * mini.c: OffsetToStringData intrinsic.
19018         
19019 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19020
19021         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
19022
19023         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
19024         regression tests.
19025
19026         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
19027 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19028
19029         * mini.c: reinstated mono_compile_get_interface_var()
19030         on x86, too, since the change breaks the Gtk# build there as well.
19031
19032 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19033
19034         * driver.c: remove loop from the default optimizations: it seems to
19035         interact badly with some of the other options (see bug #60613).
19036
19037 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
19038
19039         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
19040         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
19041
19042 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
19043
19044         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
19045         vararg-using methods.
19046
19047 2004-06-21  Martin Baulig  <martin@ximian.com>
19048
19049         * mini/mini-exceptions.c
19050         (mono_handle_exception): Added `gpointer original_ip' argument.
19051         After calling mono_unhandled_exception(), call
19052         mono_debugger_unhandled_exception() and if that returns true,
19053         restore the context and return.
19054
19055 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19056
19057         * mini-ppc.c: prefer the use of relative branches so
19058         they won't need to be patched in aot code (patch from Patrick Beard).
19059
19060 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19061
19062         * aot.c: patch from Patrick Beard to make the output assembly
19063         more correct for the MacOSX assembler. Small tweak to
19064         generate sane images on Linux/PPC, too.
19065
19066 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19067
19068         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
19069         case until bug #59509 is fixed (shows up in #60332).
19070
19071 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19072
19073         * mini.c: make sure the needed wrappers are compiled, too, with
19074         precomp.
19075
19076 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
19077
19078         * driver.c: remove NPTL reference in --version output.
19079
19080 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19081
19082         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
19083         generate valid assembly for the Mach-O assembler.
19084
19085 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19086
19087         * driver.c: don't include abcrem in the all optimization specifier
19088         since it slows down jit compilation too much for now.
19089
19090 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
19091
19092         * mini.c: use BIGMUL only if both operands have the same signage.
19093         * iltests.il: Test for bug 60056. (errors related to signage in
19094         BIGMUL).
19095
19096         r=lupus.
19097
19098 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
19099
19100         * mini.c, aot.c: memory leak fixes.
19101
19102 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19103
19104         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
19105
19106 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
19107
19108         * Makefile.am: remove the -static hack completely, it links in
19109         statically glib as well.
19110
19111 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
19112
19113         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
19114         * exceptions.cs: make it compile with new mcs/csc.
19115
19116 2004-06-03 Massimiliano Mantione <massi@ximian.com>
19117         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
19118         and added relevant test case.
19119
19120 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19121
19122         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
19123         regressions in gtk-sharp.
19124
19125 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
19126
19127         * exceptions.cs: New regression tests.
19128
19129         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
19130
19131 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
19132
19133         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
19134
19135 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
19136
19137         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
19138
19139         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
19140
19141 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
19142
19143         * mini.c (mono_jit_runtime_invoke): Init class in this
19144         method instead of trusting mono_jit_compile_method to
19145         do the work (because wrappers can be in object class)
19146
19147 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
19148
19149         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
19150
19151         * basic-long.cs: New regression test.
19152
19153 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
19154
19155         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
19156         and div/rem checks.
19157
19158 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
19159
19160         * Makefile.am: fix miguel's change to build mono statically against
19161         libmono (track build dependencies).
19162
19163 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19164
19165         * cfold.c: Some glib versions do not have G_MININT32.
19166
19167 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
19168
19169         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
19170         with precision of tan, atan, sin and cos, and implemented related
19171         regressions tests (fixes bug 54467, but one new problem appeared and
19172         is not fixed yet).
19173
19174 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19175
19176         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
19177
19178         * exceptions.cs: Add test for constant folding && division by zero.
19179
19180         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
19181         since driver.c is in libmono too, so the optimization was useless.
19182
19183         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
19184         variable to driver.c so the compiler can emit more efficient code to
19185         access them.
19186
19187 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19188
19189         * Makefile.am: don't distribute generated inssel.[ch] files.
19190
19191 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
19192
19193         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
19194         into the default appdomain. Fixes #58707.
19195
19196         * jit-icalls.c: Remove the broken approximation for truncl, doing
19197         no conversion is better.
19198
19199         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
19200         Fixes #58863.
19201
19202 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19203
19204         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
19205         of the mcrxr instruction which is not available on some processors
19206         even if it's documented to be. Implement add and sub overflow correctly
19207         (still not complete for long unsigned). Speed up icalls a bit.
19208
19209 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
19210
19211         * mini.c (mono_jit_compile_method_with_opt): Make sure that
19212         we run .cctor in the current domain instead of target_domain.
19213         
19214         Fixes bug #58558, .cctor not being called in -O=shared.
19215
19216 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19217
19218         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
19219
19220 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
19221
19222         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
19223         which can be done with an imm8, do it that way.
19224         (mono_arch_output_basic_block): ditto for a jmp
19225         (mono_arch_emit_prolog): Computate maximum offset of a label.
19226
19227 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
19228
19229         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
19230         now tries to allocate prefered physical reg's for virtual
19231         regs. This reduces the number of emited spills/loads with
19232         20-30% on our core assemblies.
19233
19234 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19235
19236         * jit-icalls.c: truncl() is not needed and trunc() is
19237         the correct thing to do anyway (bug #58287).
19238
19239 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
19240
19241         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
19242         if available.
19243
19244 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
19245
19246         * driver.c: enable loop optimizations by default.
19247
19248 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19249
19250         * mini-x86.c: fix calc of max loop size when aligning loops start.
19251
19252 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
19253
19254         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
19255         the stack.
19256
19257 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
19258
19259         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
19260         should set carry.
19261
19262         * basic-long.cs: Add tests for add/subtract of immediates with carry.
19263
19264         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
19265         
19266         * mini.c (inline_method): Allways inline some wrappers even if the cost
19267         is too large. Fixes #58785.
19268
19269         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
19270         
19271 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
19272
19273         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
19274         (crichton@gimp.org). Beginning of support for sparc/linux.
19275
19276         * mini-sparc.c: Optimize retrieval of LMF address.
19277
19278 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
19279
19280         * exceptions-ppc.c:  handle alloca in methods with clauses.
19281
19282 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
19283
19284         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
19285
19286 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
19287
19288         * mini.c: Delegate most of the abort signal work to 
19289           mono_thread_request_interruption, which also handles Stop and Suspend
19290           states.
19291
19292 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
19293
19294         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
19295         supports the save/restore lmf opcodes.
19296
19297 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
19298
19299         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
19300         by gcc-3.4 as well.
19301
19302         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
19303
19304 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19305
19306         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
19307         methods which contain array accesses.
19308
19309         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
19310         boundaries. Fixes #58537.
19311
19312         * iltests.il: Add regression test for #58537.
19313
19314 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19315
19316         * mini-x86.c (mono_arch_local_regalloc): Last part of
19317         fix for bug #58633 (releasing register to early).
19318
19319 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
19320
19321         * basic-long.cs: Add new regression test.
19322
19323 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19324
19325         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
19326         register too early on the chain.
19327
19328 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19329
19330         * mini.c (create_helper_signature): Use a helper function to reduce
19331         the code which needs to be written. Also set the calling convention of
19332         icalls on windows. Fixes #57840.
19333
19334 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19335
19336         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
19337         exceptions-ppc.c: added helper function to get the instruction address
19338         from a signal handler context.
19339
19340 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19341
19342         * helpers.c: use g_get_tmp_dir. Invokes happyness 
19343         from gonzalo.
19344
19345 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19346
19347         * helpers.c: Add new env variable to pass args to objdump.
19348         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
19349
19350 2004-05-17  Radek Doulik  <rodo@ximian.com>
19351
19352         * Makefile.am (common_sources): added abcremoval.h so it get
19353         disted and daily mono packages on go-mono.com will build again
19354
19355 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
19356
19357         * abcremoval.c: Fixed coding style, added copyright header.
19358
19359         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
19360
19361         * mini.h: Added prototype for abc removal main function.
19362
19363         * build_relations_propagation_table.pl: Added copyright header.
19364
19365 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
19366
19367         * basic-long.cs: reg test for complex ceq_long bug.
19368
19369 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
19370
19371         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
19372         reg in long and clob case (bug #58343). Fixed/added comments.
19373
19374 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
19375
19376         * mini.c (mono_jit_runtime_invoke): Follow new convention
19377         of calling the invoke method with an function pointer.
19378
19379 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
19380
19381         * ChangeLog: Fix author of memory leak patch.
19382
19383 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
19384
19385         * Makefile.am: fix make dist as well...
19386
19387
19388 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
19389
19390         * cfold.c: Made so that conversions from pointer to int4 are no-ops
19391         on archs where pointers are 4 bytes long.
19392
19393         * Makefile.am: Added abcremoval.c source file.
19394
19395         * abcremoval.c: Added abcremoval.c.
19396
19397         * abcremoval.h: Added abcremoval.h.
19398
19399         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
19400
19401         * inssel.brg: Enabled bounds check removal.
19402
19403         * mini.c: Added support for abcrem optimization.
19404
19405         * mini.h: Added abcrem optimization label.
19406
19407         * driver.c: Added support for abcrem optimization.
19408
19409         * propagated_relations_table.def: Added propagated_relations_table.def.
19410
19411 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
19412
19413         * mini.c, cfold.c: fix style.
19414
19415 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19416
19417         * mini.c: handle issue with the low-level implementation of
19418         some long opcodes (bug #54209).
19419
19420 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
19421
19422         * basic.cs: test for my new cmov stuff.
19423
19424 2004-05-13      Patrik Torstensson
19425
19426         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
19427         opt and added peephole documentation.
19428
19429 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
19430
19431         * tramp-ppc.c: rewrote the generic trampoline code.
19432
19433 2004-05-11      Patrik Torstensson
19434
19435         * mini-x86.c: optimize long shl/shr asm code (one less branch)
19436
19437 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
19438
19439         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
19440
19441         * mini.h mini.c dominators.c: Applied patch from Derek Woo
19442         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
19443
19444         * mini.c: Add new icalls for AsAny marshalling.
19445
19446 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19447
19448         * tramp-ppc.c, mini-ppc.c: more cleanups.
19449
19450 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19451
19452         * mini.c: no warnings.
19453
19454 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19455
19456         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
19457
19458 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
19459
19460         * mini.c: In the thread abort signal handler, if the thread is in the
19461         process of being stoped, don't throw the Abort exception, just stop the
19462         thread.
19463
19464 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
19465
19466         * tramp-ppc.c: removed old code.
19467
19468 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19469
19470         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
19471         do some simple speed optimizations on ppc.
19472
19473 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
19474
19475         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
19476         and large offsets in load/store.
19477
19478 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
19479
19480         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
19481         it causes regressions.
19482
19483 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
19484
19485         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
19486         support.
19487
19488 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19489
19490         * jit-icalls.c: remove warnings.
19491         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
19492         speedups for unsafe code.
19493
19494 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
19495
19496         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
19497
19498 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
19499
19500         * basic-calls.cs: Add new regression test.
19501
19502         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
19503         more portable.
19504
19505         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
19506
19507         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
19508         is no longer used.
19509
19510 2004-05-06      Patrik Torstensson
19511
19512         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
19513         long reg allocation in any reg (not only eax:edx) and implemented 
19514         long shl/shr ops in asm instead of helpers.
19515
19516 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
19517
19518         * mini-sparc.h: Fix warnings.
19519
19520         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
19521         stack.
19522
19523         * mini-exceptions.c (mono_handle_exception): Call the filter in a
19524         separate statement for clarity.
19525
19526         * mini-sparc.c: Update status.
19527
19528 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
19529
19530         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
19531         here.
19532
19533 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19534
19535         * inssel-ppc.brg: another small pre-release workaround:
19536         we don't do overflow detection for long_sub_un.
19537
19538 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19539
19540         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
19541         (also works around a weird ppc bug: 57957).
19542
19543 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
19544
19545         * tramp-ppc.c: trampoline fixes.
19546
19547 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
19548
19549         * mini-ppc.c: fixed typos.
19550
19551 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19552
19553         * mini-ppc.c, exceptions-ppc.c: more code saves registers
19554         at the top of the stack. Fixed typos. Use a frame registers
19555         for all the methods with exception clauses.
19556
19557 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19558
19559         * exceptions-ppc.c: restore fp registers.
19560
19561 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19562
19563         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
19564         order from the stack top (moved the stack room to save the
19565         return value for trace after the param area). Fixed corruption
19566         in restoring registers on unwind.
19567
19568 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19569
19570         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
19571
19572 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19573
19574         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
19575         and prolog/epilog for methods that use it. Allow
19576         enough param area room for varargs methods. Fix miguel's
19577         breakage in exception handling.
19578
19579 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19580
19581         * Makefile.am: run genmdesc only on current arch.
19582
19583 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19584
19585         * exceptions-x86.c:
19586         * mini-x86.h: fix the build on windows.
19587
19588 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
19589
19590         * 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.
19591
19592         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
19593
19594         * mini-exceptions.c: New file.
19595         
19596         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
19597         Move some parts of the x86 exception handling code to an 
19598         arch-independent file so it can be shared with other ports.
19599
19600 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
19601
19602         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
19603
19604 2004-04-26  David Waite  <mass@akuma.org>
19605
19606         * driver.c: remove comma from end of enumeration declaration
19607
19608 2004-04-26  Jackson Harper  <jackson@ximian.com>
19609
19610         * driver.c: parse config file before loading first assembly. This
19611         allows the user gac to be enabled/disabled. 
19612         
19613 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
19614
19615         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
19616         simpler mechanism: we do not care what is encoded initially
19617         (branch absolute or relative), we care about the code and its
19618         target.  I kept the old code for reference for now.
19619
19620         The new code tries first to determine if the jump is anywhere in
19621         the -/+32 absolute meg range, if it succeeds, it encodes using the
19622         absolute branch;  If not, it tried to find something in the
19623         relative range, if not, it uses the handle_thunk code. 
19624
19625 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
19626
19627         * exceptions-ppc.c: use the correct ip register on macosx.
19628
19629 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
19630
19631         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
19632
19633 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
19634
19635         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
19636         Raise exception on integer divide by zero by hand since the hw
19637         doesn't support it. Handle NaNs in FP compares.
19638
19639 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
19640
19641         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
19642         code reducing duplication between the platforms and enabled
19643         signal exception handling (on linux for now).
19644
19645 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
19646
19647         * exceptions-ppc.c: more macosx support.
19648
19649 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19650
19651         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
19652
19653 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
19654
19655         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
19656
19657 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19658
19659         * iltests.il: more tests.
19660
19661 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
19664         vars as well.
19665
19666 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19667
19668         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
19669
19670 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
19671
19672         * liveness.c: Mark variables as volatile in all basic blocks reachable
19673         from exception clauses.
19674
19675 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
19676
19677         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
19678         inlining.
19679
19680 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19681
19682         * iltests.il, basic.cs: more tests for regalloc.
19683
19684 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19685
19686         * iltests.il: Some tests for register allocation modifications
19687         I have locally.
19688
19689 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
19690
19691         * exceptions.cs: Add regression test for bug #56782.
19692
19693         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
19694         original stack trace if an exception is rethrown. Fixes #56782. Oh,
19695         the beauty of fixing the same thing in 5 different files...
19696
19697 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
19698
19699         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
19700         methods.
19701
19702 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
19703
19704         * mini.c: Add support for STRWLPARRAY marshalling convention.
19705
19706 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19707
19708         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
19709         to init the context to setup the regs pointer).
19710
19711 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19712
19713         * exceptions-ppc.c: more exceptions work.
19714
19715 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19716
19717         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
19718         not allowed.
19719
19720 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
19721
19722         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
19723         can use the memory directly.
19724
19725         * cpu-pentium.md: Update documentation from a post from Zoltan. 
19726
19727         add x86_add_membase, x86_sub_membase, x86_mul_membase
19728
19729 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
19730
19731         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
19732         GENERAL_REGS they were also hardcoded for all PPC ports.
19733
19734         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
19735
19736         Remove hard-coded limit for floating point registers, use
19737         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
19738
19739         Notice that in MacOS X calling conventions you can fit a lot more
19740         floating point values in registers, so I should update the PInvoke
19741         test to excercise the passing of floating point values on the
19742         stack (currently broken).
19743         
19744 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
19745
19746         * tramp-ppc.c (create_trampoline_code): Added
19747         JUMP_TRAMPOLINE_SIZE. 
19748         (ppc_magic_trampoline): Follow the pattern from
19749         x86_magic_trampoline: if code is set to zero, return. 
19750         (create_trampoline_code): Always pass MonoMethod to the jump
19751         trampoline, before it was passing a null.
19752         (mono_arch_create_jump_trampoline): Implement the jump stub, could
19753         share the code with mono_arch_create_jit_trampoline. 
19754
19755         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
19756         implemented.
19757         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
19758         implemented.  
19759
19760         * cpu-g4.md: Added length for jmp instruction, the worst case
19761         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
19762         for save_lmf).
19763
19764 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
19765
19766         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
19767
19768 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
19769
19770         * mini.c: Only set bblock->real_offset when adding a new bblock, and
19771         before each IL instruction.
19772
19773         * mini.c (CEE_BOX): Fix warnings.
19774
19775 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19776
19777         * mini.c: removed a few unused vars and extra whitespace.
19778
19779 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
19780
19781         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
19782         checks.
19783         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
19784         index.
19785         (OP_GETCHR): use the above
19786         (CEE_LDELEMA): use the above.
19787
19788         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
19789         version of the generic impl.
19790         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
19791         (CEE_LDELEMA): use the above.
19792
19793 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19794
19795         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
19796         Fixes #56317.
19797
19798         * iltests.il: Added new regression test for #56317.
19799
19800 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
19801
19802         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
19803         under NetBSD. Fixes #56450.
19804
19805         * liveness.c (update_gen_kill_set): Fix previous patch.
19806
19807 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19808
19809         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
19810
19811 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
19812
19813         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
19814         ldsfld and ldsflda.
19815
19816         * inssel-sparc.brg: Add more optimizations.
19817
19818         * mini-sparc.c: Replace multiply/divide with shifts if possible.
19819
19820 2004-04-01  Martin Baulig  <martin@ximian.com>
19821
19822         * mini.c (handle_box): New static function; moved the
19823         implementation of CEE_BOX here.
19824         (mono_method_to_ir): Added `constrained_call' variable.
19825         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
19826         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
19827         mono_method_get_constrained() to get the method.
19828
19829 2004-04-01  Martin Baulig  <martin@ximian.com>
19830
19831         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
19832         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
19833         (mono_method_to_ir): We don't need these macros anymore since
19834         mono_class_get_full() already takes care of it. 
19835
19836 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19837
19838         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
19839         use @function (as doesn't accept #function here) and check the return
19840         value of system and stop if fails.
19841
19842 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19843
19844         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
19845
19846 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
19847
19848         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
19849
19850         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
19851
19852         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
19853         #56223.
19854
19855         * basic-long.cs: Add test for negation of Int64.MinValue.
19856
19857 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
19858
19859         * mini-sparc.c: Update status.
19860
19861         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
19862
19863         * exceptions-sparc.c: Fix return value in filters.
19864
19865         * inssel-sparc.brg: Fix register allocation in some rules.
19866
19867 2004-03-28  Martin Baulig  <martin@ximian.com>
19868
19869         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
19870         if neccessary.  
19871
19872 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
19873
19874         * mini-x86.c (mono_arch_patch_code): Fix warnings.
19875         
19876         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
19877         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
19878         remove unused conv_u4 opcode.
19879
19880         * mini-x86.c: Remove valgrind workaround since it slows down things
19881         even when mono is not run under valgrind.
19882
19883 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
19884
19885         * mini-sparc.c: Update status.
19886
19887         * inssel-sparc.brg: Add some optimizations.
19888
19889         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
19890         future delay slot filling. Add support for varargs, tail calls and JMP.
19891
19892         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
19893         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
19894
19895         * inssel.brg: Fix register allocation in OP_ARGLIST.
19896
19897         * inssel.brg: Fix warnings.
19898
19899 2004-03-25  Martin Baulig  <martin@ximian.com>
19900
19901         * mini.c (inflate_generic_field): Removed.
19902         (mini_get_method): Removed, use mono_get_method_full(),
19903         (mini_get_class): Removed, use mono_class_get_full().
19904         (mono_method_to_ir): Pass our generic context to
19905         mono_field_from_token().        
19906
19907 2004-03-25  Martin Baulig  <martin@ximian.com>
19908
19909         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
19910         of a `MonoMethod *'.
19911         (mini_get_method): Take a `MonoGenericContext *' instead
19912         of a `MonoMethod *'.
19913         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
19914         a new local variable called `generic_context' which holds the
19915         current `MonoGenericContext *'; use it to lookup things.
19916
19917 2004-03-24  Martin Baulig  <martin@ximian.com>
19918
19919         * mini.c (mini_get_class): New static method; if we're inside a
19920         generic instance, inflate the class if neccessary.
19921         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
19922
19923 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
19924
19925         * iltests.il: New regression test for #55976.
19926
19927         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
19928         #55976.
19929
19930 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19931
19932         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
19933         output.
19934
19935 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
19936
19937         * liveness.c: Consider SSA stores as well as loads when making vars
19938         volatile.
19939
19940         * exceptions.cs: New regression tests for register allocation.
19941         
19942 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
19943
19944         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
19945         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
19946           domain lock only to protect puntual access to data structures.
19947           Added access lock for sighash, jit_icall_hash_name, 
19948           jit_icall_hash_addr and domain->code_mp.
19949
19950 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
19951
19952         * driver.c: Print SIGSEGV handling method.
19953
19954         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
19955
19956         * mini.c (setup_jit_tls_data): Handle case when this is called
19957         multiple times for a thread.
19958
19959         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
19960         is different from fbxx_un. Fixes #54303. Also use constants instead of
19961         magic numbers in a lot of places.
19962
19963 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
19964
19965         * exceptions.cs: Fix cctor test when --regression is used.
19966
19967 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
19968
19969         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
19970         for Linux/ppc.
19971
19972 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
19973
19974         * inssel-ppc.brg: fixed register assignments for some rules.
19975
19976 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19977
19978         * exceptions.cs: Add test for exceptions in static constructors.
19979
19980         * mini.c (mono_jit_compile_method_with_out): Move the calling of
19981         static constructors outside the domain lock. Fixes #55720.
19982
19983 2004-03-17  Martin Baulig  <martin@ximian.com>
19984
19985         * mini.c (get_generic_field_inst): Removed, this'll never happen.
19986         (inflate_generic_field): Take the `MonoMethod *' instead of the
19987         `MonoClass *' and added support for generic method.
19988         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
19989         have a `field->parent->gen_params', only inflate the field if it's
19990         an open constructed type.
19991
19992 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
19993
19994         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
19995         exception object instead of the preconstructed ones.
19996
19997 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19998
19999         * mini.c: reverted changed to sigsegv_signal_handler commited
20000         accidentally in the previous patch.
20001
20002 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20003
20004         * mini.c:
20005         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
20006         running --aot with an old assembly.
20007
20008 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
20009
20010         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
20011         point values.
20012
20013         * mini-sparc.c: Add support for v9 branches with prediction.
20014
20015 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
20016
20017         * mini.c (mini_init): #warning is GNUC only
20018
20019         * mini-sparc.h: implement __builtin_frame_address
20020         and __builtin_return_address for Sun C compiler
20021
20022 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
20023
20024         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
20025
20026 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
20027
20028         * basic-calls.cs: Add test for unaligned byref long argument passing.
20029
20030         * mini-ops.h: Add sparcv9 compare and branch instructions.
20031
20032         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
20033         v9 instructions if we have a v9 cpu.
20034
20035         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
20036         registers for global allocation.
20037
20038         * exceptions-sparc.c: Fixes.
20039         
20040 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
20041
20042         * liveness.c (mono_analyze_liveness): Optimized version.
20043
20044         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
20045
20046         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
20047         sparc work.
20048
20049         * basic-float.cs basic-calls.cs: New regression tests.
20050
20051 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
20052
20053         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
20054         sigaltstack implementation.
20055
20056         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
20057         
20058         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
20059         stuff if SIGSEGV_ON_ALTSTACK is not defined.
20060
20061 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
20062
20063         * mini.c: Fix warnings.
20064         
20065         * mini.c (mono_resolve_patch_target): New function which contains the
20066         arch independent part of the patching process.
20067
20068         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
20069         patching code to a separate function.
20070
20071 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
20072
20073         * mini.c (add_signal_handler): ifdef out on Windows
20074
20075 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
20076
20077         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
20078         cpu-sparc.md: Add exception handling support + other fixes.
20079
20080         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
20081         typed GC detection in --version.
20082
20083         * basic.cs exceptions.cs: New regression tests.
20084
20085         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
20086         the arch specific code can store data during a compilation.
20087
20088         * mini-ops.h: Add OP_SETFRET.
20089
20090         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
20091         function, register a separate icall for each arity, so the icalls can
20092         get a wrapper.
20093         
20094         * mini.c (mono_print_tree): Print negative offsets in a more readable
20095         form.
20096         
20097         * mini.c: Make signal handling work on sparc.
20098         
20099         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
20100
20101         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
20102
20103         * jit-icalls.c: Emulate truncl by aintl on solaris.
20104
20105         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
20106
20107 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
20108
20109         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
20110
20111 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
20112
20113         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
20114         a MarshalByRef type, inline a method that performs the check, taking into
20115         account that the object can be a proxy. Also implemented tow new opcodes:
20116         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20117         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
20118         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20119
20120 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
20121
20122         * mini-ppc.c: if a relative branch displacement is too big
20123         but it points to and area reachable with an absolute branch, 
20124         avoid the thunks.
20125
20126 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
20127
20128         * mini.c: optimize small copies in cpblk.
20129
20130 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
20131
20132         * basic-calls.cs basic-float.cs: New regression tests.
20133
20134         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
20135         negative offsets from %fp. Implement localloc. Fix local register 
20136         allocation. Fix the case when the this argument needs to be saved to
20137         the stack. Implement some missing opcodes.
20138
20139 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
20140
20141         * mini.c (mini_method_compile): Reenable global regalloc in methods
20142         with exception handlers.
20143
20144         * linear-scan.c (mono_varlist_sort): Fix warning.
20145
20146         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
20147
20148         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
20149         regalloc costs.
20150
20151         * liveness.c: Make all variables uses in exception clauses volatile, to
20152         prevent them from being allocated to registers. Fixes #42136.
20153
20154 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
20155
20156         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
20157         causes regressions.
20158
20159         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
20160         argument to mono_arch_regalloc_cost.
20161
20162         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
20163         precisely.
20164
20165 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
20166
20167         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
20168         Make the cost of allocating a variable to a register arch dependent.
20169
20170         * basic-calls.cs: Fix compilation of tests.
20171         
20172         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
20173         helper function to cut back on the number of #ifdefs needed.
20174
20175         * mini-ppc.c: Fix compilation.
20176
20177         * basic-calls.cs: New regression tests.
20178
20179         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
20180
20181         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
20182         of l0 since that is callee saved.
20183
20184         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
20185         to virtual calls.
20186
20187         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
20188         of delay instruction.
20189
20190         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
20191
20192         * mini.h (MonoCallInst): Add 'virtual' flag.
20193
20194         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
20195
20196 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
20197
20198         * *.cs: New regression tests.
20199
20200         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
20201         work.
20202
20203         * mini.c (mono_runtime_install_handlers): Fix build.
20204
20205         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
20206         'signal_stack_size' members.
20207
20208         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
20209         alternate signal stack.
20210
20211         * exceptions-x86.c: Add stack overflow handling.
20212
20213         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
20214         functions to arch independent code.
20215
20216         * mini.c (mono_print_tree): Print more detailed info for load_membase
20217         opcodes.
20218         
20219 2004-02-23  Martin Baulig  <martin@ximian.com>
20220
20221         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
20222
20223 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20224
20225         * mini-x86.c: fixed reg allocation for div/rem.
20226
20227 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
20228
20229         * driver.c (mono_main): Report some configuratio options on --version.
20230
20231 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
20232
20233         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
20234         low in the address space. Correctly flush memory in thunks where we
20235         output native code.
20236
20237 2004-02-20  Martin Baulig  <martin@ximian.com>
20238
20239         * mini.c (mini_get_method): New static method; inflate all generic
20240         methods and methods in open generic instances.
20241         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
20242         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
20243
20244 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20245
20246         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
20247
20248         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
20249
20250 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
20251
20252         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
20253
20254         * mini-sparc.c (flushi mono_arch_output_basic_block): make
20255         it compile using Sun's compiler.
20256
20257 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20258
20259         * 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.
20260
20261         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
20262
20263 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20264
20265         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
20266         code.
20267         * mini-ppc.c: handle calls outside of the allowed range with thunks
20268         allocated using the code manager.
20269         * tramp-ppc.c: use the code manager to hold generated native code.
20270         Fixed the magic trampoline to just patch vtable entries.
20271
20272 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
20273
20274         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
20275         independent file.
20276
20277 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
20278
20279         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
20280         PPC.
20281
20282         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
20283         if we have a working __thread implementation.
20284
20285         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
20286         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
20287
20288 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
20289
20290         * mini-x86.c: Fix compilation under gcc 2.
20291         
20292 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
20293
20294         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
20295         contains a call to the wrapped function.
20296
20297         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
20298         OP_<CALL>_IMM opcodes, and use them under X86.
20299         
20300         * mini.c (mono_jit_find_compiled_method): Fix warning.
20301
20302         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
20303
20304         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
20305
20306         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
20307         functionality to mini.c.
20308
20309         * mini.c (mono_create_jump_trampoline): New function to create a jump
20310         trampoline. Return a compiled method instead of a trampoline if it
20311         exists. Add a cache for jump trampolines.
20312
20313         * mini.c (mono_jit_find_compiled_method): New function to return a
20314         compiled method if it exists.
20315
20316         * mini-x86.c: Call mono_create_jump_trampoline instead of 
20317         mono_arch_create_jit_trampoline.
20318
20319         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
20320         a jump trampoline. Fixes #52092.
20321         
20322 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
20323
20324         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
20325         which is not up-to-date. Add check_corlib_version () instead.
20326
20327         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
20328         have to call it.
20329         
20330         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
20331         since newer valgrind versions do not need it.
20332
20333         * mini.c (mono_jit_compile_method_with_opt): New helper function to
20334         compile a method with a given set of optimizations.
20335
20336         * mini.c: Compile icall wrappers on-demand instead of at startup.
20337
20338         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
20339         wrapper for an icall.
20340
20341 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
20342
20343         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
20344         #54063.
20345
20346         * iltests.il: Add test for non-empty stack before switch instruction.
20347
20348 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
20349
20350         * mini.c: Add support for new stringbuilder marshalling conventions.
20351
20352         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
20353
20354 2004-02-01  Martin Baulig  <martin@ximian.com>
20355
20356         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
20357         in `ginst->mtype_argv'.
20358
20359 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
20360
20361         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
20362         facilitate grepping.
20363
20364 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
20365
20366         * mini.c: fixed buglet in initobj generic implementation for references.
20367
20368 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
20369
20370         * Makefile.am: make the version script conditional.
20371         * jit-icalls.c: handle missing truncl().
20372
20373 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
20374
20375         * exceptions.cs: Add more tests for double->int conversion.
20376
20377         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
20378         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
20379
20380 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
20381
20382         * driver.c: make --verbose --version emit an error
20383         if the loaded corlib doesn't match the runtime version.
20384
20385 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
20386
20387         * mini-ppc.h: export ppc_patch().
20388         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
20389         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
20390         on par or better than on MacOSX.
20391
20392 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
20393
20394         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
20395         mono_lookup_pinvoke_call.
20396
20397         * mini-x86.c: Under windows, the default pinvoke calling convention is
20398         stdcall. Fixes #52834.
20399
20400         * mini.c (optimize_branches): Add an upper bound to the number of
20401         iterations to prevent infinite loops on strange loops. Fixes #53003.
20402
20403 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
20404
20405         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
20406         and ISINST. Fixes #52093.
20407
20408         * objects.cs (test_0_vector_array_cast): New tests.
20409         
20410 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
20411
20412         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
20413         checking in Array.Set ().
20414
20415         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
20416         #52590.
20417
20418         * object.cs (test_0_multi_array_cast): New regression test.
20419
20420 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
20421
20422         * exceptions-ppc.c: fix build on Linux/PPC.
20423
20424 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
20425
20426         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
20427         running under valgrind.
20428         (x86_magic_trampoline): Fix build bustage.
20429
20430         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
20431         negative values as well. This is needed for the encoding of the line number
20432         info, since sometimes the line numbers are not in increasing order.
20433
20434 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
20435
20436         * cpu-pentium.md (localloc): Increase the size of the localloc 
20437         instruction since it is a loop under Win32.
20438
20439         * debug-mini.c (record_line_number): Get rid of unneccesary memory
20440         allocation.
20441
20442 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
20443
20444         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
20445         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
20446         Max Horn (max@quendi.de). Fix file names in comments.
20447
20448 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
20449
20450         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
20451         avoid stack overflow.
20452         (replace_usage): Avoid uninitialized variable warnings.
20453
20454         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
20455         and taking the address of valuetype variables.
20456
20457 2004-01-03  Patrik Torstensson
20458
20459         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
20460         for other purposes than FP later on.
20461
20462 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
20463
20464         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
20465         of tail calls.
20466
20467 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20468
20469         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
20470
20471 2003-12-30  Patrik Torstensson <p@rxc.se>
20472
20473         * mini-x86.h: Decreased number of availiable fp regs.
20474         Solves corner cases with FP spilling.
20475
20476 2003-12-23  Patrik Torstensson <p@rxc.se>
20477
20478         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
20479         for floating point stack tracking / spilling on x86. 
20480         Fixes bug #49012.
20481         
20482         * basic-float.cs: added float mul overflow test.
20483
20484 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
20485
20486         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
20487
20488 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
20489
20490         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
20491         supports for cond branches that overflow the immediate
20492         overflow offset. mcs can compile simple programs.
20493
20494 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
20495
20496         * exceptions-ppc.c: exception handling support wip:
20497         finally handlers get run on exception.
20498
20499 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
20500
20501         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
20502         profiling.
20503
20504 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
20505
20506         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
20507         initial support for stack walking and unwinding.
20508
20509 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
20510
20511         * driver.c (mono_main): Make corlib-out-of-sync message more 
20512         descriptive. Also remove verify_corlib call.
20513
20514 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20515
20516         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
20517         not overlap with other call's arguments, too.
20518
20519 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
20520
20521         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
20522         move to arch-specific code the choice of arch-specific
20523         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
20524         * mini.c: ensure emulation calls will not interleave
20525         with other calls.
20526
20527 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
20528
20529         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
20530         the magic trampoline stack frame is dropped before executing
20531         the new method.
20532
20533 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20534
20535         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
20536         and integer to fp conversions. Added support for overflowing
20537         arguments on the stack. Reserve a couple more registers as temps.
20538         Added support for aot compilation (as output still needs to be
20539         tweaked, though).
20540
20541 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
20542
20543         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
20544         Don't overwrite return register in some corner cases.
20545
20546 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
20547
20548         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
20549         static constructors when AOT compiling.
20550
20551         * driver.c (mono_main): Call mono_check_corlib_version.
20552
20553 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20554
20555         * cpu-g4.md, basic.cs: fixed div target register.
20556
20557 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
20558
20559         * mini-ppc.c, basic.cs: shl_imm fix with test.
20560
20561 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
20562
20563         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
20564         structures by value. Misc fixes.
20565         * objects.cs: more tests.
20566
20567 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
20568
20569         * mini-ppc.c: lconv.ovf.i implemented.
20570
20571 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20572
20573         * mini.c:
20574         (mini_init): don't error out if someone already called g_thread_init.
20575
20576 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
20577
20578         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
20579         to be any type per the spec. Fix abnormal memory usage when
20580         the same object is repeatedly thrown.
20581
20582 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
20583
20584         * mini.c: check for overruns in IL code.
20585
20586 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
20587
20588         * TODO: Add/remove some todo entries.
20589
20590 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
20591
20592         * driver.c (mono_main): Call mono_verify_corlib.
20593
20594 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
20595
20596         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
20597         This has been moved to mini.c
20598         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
20599         type being casted is marshalbyref it could be a proxy, so instead of
20600         emitting the type check code, emit a call to a runtime method that will
20601         perform the check by calling CanCastTo if needed.
20602
20603 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
20604
20605         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
20606         methods with large stack frames under Win32.
20607
20608 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
20609
20610         * Makefile.am: Distribute regression tests.
20611
20612         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
20613         at the end instead of inserting each variable into the sorted list.
20614
20615         * linear-scan.c (mono_varlist_sort): New helper function.
20616         
20617 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
20618
20619         * mini.c: ensure arguments and locals are within bounds.
20620
20621 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
20622
20623         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
20624         related fixes.
20625
20626 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
20627
20628         * mini.c (mono_cprop_copy_values): Fix crash.
20629
20630         * aot.c: Set verbosity back to 0.
20631         
20632 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20633
20634         * regalloc.c: complete memory leak fix by Laurent Morichetti
20635         (l_m@pacbell.net).
20636
20637 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
20638
20639         * driver.c (main_thread_handler): Revert the previous patch.
20640
20641         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
20642         under valgrind.
20643
20644         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
20645         memory from the memory pool.
20646
20647         * driver.c (main_thread_handler): Turn on all optimizations when
20648         --aot is used.
20649
20650         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
20651         an array for better performance.
20652
20653         * regalloc.c (mono_regstate_assign): Fix memory leak.
20654
20655         * debug-mini.c (mono_debug_serialize_debug_info): New function to
20656         serialize the debug info.
20657
20658         * debug-mini.c (mono_debug_add_aot_method): New function to load the
20659         debug info from the serialized representation.
20660
20661         * aot.c: Save debug info into the generated file and load it when 
20662         loading a method.
20663
20664         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
20665
20666 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
20667
20668         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
20669         More FP-related fixes.
20670
20671 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
20672
20673         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
20674         and register allocation buglet. Hello world now runs.
20675
20676 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
20677
20678         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
20679         * tramp-ppc.c: fixed class init trampoline.
20680         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
20681
20682 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
20683
20684         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
20685         mini.c: more ppc changes/fixes.
20686
20687 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
20688
20689         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
20690         Also optimize the case when the arguments are the same in the caller 
20691         and in the callee.
20692
20693         * iltests.il: Add tests for tail calls with valuetype arguments.
20694
20695 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
20696
20697         * mini-ppc.c: fixes for struct return type.
20698
20699 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
20700
20701         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
20702         mono_spillvar_offset() to arch-specific code.
20703
20704 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
20705
20706         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
20707
20708 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
20709
20710         * exceptions-x86.c: Fix stack space leaks.
20711         
20712         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
20713         registers from the lmf if the method has save_lmf set.
20714
20715 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
20716
20717         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
20718         of icall wrappers into InvokeInDomain, since these are now per-domain.
20719
20720 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
20721
20722         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
20723         make some opcode emulation and intrinsic ops enabled/disabled 
20724         according to the architecture. More fixes.
20725
20726 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
20727
20728         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
20729
20730 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
20731
20732         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
20733         arch-specific handling for 'this' and struct return type to
20734         arch-specific code.
20735
20736 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20737
20738         * aot.c: prevent divide by zero error when reporting (it happened with
20739         Accessibility.dll).
20740
20741 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
20742
20743         * mini.h (inst_switch): Remove unused macro.
20744
20745 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20746
20747         * aot.c:
20748         (load_aot_module): free 'info->methods' and 'info' properly. No more
20749         "free(): invalid pointer blah" messages when you have an old aot
20750         compiled assembly.
20751
20752 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
20753
20754         * jit-icalls.c, mini.c: Added support for context static fields.
20755
20756 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
20757
20758         * mini.c (mono_method_blittable): Methods which set LastError are not 
20759         blittable either. Fixes #51108.
20760         
20761 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
20762
20763         * mini.c: flush icache.
20764         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
20765
20766 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
20767
20768         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
20769
20770 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
20771
20772         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
20773         safe on IA32.
20774
20775         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
20776         vararg calls.
20777
20778         * inssel.brg (CEE_MKREFANY): Fix AOT case.
20779
20780 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
20781
20782         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
20783         instruction when the result is discarded.
20784
20785         * iltests.il (test_0_div_regalloc): New regression test.
20786
20787         * arrays.cs: Fix compilation error.
20788
20789 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
20790
20791         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
20792         float rules to inssel-x86.brg: sane architectures with FP registers
20793         don't need to implement these rules.
20794
20795 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20796
20797         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
20798
20799 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
20800
20801         * mini.h, inssel-long32.brg: fixed endianess issues in int64
20802         implementation of 32 bit systems.
20803
20804 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20805
20806         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
20807         (Jeroen Zwartepoorte).
20808
20809 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
20810
20811         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
20812         the caller and the callee matches.
20813         
20814         * mini.c (mono_method_to_ir): Add comment.
20815
20816         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
20817         signbit is missing on some platforms.
20818
20819 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
20820
20821         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
20822
20823         * mini.c (setup_jit_tls_data): Call the new function.
20824         
20825         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
20826
20827         * mini-x86.c: Add experimental support for fast access to the lmf
20828         structure under NPTL/Linux 2.6.x.
20829
20830 2003-11-06  Martin Baulig  <martin@ximian.com>
20831
20832         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
20833         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
20834         the debugger.
20835
20836 2003-11-02  Martin Baulig  <martin@ximian.com>
20837
20838         * mini.c (inflate_generic_field): New static method.
20839         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
20840         generic instance and the field is declared in a generic type, call
20841         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
20842
20843 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
20844
20845         * mini.h mini.c (mono_method_same_domain): New function to return
20846         whenever the caller and the callee are in the same domain.
20847
20848         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
20849
20850 2003-10-30  Martin Baulig  <martin@ximian.com>
20851
20852         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
20853         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
20854         method parameters.
20855         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
20856         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
20857
20858 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
20859
20860         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
20861         propagation.
20862
20863         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
20864         object here, so it is in the correct appdomain etc.
20865
20866 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
20867
20868         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
20869         already done.
20870         (mono_method_to_ir): Avoid freeing the type created returned from
20871         mono_type_create_from_typespec, since it is put into an internal cache
20872         by the function. Fixes pointer.exe.
20873
20874         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
20875         trampolines for icalls and pinvokes as well. Fixes #33569.
20876
20877 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
20878
20879         * mini.c: Update after appdomain changes.
20880
20881         * mini.c (mono_jit_compile_method_inner): Allways compile native
20882         method wrappers in the root domain, since there can only be one
20883         instance of them, whose address is stored in method->info.
20884
20885 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
20886
20887         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
20888         environment variable. Instead detect automatically whenever running
20889         under valgrind using the magic macro RUNNING_ON_VALGRIND from
20890         valgrind.h.
20891
20892 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
20893
20894         * trace.c, trace.h: New files that implement the new trace option
20895         parsing. 
20896
20897         * driver.c: Document new --trace options.
20898
20899         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
20900         mini-x86.c: Apply:
20901
20902         -       if (mono_jit_trace_calls)
20903         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
20904
20905         * mini.h: prototypes.
20906         
20907 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
20908
20909         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
20910
20911         * mini.c inssel.brg: Implement typedefbyref opcodes.
20912
20913         * mini.c (mono_jit_compile_method): Remove unused local variable.
20914
20915         * mini.c (mono_jit_compile_method_inner): Ditto.
20916         
20917 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
20918
20919         * tramp-x86.c (x86_class_init_trampoline): Fix build.
20920         
20921         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
20922
20923 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
20924
20925         * mini.c (mono_no_aot): Remove unused global variable.
20926
20927         * mini.c: Thread safety fixes.
20928
20929 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
20930
20931         * mini.c (mono_create_class_init_trampoline): Add a lock around
20932         class_init_hash_addr.
20933
20934         * arrays.cs (test_0_newarr_emulation): Add new regression test for
20935         #30073.
20936
20937         * mini.c: Decompose the NEWARR instruction before decomposing its
20938         arguments. Fixes #30073.
20939
20940 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
20941
20942         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
20943         convention.
20944
20945 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
20946
20947         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
20948
20949         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
20950
20951         * driver.c: Add support for compiling icall wrappers to --compile.
20952
20953 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
20954
20955         * inssel.brg: The empty value in class->interface_offsets is -1, not
20956         0. Fixes #49287.
20957
20958 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
20959
20960         * objects.cs: New test for 'is' operator on an array of interfaces.
20961
20962 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
20963
20964         * tramp-ppc.c: update trampoline code to support jumps
20965         and class initialization.
20966
20967 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
20968
20969         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
20970
20971         * inssel.brg (OP_UNBOXCAST): Fix #46027.
20972
20973         * inssel.brg (OP_UNBOX): Remove unused rule.
20974
20975         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
20976         region instead of one for each method. Fixes #47813.
20977
20978 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
20979
20980         * exceptions.cs (test_0_nested_finally): New regression test for
20981         nested exception handlers.
20982
20983         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
20984
20985         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
20986
20987         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
20988         inlining.
20989
20990         * mini.c (mono_method_check_inlining): Make the inlining limit 
20991         configurable by an environment variable.
20992         
20993         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
20994
20995         * mini.h: Bump AOT file version.
20996
20997         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
20998         token, store the image along with the token, since the token might not 
20999         refer to the same image as the method containing the relocation, 
21000         because of inlining.
21001
21002 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
21003
21004         * mini.c (mono_precompile_assemblies): New function to compile
21005         all methods in all loaded assemblies.
21006
21007         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
21008
21009         * regalloc.h regalloc.c (MonoRegState): Change the type of 
21010         iassign and fassign to int*, since they can contain large negative
21011         values if the register is spilled. Also added some comments. Fixes
21012         #45817.
21013
21014         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
21015         under Win32. Fixes #42964.
21016
21017 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
21018
21019         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
21020
21021         * aot.c: Added support for AOT compiling methods which contain calls
21022         to wrappers. Currently, only remoting-invoke-with-check wrappers are
21023         handled.
21024         
21025         * driver.c (compile_all_methods): Run the compilation in a thread
21026         managed by mono. Fixes #44023.
21027
21028         * mini.c (mono_codegen): Print full method name in verbose output.
21029
21030         * mini-x86.c (mono_arch_patch_code): Fix warning.
21031         
21032         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
21033         jumps, since the method we are jumping to might be domain-specific.
21034
21035         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
21036
21037 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21038
21039         * inssel.brg: string chars are unsigned.
21040
21041 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
21042
21043         * TODO: New todo item.
21044
21045         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
21046         which calls mono_runtime_class_init and patches the call site to
21047         avoid further calls.
21048         (mono_arch_create_class_init_trampoline): New arch specific function 
21049         to create a class init trampoline.
21050         (create_trampoline_code): Generalized so it can create
21051         class init trampolines as well.
21052
21053         * mini.c (helper_sig_class_init_trampoline): New helper variable.
21054         (mono_create_class_init_trampoline): New function to create and cache
21055         class init trampolines.
21056         (mono_find_class_init_trampoline_by_addr): New function to lookup the
21057         vtable given the address of a class init trampoline. Used by the
21058         patching process.
21059         (mono_codegen): Generate a call to a trampoline instead of
21060         mono_runtime_class_init in LDSFLD[A].
21061         (mono_codegen): Add relocations for the new trampoline.
21062         
21063         * mini.h mini-x86.c aot.c: Added a new relocation type: 
21064         MONO_PATCH_INFO_CLASS_INIT.
21065
21066         * mini.h: Bump AOT version number.
21067
21068         * aot.c: Create a copy of the loaded code instead of using the original
21069         so methods which call each other will be close in memory, improving
21070         cache behaviour.
21071         
21072         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
21073         patch since it breaks the regression tests.
21074         
21075         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
21076         for the register saving instruction sequence since the 
21077         frame_state_for function in glibc 2.3.2 don't seem to detect it.
21078
21079 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
21080
21081         * TODO: Fix todo item && remove another.
21082
21083 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
21084
21085         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
21086         previous checkin.
21087
21088         * aot.c: Moved the check for MONO_LASTAOT into the initialization
21089         function of the module.
21090
21091         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
21092         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
21093         --no-aot command line option.
21094
21095 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
21096
21097         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
21098         by Bernie Solomon (bernard@ugsolutions.com).
21099
21100         * inssel.brg: Refactor the interface offset table related code into
21101         its separate functions and add support for the AOT case.
21102
21103 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
21104
21105         * aot.c (mono_aot_get_method_inner): Fix memory leak.
21106         
21107         * aot.c: Added mono_aot_verbose variable and made all debugging
21108         output depend on the value of this variable.
21109
21110         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
21111         method_label and info_label.
21112
21113         * mini.h mini-x86.c aot.c: Added a new relocation type 
21114         MONO_PATCH_INFO_IID for klass->interface_id.
21115
21116         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
21117         the MonoJitInfo structure.
21118
21119         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
21120         a non-root appdomain in shared mode.
21121
21122 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21123
21124         * aot.c: make aot loader less verbose. Remove free of unused variable.
21125
21126 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
21127
21128         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
21129
21130         * .cvsignore: Added *.dll.
21131
21132         * mini.c (mono_print_tree_nl): New function callable while debugging.
21133
21134         * mini.c (mono_print_code): Export this.
21135
21136         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
21137         patched code.
21138
21139 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
21140
21141         * mini.h (MonoCompile): Added 'jit_info' field.
21142
21143         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
21144         the cfg structure, since it is needed by the AOT compiler.
21145
21146         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21147
21148         * aot.c: A major rewrite. Changes include:
21149         - save exception tables for methods which have them.
21150         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
21151         to g_module_symbol.
21152         - reworked the file format so it is now much smaller and needs
21153         fewer relocation entries.
21154         
21155 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21156
21157         * aot.c (load_aot_module): Fix build bustage on platforms without
21158         Boehm GC.
21159
21160 2003-09-04  Martin Baulig  <martin@ximian.com>
21161
21162         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
21163
21164 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21165
21166         * TODO: Some new optimization ideas.
21167
21168         * aot.c: Move AOT module loading logic here from mono_assembly_open.
21169
21170         * aot.c: Save the optimization flags used to compile the code into
21171         the AOT module.
21172
21173         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
21174         support emitting domain specific code.
21175         
21176         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
21177         no longer domain neutral. It can be made domain neutral by compiling 
21178         with --optimize=shared.
21179
21180         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
21181         between appdomains.
21182
21183         * driver.c mini.h mini.c: New --no-aot debugging option which disables
21184         loading of AOT code.
21185
21186         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
21187         
21188         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
21189         if there is no domain neutrality information.
21190
21191 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
21192
21193         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
21194         format version into the generated library.
21195
21196         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
21197         callee method into the caller since one of them could be shared.
21198
21199         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
21200         system exceptions from AOT code now works.
21201
21202         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
21203         method if it is domain neutral and the callee is not.
21204
21205         * graph.c (cfg_emit_one_loop_level): Fix warning.
21206
21207 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
21208
21209         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
21210         last checkin.
21211
21212 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
21213
21214         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
21215         is needed  by code which is executed before mono_runtime_init ().
21216         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
21217         
21218         * mini.c (mono_thread_abort): Fix warning.
21219         (mono_jit_compile_method): Call static constructor in the AOT case too.
21220
21221         * aot.c (mono_compile_assembly): Fix warning.
21222
21223 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21224
21225         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
21226
21227 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
21228
21229         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
21230
21231         * cpu-pentium.md: Fix the length of call opcodes so they include the
21232         ESP restoring instruction. Fixes #47968.
21233
21234 2003-08-28  Martin Baulig  <martin@ximian.com>
21235
21236         * mini-x86.c (mono_arch_call_opcode): Added support for
21237         MONO_TYPE_GENERICINST.
21238
21239         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
21240
21241 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
21242
21243         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
21244         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
21245
21246         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
21247         metadata_section.
21248
21249 2003-08-26  Martin Baulig  <martin@ximian.com>
21250
21251         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
21252         when reporting an error, set this to the actual error location.
21253         (mono_method_to_ir): Report the correct error location if
21254         get_basic_blocks() returned an error.
21255
21256 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
21257
21258         * mini.c (mono_type_blittable): OBJECT is not blittable.
21259         (mono_method_blittable): Methods which have marshalling descriptors
21260         are not blittable either. Fixes #47842.
21261
21262 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
21263
21264         * driver.c mini.c: Use an environment variable instead of a global 
21265         variable. Also fix the build.
21266
21267         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
21268         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
21269         reporting this. 
21270
21271         * driver.c mini.c: Added --with-valgrind option to turn off some
21272         code which prevents mono from running under valgrind.
21273
21274         * mini.c (mono_emit_call_args): Fixed warning.
21275
21276         * mini.c (mono_emulate_opcode): Fixed warning.
21277
21278 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21279
21280         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
21281         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
21282         regalloc.c, regalloc.h: specify available registers in arch-specific
21283         code and support floats in the regallocator (patch by Laurent Morichetti 
21284         <l_m@pacbell.net>)
21285
21286 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21287
21288         * mini.c: mono_thread_current() can be called only after
21289         mono_runtime_init(): rearrange code to not call it early on.
21290
21291 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21292
21293         * mini.c: allocate jump tables in the code mempools.
21294
21295 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21296
21297         * mini.c, mini.h: make sure per-thread data allocated by the jit is
21298         freed.
21299
21300 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
21301
21302         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
21303         12 to 16.  This fixes bug #47453.
21304
21305
21306 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21307
21308         * mini-ppc.c: fixed indexed load and unsigned compares.
21309
21310 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
21311
21312         * mini.c: reenabled installation of handler for
21313           thread abort signal.
21314
21315 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21316
21317         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
21318         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
21319         until it's fixed and actually useful.
21320
21321 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21322
21323         * inssel-long32.brg: couple more opcodes implemented.
21324
21325 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21326         
21327         * mini-sparc.c: Even more opcodes implemeted.
21328
21329 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
21330
21331         * mini-sparc.c: More opcodes implemented.
21332
21333 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
21334
21335         * mini-sparc.c: More opcodes implemented.
21336
21337 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21338
21339         * inssel-sparc.brg: Add some needed rules.  Direct
21340         copy from PPC.
21341         * Makefile.am: Use inssel-sparc.brg
21342         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
21343         an assert happy for now.
21344
21345 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
21346
21347         * mini-sparc.c: Fixed compile errors.
21348         * exceptions-sparc.c: Same.  We now produce a mono binary 
21349         on sparc-linux.  Yea.
21350
21351 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
21352
21353         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
21354         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
21355         They compile, but do not work.
21356
21357 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21358
21359         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
21360         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
21361         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
21362         (ct@gentoo.org).
21363
21364 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21365
21366         * mini.c: more opcodes implemented and better support for generics.
21367
21368 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21369
21370         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
21371         * mini.c, mini.h: first cut at generics support: some new instructions 
21372         added and changed the behaviour of some of the existing ones.
21373
21374 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
21375
21376         * mini.c: Removed definition of metadata_shared mutex here.
21377
21378 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
21379
21380         * mini-x86.c: make vararg calls work for instance methods.
21381
21382 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21383
21384         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
21385         returns the arguments in a separte list, now.
21386
21387 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21388
21389         * aot.c, mini.c: updates for array type representation changes.
21390
21391 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
21392
21393         * mini.c: register function to perform jit shutdown.
21394
21395 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21396
21397         * mini.c: use a faster allocator if possible.
21398
21399 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21400
21401         * aot.c: some cleanups and portability changes.
21402
21403 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21404
21405         * mini.c: use faster allocation for CEE_BOX if possible.
21406
21407 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
21408
21409         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
21410         Moved inlined mempcy code to its own function so that is can be
21411         reused. Added an inline memset function as well (optimized initobj).
21412         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
21413
21414 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21415
21416         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
21417
21418 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
21419
21420         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
21421         arch code can setup the cpu for CLR execution, if needed.
21422         We use it on x86 to set the precision of FP operations.
21423
21424 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21425
21426         * mini.c: disable some optimizations if we can guess they'll cost too
21427         much for a given method.
21428
21429 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21430
21431         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
21432         
21433 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21434         * mini.h mini.c mini-x86.c: Added instruction level coverage 
21435         info collection support.
21436
21437 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21438
21439         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
21440         is now implemented in the profiling API. Get rid of a couple of
21441         unnecessary global variables.
21442
21443 2003-06-15  Nick Drochak <ndrochak@gol.com>
21444
21445         * basic-long.cs: tests for negative values for bigmul, and unsigned.
21446         * cpu-g4.md: add op_bigmul and op_bigmul_un
21447         * cpu_pentium.md: add op_bigmul_un
21448         * inssel-long32.brg: add rule for unsigned bigmul
21449         * mini-ops.h: define OP_BIGMUL_UN
21450         * mini-x86.c: THE BUG: handle (un)signed properly
21451         * mini.c: choose unsigned opcode if needed.
21452         This set of patches fixes bug #44291
21453
21454 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
21455
21456         * mini.c (optimize_branches): improved to handle all kinds of
21457         conditional branches.
21458
21459 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21460
21461         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
21462         don't raise exceptions.
21463
21464 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21465
21466         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
21467         to arch-specific files.
21468
21469 2003-06-09  Martin Baulig  <martin@ximian.com>
21470
21471         * Makefile.am (libs): Added $(LIBGC_LIBS).
21472
21473 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
21474
21475         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
21476         and OP_ATAN (fixes bug#44293).
21477
21478 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
21479
21480         * Makefile.am, mini-x86.c: rename cpu description array to
21481         pentium_desc, since some compilers define the 'pentium' preprocessor
21482         symbol.
21483
21484 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
21485
21486         * mini.c (mini_select_instructions): add explicit branch if the
21487         following block is not the false target of a conditional branch -
21488         we need this with any optimization that reorder or remove bblocks
21489
21490         * mini.c (optimize_branches): bug fixes
21491
21492 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
21493
21494         * mini.c (mono_method_to_ir): inline static readonly fields
21495
21496         * ssa.c (fold_tree): start cfold support for long (very simple
21497         cases only)
21498
21499         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
21500
21501 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21502
21503         * inssel.brg: fixed memcpy (bug #44219).
21504
21505 2003-06-05  Dick Porter  <dick@ximian.com>
21506
21507         * driver.c: Set the glib log levels to not abort if g_message
21508         recurses.
21509
21510         g_set_prgname() has to happen before mini_init() so that the
21511         process handle gets the info.
21512         
21513 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21514
21515         * driver.c: add intrins to the default optimizations to get wider
21516         exposure.
21517
21518 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21519
21520         * mini.h: some large basic blocks will overflow a 16-bit
21521         integers for symbolic registers.
21522
21523 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21524
21525         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
21526         (mono_arch_output_basic_block): fix bug 43499 
21527
21528 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21529
21530         * mini.c: kill duplicated definition of mono_debug_format.
21531
21532 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21533
21534         * mini-x86.c, arrays.cs: fixed register allocation bug.
21535
21536 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21537
21538         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
21539
21540         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
21541
21542 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21543
21544         * mini.c:
21545         (print_method_from_ip): also print source location information if
21546         available.
21547
21548 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
21549
21550         * mini.c (mono_find_block_region): bug fix in region code
21551         (mini_method_compile): enable removing unreachable code again, but
21552         only in methods without exception clauses.
21553
21554 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
21555
21556         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
21557         Implemented arglist opcode and handling of TypedReference type.
21558         Fixed x86 call convention when a structure is returned.
21559         Minimal support for calling static vararg methods.
21560
21561 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
21562
21563         * mini.c (mini_method_compile):  always remove unreachable code,
21564         because the code in them may be inconsistent  (access to dead
21565         variables for example).
21566
21567 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21568
21569         * driver.c, debug-mini.c: warning fixes.
21570
21571 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
21572
21573         * Makefile.am, jit.h, mini.h: install header for embedding mono.
21574
21575 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
21576
21577         * mini.c: thread-static fields are registered in mono_class_vtable(),
21578         so ensure the function is called before checking for them.
21579
21580 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
21581
21582         * mini.c (optimize_branches): fix for bug 43586
21583
21584         * jit-icalls.c (mono_llmult_ovf): added an additional check for
21585         overflow (fixes Bug #43639)
21586
21587 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21588
21589         * mini.c, objects.cs: allow the use of stobj for primitive types.
21590
21591 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21592
21593         * mini.c: be less strict about argument checking until we support
21594         running the verifier.
21595
21596 2003-05-27  Nick Drochak <ndrochak@gol.com>
21597
21598         * basic-long.cs: tests for (ulong)int * (ulong)int also
21599         * mini.c: use the same trick for (ulong)int * (ulong)int
21600
21601 2003-05-27  Nick Drochak <ndrochak@gol.com>
21602
21603         * basic-long.cs: add regression test for (long)int * (long)int
21604         * cpu-pentium.md: add op_bigmul specification
21605         * inssel-long32.brg: add OP_BIGMUL rule
21606         * mini-ops.h: add OP_BIGMUL
21607         * mini-x86.c: register allocator: handle case where src1 needs to be
21608         in EAX.
21609         * mini.c: substitute special BIGMUL opcode in the tree for 
21610         (long)int * (long)int
21611
21612 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21613
21614         * jit-icalls.c: call the type ctor on field access if needed.
21615
21616 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21617
21618         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
21619         to a method (including results of ldelema, bug#43207).
21620
21621 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
21622
21623         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
21624         colors to show exception handler blocks.
21625
21626         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
21627         (fix for pinvoke7.cs).
21628
21629 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21630
21631         * mini.h, mini.c: ensure correct initialization order for types that
21632         require it. Prepare for lazy compilation of jit icall wrappers.
21633         Provide a name for opcode emulation to reduce unneeded mallocing.
21634
21635 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
21636
21637         * mini-x86.c: better register restoring code and profiling
21638         support for tail calls.
21639
21640 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21641
21642         * mini.h, driver.c: prepare for leaf methods optimization.
21643
21644 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21645
21646         * mini.c: get targets of branches before converting a method.
21647
21648 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
21649
21650         * mini.c (optimize_branches): added some experimental code (disbaled) 
21651
21652 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
21653
21654         * mini.c (optimize_branches): fix branch to branch optimization 
21655
21656         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
21657
21658         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
21659
21660         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
21661
21662         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
21663         if needed.
21664
21665 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
21666
21667         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
21668         enable use of interface variables again.
21669
21670         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
21671         I1 to registers because there is no simply way to sign extend 8bit
21672         quantities in caller saved registers on x86.
21673
21674         * inssel-float.brg: set costs of some rules to 2 so
21675         that monobure always select the arch. specific ones if supplied,
21676         regardless of the order we pass the files to monoburg.
21677
21678 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21679
21680         * mini.c, mini-x86.c: since the magic trampoline for jumps
21681         can't patch the code directly, we do it as soon as the
21682         method gets compiled.
21683
21684 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21685
21686         * mini-x86.c, mini.h: introduce a new patching method
21687         to support CEE_JMP and tail calls.
21688         * mini.c: obey tail.call. Don't precompile methods target
21689         of CEE_JMP.
21690         * tramp-x86.c: new trampoline code to handle methods
21691         reached through a jump.
21692
21693 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
21694
21695         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
21696         bit values to registers
21697
21698 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
21699
21700         * mini.c (mono_compile_get_interface_var): share interface
21701         variables if possible.
21702
21703 2003-05-16  Martin Baulig  <martin@ximian.com>
21704
21705         * debug-mini.c (mono_init_debugger): New function to initialize
21706         the debugger.  This is not in the debugger since it needs to
21707         access some of mini's internals.
21708
21709 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
21710
21711         * mini.c (mono_method_to_ir): inlining fixes/cleanups
21712
21713 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
21714
21715         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
21716         for value type handling.
21717
21718 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
21719
21720         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
21721         (mono_method_check_inlining): enable inlining of all kinds of wrappers
21722
21723 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
21724
21725         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
21726           the constructor through a proxy.
21727
21728 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21729
21730         * jit-icalls.c, inssel.brg: fixes to array element address
21731         calculations.
21732
21733 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
21734
21735         * mini-x86.c (is_regsize_var): allocate pointer to registers
21736
21737 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21738
21739         * driver.c: fixed typo, added intrins to the set of optimizations
21740         tested with regressions.
21741
21742 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21743
21744         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
21745         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
21746         test case.
21747
21748 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
21749
21750         * inssel.brg: remove some common pop instructions without side effects
21751
21752 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21753
21754         * inssel-x86.brg: fixed thinko in int to double conversions.
21755
21756 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21757
21758         * mini.c, jit-icalls.c: added runtime thread-static variable support.
21759
21760 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21761
21762         * inssel-long32.brg: two more missing instructions.
21763
21764 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
21765
21766         * mini.c (mono_emit_call_args): set the cil_code for all arguments
21767         if not already set.
21768
21769 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
21770
21771         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
21772         correctly.
21773
21774         * basic-float.cs: Added tests for negative zero.
21775
21776 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21777
21778         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
21779         a couple of missing operations for long casts, with test cases.
21780
21781 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21782
21783         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
21784
21785 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
21786
21787         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
21788         code size estimation.
21789
21790 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
21791
21792         * mini.c (mono_jit_create_remoting_trampoline): make it work with
21793         abstract methods (fix bug 42542)
21794
21795         * aot.c: add ability to handle array types
21796         
21797 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
21798
21799         * mini.c: Call the _specific versions of the object allocation
21800         functions if possible.
21801
21802 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
21803
21804         * driver.c: call setlocale ().
21805
21806 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21807
21808         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
21809         windows build.
21810
21811 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
21812
21813         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
21814
21815         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
21816         wrappers (fix bug 42122)
21817
21818 2003-05-04  Martin Baulig  <martin@ximian.com>
21819
21820         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
21821
21822         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
21823         s/mini_set_defaults/mono_set_defaults/g.
21824
21825 2003-05-04  Martin Baulig  <martin@ximian.com>
21826
21827         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
21828
21829 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21830
21831         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
21832         (reported by Don Roberts).
21833
21834 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21835
21836         * mini.c: temporarily work around two bugs for this release.
21837
21838 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21839
21840         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
21841         that contains -export-dynamic and it makes using the ld script
21842         useless.
21843         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
21844
21845 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21846
21847         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
21848         specific cpu.
21849
21850 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21851
21852         * mini.c: make sure leave calls all the needed finally blocks,
21853         even when the target jumps out of multiple exception clauses.
21854
21855 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21856
21857         * ldscript, Makefile.am: add linker script to reduce the number of
21858         exported symbols (should also fix the issues with libwine defining
21859         some of the same symbols in io-layer).
21860
21861 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
21862
21863         * driver.c (mini_main): Avoid assertion when no file name is given on 
21864         the command line.
21865
21866 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
21867
21868         * driver.c: added --version/-V command line option.
21869         Added the inline optimization in the regression tests.
21870
21871 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21872
21873         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
21874         to the type in the method signature (fixes bug#42134).
21875
21876 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
21877
21878         * mini.c: when inlining, check this is not null only when needed (bug #42135).
21879
21880 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
21881
21882         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
21883
21884 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21885
21886         * driver.c: fixed bug #42100.
21887
21888 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
21889
21890         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
21891
21892 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21893
21894         * mini.c: moved most of the code required to do inlining to its own
21895         function so it can be reused. Inline also ctors if appropriate.
21896
21897 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
21898
21899         * Makefile.am: Link with -export-dynamic so shared libs loaded by
21900         the runtime can call mono API functions.
21901
21902 2003-04-27  Martin Baulig  <martin@ximian.com>
21903
21904         * debug-mini.c (mono_debug_init_method): Added
21905         `guint32 breakpoint_id' argument; if the method has a breakpoint,
21906         send a notification to the debugger.
21907
21908         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
21909         running in the Mono Debugger, just pass the breakpoint number to
21910         mono_debug_init_method().
21911
21912         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
21913
21914 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
21915
21916         * mini.c: allow some more unsafe compares.
21917
21918 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21919
21920         * mini-x86.c, Makefile.am: make distcheck works (partially from
21921         a patch by Richard Lee <r.h.lee@attbi.com>).
21922         * regset.c, regset.h: removed, they are unused.
21923
21924 2003-04-25  Dick Porter  <dick@ximian.com>
21925
21926         * driver.c: Usage reports the name as 'mono' not 'mini'
21927         * exceptions-x86.c: Build and run on freebsd
21928
21929 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
21930
21931         * Makefile.am: install the program with the 'mono' name and
21932         the library as libmono instead of mini and libmini.
21933
21934 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21935
21936         * driver.c: provide the APIs for the embedding interface of the old jit.
21937
21938 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
21939
21940         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
21941
21942 2003-04-23  Martin Baulig  <martin@ximian.com>
21943
21944         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
21945
21946         * driver.c: Added `--debug' command line argument to enable
21947         debugging support.
21948
21949 2003-04-23  Martin Baulig  <martin@ximian.com>
21950
21951         * debug.[ch]: Removed.  The code is now in
21952         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
21953
21954         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
21955         last six months.
21956
21957 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
21958
21959         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
21960
21961 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21962
21963         * mini.c:
21964         (mini_cleanup): moved mono_runtime_cleanup call after the call to
21965         mono_domain_finalize.
21966         (mini_method_compile): use mono_method_profile* if the the option is
21967         enabled.
21968
21969 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
21970
21971         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21972         methods with their wrapper.
21973
21974         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
21975         methods with their wrapper.
21976
21977         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
21978         their wrapper.
21979
21980         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
21981         wrapper.
21982
21983         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
21984         methods.
21985
21986 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
21987
21988         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
21989
21990 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
21991
21992         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
21993         of the mempool. This is slightly faster and uses less memory
21994
21995 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21996
21997         * mini.c: avoid O(n) allocation for variables.
21998
21999 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22000
22001         * mini.c: handle items on the stack after inlining methods.
22002
22003 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22004
22005         * mini.c: make the method->opcode optimization dependent
22006         on MONO_OPT_INSTRINS and do it lazily.
22007
22008 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22009
22010         * driver.c: print overall results at the end of regression run.
22011
22012 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
22013
22014         * inssel.brg: don't overwrite symbolic registers.
22015
22016 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22017
22018         * inssel-x86.brg: fix conversion from long to float.
22019
22020 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
22021
22022         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
22023
22024 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22025
22026         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
22027
22028         * driver.c: Added --print-vtable option as in the old JIT.
22029
22030 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22031
22032         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
22033
22034 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
22035
22036         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
22037
22038 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22039
22040         * mini.c regalloc.c regalloc.h: Fix memory leak.
22041
22042 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
22043
22044         * aot.c (mono_aot_get_method): register all used strings
22045
22046 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22047
22048         * mini.c: always intern strings references with ldstr at compile time.
22049
22050 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22051
22052         * Makefile.am: add BUILT_SOURCES.
22053
22054 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22055
22056         * driver.c: give a better error message when the assembly to execute
22057         doesn't have an entry point.
22058
22059 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
22060
22061         * Makefile.am: added hack for automake
22062
22063         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
22064         correct sematics.
22065
22066         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
22067
22068 22003-04-07  Martin Baulig  <martin@ximian.com>
22069
22070         * Makefile.am: Added Makefile.am.
22071
22072         * debugger-main.c: Removed, this is now in the debugger where it
22073         belongs.
22074
22075         * mini.pc.in: Call this package `mini' for the moment.
22076
22077
22078
22079
22080
22081
22082
22083
22084
22085
22086
22087
22088
22089
22090