2009-11-02 Jonathan Chambers <joncham@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2
3         * mini-x86.c: Put soft debugger functions behind a 
4         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
5         
6         Code contributed under MIT/X11 license.
7
8 2009-11-02 Jonathan Chambers <joncham@gmail.com>
9
10         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
11         to mono_arch_find_jit_info_ext.
12         
13         Code contributed under MIT/X11 license.
14
15 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
16
17         * debugger-agent.c: Add support for filtering events by assemblies.
18
19         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
20         the agent is not enabled.
21
22 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
23
24         * exceptions-x86.c: hopefully last change to fix the windows build.
25         This one courtesy of Jonathan Chambers.
26
27 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
28
29         * debugger-agent.c: remove unused function.
30
31 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
32
33         * debugger-agent.c: add #ifdefs for a few header files.
34         * mini-x86.h: disable the soft debugger in windows.
35         Step 1 of 2 to make this compile on windows with gcc.
36
37 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
38
39         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
40         as it breaks the build.
41
42 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
43
44         Merge the soft debugger branch.
45
46         * debugger-agent.h debugger-agent.c: New files containing the soft
47         mode debugger module.
48
49         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
50         at the appropriate locations.
51
52         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
53         opcode.
54
55         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
56         enable/disable single stepping.
57
58         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
59         which returns all information in a StackFrameInfo structure, and can handle the
60         LMF frames added by the debugger.
61
62         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
63         about an LMF frame.
64
65         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
66         walker function which works on a specific thread and passes a StackFrameInfo
67         structure to its callback.
68
69         * mini.c (mini_init): Initialize the debugger agent.
70
71         * aot-compiler.c aot-runtime.c: Add soft-debug support.
72
73         * mini-ops.h: Add OP_SEQ_POINT opcode.
74
75         * driver.c (mono_main): Add new '--debugger-agent' option for passing
76         arguments to the debugger agent.
77
78 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
79
80         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
81         speed things up.
82
83         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
84
85         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
86
87         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
88
89         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
90         if needed.
91         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
92         sets the IMT argument and makes a virtual call.
93
94         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
95
96 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
97
98         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
99         the windows build.
100
101 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
102
103         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
104         runtime. Fixes #551228.
105
106 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
107
108         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
109
110         * basic.cs: Add a test.
111
112         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
113         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
114         CONSTRAINED. Fixes #550964.
115
116         * generics.cs: Add a test.
117
118 2009-10-28  Mark Probst  <mark.probst@gmail.com>
119
120         * mini-posix.c (add_signal_handler): Use
121         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
122
123 2009-10-28 Jerry Maine <crashfourit@gmail.com>
124
125         Contributed under the terms of the MIT/X11 license by
126         Jerry Maine <crashfourit@gail.com>.
127
128         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
129         sse4a for simd intrinsics.
130
131         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
132         sse4a for simd intrinsics.
133
134 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
135
136         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
137         instead of inst_p1 which is not the same on ILP32 platforms.
138
139 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
140
141         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
142         not the mscorlib one before calling mono_get_lmf_addr.
143
144         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
145         of the ip to the LMF.
146
147         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
148         immediate in the op->op_imm optimization.
149
150         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
151         understand. VTypes now work, but are not abi compliant, as they are
152         split into 4 byte parts instead of 8.
153         (emit_memcpy): Fix the unrolled case to work on the PS3.
154
155         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
156
157         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
158         the default when static linking.
159
160         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
161
162         * aot-compiler.c: Add an autoreg option to automatically register
163         statically linked aot modules using ELF .ctors.
164
165         * genmdesc.pl: Add __ppc64__ to allowed defines.
166
167 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
168
169         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
170         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
171
172 2009-10-24  Mark Probst  <mark.probst@gmail.com>
173
174         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
175
176 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
177
178         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
179         which will contain the domain where the method was found.
180
181         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
182         mini_jit_info_table_find ().
183
184         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
185
186         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
187
188 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
189
190         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
191         set, its not supported yet.
192
193 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
194
195         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
196         iface wrapper is not found.
197         (mono_aot_get_method): Ditto for GetGenericValueImpl.
198
199 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
200
201         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
202         which have a different name.
203
204         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
205         wrappers and Array.GetGenericValueImpl ().
206
207         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
208         because of the change above.
209
210         * generics.cs: Add a test for full aot + generic array ifaces.
211
212 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
213
214         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
215         that hides the previous one.
216
217 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
218
219         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
220         marshalled. Fixes #541623.
221
222 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
223
224         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
225
226 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
227
228         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
229
230 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
231
232         * mini-posix.c (sigprof_signal_handler):
233         Implemented support for building stat call chans in different ways.
234
235 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
236
237         * mini-exceptions.c (mono_find_jit_info):
238         Also check that a jit info has been found (fixes a profiler crash).
239
240 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
241
242         * mini.c (mono_codegen):
243         Call mono_profiler_code_buffer_new with correct code address.
244
245 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
246
247         * driver.c (mono_main): Change the date in the copyright.
248
249 2009-10-14  Mark Probst  <mark.probst@gmail.com>
250
251         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
252         allocator in shared generic code for open classes, because we
253         can't get those classes' vtables.  We need to make managed
254         allocators not depend on the vtable at compile-time to solve this.
255
256 2009-10-13  Martin Baulig  <martin@ximian.com>
257
258         * debug-mini.c (mono_debugger_trampoline_compiled): Add
259         `const guint8 *trampoline' argument; send both the old and the new
260         notification.
261
262 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
263
264         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
265         mono_runtime_capture_context () without calling mono_runtime_invoke ().
266         (can_marshal_struct): Skip structures with auto layout.
267
268         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
269
270 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
271
272         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
273         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
274         a variable to hold the stack slot used by the int<->float conversion opcodes.
275
276         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
277
278 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
279
280         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
281         when using full-aot.
282
283 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
284
285         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
286         each instance of Comparer<T>.
287
288         * generics.cs: Add a new test.
289
290 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
291
292         * driver.c (parse_debug_options): Add a 'gdb' option.
293
294         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
295
296         * image-writer.c: Add support for emitting the image into a memory buffer.
297
298         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
299
300         * aot-compiler.c: Add support for registering debug info with GDB using the
301         new JIT debugging interface in GDB 7.0. It can be turned on by setting
302         MONO_XDEBUG to 'gdb'.
303
304 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
305
306         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
307         gdb mode.
308
309 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
310
311         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
312         can be used to set breakpoints in gdb.
313
314         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
315         segment to an absolute address.
316
317 2009-10-13  Mark Probst  <mark.probst@gmail.com>
318
319         * method-to-ir.c: Use the managed array allocator method if
320         available.
321
322 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
323
324         * aot-compiler.c : Fix the MSVC builds
325
326         Code is contributed under MIT/X11 license.
327
328 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
329
330         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
331         avoid registering 1 symbol file per method with gdb.
332
333 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
334
335         * mini-sparc.c: Fix the handling of enums with base type long.
336
337         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
338
339         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
340         instead of using type->data.klass as the later doesn't work with generics.
341
342 2009-09-25  Mark Probst  <mark.probst@gmail.com>
343
344         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
345         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
346         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
347         works differently now and we don't handle it in the JIT anymore.
348
349         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
350         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
351         the Thread class split.
352
353 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
354
355         * driver.c: Don't run tests with the obsolete treeprop optimization.
356
357         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
358         variable volatile. Fixes #541577.
359
360         * basic-calls.cs: Add a new test.
361
362         * basic-long.cs: Remove tests which are now in basic-calls.cs.
363
364 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
365
366         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
367         work/required with recent iphone sdk versions.
368
369         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
370         structures.
371
372         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
373         in the VCALL decomposition code.
374
375 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
376
377         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
378
379         * basic.cs: Add a test.
380
381         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
382         generic invokes.
383
384         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
385         searches all the domains of the current thread.
386
387         * exceptions-<ARCH>.c: Use it. Fixes #539394.
388
389 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
390
391         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
392         so catching exceptions thrown in the same method works. Fixes exception17.exe.
393
394         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
395         for non-jit trampolines.
396
397         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
398
399         * aot-compiler.c (add_wrappers): Ditto.
400
401         * mini-arm.c: Implement support for passing vtypes and floats, and increase
402         the size of the param area used by dyn_call to 6 which covers the majority of
403         methods.
404
405         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
406
407         * mini-arm.c: Implement support for passing/receiving
408         longs and receiving floats in the dyn_call code.
409
410         * mini-amd64.c: Implement support for receiving vtypes in registers in
411         the dyn_call code.
412
413         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
414         the dyn_call code.
415
416 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
417
418         * mini-arm.c (get_call_info): Return more precise information in
419         ArgInfo->regtype.
420         (dyn_call_supported): Use the information in CallInfo.
421
422         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
423
424         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
425         code.
426
427         * mini-arm.c: Update after the dyn_call api changes.
428
429         * mini.c (mini_create_jit_domain_info): Register a destructor function
430         for the runtime_invoke_hash.
431
432         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
433         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
434         this function.
435         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
436         (dyn_call_supported): Simplify this by using get_call_info ().
437         (mono_arch_dyn_call_free): New destructor function.
438
439         * generics.cs: Remove a printf.
440
441         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
442
443         * mini-arm.c: Add support for enum return values and passing a few arguments
444         on the stack.
445         
446         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
447         dyn invoke.
448
449         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
450
451         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
452         the dynamic invoke wrappers.
453
454         * mini-arm.c: Implement OP_DYN_CALL for arm.
455
456         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
457         supported by the dynamic runtime invoke wrapper.
458
459         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
460         runtime invoke wrapper.
461
462         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
463         if possible when running with full-aot.
464
465         * mini-ops.h: Add OP_DYN_CALL opcode.
466
467         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
468         with dynamic arguments lists similar to libffi.
469
470 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
471
472         * method-to-ir.c: Fix the previous change on 64 bit platforms.
473         
474         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
475         to NEWARR.
476
477         * iltests.il.in: Add a new test.
478         
479 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
480
481         * aot-compiler.c (add_generic_instances): Add more instances of
482         GenericEqualityComparer.
483
484 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
485
486         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
487
488 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
489
490         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
491         comments on some functions that now can fail.
492
493 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
494
495         * Makefile.am: Add Info.plist to EXTRA_DIST
496
497 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
498
499         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
500         static synchronized wrappers. Fixes #539500.
501
502 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
503
504         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
505         properly.
506
507 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
508
509         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
510         lmf before calling filter clauses as well. Fixes #539550.
511
512         * exceptions.cs: Add a test.
513         
514 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
515
516         * aot-compiler.c (add_generic_class): Add instances of
517         Array.GetGenericValueImpl as well.
518
519         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
520         can be tested too.
521
522         * generics.cs: Add a fullaot linq test.
523
524 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
525
526         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
527         reg r1 on arm.
528
529 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
530
531         * mini-trampolines.c (mono_delegate_trampoline) : Call
532           mono_cominterop_get_invoke if the delegate target object
533           is a COM object.
534
535         Code is contributed under MIT/X11 license.
536
537 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
538
539         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
540         internal call is defined outside platform code. Reduce code 
541         duplication with existing [Method|Field]AccessException
542
543 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
544
545         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
546         if the return value is a small struct passed on regs.
547
548 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
549
550         * cpu-arm.md mini-arm.c: Remove unused opcodes.
551
552         * mini-codegen.c: Enable the cpu description validation for arm.
553
554 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
555
556         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
557         test which depends on structs to objects.cs.
558         
559         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
560         require object model related stuff working.
561
562         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
563
564         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
565
566         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
567         against the instruction metadata in mini-ops.h. amd64 only for now.
568
569         * mini-ops.h: Fix some instruction descriptions.
570
571         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
572         unused instructions.
573
574 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
575
576         * exceptions.cs: Add a new test.
577
578 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
579
580         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
581
582 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
583
584         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
585         skip empty phi opcodes.
586         
587         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
588         correctly by zero extending after loads. Skip methods containing calls
589         to the monitor enter/exit trampolines.
590
591         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
592         when calling mono_thread_force_interruption_checkpoint ().
593
594         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
595
596         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
597         64 bit thunks.
598         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
599
600         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
601         bootstrap could run.
602
603 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
604
605         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
606
607 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
608
609         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
610         of the method to
611         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
612         LLVM might be very short.
613
614         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
615         in OP_THROW/RETHROW.
616
617         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
618         alignment on osx.
619
620 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
621
622         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
623         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
624         LLVM might be very short.
625
626 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
627
628         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
629         the alignment for the value of sp.
630
631 2009-09-01  Geoff Norton  <gnorton@novell.com>
632
633         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
634         managed wrappers in full aot.
635
636 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
637
638         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
639
640 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
641
642         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
643
644 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
645
646         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
647
648         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
649         saved info.
650
651         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
652
653         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
654         depend on the info MonoMethodHeader which could be missing in IL stripped
655         assemblies.
656
657 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
658
659         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
660         they are only 4 byte aligned.
661
662 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
663
664         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
665         was done previously, since using SP causes too many problems.
666
667         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
668         frames without a frame pointer works.
669
670         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
671         global register in methods with calls, since the calls can go through
672         a static rgctx trampoline which doesn't save it.
673
674 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
675
676         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
677
678 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
679
680         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
681
682 2009-08-18  Christian Hergert  <chris@dronelabs.com>
683
684         * method-to-ir.c: Fix warnings for uninitialized variables.
685
686 2009-08-18  Christian Hergert  <chris@dronelabs.com>
687
688         * mini-exceptions.c:
689         * aot-compiler.c: Fix printf warnings.
690
691 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
692
693         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
694         Add GetGenericValueImpl<string>.
695         
696         * aot-compiler.c (add_generic_instances): Add instances of
697         GenericEqualityComparer<T> for primitive types. Only emit the array
698         wrappers into the mscorlib image.
699
700 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
701
702         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
703         the methods_loaded array using amodule->info->nmethods.
704
705         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
706         (MONO_AOT_FILE_VERSION): Bump this.
707
708         * aot-compiler.c: Emit more generic instances allowing some parts of linq
709         to work.
710
711         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
712         MonoJitInfo doesn't belong to its methods aot image.
713
714 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
715
716         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
717
718         * mini-arm.c: Fix warnings.
719         
720         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
721
722         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
723         supports it.
724
725 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
726
727         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
728         avoid clobbering IP.
729
730         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
731         hold the trampoline argument, so its initial value is available during
732         debugging.
733
734 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
735
736         * exceptions-arm.c:
737         * exceptions-hppa.c:
738         * mini.c:
739         * exceptions-s390x.c:
740         * exceptions-mips.c:
741         * exceptions-ppc.c:
742         * exceptions-sparc.c:
743         * exceptions-alpha.c:
744         * aot-runtime.c:
745         * mini-trampolines.c:
746         * exceptions-x86.c:
747         * exceptions-s390.c: add and use #define's instead of sizeof()
748         for MonoJitInfo and MonoJitInfoTable.
749
750 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
751
752         * tramp-arm.c:
753         * tramp-amd64.c:
754         * tramp-ppc.c:
755         * tramp-x86.c: use a #define instead of sizeof() for a few
756         structures that use a zero-length array.
757
758 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
759
760         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
761         case when the method is dynamic. Fixes #529238.
762
763 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
764
765         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
766         of asserting when a method is JIT compiled in full-aot mode.
767
768 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
769         
770         Contributed under the terms of the MIT/X11 license by
771         Jerry Maine <crashfourit@gail.com>.
772         
773         * fixed wrong dates in changelog.
774
775 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
776         
777         Contributed under the terms of the MIT/X11 license by
778         Jerry Maine <crashfourit@gail.com>.
779
780         * basic-simd.cs: added test for packed double square root.
781         * cpu-amd64.md: added opcode info for packed double square root.
782         * cpu-x86.md: added opcode info for packed double square root.
783         * mini-ops.h: added IR opcode for packed double square root.
784         * mini-x86.c: added IR to native translation code for packed double square root.
785         * mini-amd64.c: removed todo for packed double square root.
786         * simd-intrinsics.c: added method to IR opcode converstion for
787         packed double square root.
788
789 2009-08-03 Jerry Maine <crashfourit@gmail.com>
790
791         Contributed under the terms of the MIT/X11 license by
792         Jerry Maine <crashfourit@gail.com>.
793
794         * mini-amd64.c: Added a change to help tell the difference as 
795         to what perpose the xmm register is being used--mainly to help
796         with debuging.
797         * mini-amd64.h: Changed callee regs to use 15 out of 16 
798         (one used for special cases) xmm registers for both fp
799         and simd ops. Added define to turn on new feature in the regalloc
800         that allows fp and simd ops to share the xmm regs happily.
801         * codegen.c: Added code to detect for which perpose an xmm reg is
802         being used (fp or simd) and to translate back and forth to the
803         correct logical reg bank (fp or simd) for 'spill load's.
804
805 2009-08-03 Jerry Maine <crashfourit@gmail.com>
806
807         Contributed under the terms of the MIT/X11 license by
808         Jerry Maine <crashfourit@gail.com>.
809
810         * basic-simd.cs: Added tests for stressing the regalloc when running with
811         16 simd regs and when simd and fp ops share the same reg bank.
812
813 2009-08-01  Mark Probst  <mark.probst@gmail.com>
814
815         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
816         in shared generic code, we might have to look up the class in the
817         RGCTX.  If we use the class directly, compute its GC descriptor.
818
819 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
820
821         * mini.c (mono_jit_runtime_invoke): Fix a warning.
822
823 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
824
825         * mini.c (mono_jit_runtime_invoke): Initialize the class and
826         check for errors. Fixed the case when the class with the Main
827         method is broken.
828
829 2009-07-31 Jerry Maine <crashfourit@gmail.com>
830
831         Contributed under the terms of the MIT/X11 license by
832         Jerry Maine <crashfourit@gail.com>.
833
834         * cpu-amd64.md: Fixed simple bug in machine discrition file.
835
836 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
837
838         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
839
840 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
841
842         * method-to-ir.c: Fix naming of stelem and ldelem.
843
844 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
845
846         * driver.c (main_thread_handler): Check that the assembly loaded
847         matches the filename when doing AOT.
848
849 2009-07-30  Mark Probst  <mark.probst@gmail.com>
850
851         * mini.c: get_ip_from_sigctx installer has been removed, so don't
852         call it anymore.
853
854         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
855         utils/mono-sigcontext.h).
856
857         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
858         #ifdef.
859
860 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
861
862         * mini.c (mono_codegen):
863         Call profiler hook to keep track of method code buffers.
864
865 2009-07-27  Mark Probst  <mark.probst@gmail.com>
866
867         * method-to-ir.c: Invoke write barriers for the
868         Interlocked.(Compare)Exchange JIT intrinsics.
869
870 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
871
872         * Makefile.am (version.h): Fix issues when built out of tree.
873         Remove some redundant 'grep's piped through 'sed's.
874
875 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
876
877         This patch is contributed under the terms of the MIT/X11 license
878
879         * mini-ppc.c (mono_arch_output_basic_block):
880         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
881         for bits 32-47 with signed load/store diplacements for bits
882         48-63.  Use prefered base/offset order for indexed form.
883         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
884         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
885         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
886         OP_LOADI2_MEMBASE): Same.
887         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
888         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
889         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
890         indexed form.
891         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
892         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
893         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
894         OP_LOADI1_MEMINDEX): Same
895         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
896         OP_STORER8_MEMINDEX): Same
897         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
898         computations.
899         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
900         for bits 32-47 with signed load/store diplacements for bits
901         48-63.  Use prefered base/offset order for indexed form.
902
903 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
904
905 This patch is contributed under the terms of the MIT/X11 license
906
907         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
908         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
909         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
910         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
911         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
912         cfg->stack_usage to avoid size warnings.
913         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
914         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
915         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
916         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
917         to convert.
918         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
919         after code varible is initialized.
920         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
921         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
922         (mono_arch_emit_epilog): 
923         Move Use ppc_load32 for cfg->stack_usage to avoid size
924         warnings.
925
926 2009-07-24  Mark Probst  <mark.probst@gmail.com>
927
928         * method-to-ir.c: The write barrier doesn't do the store anymore,
929         so we have always to emit it.  Also, emit the wbarrier after the
930         store.
931
932 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
933
934         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
935         for argument count 3 too.
936
937 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
938
939         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
940         the caller handle the exceptions.
941         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
942         method. Fixes #524498.
943
944 2009-07-22  Geoff Norton  <gnorton@novell.com>
945
946         * mini-exceptions.c: Fix build on ia64.
947
948 2009-07-22  Mark Probst  <mark.probst@gmail.com>
949
950         * mini-exceptions.c (ves_icall_get_frame_info): Use write
951         barriers.
952
953 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
954
955         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
956         code.
957
958 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
959
960         * basic-simd.cs (Main): Pass args to the test driver.
961
962 2009-07-20  Geoff Norton  <gnorton@novell.com>
963
964         * mini-x86.h: Fix the x86 version guards to use Apple's
965         properly defined macros.
966
967 2009-07-20  Geoff Norton  <gnorton@novell.com>
968
969         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
970         aligned access.
971
972 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
973
974         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
975         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
976         the information which is needed for invokes, so only one locking+hash table
977         lookup is needed.
978
979         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
980         
981         * aot-compiler.c (add_generic_instances): Emit instances of 
982         GenericComparer<T> for primitive types.
983
984 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
985
986         * mini-posix.c: Fix linux build.
987
988 2009-07-19  Geoff Norton  <gnorton@novell.com>
989
990         * mini.h: Add prototypes for mono_runtime_syscall_fork and
991         mono_gdb_render_native_backtraces
992         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
993         so we implement the sane semantics to the runtime here
994         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
995         so we need to call it differently (mono_gdb_render_native_backtraces)
996         * mini-posix.c: Move the old semantics from mini.c to the prototypes
997         here for default implementations.
998         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
999         support Apple's weird syscall (SYS_fork) implementation and not busy
1000         loop in abort() on native crashes on OSX anymore.
1001
1002 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * aot-runtime.c (load_method): Change the handling of the
1005         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
1006         are used.
1007
1008         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
1009
1010 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
1011
1012         * mini.c (mono_patch_info_equal): Revert the last change for now as it
1013         seems to break the aot tests.
1014         
1015         * mini.c (mono_patch_info_equal): Fix the handling of 
1016         MONO_PATCH_INFO_RGCTX_FETCH.
1017
1018 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1019
1020         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
1021
1022         * mini.c (mono_patch_info_hash): Fix the handling of 
1023         MONO_PATCH_INFO_INTERNAL_METHOD.
1024         (mono_patch_info_equal): Ditto.
1025
1026 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
1029         in a few places.
1030         
1031         * mini-llvm.c: Add some infrastructure for AOT support.
1032
1033 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * mini-llvm-cpp.c: Update to the latest llvm api.
1036         
1037         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
1038         option to false to prevent llvm from installing signal handlers which
1039         trip up the gc.
1040         
1041 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
1042
1043         * cpu-x86.md:
1044         * cpu-amd64.md: Revert previous change as those instructions
1045         take 2 separate arguments. Remember to read the arch docs more
1046         carefully next time.
1047
1048 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1049
1050         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
1051
1052 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
1053
1054         * mini-ppc.c: exploit multiple load/store units if available (rest of
1055         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
1056         http://bugzilla.novell.com/show_bug.cgi?id=487846).
1057
1058 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
1059
1060         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
1061         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
1062
1063 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
1064
1065         * cpu-x86.md: Fix missing clobbering from trancendental simd
1066         ops.
1067
1068         * cpu-amd64.md: Same.
1069
1070 2009-07-14 Jerry Maine <crashfourit@gmail.com>
1071
1072         Contributed under the terms of the MIT/X11 license by
1073         Jerry Maine <crashfourit@gail.com>.
1074
1075         * basic-simd.cs: Added tests for single and doulble indexers.
1076
1077         * cpu-amd64.md: Added simd opcode information.
1078
1079         * mini-amd64.c: Added IR to native simd generation code.
1080         Added simd register names and function that returns them.
1081
1082         * mini-amd64.h: Added marcos to turn on simd code compilation in
1083         amd64. Added max simd register count marco. Added caller/callee
1084         register mask marcos. Added marcos to use simd register bank.
1085
1086         * mini.h: Added helper marco for shufling dwords and simple
1087         floats.
1088
1089 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
1090
1091         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
1092
1093         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
1094
1095         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
1096         the length of the native code as well.
1097
1098         * basic-simd.cs: Add a test for #521662.
1099
1100 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
1101
1102         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
1103
1104 2009-07-13  Mark Probst  <mark.probst@gmail.com>
1105
1106         * mini.c: Register function for getting the IP from a signal
1107         context with metadata.
1108
1109 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
1110
1111         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
1112         call a generic class init trampoline if needed. Fixes #519336.
1113
1114         * generics.cs: Add a test.
1115         
1116 2009-07-09  Mark Probst  <mark.probst@gmail.com>
1117
1118         * method-to-ir.c: When doing a call which might be remote from
1119         shared generic code to other shared code with open type arguments,
1120         get the remoting invoke wrapper from the RGCTX and do an indirect
1121         call to it.
1122
1123 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
1124
1125         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
1126         after the unbox trampoline in the full-aot case.
1127
1128 2009-07-02  jonas echterhoff <jonas@unity3d.com>
1129         
1130         * mini.c: Move initialization of jit_mutex before debugger initialization
1131         
1132         to avoid crashes.
1133         
1134         
1135         * Info.plist: added Info.plist and link flag to enable the mono executable
1136         to access other processes. Requires codesigning of the executable to work.
1137         
1138         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
1139         
1140         compile on OS X.
1141         
1142
1143 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
1144
1145         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
1146
1147 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
1148
1149         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
1150         when the generic instance is an instantiation of a subclass of the
1151         methods class. Fixes #517166.
1152
1153 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
1154
1155         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
1156         code.
1157
1158         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
1159         AOTed code.
1160
1161         * CMakeLists.txt: Add minimal support for installation.
1162
1163 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
1164
1165         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
1166         determine whenever a method is directly callable to a separate function.
1167
1168         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
1169         needed ones as a result of the previous change.
1170
1171         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
1172         type of register arrays.
1173
1174         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
1175         type of register arrays.
1176
1177 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
1178         
1179         Contributed under the terms of the MIT/X11 license by
1180         Jerry Maine <crashfourit@gail.com>.
1181
1182         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
1183
1184 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1185
1186         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
1187
1188 2009-06-24  Neale Ferguson <neale@sinenomine.net>
1189
1190         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
1191         dump of structure return value. Fix some formatting.
1192         * cpu-s390x.md: Fix lengths of instruction sequences.
1193         * mini-s390.c: Minor formatting changes.
1194
1195 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1196
1197         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
1198         Use sigaction on freebsd as well.
1199
1200 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
1201
1202         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
1203         uses #ifdef on it.
1204         
1205         * mini.c (mini_init): Revert a change which breaks cross-compilation.
1206
1207 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1208
1209         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
1210
1211 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1212
1213         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
1214
1215 2009-06-20  Martin Baulig  <martin@ximian.com>
1216
1217         * debug-mini.c
1218         (MonoDebuggerThreadFlags): New enum typedef.
1219         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
1220         (mono_debugger_thread_created): Added `gpointer func' argument;
1221         initialize the new `thread_flags' field.
1222
1223 2009-06-18  Martin Baulig  <martin@ximian.com>
1224
1225         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
1226         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
1227
1228         * debug-debugger.c
1229         (mini_debugger_set_attach_ok): New function; sets the attach-ok
1230         flag in `MONO_DEBUGGER__info.runtime_info'.
1231
1232         * driver.c
1233         (mono_main): Call mini_debugger_set_attach_ok() if generics
1234         sharing is disabled.
1235
1236 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
1237
1238         * aot-compiler.c (add_wrappers): Fix a warning.
1239
1240         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
1241         the ppc load/store macro changes.
1242
1243 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
1244
1245         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
1246
1247         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
1248         not just the got symbol.
1249
1250         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
1251         on ppc.
1252
1253         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
1254         ppc.
1255         
1256         * aot-compiler.c: Remove some fixmes.
1257
1258         * driver.c (mono_main): Print a helpful message when cross-compiling.
1259
1260         * mini.c (mini_init): Disable signal handlers when cross-compiling.
1261
1262         * method-to-ir.c (initialize_array_data): Do the optimization if the
1263         target byte order is little endian, instead of the host byte order.
1264
1265         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
1266         wrappers into the mscorlib image, Emit a unique plt symbol for each
1267         image, emit symbols for plt entries.
1268
1269         * image-writer.c (img_writer_emit_symbol_size): New function to emit
1270         a .size directive.
1271         
1272 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
1273
1274         * aot-compiler.c (add_wrappers): Avoid calling 
1275         mono_marshal_get_type_info () since it can assert for some types.
1276
1277         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
1278         ldtoken are used inside wrappers.
1279
1280         * helpers.c: Add support for prefixing tools with the arch name.
1281
1282         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
1283         quantities when using ilp32.
1284
1285         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
1286         spill slots. Use sizeof(mgreg_t) for the spill slot size.
1287
1288         * image-writer.c: Use .long on ilp32.
1289
1290         * aot-compiler.c: Use 32 bit loads on ilp32.
1291         
1292 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
1293
1294         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
1295
1296         * mini-ops.h: Use TARGET_POWERPC define for consistency.
1297
1298         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
1299
1300         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
1301         second got slot of every aot image.
1302         
1303         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
1304         aot on platforms with function pointers.
1305
1306         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
1307         support for aot/full aot on ppc/ppc64.
1308         
1309         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
1310         arguments which are needed on ppc.
1311
1312         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
1313         argument.
1314
1315         * mini-trampolines.c aot-runtime.c: Update after the above changes.
1316         
1317         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
1318
1319         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
1320
1321         * aot-compiler.c (emit_got_info): Fix reading unused memory.
1322
1323         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
1324
1325 2009-06-17  Geoff Norton  <gnorton@novell.com>
1326
1327         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
1328
1329 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
1330
1331         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
1332         to control whenever the dwarf writer is in xdebug or aot mode.
1333         (emit_class_dwarf_info): Use a separate abbrev for structures without
1334         children.
1335
1336         * aot-compiler.c: Pass the appending parameter to 
1337         mono_dwarf_writer_create ().
1338
1339         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
1340         falls through to its next bblock. Fixes #513931.
1341
1342         * iltests.il: Add a test.
1343
1344         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
1345         infor even if emit_line is FALSE, as the apple linker seems to require it.
1346
1347         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
1348
1349         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
1350         gcc does.
1351         (emit_fde): Ditto.
1352
1353 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
1354
1355         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
1356         mips build.
1357
1358 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
1359
1360         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
1361         'has_call_handler' fields.
1362
1363         * method-to-ir.c (mono_method_to_ir): Set them if needed.
1364
1365         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
1366         first bblock if not needed. Fixes #512790.
1367         
1368 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1369
1370         * aot-compiler.c (mono_compile_assembly): Fix a warning.
1371         
1372         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
1373         wrappers.
1374
1375         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
1376         remoting-invoke-with-check wrappers, which are not needed when running with
1377         full-aot, since it doesn't support remoting.
1378         
1379 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1380
1381         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
1382
1383         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
1384         method info, it is not used anymore.
1385
1386         * mini.h: Bump AOT file format version.
1387         
1388         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
1389         word smaller.
1390
1391         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
1392         change above.
1393         
1394         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
1395
1396         * mini.h: Bump AOT file format version.
1397         
1398 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1399
1400         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
1401         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
1402         iphone.
1403
1404         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
1405         of CKFINITE and FBGE for VFP.
1406
1407 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * aot-compiler.c: Don't align code to 16 bytes on arm.
1410         
1411         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
1412         before the methods they belong to.
1413
1414         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
1415         the full-aot case if possible, since the trampoline will be called right 
1416         away.
1417
1418         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
1419         trampolines to 1024 after the change above.
1420
1421         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
1422         trampoline to save 8 bytes per trampoline.
1423
1424         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
1425         change above.
1426
1427 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1428
1429         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
1430
1431 2009-06-08  Martin Baulig  <martin@ximian.com>
1432
1433         * debug-mini.c
1434         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1435         (_mono_debugger_throw_exception): Don't make this static.
1436         (_mono_debugger_unhandled_exception): Likewise.
1437         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1438
1439         * debug-mini.c
1440         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1441         (_mono_debugger_throw_exception): Add function prototype.
1442         (_mono_debugger_unhandled_exception): Likewise.
1443
1444         * mini-exceptions.c
1445         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1446         arg; return the first exception handler if the exception is caught
1447         and we're running inside the debugger.
1448         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1449         improve exception handle inside runtime-invoke, check whether the
1450         exception is actually caught in the method being invoked and not
1451         by the runtime-invoke-wrapper.
1452
1453 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1454
1455         * image-writer.c: Improve support for the osx assembler.
1456
1457         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
1458         support them.
1459
1460 2009-06-08  Martin Baulig  <martin@ximian.com>
1461
1462         * debug-mini.c
1463         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1464         (_mono_debugger_throw_exception): Don't make this static.
1465         (_mono_debugger_unhandled_exception): Likewise.
1466         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1467
1468         * debug-mini.c
1469         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1470         (_mono_debugger_throw_exception): Add function prototype.
1471         (_mono_debugger_unhandled_exception): Likewise.
1472
1473         * mini-exceptions.c
1474         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1475         arg; return the first exception handler if the exception is caught
1476         and we're running inside the debugger.
1477         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1478         improve exception handle inside runtime-invoke, check whether the
1479         exception is actually caught in the method being invoked and not
1480         by the runtime-invoke-wrapper.
1481
1482 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
1483
1484         * image-writer.c (append_subsection): Don't align subsections of the
1485         debug_line section as a workaround.
1486
1487         * dwarfwriter.c: Emit line number info in the AOT case as well.
1488
1489 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
1490
1491         This patch is contributed under the terms of the MIT/X11 license
1492
1493        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
1494        code_len <= code_size
1495
1496 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
1497
1498         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
1499
1500 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
1501
1502         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
1503         invoke wrappers, we now use trampolines instead.
1504
1505 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1506
1507         * mini-darwin.c: The exception thread must not be registered with
1508         the GC.
1509
1510 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1511
1512         * mini-gc.c: Disable the code because it makes SGen crash.
1513
1514 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
1515
1516         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
1517         instead of asserting.
1518
1519 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1520
1521         * aot-compiler.c (mono_compile_assembly): Move the creation of the
1522         output file after the code has been compiled.
1523
1524 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
1525
1526         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
1527
1528 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1529
1530         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
1531         entries distinction to simplify the code.
1532
1533         * mini.h: Bump AOT file format version.
1534         
1535 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
1536
1537         * objects.cs: Fix the signature of one of the tests.
1538
1539         * mini.c (mini_create_ftnptr): New helper function, moved here from
1540         object.c.
1541         (mini_get_addr_from_ftnptr): Ditto.
1542         (mini_init): Install the new helpers.
1543
1544 2009-05-28  Martin Baulig  <martin@ximian.com>
1545
1546         Correctly initialize the debugger when embedding Mono.
1547
1548         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
1549         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
1550         see documentation in mini_debug_running_inside_mdb().
1551
1552         * debug-debugger.c
1553         (mini_debug_running_inside_mdb): New function to check whether
1554         we're running inside mdb.
1555
1556         * mini.c (mini_init): Call mini_debugger_init() if we're running
1557         inside the debugger.
1558
1559         * driver.c (mono_main): Moved the call to mini_debugger_init()
1560         into mini_init() to make this work when embedding Mono.
1561
1562         * debug-debugger.c (mini_debugger_init): Warn about duplicate
1563         calls to mini_debugger_init().
1564
1565         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
1566         mono_debugger_main() -> mini_debugger_main() and put them inside a
1567         `MONO_DEBUGGER_SUPPORTED' conditional.
1568
1569 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
1570
1571         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
1572         this is no longer in use.
1573         * mini.h: Same.
1574
1575 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
1576
1577         * mini-sparc.c (add_outarg_load): Fix the sparc build.
1578
1579         * aot-compiler.c (emit_method_code): Always write out C style symbols for
1580         methods.
1581
1582 2009-05-27  Martin Baulig  <martin@ximian.com>
1583
1584 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1585
1586         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
1587         long_conv_to_r_un to 64 bits.
1588
1589         * cpu-x86.md: Increase the instruction size due to the changes.
1590
1591         * iltests.il.in: Add regression test.
1592
1593         Fixes #467201.
1594
1595 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1596
1597         * objects.cs: Move the previous test from basic.cs to here.
1598
1599 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1600
1601         * basic.cs: Add regression test for #506915.
1602
1603 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1604
1605         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
1606         optimization we must check the bb of the first byte of stobj as
1607         it's the only one set in cil_offset_to_bb.
1608
1609         Fixes #506915.  
1610
1611 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
1612
1613         * image-writer.c: Fix pointer directive on ppc64.
1614
1615 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
1616
1617         * image-writer.c (asm_writer_emit_section_change): Avoid using
1618         .bss subsections on ppc too.
1619
1620 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * image-writer.c: Fix the definition of TARGET_ASM_....
1623         
1624         * image-writer.c: Fix the emission of assembler directives in the last
1625         change.
1626
1627         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
1628         exception throwing code to accomodate ppc64.
1629
1630         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
1631         size to work on ppc64 too.
1632
1633         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
1634         too.
1635
1636         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
1637         the assembler dialect instead of using platform specific defines.
1638
1639 2009-05-22  Geoff Norton  <gnorton@novell.com>
1640
1641         * mini-arm.c (get_call_info): If a structure is split between the stack
1642         and argument registers, we should not advance the stack pointer by the entire
1643         native size, but just by the amount that spilled.
1644
1645 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
1646
1647         * mini-arm.c (get_call_info): Handle structures with alignment requirements
1648         correctly.
1649
1650 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1651
1652         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
1653         wrappers normally.
1654         
1655         * aot-compiler.c (add_extra_method): Fix up the collection of extra
1656         methods so wrapper don't get added twice.
1657         (add_generic_instances): Don't add methods of arrays.
1658
1659         * generics.cs: Mark one test as !FULLAOT.
1660
1661 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1662
1663         * mini-x86.c (emit_move_return_value): Remove unused vars.
1664
1665 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1666
1667         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
1668         decomposing 8 bytes structs into a LCALL.
1669
1670         * mini-x86.c (emit_move_return_value): We no longer push the vtype
1671         pointer for where to store the returned regs.
1672
1673         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
1674         state the concern.
1675
1676         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
1677
1678 2009-05-20  Miguel de Icaza  <miguel@novell.com>
1679
1680         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
1681         without getenv.
1682
1683 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1684
1685         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
1686
1687         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
1688         generics.
1689
1690 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
1691
1692         * local-propagation.c (mono_local_cprop): Avoid local propagation
1693         across paired add/sub if the first instruction dest reg is it's
1694         source reg. For example:
1695
1696         int_add_imm R12 <- R12 [1] clobbers: 1
1697         int_sub_imm R42 <- R12 [1] clobbers: 1
1698
1699         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
1700         maintain the math identify.
1701
1702         Fixes #505375.
1703
1704 2009-05-20  Andreia Gaita  <avidigal@novell.com>
1705
1706         * Makefile.am: avoid going on the network just to get the revision,
1707         use git log instead
1708
1709 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
1710
1711         Fixed estimate for short branches on amd64 (they were off mark, and
1712         enabling call prolog-epilog instrumentations caused assertions).
1713         * mini.h (struct MonoBasicBlock): added max_length field to hold the
1714         estimate for the maximum length of this basic block.
1715         * mini-amd64.c:
1716         - mono_arch_emit_prolog: compute max_length for each basic block
1717           (instead of max_offset), and inflate size estimate also for entry bb
1718           in case of code instrumentation.
1719         - mono_arch_output_basic_block: get rid of "cpos" (the current
1720           estimated "position" in the code), and always use "offset" instead,
1721           which is accurate; at the beginning of the function quickly recompute
1722           max_offset for all the remaining blocks, starting from the current
1723           cfg->code_len (which is correct, and not estimated) and using the
1724           estimated block lengths computed previously.
1725
1726 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
1727
1728         * exceptions-ppc.c: Remove the caching from the trampoline creation 
1729         functions, it is already done in the caller.
1730
1731         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
1732
1733         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
1734         MONO_ARCH_GSHARED_SUPPORTED define.
1735
1736         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
1737
1738         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
1739         function.
1740
1741 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
1742
1743         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
1744         call to mono_marshal_get_rgctx_invoke ().
1745
1746         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
1747         mono_marshal_get_static_rgctx_invoke (), all platforms which support
1748         gshared use the static rgctx trampolines now.
1749         
1750         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
1751         platform supports it.
1752
1753 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1754
1755         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
1756
1757         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
1758
1759 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
1762
1763         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
1764         for ppc.
1765
1766 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
1767
1768         Made it possible for mono_arch_instrument_epilog to preserve
1769         argument registers, otherwise instrumenting the "epilogue" before
1770         a tail call would clobber them.
1771         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
1772         if like mono_arch_instrument_epilog but with an additional parameter
1773         that states if argument registers must be preserved.
1774         * mini.c: implemented mono_arch_instrument_epilog as a call to
1775         mono_arch_instrument_epilog_full without asking to preserve argument
1776         registers (this makes the existing code work as usual).
1777         * mini-amd64.c:
1778         - mono_arch_instrument_epilog: add parameter to transform it into
1779         mono_arch_instrument_epilog_full, and preserve argument registers
1780         when required.
1781         - mono_arch_output_basic_block, OP_TAILCALL case: call
1782         mono_arch_instrument_epilog_full.
1783         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
1784         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
1785         only transformed mono_arch_instrument_epilog into
1786         mono_arch_instrument_epilog_full.
1787
1788 2009-05-15  Geoff Norton  <gnorton@novell.com>
1789
1790         * mini-darwin.c: This works on arm now.
1791
1792 2009-05-14  Geoff Norton  <gnorton@novell.com>
1793
1794         * jit.h, driver.c: Allow full-aot to be decided programatically by the
1795         embedding api.
1796
1797 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
1798
1799         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
1800         label names.
1801
1802         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
1803         wrappers during full aot mode correctly.
1804
1805         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
1806         methods correctly.
1807
1808         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
1809         mono_metadata_type_hash ().
1810
1811 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
1812
1813         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
1814         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
1815         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
1816         Removed MONO_INST_BRLABEL from the instruction flags, and the
1817         remaining code that used it, because we do not support branches inside
1818         basic blocks (and branch target labels) anymore.
1819         * Makefile.am: As part of the above cleanup, remove reference to
1820         BURG files which don't exist anymore.
1821
1822 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
1823
1824         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
1825         osx.
1826
1827         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
1828         to use mono_arch_throw_corlib_exception.
1829
1830         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
1831         mono_arch_throw_corlib_exception for throwing corlib exceptions.
1832
1833         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
1834         domain mempool.
1835
1836         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
1837
1838         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
1839         for the got to make debugging easier and to avoid confusing it with the
1840         system got.
1841         
1842         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
1843         method so a breakpoint can be set when using gdb.
1844
1845 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
1846
1847         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
1848         on mono_method_get_imt_slot ().
1849
1850         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
1851         num_decodes variables.
1852
1853         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
1854         change as it doesn't seem to work.
1855         
1856         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
1857         wrappers.
1858
1859 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
1860
1861         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
1862         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
1863
1864         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
1865         builder when using full aot.
1866
1867         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
1868         here, it is already handled.
1869         
1870         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
1871         correctly for IMT.
1872
1873         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
1874
1875         * mini-arm.h: Enable IMT for full aot.
1876         
1877         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
1878         arch doesn't support it.
1879
1880         * mini.c (mini_init): Don't disable IMT for full aot if the
1881         architecture supports it.
1882
1883         * mini.h (MonoAotTrampoline): New enum containing the different types
1884         of 'numerous' trampolines.
1885         (MONO_AOT_FILE_VERSION): Bump this.
1886
1887         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
1888         static rgctx trampolines. Add support for full-aot IMT thunks.
1889
1890         * mini-amd64.h: Enable IMT for full aot.
1891
1892         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
1893         to exclude tests belonging to a category.
1894
1895         * generics.cs: Mark some tests with a !FULLAOT category.
1896
1897         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
1898         generics tests.
1899
1900 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
1901
1902         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
1903         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
1904         (emit_plt): Fix a warning.
1905
1906 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
1907
1908         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
1909         back into aot-compiler.c to a place where the other functions shared by
1910         the runtime and aot compiler are.
1911         
1912         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
1913         as done previously, instead of in MonoAotFileInfo, since pointers might have
1914         alignment requirements.
1915
1916         * mini.h: Bump AOT file format version.
1917
1918 2009-05-10  Miguel de Icaza  <miguel@novell.com>
1919
1920         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
1921         that is used at runtime from the aot-compiler.c, this makes it
1922         work on setups that remove the AOT compiler from the output
1923         image. 
1924
1925 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
1926
1927         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
1928         PPC.
1929
1930         * mini-ppc.h: Enable static rgctx trampolines for ppc.
1931
1932         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
1933
1934         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
1935         stuff to mono_arch_decompose_long_opts ().
1936         (mono_decompose_opcode): Remove some dead code.
1937
1938 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
1939
1940         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
1941         cmethod can be null for quite a some reasons.
1942
1943 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
1944
1945         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
1946
1947 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
1948
1949         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
1950
1951 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
1952
1953         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
1954         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
1955         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
1956         calls returning structures by addr on amd64.
1957
1958         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
1959
1960         * iltests.il.in: Restructure the tail call tests a bit.
1961         
1962 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
1963
1964         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
1965         for virtual methods too.
1966
1967 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
1968
1969         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
1970         due to regression in verifying System.dll.
1971
1972 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
1973
1974         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
1975         in dynamic methods.
1976
1977         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
1978         instances.
1979
1980         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
1981         g_str_hash () which can change.
1982
1983         * driver.c (mini_regression): Disable optimizations not supported by
1984         the cpu. Fixes #500019.
1985
1986         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
1987         build.
1988
1989 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
1990
1991         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
1992         to the latest LLVM code.
1993
1994 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
1995
1996         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
1997
1998 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
1999
2000         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
2001         x86/amd64.
2002
2003         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
2004         no longer saving offsets, so just save the patch types along with the other
2005         info.
2006         * aot-runtime.c (load_patch_info): Update after the changes to 
2007         encode_patch_list ().
2008         (decode_got_entry): Removed, merged into load_patch_info ().
2009         (is_shared_got_patch): Removed, call the same function from
2010         aot-compiler.c.
2011
2012         * mini.h: Bump aot file format version.
2013         
2014         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
2015         half-finished no-dlsym code.
2016
2017         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
2018         option.
2019
2020         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
2021         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
2022
2023 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
2024
2025         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
2026         buffer length to work with AOT code.
2027
2028         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
2029         ldfld/stfld opcodes.
2030
2031         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
2032         as it is not used.
2033
2034         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
2035
2036         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
2037
2038         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
2039         LLVM API.
2040
2041         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
2042         if needed. Don't decompose long operations when using llvm.
2043
2044 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
2045
2046         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
2047         PAGESIZE constant.
2048
2049         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
2050
2051 2009-05-03  Martin Baulig  <martin@ximian.com>
2052
2053         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
2054         mono_debugger_insert_method_breakpoint() since the class init
2055         handler we're inserting at the top of the method already gives us
2056         a notification.
2057
2058 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
2059
2060         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
2061         to mono_arch_decompose_long_opts () for x86 and arm.
2062
2063 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
2064
2065         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
2066         TARGET_AMD64 here.
2067
2068 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
2069
2070         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
2071         JIT code.
2072
2073 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2074
2075         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
2076         number of trampolines used in full-aot mode.
2077
2078         * aot-compiler.c: Add an ntrampolines option to set the number of 
2079         trampolines emitted in full-aot mode.
2080
2081 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
2082
2083         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
2084         a volatile load. Get rid of get_tempname (), llvm assigns names
2085         automatically.
2086
2087         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
2088         builder function.
2089
2090         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
2091         a value.
2092
2093         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
2094         level 1.
2095
2096         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
2097         to the same register as a fixed sreg2. Fixes #497271.
2098
2099         * iltests.il.in: Add a new test.
2100
2101 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2102
2103         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
2104         stack, since pushes complicate exception handling.
2105
2106         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
2107         the stack if they are passed using moves.
2108
2109         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2110
2111         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
2112         when using llvm.
2113
2114         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
2115         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
2116         of FMOVE if it is an R4.
2117
2118 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
2119
2120         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
2121
2122         * mini.h (LLVMCallInfo): New structure to store calling convention 
2123         information for the LLVM back end similar to the CallInfo structures in 
2124         the back-ends.
2125
2126         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
2127         call information in a format usable by LLVM.
2128         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
2129
2130         * method-to-ir.c (mono_emit_call_args): Emit calls using 
2131         mono_llvm_emit_call () when compiling using LLVM.
2132
2133         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
2134         comments to all functions. Fix memory leaks. Add a public init/cleanup
2135         function.
2136
2137         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
2138
2139         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
2140         mono_array_new_va () jit icall.
2141         
2142 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
2143
2144         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
2145         multiple machine description files to be specified.
2146         * mini-ops.h: fixes for cross-compilation.
2147
2148 2009-04-22  Miguel de Icaza  <miguel@novell.com>
2149
2150         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
2151         some porting work.
2152
2153 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
2154
2155         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
2156         to prevent asserts in various passes. Fixes #497220.
2157
2158 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
2159
2160         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
2161         a racy assert.
2162
2163         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
2164         table to avoid duplicates.
2165
2166         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2167         
2168         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
2169         option is used.
2170
2171 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2172
2173         * mini.c (mini_method_verify): Fail fulltrust code if the exception
2174         is for method or field access.
2175
2176 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
2177
2178         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
2179         a Value to stdout.
2180
2181         * mini-llvm.c (mono_llvm_emit_method): Use it.
2182         
2183         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
2184         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
2185         on volatile values.
2186
2187         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
2188         synchronized methods.
2189
2190         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
2191
2192         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
2193
2194         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
2195         OP_LOADI8_MEM.
2196
2197         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
2198         allowing some options to be set dynamically.
2199
2200 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
2201
2202         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
2203         unconditional branch.
2204
2205         * mini.h (MonoTrampolineType): Add new trampoline type 
2206         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
2207         compiled code.
2208
2209         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
2210         function.
2211
2212         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
2213         creation function.
2214
2215         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
2216         is enabled. Instead, use the llvm vcall trampoline.
2217         
2218         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
2219
2220         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
2221         
2222         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
2223         functions.
2224
2225         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
2226         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
2227
2228         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
2229         OP_IA64_CSET opcode.
2230
2231         * mini.c: Fix a warning.
2232
2233         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
2234         THROW to the appropriate llvm type.
2235
2236 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
2237
2238         * mini.c (mini_method_compile): Add statistics for methods JITted
2239         with/without LLVM.
2240
2241 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2242
2243         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
2244         OP_IA64_CMP_<cond>_IMM opcodes.
2245
2246 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2247
2248         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
2249         corlib exceptions.
2250
2251         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
2252         correctly.
2253
2254         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
2255         GENERICINST.
2256
2257 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
2258
2259         * mini-exceptions.c : add thread id to EXCEPTION trace message.
2260
2261 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2262
2263         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
2264         support.
2265
2266         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
2267         rgctx invoke trampolines for x86.
2268
2269         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
2270         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
2271         (mono_arch_get_vcall_slot): Simplify this.
2272
2273 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
2274
2275         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
2276         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
2277
2278 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
2279
2280         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
2281         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
2282
2283         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
2284
2285         * liveness.c (visit_bb): Remove a needless assert.
2286
2287 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
2288
2289         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
2290         full aot support to the arch specific code.
2291
2292         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
2293
2294         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
2295
2296         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
2297         
2298         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
2299         collect information about the delegate invoke impl trampolines.
2300
2301         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
2302         to save trampolines during full-aot mode.
2303
2304         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
2305         creation function which returns a trampoline which sets the rgctx
2306         argument.
2307         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
2308         wrapper if possible.
2309         (mono_delegate_trampoline): Ditto.
2310
2311         * mini.c (mono_jit_runtime_invoke): Ditto.
2312
2313         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
2314         
2315         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
2316
2317         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2318         
2319 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
2320
2321         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
2322         just setting the opcode to OP_NOP.
2323
2324 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
2325
2326         * mini.c (mini_method_compile): Put the last change inside an 
2327         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
2328         
2329         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
2330         and extend live ranges to cover the whole method when using xdb.
2331
2332         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
2333         do it in the trampolines.
2334
2335         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
2336         needed.
2337
2338         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
2339         
2340         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
2341         call code in full-aot mode since IMT is disabled there.
2342         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
2343         new JIT no longer has that restriction.
2344
2345         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2346
2347         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
2348         a more compact format.
2349         (mono_aot_wrapper_name): New function to return a unique name for a
2350         wrapper method, also used by the AOT runtime.
2351
2352         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
2353         aot-compiler.c.
2354
2355         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
2356         when a ICollection<T> etc is encountered.
2357         (add_generic_instances): Process method arguments/locals too.
2358         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
2359         trampoline names.
2360
2361         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
2362         
2363 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
2364
2365         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
2366
2367         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
2368
2369         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
2370         representing the result of the decomposition. Nullify instructions
2371         instead of setting them to OP_NOP since nops can't have registers
2372         set.
2373
2374 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
2375
2376         * aot-compiler.c (mono_compile_assembly): Split this huge function into
2377         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
2378         info. Strip 'mapping symbols' on ARM.
2379
2380         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
2381         
2382         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
2383         this with the native genmdesc.
2384
2385 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
2386
2387         * aot-runtime.c:  Fixing the MSVC build.
2388
2389         Code is contributed under MIT/X11 license.
2390
2391 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2392
2393         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
2394         JITted code depends on it.
2395
2396 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2397
2398         * aot-compiler.c: Use new MonoGenericParam accessors.
2399
2400 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2401
2402         Reduce memory usage and improve correctness wrt MonoGenericParam
2403         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
2404         handing.  Avoid allocating MonoGenericParams, but use the ones in
2405         the container itself.
2406
2407 2009-04-07  Miguel de Icaza  <miguel@novell.com>
2408
2409         * tasklets.c: Return exceptions in the out argument.
2410
2411 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2412
2413         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
2414         opcode. Use pointer types in more places instead of casting them to 
2415         integers.
2416
2417         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
2418         optimizations.
2419         (mono_llvm_optimize_method): New helper function to optimize a method.
2420
2421         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
2422         widening code so it could be called from more places.
2423         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
2424         code paths in the call opcodes.
2425
2426 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
2427
2428         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
2429
2430 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
2431
2432         * dwarfwriter.c: Use _ to separate class name 
2433         components as gdb can't handle '.'. Represent reference variables
2434         as 'class <NAME>&'.
2435         
2436         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
2437
2438         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
2439         
2440         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
2441
2442         * gc-test.cs: New file with GC stack marking tests.
2443         
2444         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
2445         negative numbers for vfp.
2446
2447         * basic-float.cs: Add a test.
2448         
2449 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
2450
2451         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
2452
2453 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
2454
2455         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
2456         part of tasklet/continuation support.
2457
2458 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
2459
2460         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
2461         amd64 opcodes inside an ifdef.
2462
2463         * dwarfwriter.c: Emit inheritance information for classes, emit fields
2464         of complex types.
2465         
2466         * dwarfwriter.c (emit_type): Emit the class info for classes.
2467
2468 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
2469
2470         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
2471
2472         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
2473
2474         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
2475
2476         * ssa.c (mono_ssa_compute): Fix some memory leaks.
2477
2478 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
2479
2480         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
2481
2482         * mini-llvm.c: Update comments.
2483
2484         * mini.h (COMPILE_LLVM): New macro.
2485
2486         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
2487
2488         * ssa.c (mono_ssa_compute): Ditto.
2489         
2490         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
2491         the unwind ops from a DWARF FDE.
2492
2493         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
2494         methods by extracting the dwarf unwind ops from the unwind info generated
2495         by LLVM.
2496         
2497         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
2498         calls.
2499
2500         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
2501         addressing modes.
2502
2503 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
2504
2505         * Makefile.am (llvm_sources): Enable this.
2506
2507         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
2508         failing back to the JIT if something cannot be handled.
2509
2510         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
2511         compiling with LLVM.
2512
2513         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
2514         compiling with LLVM.
2515
2516         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
2517         compiling with LLVM.
2518
2519         * mini-ops.h: Add a few opcodes needed by LLVM.
2520
2521         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
2522         has no unwind info.
2523
2524         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
2525         backend.
2526
2527         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
2528
2529         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
2530
2531 2009-04-01  Mark Probst  <mark.probst@gmail.com>
2532
2533         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
2534         ridiculously large methods.
2535
2536 2009-03-31  Martin Baulig  <martin@ximian.com>
2537
2538         * debug-debugger.c (debugger_remove_breakpoint): Call
2539         mono_debugger_remove_class_init_callback ().
2540
2541 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
2542
2543         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
2544         right before emitting code, not at the start.
2545
2546         * mini.c (mono_postprocess_patches): Extract this into a separate function
2547         from mono_codegen ().
2548
2549         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
2550         byref types correctly.
2551
2552 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
2555         by the last change.
2556
2557 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
2558
2559         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
2560         indirect calls, this avoids problems where get_vcall_slot () would get
2561         confused by the native code for the instruction preceeding the call.
2562         (mono_arch_get_vcall_slot): Simplify this.
2563         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
2564
2565         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
2566         register allocator now seems to depend on them instead of the data in
2567         cpu-<ARCH>.md.
2568
2569         * mini.c (mini_method_compile): Throw the correct type of exception if
2570         mono_method_get_header () fails because of a loading error.
2571
2572 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
2573
2574         * mini.c (mini_method_compile): Clear the loader error if the method
2575         header cannot be decoded.
2576
2577         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
2578         interface methods on proxies correctly.
2579
2580         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
2581         this argument for vtype methods. Add precise liveness info for arguments.
2582
2583         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
2584         LIVERANGE_START/END opcodes.
2585
2586         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
2587         for arguments and values in registers.
2588
2589 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
2590
2591         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
2592         return a valuetype. Fixes #487518.
2593
2594         * iltests.il: Add a test.
2595         
2596         * aot-compiler.c: Use mono_thread_create () to create helper threads.
2597
2598         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
2599         closed over a null reference correctly.
2600
2601 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
2602
2603         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
2604
2605 2009-03-25  Mark Probst  <mark.probst@gmail.com>
2606
2607         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
2608         allocated to the same registers as fixed sregs.
2609
2610 2009-03-24  Mark Probst  <mark.probst@gmail.com>
2611
2612         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
2613         ATOMIC_CAS_IMM ops.
2614
2615         * method-to-ir.c: Handle more cases for
2616         Interlocked.CompareExchange.
2617
2618         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
2619         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
2620         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
2621
2622 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
2623
2624         * aot-runtime.c (decode_method_ref): Fix a warning.
2625
2626         * unwind.c (mono_unwind_frame): Ditto.  
2627
2628 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2629
2630         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
2631         (mono_compile_assembly): Enable the binary writer for full-aot as well.
2632
2633         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
2634         fix the handling of large values in the ALU_PC_G0_NC relocation.
2635
2636 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2637
2638         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
2639
2640 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2641
2642         * method-to-ir.c (mono_spill_global_vars): Support for ternary
2643         ops.
2644
2645 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2646
2647         * method-to-ir.c: MINI_OP3 needs a comma.
2648
2649         * method-to-ir.c, mini.h, mini.c: Remove
2650         mono_init_op_sreg_counts ().
2651
2652 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2653
2654         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
2655         OP_JMP.
2656         
2657         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
2658         assertion.
2659
2660         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
2661
2662         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
2663         code somewhat.
2664
2665 2009-03-21  Mark Probst  <mark.probst@gmail.com>
2666
2667         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
2668         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
2669         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
2670         operations.
2671
2672 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
2673
2674         * driver.c: Change location of gc_wrapper.h.
2675
2676         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
2677         inside finally clauses correctly. Fixes #485721.
2678
2679         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
2680         after the change above.
2681
2682         * exceptions.cs: Add a test.
2683         
2684 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2685
2686         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
2687
2688         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
2689         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
2690         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
2691
2692         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
2693         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
2694
2695 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
2696
2697         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
2698         Simplify logic for ensure_method_is_allowed_to_call_method. 
2699         Handle wrappers on callers.
2700
2701 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2702
2703         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
2704         them don't run yet.
2705
2706         * basic-simd.cs: Fix the names of some test methods.
2707
2708 2009-03-18  Geoff Norton  <gnorton@novell.com>
2709
2710         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
2711
2712 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
2713
2714         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
2715
2716 2009-03-17  Jb Evain  <jbevain@novell.com>
2717
2718         * driver.c: remove now uneeded call to mono_gc_base_init before
2719         mono_profiler_load.
2720
2721 2009-03-17  Jb Evain  <jbevain@novell.com>
2722
2723         * dwarfwriter.c (token_handler): handle more cases.
2724
2725 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
2726
2727         * method-to-ir.c: Remove more dead code (that was required only
2728         because of method_is_safe). Fix compiler warnings.
2729
2730 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
2731
2732         * method-to-ir.c: Remove unneeded/useless method_is_safe
2733         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
2734
2735 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
2736
2737         * mini.c (mini_method_compile): Print the method been compiled with
2738         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
2739         for people not familiar with the runtime.
2740
2741 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
2742
2743         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
2744         a managed object which is later put into a GList. Return its class instead.
2745
2746         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
2747         stack slots when using sgen.
2748
2749 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
2750
2751         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
2752
2753 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
2754
2755         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
2756         > so it works on the first vreg as well.
2757
2758 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
2759
2760         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
2761         trigger randomly.
2762
2763         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
2764         
2765         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
2766         implement GArray.
2767
2768 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
2769
2770         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
2771         native->IL offset mapping.
2772
2773 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
2774
2775         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
2776
2777         * basic.cs: Add a test.
2778
2779 2009-03-11  Mark Probst  <mark.probst@gmail.com>
2780
2781         * mini-x86.c (mono_arch_output_basic_block): Use different
2782         registers in case the ones we want to overwrite are used by the
2783         other operand.  Fixes regression in #480807.
2784
2785 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
2786
2787         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
2788
2789         * dwarfwriter.c (emit_line_number_info): The line number info for
2790         IL code was off by one. Fix that.
2791
2792         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
2793         stack.
2794
2795 2009-03-09  Mark Probst  <mark.probst@gmail.com>
2796
2797         Contributed under the terms of the MIT/X11 license by Steven
2798         Munroe <munroesj@us.ibm.com>.
2799
2800         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
2801         Fixes #483462.
2802
2803 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
2804
2805         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
2806         as well.
2807
2808 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
2809
2810         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
2811         the delegate ctor handling code. Fixes #482638.
2812         
2813         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
2814         #481458.
2815
2816         * iltests.il.in: Add a test.
2817         
2818         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
2819         mini-posix.c.
2820
2821 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2822
2823         * mini-trampolines.c (mono_create_jump_trampoline): If the method
2824         is shared generic code, return the trampoline, even if the method
2825         has already been compiled.  Fixes #479763.
2826
2827         * mini.c, mini.h: New function
2828         mono_jit_find_compiled_method_with_jit_info() which is the same as
2829         mono_jit_find_compiled_method() but also returns the jit info.
2830
2831 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2832
2833         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
2834         for methods which actually have one.  For all other methods, make
2835         sure the this argument var is live the whole method.
2836
2837         * mini.c (mini_method_compile): Every shared method has a
2838         this/vtable/mrgctx info.  Fixes #480807.
2839
2840 2009-03-05  Mark Probst  <mark.probst@gmail.com>
2841
2842         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
2843         generic/imt thunks where some entries branch through the vtable,
2844         while other entries branch directly.
2845
2846 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
2847
2848         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
2849
2850         * mini-windows.c: Ditto.
2851         
2852         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
2853         ctors.
2854
2855 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
2856
2857         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
2858         down an assert.
2859
2860 2009-03-04  Mark Probst  <mark.probst@gmail.com>
2861
2862         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
2863         #481403.
2864
2865 2009-03-04  Mark Probst  <mark.probst@gmail.com>
2866
2867         * exceptions-x86.c: Include debug-mini.h - fixes build.
2868
2869 2009-03-04  Martin Baulig  <martin@ximian.com>
2870
2871         * debug-mini.c: Clean up the exception API and add documentation.
2872         (mono_debugger_handle_exception): New public method; this is
2873         called when throwing an exception or encountering an unhandled one.
2874         (mono_debugger_call_exception_handler): Formerly known as
2875         mono_debugger_handle_exception(); this is used to tell the
2876         debugger that we're about to invoke an exception handler.
2877
2878 2009-03-04  Martin Baulig  <martin@ximian.com>
2879
2880         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
2881         ../metadata/mono-debug-debugger.c; save and reset exception state.
2882
2883 2009-03-02  Martin Baulig  <martin@ximian.com>
2884
2885         * debug-mini.c: Moved the debugger exception handling here from
2886         ../metadata/mono-debug-debugger.c.
2887
2888         * debug-mini.h
2889         (MonoDebuggerExceptionAction): New exception typedef.
2890
2891         * debug-mini.c
2892         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
2893
2894         * exceptions-amd64.c
2895         (mono_amd64_throw_exception): Use the new debugger exception
2896         handling code.
2897
2898         * mini-exceptions.c
2899         (mono_handle_exception_internal): Don't call
2900         mono_debugger_unhandled_exception() here.
2901
2902 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
2903
2904         * mini.c aot-compiler.c: Update after the changes to 
2905         mono_marshal_get_runtime_invoke ().
2906
2907         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
2908         Virtual generic methods might not have method->slot set, work around
2909         that.
2910
2911         * generics.cs: Add a test.
2912
2913 2009-03-02  Geoff Norton  <gnorton@novell.com>
2914
2915         * mini.c:
2916         * driver.c: Allow signal chaining of SIGFPE as well.
2917
2918 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
2919
2920         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
2921         this since it now receives the method not its generic context in the
2922         IMT reg.
2923
2924         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
2925         generic/imt thunks where some entries branch through the vtable, while
2926         other entries branch directly.
2927
2928         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
2929
2930         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
2931         support for interface methods as well.
2932
2933         * mini-trampolines.c: Add support for virtual generic methods in interfaces
2934         using the normal IMT thunks.
2935
2936         generics.cs: Add new tests.
2937         
2938         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
2939         the generic inst to the generic imt thunks. This fixes AOT support, 
2940         improves consistency with the normal IMT thunks, and makes it easier to
2941         add support for interface generic virtual methods later.
2942
2943         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
2944         
2945 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
2946
2947         * driver.c (mono_set_signal_chaining): New public API function to enable
2948         signal chaining on POSIX platforms.
2949
2950         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
2951         (si@lindenlab.com) to implement signal chaining. The original patch was
2952         contributed under the MIT X/11 license:
2953         https://bugzilla.novell.com/show_bug.cgi?id=318894
2954
2955 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
2956
2957         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
2958         too until it can be made to run on amd64.
2959
2960 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
2961
2962         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
2963         to  get_generic_context_from_code () + get_call_info () if possible.
2964
2965 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
2966
2967         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
2968         suspend-on-sigsegv functionality.
2969
2970         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
2971         to suspend when a native SIGSEGV is received. This is useful for debugging
2972         crashes which don't happen under gdb, since a live process contains more
2973         information than a core file.
2974
2975         * mini-exceptions.c (mono_print_thread_dump): Use 
2976         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
2977
2978         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
2979
2980         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
2981         
2982         * basic-float.cs: Disable the tests which currently fail on amd64.
2983
2984         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
2985         value to mono_arch_patch_callsite () to fix crashes.
2986         
2987         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
2988
2989 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
2990
2991         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
2992         nop code by patching the call address to point to the nullified class init
2993         trampoline, as the former does not seem to be safe on SMP machines.
2994
2995 2009-02-23  Mark Probst  <mark.probst@gmail.com>
2996
2997         * mini-ops.h: Fix the argument types for a few x86 opcodes where
2998         they were wrong.
2999
3000 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3001
3002         * basic-float.cs basic-calls.cs: Fix warnings.
3003
3004 2009-02-22  Mark Probst  <mark.probst@gmail.com>
3005
3006         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
3007         correct frame pointer in the LMF.  Should fix #478394.
3008
3009 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
3010
3011         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
3012
3013         * image-writer.c: Make the binary writer less verbose.
3014
3015 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
3016
3017         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
3018         are called from runtime invoke wrappers.
3019
3020 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
3021
3022         * cpu-ppc.md (store_memindex): Increase the size of this.
3023
3024 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3025
3026         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3027
3028         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
3029
3030         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
3031         OP_LCONV_TO_R_UN.
3032
3033         Last fix for of #467201.
3034
3035
3036 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3037
3038         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3039
3040         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
3041         and long_conv_to_r8_2:
3042
3043         Fixed part of #467201.
3044
3045 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3046
3047         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3048
3049         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
3050         conversion to 32 bits.
3051
3052         * cpu-x86.md: Increase the size of int_conv_to_r4.
3053
3054         * basic-float.cs: Add a test for this.
3055
3056         Fixed part of #467201.
3057
3058 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3059
3060         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3061
3062         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
3063         conversion to 64 bits.
3064
3065         * basic-float.cs: Add a test for this.
3066
3067         Fixed part of #467201.
3068
3069 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3070
3071         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3072
3073         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
3074         This behavior is compatible with MS.
3075
3076         * iltest.il.in: Add a test for this.
3077
3078         Fixed part of #467201.
3079
3080 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3081
3082         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3083
3084         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
3085         change the precision of the value.
3086
3087         * cpu-x86.md: Define len for float_conv_to_r4.
3088
3089         * basic-float.cs: Add a test for this.
3090
3091         Fixed part of #467201.
3092
3093 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
3094
3095         * mini.c: Adjust locking order to the new semantics where the loader lock
3096         comes first.
3097
3098 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
3099
3100         * aot-runtime.c:
3101         * mini-amd64.c:
3102         * mini-arm.c:
3103         * mini-ia64.c:
3104         * mini-mips.c:
3105         * mini-ppc.c:
3106         * mini-sparc.c:
3107         * mini-trampolines.c:
3108         * mini-x86.c:
3109         * mini.c:
3110         * tramp-alpha.c:
3111         * tramp-amd64.c:
3112         * tramp-arm.c:
3113         * tramp-hppa.c:
3114         * tramp-ia64.c:
3115         * tramp-mips.c:
3116         * tramp-ppc.c:
3117         * tramp-s390.c:
3118         * tramp-s390x.c:
3119         * tramp-sparc.c:
3120         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
3121
3122 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
3123
3124         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
3125         as it is incorrect.
3126
3127 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3128
3129         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
3130         for cctors if needed.
3131
3132 2009-02-17  Mark Probst  <mark.probst@gmail.com>
3133
3134         * mini-ppc.c: Fix build on Darwin.
3135
3136 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3137
3138         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
3139         version instead of 3 as valgrind doesn't like version 3.
3140
3141         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3142
3143         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
3144         usable for hashing methods.
3145         (emit_extra_methods): Use the new hash to avoid putting every method in the
3146         same hash bucket.
3147
3148         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
3149
3150         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
3151         whenever a method ref could match a method.
3152         
3153         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
3154         test to fail.
3155         
3156         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
3157         methods refs.
3158
3159         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
3160
3161         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
3162         the encoding buffer.
3163
3164         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
3165         mono_method_get_header () on inflated methods as an optimization.
3166
3167 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3168
3169         * ssa.c (fold_ins): Fix another crash if the instruction following the
3170         switch was optimized away.
3171
3172 2009-02-16  Mark Probst  <mark.probst@gmail.com>
3173
3174         Contributed under the terms of the MIT/X11 license by Steven
3175         Munroe <munroesj@us.ibm.com>.
3176
3177         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
3178
3179 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3180
3181         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
3182         around the mono_domain_alloc calls, it is now done by the functions
3183         themselves.
3184
3185         * aot-compiler.c (compile_method): Only add wrappers referenced by
3186         the method if compiling with full AOT.
3187         (mono_compile_assembly): Error out if --aot=full is specified on
3188         a platform where it is not supported.
3189
3190         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
3191         on ARM too.
3192
3193         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
3194         AOT support.
3195
3196         * aot-runtime.c (load_named_code): Handle 
3197         mono_arm_throw_exception_by_token.
3198
3199         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
3200
3201         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
3202         unaligned.
3203
3204         * Makefile.am (fullaotcheck): Exit if a test fails.
3205
3206         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
3207         on ARM.
3208         (mono_compile_assembly): Handle the assembler failing.
3209
3210         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
3211         accepting subsections of .bss.
3212
3213         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
3214         was optimized away.
3215
3216         * aot-compiler.c: Remove some unused includes.
3217         
3218         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
3219         now in MonoImageWriter.
3220
3221         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
3222         code sequence which matches a non-virtual call. Fixes #472654.
3223
3224 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
3225
3226         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
3227         xdebug code.
3228         
3229         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
3230         use the image/dwarf writers directly.
3231
3232         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
3233         field.
3234
3235         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
3236         MonoDwarfWriter.
3237
3238         * image-writer.h: Fix some typos.
3239
3240         * dwarfwriter.h dwarfwriter.c: New files.
3241         
3242         * aot-compiler.c: Extract the DWARF info writing functionality into a 
3243         separate module.
3244
3245         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
3246         argument to return unwind info.
3247
3248         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
3249
3250         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
3251         
3252         * aot-runtime.c (decode_method_ref): Add a case for 
3253         MONO_AOT_METHODREF_WRAPPER_NAME.
3254
3255         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
3256         for AOT.
3257
3258         * aot-compiler.c (encode_method_ref): Use the new constants.
3259
3260         * aot-runtime.c (decode_method_ref): Ditto.
3261
3262         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
3263         be compiled, not the icall itself.
3264
3265 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
3266
3267         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
3268         using decode_method_ref ().
3269
3270         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
3271         convert it to an in32. Fixes #475859.
3272
3273         * arrays.cs: Add a test.
3274
3275 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3276
3277         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
3278         OP_LCONV_TO_U2.
3279
3280         * basic-long.cs: Add a test.
3281
3282 2009-02-12  Mark Probst  <mark.probst@gmail.com>
3283
3284         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
3285         remove the frame pointer in leaf methods which don't receive any
3286         arguments, don't throw exceptions and don't do dynamic stack
3287         allocations.
3288
3289 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3290
3291         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
3292         the fail_tramp changes. Hopefully fixes #475132.
3293
3294 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
3295
3296         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
3297         instead of mono_metadata_signature_dup_full.
3298
3299 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3300
3301         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
3302         for processing jump tables. Fixes #473787.
3303
3304 2009-02-11  Mark Probst  <mark.probst@gmail.com>
3305
3306         * mini-generic-sharing.c: mini_method_get_context() just calls
3307         mono_method_get_context_general() now.
3308
3309         * mini.c, mini.h: Moved get_object_generic_inst(),
3310         construct_object_context_for_method() and
3311         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
3312
3313 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
3314
3315         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
3316         basic block fell through to its successor bblock without a branch. Fixes
3317         #474718.
3318
3319         * iltests.il.in: Add a test.
3320         
3321         * aot-compiler.c (encode_method_ref): Encode methods of array types.
3322         (can_encode_patch): We can now handle arrays of generic parameters and
3323         array methods.
3324
3325         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
3326
3327         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
3328         the AOT file to avoid some #ifdefs in aot-runtime.c
3329
3330         * mini.h: Bump AOT file format version.
3331
3332 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3333
3334         * Makefile.am (fullaotcheck): Make this run the tests.
3335
3336         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
3337
3338 2009-02-10  Mark Probst  <mark.probst@gmail.com>
3339
3340         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
3341         individually.  Fixes #473482.
3342
3343 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3344
3345         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
3346
3347 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
3348
3349         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
3350         (mono_compile_assembly): Hush compile warnings about
3351         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
3352         code path.
3353
3354 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3355
3356         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
3357
3358         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
3359
3360         * aot-compiler.c: Fix arm support.
3361
3362         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
3363         img_writer_emit_unset_mode () function.
3364
3365         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
3366         (mono_unwind_get_dwarf_pc_reg): Ditto.
3367
3368         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
3369         Move almost all platform specific code to a set of arch_ functions, 
3370         and document them to ease porting.
3371         
3372         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
3373
3374         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
3375
3376         * aot-compiler.c: Extract the image writing functionality into a separate
3377         module to reduce the size of this file.
3378
3379 2009-02-09  Geoff Norton  <gnorton@novell.com>
3380
3381         * mini-s390.c: Fix the signature of emit_sig_cookie.
3382
3383 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
3384
3385         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
3386
3387         * aot-runtime.c (is_shared_got_patch): Ditto.
3388
3389         * aot-runtime.c (load_named_code): Cope with the fact that 
3390         decode_got_entry () won't decode the patch fully if its corresponding got
3391         entry is already filled.
3392         
3393         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
3394         Initialize *ji.
3395         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
3396
3397         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
3398         as the moving pointer instead of 'buf' for consistency with the rest of the
3399         codebase.
3400         (mono_arch_create_monitor_exit_trampoline): Ditto.
3401
3402         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
3403         generic_class_init trampolines.
3404         (add_generic_class): Extract some code from add_generic_instances () into a
3405         separate function so it can be called from other places too.
3406         (compile_method): Call add_generic_class () for the classes of inflated methods
3407         referenced by the method.
3408         (can_encode_patch): Allow references to generic parameters.
3409
3410         * aot-runtime.c: Add support the patches required by the new trampolines.
3411         
3412         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
3413         support.
3414
3415         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
3416         full-aot support.
3417
3418         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
3419         this from get_throw_pending_exception, make the signature full aot compatible.
3420
3421         * Makefile.am (fullaotcheck): New target to run full-aot tests.
3422
3423         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
3424
3425         * exceptions.cs: Add a test.
3426
3427 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3428
3429         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
3430         use the DWARF_DATA_ALIGN constant instead.
3431
3432         * exception-<ARCH>.c: Update after the above change.
3433
3434         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
3435         dwarf unwinder.
3436
3437         * mini-arm.c: Enable the dwarf unwinder.
3438
3439         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
3440         instead of mono_class_setup_vtable ().
3441
3442 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3443
3444         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
3445         dwarf unwinder.
3446
3447         * mini-x86.h: Enable the dwarf unwinder.
3448
3449 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
3450
3451         Fix mcs/tests/test-7.cs
3452         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
3453         2009-02-03.
3454
3455 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
3456
3457         * mini.c (print_jit_stats): Remove some unused statistics.
3458
3459 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3460
3461         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
3462
3463 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3464
3465         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
3466         the method we get from mono_object_get_virtual_method() because
3467         that function does it properly, now.
3468
3469 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3470
3471         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
3472         opcodes. Fixes #472775.
3473
3474 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3475
3476         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
3477         fact that mono_find_jit_info() sometimes returns the context
3478         corresponding to the jit info in new_ctx.  Fixes #472600.
3479
3480 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3481
3482         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
3483         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
3484         klass->enum_basetype directly.
3485
3486         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
3487         enum subtypes.
3488
3489         * unwind.c: Avoid 0 sized arrays.
3490
3491 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3492
3493         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
3494         size on systems with 64k pages. Fixes #471389.
3495
3496 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3497
3498         Contributed under the terms of the MIT/X11 license by Steven
3499         Munroe <munroesj@us.ibm.com>.
3500
3501         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
3502         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
3503         necessary.
3504
3505 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3506
3507         Contributed under the terms of the MIT/X11 license by Steven
3508         Munroe <munroesj@us.ibm.com>.
3509
3510         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
3511         comparison fix.
3512
3513         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
3514         The trampoline can be longer on PPC64.
3515
3516 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3517
3518         Contributed under the terms of the MIT/X11 license by Steven
3519         Munroe <munroesj@us.ibm.com>.
3520
3521         * mini-ppc.c: Compiler warning fixes and trivial code
3522         simplifications.
3523
3524 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3525
3526         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
3527         ins->dreg which could be a hardware register, not a vreg.
3528
3529         * aot-compiler.c (emit_method_dwarf_info): Ditto.
3530         
3531         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
3532         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
3533
3534         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
3535         
3536         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
3537         ->dreg, that is not the vreg we are looking for.
3538
3539         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
3540
3541         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
3542         LIVERANGE_END.
3543
3544         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
3545         strange crashes.
3546
3547 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
3548
3549         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
3550
3551         * aot-compiler.c (emit_line_number_info): Fix line number emission when
3552         the line diff is 0.
3553
3554         * aot-compiler.c: Add xdebug support on x86.
3555
3556         * unwind.c: Add x86 support.
3557         
3558         * aot-compiler.c (emit_exception_debug_info): Control the emission of
3559         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
3560
3561         * mini.c (mini_method_compile): Ditto.
3562         
3563         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
3564         the variable index.
3565
3566         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
3567         which mimic .push_section/.pop_section in GAS.
3568         
3569         * aot-compiler.c: Emit precise live range information for variables.
3570
3571         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
3572
3573         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
3574         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
3575         them.
3576
3577         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
3578         the live ranges of variables.
3579
3580         * mini.h (struct MonoMethodVar): Add two fields containing the live range
3581         of the variable in terms of native offsets.
3582
3583 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
3584
3585         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
3586         
3587 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3588
3589         Contributed under the terms of the MIT/X11 license by Steven
3590         Munroe <munroesj@us.ibm.com>.
3591
3592         * exceptions-ppc.c (restore_regs_from_context): Correct operand
3593         order (offset then base reg) for ppc_load_multiple_regs.
3594         (emit_save_saved_regs) Correct operand order for
3595         ppc_store_multiple_regs.
3596         (mono_arch_get_call_filter): Correct operand order for
3597         ppc_load_multiple_regs.
3598
3599         * mini-ppc.c (emit_memcpy): Fix operand order for
3600         ppc_load_reg_update and ppc_store_reg_update.
3601         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
3602         (mono_arch_emit_epilog): Correct operand order for
3603         ppc_load_multiple_regs.
3604
3605         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
3606         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
3607
3608 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3609
3610         * cpu-ppc64.md: Fixed storer4_memindex length.
3611
3612 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
3613
3614         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
3615         line number info.
3616         
3617         * aot-compiler.c (emit_line_number_info): Optimize this.
3618
3619 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
3620
3621         * aot-compiler.c: Disassemble tokens in the IL disassembly.
3622         
3623         * aot-compiler.c: Add debug info for methods without debug info by
3624         emitting an IL file and having the line number info referencing that file.
3625
3626         * aot-compiler.c: Optimize the size of the generated line number info.
3627
3628         * aot-compiler.c: Emit line number info in xdebug mode.
3629
3630         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
3631         million arguments.
3632
3633 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
3634
3635         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
3636
3637         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
3638         is used.
3639
3640 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3641
3642         * basic-calls.cs: Test for the weird crash found on arm.
3643         
3644 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3645
3646         * cpu-arm.md: Increase the size of storer8_membase_reg and
3647         loadr8_membase_reg to 24 bytes to accomodate the extra add.
3648
3649         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
3650         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
3651         reg to LR otherwise we'll be loading/storing from just the offset.
3652
3653 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3654
3655         Question: if we are storing gint32's inside the "*native_offset",
3656         should we change the signature to "gint32 *native_offset" to
3657         ensure that we do not have type definition problems?
3658         
3659         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
3660         an int * as this is what the other function expects, causes
3661         problems with Freescale's compiler that defined int32_t to be a
3662         long and makes int incompatible 
3663
3664 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3665
3666         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
3667         filename conflict with bjam.
3668
3669 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3670
3671         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
3672         as it might use decomposed ops.
3673
3674 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3675
3676         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
3677
3678         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
3679         is defined.
3680
3681         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
3682
3683         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
3684         offsets.
3685
3686         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
3687         way registers are stored in MonoContext on arm.
3688
3689         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
3690         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
3691
3692         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
3693
3694         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
3695
3696         * mini.c (mini_init): Register mono_isfinite.
3697
3698         * jit-icalls.c (mono_isfinite): New jit icall.
3699
3700         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
3701         
3702         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
3703         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
3704         the parent frame.
3705
3706 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3707
3708         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
3709         separate frame and stack pointers, so we must use FP to find the register
3710         spill area.
3711         The FP reg is retrieved from the MonoContext::regs array.
3712
3713 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3714
3715         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
3716         as FPA requires it.
3717
3718 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3719
3720         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
3721         return R4 and R8 when not running under softfloat.
3722
3723         Fixes basic-calls.exe
3724
3725 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3726
3727         * mini-arm.c: Implement some overflow opcodes.
3728
3729 2009-01-29  Miguel de Icaza  <miguel@novell.com>
3730
3731         * ssa.c: handle another alloca.h
3732
3733         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
3734         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
3735         MONO_ARCH_USE_SIGACTION. 
3736
3737         * aot-runtime.c, mini-exceptions.c: Replace platform define with
3738         capability defines.
3739
3740         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
3741
3742         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
3743         PPC targets as sigaction does not exist on all platforms, define
3744         this on a per-platform basis.
3745
3746         Instead of erroring out if the platform is not defined, include
3747         mini-ppc-os.h, and expect that the OS specific setting provides
3748         the required information.   
3749
3750 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3751
3752         * aot-compiler.c: Fix --enable-minimal=aot.
3753
3754 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3755
3756         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
3757         previous change.
3758
3759 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
3760
3761         * exceptions-arm.c: Fix warnings.
3762
3763         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
3764         ARM.
3765
3766         * mini-x86.c: Fix --enable-minimal=jit build.
3767
3768         * mini.c: Really fix --enable-minimal=jit build.
3769         
3770         * mini.c (construct_object_context_for_method): Move this outside
3771         the DISABLE_JIT block to fix the --enable-minimal=jit build.
3772
3773         "Backported" of r124984 from 2.0 branch.
3774         
3775         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
3776
3777         "Backport" of r124977 + r124978 from 2.0 branch.
3778         
3779         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
3780         to avoid calling mono_exception_from_token () from the throw trampoline.
3781         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
3782         for throwing corlib exceptions, this fixes full-aot support for corlib
3783         exceptions.
3784
3785         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
3786
3787 2009-01-29  Miguel de Icaza  <miguel@novell.com>
3788
3789         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
3790         part of the changes to split the code in mini into operating
3791         system specific files.
3792
3793         This patch was done by copying mini.c to the respective files to
3794         preserve SVN history.
3795
3796 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
3797
3798         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
3799
3800 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
3801
3802         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
3803         remoting-invoke-with-check wrappers of shared methods.
3804
3805         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
3806
3807 2009-01-27  Mark Probst  <mark.probst@gmail.com>
3808
3809         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
3810         optimization if the top of stack is the last instruction in the
3811         bblock.  Otherwise it might have been used after its definition.
3812         Fixes #469742.
3813
3814 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
3815
3816         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
3817         method as well when get_vcall_slot () fails to match a code sequence.
3818
3819         * mini-arm.c: Fix the android build, which doesn't have
3820         __aeabi_read_tp.
3821
3822 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3823
3824         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
3825         the s390x build.
3826
3827 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
3828
3829         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
3830
3831 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
3832
3833         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
3834         and put its id into jinfo->used_regs. This is only used on amd64,
3835         which is currently the only platform generating unwind info.
3836
3837         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
3838         the dwarf unwinder. This is required to correctly handle async exceptions
3839         like thread abort and stack overflows, which can happen while a method
3840         is in the middle of its prolog or epilog.
3841         
3842         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
3843         the unwind info belonging to an AOTed method.
3844
3845         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
3846         into cfg->unwind_ops.
3847         
3848         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
3849
3850         * mini.c (mini_init): Call mono_unwind_init ().
3851         (mini_cleanup): Call mono_unwind_cleanup ().
3852
3853         * unwind.c: Add functions for managing a set of unwind info entries, allowing
3854         unwind info to be shared between methods.
3855
3856         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
3857         saved in the LMF.
3858
3859         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
3860         get_throw_pending_exception () to avoid initialization races.
3861
3862         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
3863         mono_arch_exceptions_init () function.
3864
3865         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
3866
3867 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
3868
3869         * mini.c (mono_get_domain_intrinsic): New helper function.
3870         (mono_get_thread_intrinsic): Ditto.
3871
3872         * mini-arm.c mini-ia64.c: Use the new helper functions.
3873         
3874         * method-to-ir.c (mono_method_to_ir): Fix the comment for
3875         the last constrained_call change, since it is needed in the non-AOT
3876         case as well.
3877
3878         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
3879         
3880         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
3881         mono_get_lmf_addr () on arm eabi linux.
3882
3883 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
3884
3885         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
3886         code sequence which matches a non-virtual call.
3887
3888 2009-01-23  Mark Probst  <mark.probst@gmail.com>
3889
3890         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
3891         stack pointer (r1).
3892
3893 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
3894
3895         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
3896         runtime-invoke wrappers, since they are also shared based on signature.
3897
3898 2009-01-22  Mark Probst  <mark.probst@gmail.com>
3899
3900         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
3901         info from the (correct) context.
3902
3903 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
3904
3905         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
3906         
3907         * unwind.c (mono_unwind_frame): New function to unwind through a frame
3908         using dwarf unwinding info. Not yet used.
3909
3910         * mini.c (mini_init): When using xdebug, disable freeing of domains.
3911
3912 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3913
3914         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
3915         descriptors.
3916
3917         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
3918         special case and handle mono_arch_delegate_invoke_impl() returning
3919         function descriptors.
3920
3921         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
3922         trampolines return function descriptors, too.
3923
3924 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3925
3926         * method-to-ir.c (handle_alloc): Avoid generic instances in the
3927         out_of_line optimization.
3928
3929 2009-01-21  Martin Baulig  <martin@ximian.com>
3930
3931         * mini.h
3932         (MonoCompile): Added `disable_deadce_vars' to disable removing
3933         unused variables.
3934
3935         * mini.c
3936         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
3937         inside the debugger.
3938
3939         * liveness.c (mono_analyze_liveness): Don't remove any unused
3940         variables if `cfg->disable_deadce_vars' is set.
3941
3942 2009-01-21  Mark Probst  <mark.probst@gmail.com>
3943
3944         * method-to-ir.c: Only apply exception constructor optimization if
3945         the the method actually belongs to an exception class.  Fixes
3946         #467456.
3947
3948 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
3949
3950         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
3951         change inside a #ifdef __mono_ppc64__.
3952
3953         * aot-compiler.c (compile_method): Remove the previous limitation.
3954
3955         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
3956         on type variables in AOTed code.
3957         
3958         * aot-compiler.c (compile_method): Skip generic methods having type 
3959         constraints on their generic parameters.
3960
3961         * aot-compiler.c (compile_method): Check for methods which cannot be
3962         encoded inside RGCTX_FETCH patches as well.
3963
3964         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
3965         build.
3966
3967 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3968
3969         * method-to-ir.c: Force the vtable variable in shared generic code
3970         for the case that they might show up on a stack trace where they
3971         are needed.
3972
3973         * mini-exceptions.c: Save and use generic sharing info as well as
3974         IP in stack traces to resolve shared generic instantiations.
3975
3976 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
3977
3978         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
3979         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
3980
3981 2009-01-20  Mark Probst  <mark.probst@gmail.com>
3982
3983         * method-to-ir.c: Do generic sharing for array constructors.
3984
3985 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
3986
3987         * mini-exceptions.c (mono_print_thread_dump): Add information
3988         about the thread state using wapi_current_thread_desc.
3989
3990 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
3991
3992         * basic-simd.cs: Tests for the new constructors. 
3993
3994 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
3995
3996         * mini-ops.h: Added OP_EXPAND_*
3997
3998         * cpu-x86.md: Same.
3999
4000         * mini-x86.c (mono_arch_output_basic_block): Same.
4001         
4002         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
4003
4004 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
4005
4006         * iltests.il.in: Add a test for #467385.
4007
4008 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4009
4010         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
4011         thread been cleaned up is not the same currently in execution.
4012
4013         Fixes appdomain-unload crashes on windows, osx and linux variants
4014         without the __thread keyword.
4015
4016 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
4017
4018         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
4019         (koush@koushikdutta.com). Implement this for android.
4020
4021         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
4022         begins with a digit.
4023
4024         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
4025         mono_marshal_get_write_barrier ().
4026
4027 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
4028
4029         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
4030         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
4031         that pass them on a register pair.
4032
4033         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
4034         test was crashing due to that.
4035
4036 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
4037
4038         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
4039         trampoline code. Include ucontext.h only if available.
4040
4041 2009-01-15  Mark Probst  <mark.probst@gmail.com>
4042
4043         * mini.c: mono_domain_lookup_shared_generic() takes an open method
4044         and doesn't check whether it's sharable, like it was before
4045         removing the shared generics hash.  This brings IronPython
4046         performance back to what it was before that change.
4047
4048 2009-01-14  Mark Probst  <mark.probst@gmail.com>
4049
4050         * method-to-ir.c: Handle delegate invocation optimization earlier,
4051         otherwise it would be handled (much more slowly) by the
4052         final/sealed optimization.
4053
4054 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
4055
4056         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
4057         domain is not set. Fixes #465864.
4058
4059 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4060
4061         * method-to-ir.c: Don't stop sharing of generic methods with catch
4062         clauses - we already handle those.
4063
4064 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4065
4066         * mini.c, mini.h: lookup_generic_method() is now
4067         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
4068         making the shared_generics_hash obsolete.
4069
4070 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4071
4072         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
4073         use the red zone.  Make room on the stack first and then use it,
4074         not the other way around.
4075
4076 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
4077
4078         * mini.c (mini_init): Call mono_xdebug_init ().
4079
4080         * aot-compiler.c (mono_xdebug_init): Make this non-static.
4081
4082 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
4083
4084         * TestDriver.cs: Add an --iter argument to run tests multiple times.
4085
4086         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
4087         trampolines.
4088
4089         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
4090         debug+unwind info for trampolines.
4091
4092         * mini.c (mono_create_unwind_op): New helper function.
4093
4094         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
4095
4096 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
4097
4098         * aot-compiler.c: Fix the build.
4099
4100 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
4101
4102         * Makefile.am: Update dtrace-prelink.sh location.
4103
4104 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
4107         optimization. Fixes #464520.
4108
4109 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
4110
4111         * mini-amd64.c : Adding code to save/restore non-volatile registers
4112            on Winx64.
4113
4114         * exceptions-amd64.c : Adding code to save/restore non-volatile 
4115           registers on Winx64.
4116
4117         Contributed under MIT/X11 license.
4118
4119 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
4120
4121         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
4122         __GNUC_MINOR__ which can break when the major version changes.
4123
4124 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
4125
4126         * basic-simd.cs: Add tests for usage of the sizeof opcode.
4127
4128 2009-01-07  Geoff Norton  <gnorton@novell.com>
4129
4130         * helpers.c:  Allow mono -v -v -v to work on darwin.
4131
4132 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
4133
4134         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
4135           pattern. 
4136
4137         Contributed under MIT/X11 license.
4138
4139 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
4140
4141         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
4142         instead of directly accessing type->data.klass. Fixes #462016.
4143         (mono_allocate_stack_slots_full): Ditto.
4144
4145         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
4146         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
4147
4148         * aot-compiler.c (emit_plt): Fix ARM build.
4149
4150 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
4151
4152         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
4153         
4154         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
4155         change.
4156
4157         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
4158         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
4159         #463357.
4160
4161         * iltests.il.in: Add a regression test.
4162
4163 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4164
4165         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
4166
4167 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4168
4169         * basic-simd.cs: Add a regression test for #462457.
4170
4171 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4172
4173         * mini-ops.h: Add a definition of XPHI.
4174
4175         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
4176
4177         * ssa.c (op_phi_to_move): Handle XPHI.
4178
4179         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
4180
4181         Fixes #462457
4182
4183 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4184
4185         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
4186
4187 2008-12-31  Geoff Norton  <gnorton@novell.com>
4188
4189         * mini-ppc.c: The prolog size allocated can be too small for darwin
4190         ppc32 under certain circumstances.  Also fix a small logic bug.
4191
4192 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
4193
4194         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
4195         while loading AOT methods.
4196
4197         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
4198         since only the former is nulled out after a successful cast. This prevents
4199         crashes with rethrown exceptions when using --debug=casts.
4200
4201 2008-12-24  Mark Probst  <mark.probst@gmail.com>
4202
4203         * mini.h: New macro for checking whether a method is final,
4204         i.e. whether the method or its class is marked final.
4205
4206         * method-to-ir.c: Use the new macro for all final-checks
4207         consistently.  Fixes the crash in the System.ServiceModel tests.
4208
4209 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4210
4211         * mini-exceptions.c (get_exception_catch_class): Corrected another
4212         overly strict assertion.
4213
4214 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4215
4216         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
4217         Clobbering it is not allowed because the caller might use it as
4218         the vtable register in the interface call.
4219
4220 2008-12-19  Mark Probst  <mark.probst@gmail.com>
4221
4222         * mini-exceptions.c (get_exception_catch_class): Corrected an
4223         overly strict assertion.
4224
4225 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
4226         
4227         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
4228
4229         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
4230
4231         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
4232
4233         * cpu-mips.md: correct lengths for certain long_ opcodes.
4234
4235         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
4236
4237         * 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().
4238         
4239 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4240
4241         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
4242         
4243 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4244         
4245         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
4246         
4247 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
4248
4249         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
4250         next basic block.
4251         
4252 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
4253
4254         * 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
4255
4256         * 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)
4257         
4258 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
4259         
4260         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
4261         
4262 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
4263
4264         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
4265         gshared code. Fixes #458947.
4266
4267         * generics.cs: Add a test.
4268
4269 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4270         
4271         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4272         
4273         * mini-mips.c: first pass n32 code generation.
4274
4275         * mini-mips.h: datatypes and defines for n32 support.
4276
4277         * exceptions-mips.c: first pass n32 code generation.
4278         
4279         * tramp-mips.c: first pass n32 code generation.
4280         
4281         * cpu-mips.md: add long_ opcodes.
4282         
4283 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4284
4285         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4286
4287         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4288         
4289         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4290         
4291         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4292
4293         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4294
4295         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4296
4297         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4298
4299         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4300
4301         * helpers.c: for mips/n32, don't pass -mips32 to objdump
4302
4303 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
4304
4305         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
4306
4307 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
4308
4309         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
4310
4311 2008-12-12  Mark Probst  <mark.probst@gmail.com>
4312
4313         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
4314         descriptors for helper functions directly in front of the code.
4315
4316 2008-12-11  Mark Probst  <mark.probst@gmail.com>
4317
4318         * method-to-ir.c: Removed an unnecessary assertion.
4319
4320 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4321
4322         * method-to-ir.c: Merge SGEN changes from the old JIT.
4323
4324 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4325
4326         * driver.c (compile_all_methods_thread_main): Handle failure of
4327         mono_get_method ().
4328
4329 2008-12-10  Mark Probst  <mark.probst@gmail.com>
4330
4331         * mini-ppc.c: Merged with mini-ppc64.c.
4332
4333         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
4334
4335         * Makefile.am: Use the same sources for PPC and PPC64.
4336
4337         * mini-ppc64.c: Removed.
4338
4339 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4340
4341         * branch-opts.c (remove_block_if_useless): Extract fall through detection
4342         code to mono_bb_is_fall_through.
4343         
4344         * branch-opts.c (mono_remove_critical_edges): Same.
4345
4346 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4347
4348         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
4349         expect that an OP_BR_REG will be there.
4350
4351 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4352
4353         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
4354         for the many branch ops. The original check miss OP_BR_REG.
4355
4356         Fixes #457574.
4357         
4358 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4359
4360         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
4361
4362 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4363
4364         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
4365         while holding the aot lock.
4366
4367 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4368
4369         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
4370         
4371 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4372
4373         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
4374           to release all runtime callable wrappers held by the runtime.
4375
4376         Contributed under MIT/X11 license.
4377
4378 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4379
4380         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
4381           for Winx64.
4382
4383         Contributed under MIT/X11 license.
4384
4385 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4386
4387         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
4388         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
4389
4390 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4391
4392         * cpu-mips.md: fix ckfinite length
4393
4394         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
4395         (mono_arch_lowering_pass): cleanup, rearrange for clarity
4396         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
4397         
4398 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
4399
4400         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
4401         
4402 2008-12-08  Geoff Norton  <gnorton@novell.com>
4403
4404         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
4405         size by 8 bytes as well.
4406
4407 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4408
4409         * basic-simd.cs: Fix method names for Vector16b.
4410         
4411 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4412
4413         * basic-simd.cs: Fix method names for Vector16sb.
4414
4415 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4416
4417         * basic-simd.cs: Fix method names for Vector8us.
4418         
4419 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4420
4421         * basic-simd.cs: Fix method names for Vector8s.
4422         
4423 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4424
4425         * basic-simd.cs: Fix method names for Vector4ui.
4426
4427 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4428
4429         * basic-simd.cs: Fix method names for Vector2l.
4430
4431 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4432
4433         * basic-simd.cs: Fix method names for Vector2d.
4434
4435 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4436
4437         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
4438         that are extension methods.
4439
4440 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4441
4442         * basic-simd.cs: Fix method names for Vector4f.
4443
4444 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
4445
4446         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
4447         as such. Fixes #456669.
4448
4449 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4450
4451         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
4452         
4453 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4454
4455         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
4456         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
4457         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
4458         (mips_adjust_stackframe): handle FP spills
4459                 
4460         * mini-ops.h: add mips_mtc1_s2
4461         
4462         * cpu-mips.md: add mips_mtc1_s2
4463         
4464 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
4465
4466         * unwind.c: New file, move the unwind info encoding functions here from
4467         aot-compiler.c, so they could be used at runtime too.
4468
4469 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4470
4471         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
4472         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
4473         
4474 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4475
4476         * mini-mips.c: cleanup warnings
4477         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
4478         (mips_adjust_stackframe): handle case of taking the address of stack locals
4479         
4480 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4481
4482         * aot-compiler.c: Implement a few functions missing from the asm writer.
4483         (emit_method_code): Only write symbols for methods when using the bin
4484         writer, since the assembler can't deal with the characters in our method
4485         names.
4486
4487         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
4488
4489         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
4490         call.
4491
4492         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
4493         a bit to also restore %rax.
4494
4495 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4496
4497         * mini-ppc.c: Some simple merges from mini-ppc64.c.
4498
4499 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4500
4501         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
4502         arguments.
4503
4504 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4505
4506         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
4507
4508         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
4509         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
4510
4511         * exceptions-ppc64.c: Removed.
4512
4513         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
4514
4515 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4516
4517         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
4518         tramp-ppc64.c.
4519
4520         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
4521
4522         * tramp-ppc64.c: Removed.
4523
4524 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4525
4526         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
4527         the TYPESPEC table.
4528
4529 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4530
4531         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
4532
4533         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
4534         mini-ppc.h instead of mini-ppc64.h.
4535
4536         * mini-ppc64.h: Removed.
4537
4538 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4539
4540         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
4541         
4542         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
4543         
4544 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4545
4546         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
4547         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
4548         code easier.
4549
4550 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4551
4552         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
4553
4554 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4555
4556         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
4557
4558 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4559
4560         * basic-simd.cs: Tests for operator == and != on Vector4f.
4561
4562 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4563
4564         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
4565
4566         * simd-intrinsics.c: Kill useless enum.
4567
4568 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4569
4570         * cpu-mips.md: add long_conv_to_ovf_i4_2
4571         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
4572
4573 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4574
4575         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
4576         
4577         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
4578
4579 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4580
4581         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
4582         
4583 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4584
4585         * basic-simd.cs: Add tests for new methods.
4586
4587 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4588
4589         * simd-intrinsics.c: Add support for operator == and !=
4590         on Vector4(u)i.
4591
4592         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
4593
4594 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4595
4596         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
4597
4598 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
4599
4600         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
4601
4602         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
4603         MONO_PATCH_INFO_ICALL_ADDR.
4604
4605         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
4606
4607         * aot-compiler.c: Resurrect full-aot support.
4608
4609 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4610
4611         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
4612         
4613 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4614
4615         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
4616         
4617 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
4618
4619         * basic-simd.cs: Fix tests to work under ppc.
4620         Remove tests for methods that will be removed.
4621
4622 2008-12-03  Mark Probst  <mark.probst@gmail.com>
4623
4624         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
4625         generic type (via a typedef or typeref) correctly.
4626
4627 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
4628
4629         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
4630         diagnose an assertion failure.
4631
4632 2008-12-02  Mark Probst  <mark.probst@gmail.com>
4633
4634         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
4635         Fix trampoline size.
4636
4637         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
4638         conversion opcodes are implemented natively instead via emulation.
4639
4640 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4641
4642         * cpu-mips.md: remove mips_xori
4643
4644         * mini-ops.h:  remove mips_xori
4645
4646         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
4647
4648         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
4649         
4650         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
4651         
4652 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4653
4654         * cpu-mips.md: fix instruction lengths.
4655
4656         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
4657
4658         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
4659
4660         * mini-ops.h: fix slti / sltiu op profiles.
4661         
4662 2008-12-02  Martin Baulig  <martin@ximian.com>
4663
4664         * method-to-ir.c (mono_method_to_ir): Disable debugging
4665         information for the init locals block to make the debugger stop
4666         after all locals have been initalized.
4667
4668 2008-12-02  Martin Baulig  <martin@ximian.com>
4669
4670         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
4671         running inside the debugger.
4672
4673 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
4674
4675         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
4676         is enabled.
4677
4678         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
4679         alu->alu imm optimization which only shows if deadce is disabled.
4680
4681         * aot-compiler.c: Rename the function names for the binary and asm writers
4682         so they can coexist in the same process. Rework the xdebug code to use the
4683         asm writer. This avoids the need to call into the runtime to dump the
4684         debugging info. Add more debugging info for types.
4685
4686         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
4687
4688         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
4689         cpu description tables, they can't occur in cpu-<ARCH>.md.
4690
4691         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
4692         the stack in CEE_LDFLDA. Fixes #450542.
4693
4694         * generics.cs: Add a new test.
4695
4696 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4697
4698         * mini-ops.h: updated MIPS opcodes
4699         * mini-mips.c: decompose long opts
4700         * mini-mips.h: decompose long opts
4701         
4702 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
4703
4704         * cpu-mips.md: fix length on int_rem_un
4705         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
4706         
4707 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
4708
4709         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
4710
4711         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
4712
4713 2008-11-29  Martin Baulig  <martin@ximian.com>
4714
4715         * mini-exceptions.c (mono_handle_native_sigsegv): Check
4716         mono_debug_using_mono_debugger() in addition to the
4717         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
4718
4719 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4720
4721         * mini-ops.h: updated more MIPS opcodes
4722         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
4723         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
4724         
4725 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4726
4727         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
4728
4729 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4730
4731         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
4732         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
4733         * mini-ops.h: correct selected mips opcode entries
4734         
4735 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4736
4737         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
4738         make them work.
4739
4740 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4741
4742         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
4743
4744 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4745
4746         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
4747         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
4748         * mini-mips.h: disable IMT
4749         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
4750         
4751 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4752
4753         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
4754
4755 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4756
4757         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
4758
4759 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
4760
4761         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
4762         consistency.
4763
4764 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4765
4766         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
4767         for Set/GetVector aligned versions.
4768
4769 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4770
4771         * basic-simd.cs: Add tests for Get/SetVector.
4772
4773 2008-11-27  Mark Probst  <mark.probst@gmail.com>
4774
4775         * mini.c: Removed g_slist_append_mempool().  Now in
4776         metadata/mempool.c.
4777
4778 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
4779
4780         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
4781         size properly and make the bounds check optional.
4782
4783         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
4784         for SetVector and IsAligned.
4785
4786 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
4787
4788         * mini.c: Remove unused mono_normalize_opcodes () function.
4789
4790 2008-11-26  Mark Probst  <mark.probst@gmail.com>
4791
4792         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
4793         using the new atomic add ops now.
4794
4795         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
4796         add.
4797
4798 2008-11-26  Mark Probst  <mark.probst@gmail.com>
4799
4800         * mini-ppc64.c: Several fixes.
4801
4802 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4803
4804         * cpu-mips.md: added jump_table
4805         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
4806
4807 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4808
4809         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
4810
4811 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4812
4813         * mini-ops.h: corrected a handful of MIPS opcodes.
4814
4815 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4816
4817         * aot-compiler.c: MIPS to use ELF writer
4818
4819 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
4820
4821         * mini-codegen.c: remove MIPS specific assert.
4822
4823 2008-11-25  Mark Probst  <mark.probst@gmail.com>
4824
4825         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
4826         fixes.  PPC64 now passes most of the runtime regressions.
4827
4828 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
4829
4830         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
4831         volatile intervals a bit.
4832
4833 2008-11-24  Mark Probst  <mark.probst@gmail.com>
4834
4835         * basic-long.cs: New test case.
4836
4837 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
4838
4839         * mini.c (mini_method_compile): Disable globalra for large methods for 
4840         now.
4841
4842         * regalloc2.c (order_moves): Add fp support.
4843
4844         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
4845         source bblock ends with an OP_BR_REG.
4846
4847         * ratests.cs: Add a new test.
4848
4849 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4850
4851         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
4852         sharing.  PPC64 now passes generics.exe.
4853
4854 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4855
4856         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
4857
4858 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
4859
4860         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
4861         memory when mono_jit_info_table_find () can't find the method in the
4862         LMF case.
4863
4864         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
4865         AOTed code too.
4866         
4867         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
4868         writer too.
4869
4870 2008-11-23  Mark Probst  <mark.probst@gmail.com>
4871
4872         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
4873         Several fixes.  PPC64 now runs exceptions.exe and
4874         devirtualization.exe.
4875
4876 2008-11-22  Mark Probst  <mark.probst@gmail.com>
4877
4878         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
4879         arrays.exe and basic-math.exe.
4880
4881 2008-11-22  Mark Probst  <mark.probst@gmail.com>
4882
4883         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
4884         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
4885
4886 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4887
4888         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
4889
4890 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4891
4892         * method-to-ir.c: Move bounds checking macros to ir-emit.h
4893
4894         * ir-emit.h: Move macros from method-to-ir.c to here.
4895
4896 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
4897
4898         * mini-ops.h: Correct the long simd ops to use LREG.
4899
4900 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
4901
4902         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
4903         
4904         * mini-ops.h: Correct the dreg type of a few long opcodes.
4905
4906         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
4907         Add netbsd support.
4908
4909 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
4910
4911         * mini-ppc.c: remove negative stack references in epilog
4912         for platforms that don't support the red zone.
4913
4914 2008-11-21  Mark Probst  <mark.probst@gmail.com>
4915
4916         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
4917         point regs.  Now PPC64 passes basic-calls.exe.
4918
4919 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4920
4921         * basic-simd.cs: Add tests for accessors of Vector2l.
4922
4923 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4924
4925         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
4926
4927         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
4928         
4929         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
4930
4931 2008-11-21  Mark Probst  <mark.probst@gmail.com>
4932
4933         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
4934         PPC64 passes basic-long.exe.
4935
4936 2008-11-20  Mark Probst  <mark.probst@gmail.com>
4937
4938         * decompose.c: Decompose carry and overflow add on PPC64 like on
4939         other 64 bit archs.  Don't decompose sub at all on PPC64.
4940
4941         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
4942         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
4943         basic-long.exe.
4944
4945 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4946
4947         * basic-simd.cs: Add tests for accessors of Vector2d.
4948
4949 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4950
4951         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
4952
4953         * cpu-x86.md: Same.
4954
4955         * mini-x86.c (mono_arch_output_basic_block): Same.
4956         
4957         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
4958
4959 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4960
4961         * basic-simd.cs: Add tests for accessors of Vector4f.
4962
4963 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4964
4965         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
4966
4967         * cpu-x86.md: Same.
4968
4969         * mini-x86.c (mono_arch_output_basic_block): Same.
4970         
4971         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
4972
4973 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4974
4975         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
4976
4977 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4978
4979         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
4980
4981         * cpu-x86.md: Same.
4982
4983         * mini-x86.c (mono_arch_output_basic_block): Same.
4984         
4985         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
4986
4987 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4988
4989         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
4990
4991 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4992
4993         * simd-intrinsics.c: Enable setters for Vector16sb.
4994
4995 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
4996
4997         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
4998
4999         * cpu-x86.md: Same.
5000
5001         * mini-x86.c (mono_arch_output_basic_block): Same.
5002         
5003         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
5004
5005 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
5006
5007         * simd-intrinsics.c: Implement setter for Vector8us.
5008
5009 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5010
5011         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
5012         for dead variables.
5013
5014 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
5015
5016         * mini-ppc.c: remove references to the red zone in the prolog
5017         (for systems that don't support it).
5018
5019 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5020
5021         * cpu-ppc64.md: Fixed a few instruction lengths.
5022
5023         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
5024         now.
5025
5026 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5027
5028         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
5029         basic.exe now.
5030
5031 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5032
5033         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
5034
5035 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
5036
5037         * mini-ops.h: Added OP_INSERT_I2.
5038
5039         * cpu-x86.md: Same.
5040
5041         * mini-x86.c (mono_arch_output_basic_block): Same.
5042         
5043         * simd-intrinsics.c: Implement setter for Vector8s.
5044
5045         * simd-methods.h: Add the names of get setters of Vector8s.
5046
5047 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5048
5049         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
5050         
5051         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
5052         parameters.
5053
5054         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5055
5056 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5057
5058         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
5059         for PPC64.  An empty program runs now.
5060
5061 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5062
5063         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5064
5065         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
5066         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
5067         info for JITted code is emitted into a shared library, loadable into gdb.
5068
5069 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5070
5071         * Makefile.am: Changes to build PPC64.
5072
5073         * mini-arch.h: Include mini-ppc64.h on PPC64.
5074
5075 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5076
5077         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
5078         in PPC code up to r119147.
5079
5080 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5081
5082         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5083         cpu-ppc64.md: Changes for PPC64.
5084
5085         Based on code submitted by andreas.faerber@web.de at
5086         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
5087         X11/MIT license.
5088
5089 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5090
5091         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5092         cpu-ppc64.md: Copied from the corresponding PPC files from
5093         r118846.
5094
5095 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
5096
5097         * mini-ops.h: Added OP_ROUND.
5098
5099         * cpu-x86.md: Added round.
5100
5101         * mini-x86.c: Added support for intrinsicing Math.Round (double).
5102
5103         * basic-math.cs: Added test_0_round to test rounding.
5104
5105         Contributed under MIT/X11 license.
5106
5107 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
5108
5109         * aot-compiler.c : Fix the Winx64 build.
5110
5111         Contributed under MIT/X11 license.
5112
5113 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5114
5115         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
5116         in OP_EXTRACT_R8 to avoid possible stack corruption.
5117
5118 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5119
5120         * mini-ops.h: Added OP_EXTRACT_R8/I8.
5121
5122         * cpu-x86.md: Added extract_r8.
5123
5124         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
5125         
5126         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
5127         a couple of OP_EXTRACT_I4.
5128
5129         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
5130
5131         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
5132
5133 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5134
5135         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
5136         and not 4.1. 
5137
5138 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5139
5140         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
5141         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
5142
5143         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
5144         are not needed any more.
5145
5146         * mini.h: Remove the unused INS_LIST macros.
5147
5148         * mini.c (mini_method_compile): Remove a disable globalra case which is no
5149         longer needed.
5150
5151         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
5152         ir-emit.h.
5153
5154         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
5155         mono_alloc_ireg () instead.
5156
5157         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
5158         macros.
5159
5160         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
5161         on amd64.
5162
5163         * aot-runtime.c (load_aot_module): Disable AOT when running under
5164         CAS.
5165
5166         * mini-amd64.h: Change the monitor fastpath defines to check for
5167         !PLATFORM_WIN32 so they work on *bsd too.
5168
5169         * mini.h mini.c mini-hhpa.c: Remove more unused code.
5170
5171         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
5172
5173         * mini.h (MonoCompile): Remove new_ir flag.
5174
5175         * regalloc.h regalloc.c: Remove unused code.
5176
5177         * cpu-*.md: Remove more unused opcodes.
5178
5179         * simple-cee-ops.h simple-mini-ops.h: Removed.
5180
5181         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
5182         
5183 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5184
5185         * aliasing.h: Removed.
5186
5187         * *.c: Remove references to aliasing.h and inssel.h.
5188
5189         * mini.c: Remove additional unused functions.
5190
5191         * mini-ops.h cpu-*.md: Remove unused opcodes.
5192
5193 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5194
5195         Remove the old JIT code.
5196
5197         * inssel*.brg: Removed.
5198
5199         * ssa.c abcremoval.c aliasing.c: Removed.
5200
5201         * ssa2.c: Renamed to ssa.c.
5202
5203         * abcremoval2.c: Renamed to abcremoval.c.
5204
5205         * *.c: Removed all !cfg->new_ir code.
5206
5207         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
5208         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
5209
5210         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
5211         
5212 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5213
5214         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
5215         to simplify the code and cut back on the number of global symbols in the AOT
5216         file.
5217         
5218         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
5219
5220 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
5221
5222         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
5223         with the got/got_info tables.
5224
5225         * mini.h: Bump AOT file format version.
5226         
5227         * unwind.h: New file, contains definitions for stack unwinding.
5228
5229         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
5230         to cfg->unwind_ops.
5231         
5232         * aot-compiler.c: Generalize the emitting of unwind information to use the
5233         information in cfg->unwind_ops.
5234
5235         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
5236
5237         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
5238         AOT method frames. Enable writing symbols for methods by default.
5239
5240 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
5241
5242         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
5243         and make it work with vectors of element sizes 1, 2 and 4.
5244
5245         * simd-intrinsics.c: Enable getter for all vectors with element size
5246         1, 2 or 4.
5247
5248         * simd-methods.h: Add the names of other getters.
5249
5250         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
5251
5252         * cpu-x86.md: Same.
5253
5254         * mini-x86.c: Same.
5255
5256 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
5257
5258         * mini-ppc.h: portability fix.
5259
5260 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5261
5262         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
5263         buggy and will overwrite it.
5264
5265 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5266
5267         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
5268         Use it to emit local symbols for all methods so AOTed methods show up with
5269         their full name in gdb/valgrind output.
5270
5271 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5272
5273         * mini-ppc.c: portability fixes.
5274
5275 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5276
5277         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
5278         entries out of the if (!generic_shared...) code so it is always done.
5279         (mono_class_init_trampoline): Do the patching when running under valgrind
5280         too, newer versions of valgrind have no problems with it.
5281
5282 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5283
5284         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
5285         further sections.
5286
5287 2008-11-13  Mark Probst  <mark.probst@gmail.com>
5288
5289         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
5290         filters.
5291
5292 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5293
5294         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
5295
5296 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5297
5298         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
5299
5300         * cpu-x86.md: Same.
5301
5302         * mini-x86.c: Same.
5303
5304         * simd-intrinsics.c: Same.
5305
5306 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5307
5308         * simd-intrinsics.c: Enable constructor intrinsics for all types.
5309
5310 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5311
5312         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
5313         to work with more Vector types.
5314
5315 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5316
5317         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
5318         store the elemens directly instead of using and intermediate.
5319
5320 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5321
5322         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
5323
5324         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
5325         to preserve %eax for aot plt trampolines.
5326
5327         * aot-compiler.c (compile_method): Don't skip synchronized methods.
5328         (encode_method_ref): Flag synchronized methods so they won't go through
5329         the AOT trampoline.
5330
5331         * aot-compiler.c: Additional work to support AOTing synchronized methods/
5332         wrappers.
5333
5334         * cpu-ia64.md (jmp): Increase max length.
5335
5336 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5337
5338         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
5339         open generic classes.
5340
5341         * aot-compiler.c: Enable the ELF writer on ELF platforms.
5342
5343         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
5344         box+brtrue optimization since it causes test failures on x86.
5345
5346 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5347
5348         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
5349
5350         * cpu-x86.md: Same.
5351
5352         * mini-x86.c: Same.
5353
5354         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
5355         for simd ctor values. 
5356
5357         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
5358         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
5359
5360 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5361
5362         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
5363         LogicalRightShift.
5364
5365         * simd-instrincs.c: Same.
5366
5367         * basic-simd.cs: Same.
5368
5369 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5370
5371         * ratests.cs: Add more tests.
5372
5373         * regalloc2.c (add_spill_code): Handle more corner cases.
5374
5375 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5376
5377         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
5378         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
5379         both the source an destination of an instruction.
5380
5381 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5382
5383         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
5384         wapihandles.c: more portability changes.
5385
5386 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
5387
5388         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
5389         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
5390         safe to execute in a signal handler and the kernel provides better
5391         the info in /proc/self/smaps. Avoid the assert on sigaction during
5392         cleanup.
5393
5394 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5395
5396         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
5397         do the bblock linking hack if it is actually needed.
5398
5399         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
5400         up linking.
5401
5402         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
5403         crash problem is fixed.
5404
5405         * branch-opts.c (mono_remove_critical_edges): Link up newly added
5406         bblocks.
5407
5408         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
5409         for catch clauses.
5410         (mini_method_compile): Set the starting value of next_vreg to 
5411         MAX_IREGS + MAX_FREGS when using globalra.
5412
5413         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
5414         filter clauses with BB_EXCEPTION_HANDLER.
5415
5416         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
5417
5418 2008-11-10  Mark Probst  <mark.probst@gmail.com>
5419
5420         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
5421         space for stdcall.  Fixes regressions on Win32.
5422
5423 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
5424
5425         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
5426         bblocks.
5427         (linear_scan): Remove an assert which doesn't seem to be needed.
5428
5429         * local-propagation.c (mono_local_deadce): Avoid a call to
5430         MONO_DELETE_INS which would screw up the instruction linking.
5431
5432         * mini.c (mono_decompose_op_imm): Make this work with globalra.
5433
5434         * regalloc2.c: Upgrade to work the current JIT code.
5435
5436 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
5437
5438         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
5439         case.
5440
5441         * aot-runtime.c: Remove some dead code.
5442
5443         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
5444         consistency.
5445         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
5446
5447         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
5448         trampolines using sscanf since atoi doesn't work on large unsigned values.
5449
5450         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
5451         Initialize code_size.
5452
5453 2008-11-08  Mark Probst  <mark.probst@gmail.com>
5454
5455         * method-to-ir.c (mini_emit_inst_for_method): Make
5456         Interlocked.CompareExchange work for Int arguments on 32 bit
5457         archs, as well.
5458
5459 2008-11-07  Mark Probst  <mark.probst@gmail.com>
5460
5461         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
5462
5463 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
5464
5465         * main.c Fix MSVC build.
5466
5467         Contributed under MIT/X11 license.
5468
5469 2008-11-06  Mark Probst  <mark.probst@gmail.com>
5470
5471         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
5472         alignment larger than 8 bytes are aligned correctly, too.
5473
5474         * mini.c: Honor the min_align field of MonoClass when laying out
5475         the stack.
5476
5477 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
5478
5479         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
5480
5481         * aot-compiler.c (emit_plt): Fix a warning.
5482         
5483         * aot-compiler.c: Implement ARM support in the binary writer.
5484
5485 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5486
5487         * basic-simd.cs: Add test for getter with byref arg.
5488         Fix the naming of a few tests.
5489         Add missing checks to a test.
5490
5491 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5492
5493         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
5494
5495         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
5496         most of the full-aot support for monitor enter/exit trampolines.
5497
5498         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
5499         enter/exit trampoline creation functions.
5500
5501         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
5502         make dist.
5503
5504 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
5505
5506         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
5507         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
5508         implement the needed functionality without adding crap to the runtime.
5509
5510 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5511
5512         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
5513         non-x86 builds.
5514
5515         * mini.c (mono_build_date): New global version holding the build date in
5516         string format.
5517         
5518         * Makefile.am (buildver.c): Generate a file containing the build date.
5519
5520         * main.c: Set the build date from the generated file.
5521
5522         * mini.c (mono_get_runtime_build_info): New helper function returning build
5523         information in a string format.
5524         
5525         * driver.c (mono_main): Print the build date in --version.
5526
5527         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
5528         file when the bind-to-runtime-version option is used.
5529
5530 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5531
5532         * simd-intrinsics.c: Fix bug when using getters and byref args. 
5533
5534 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5535
5536         * simd-methods.h: Rename prefetch methods.
5537
5538         * simd-intrinsics.c: Same.      
5539
5540 2008-11-05  Mark Probst  <mark.probst@gmail.com>
5541
5542         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
5543         sizes.
5544
5545 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5546
5547         * aot-compiler.c: Use the bundled elf header files instead of depending on
5548         the system one.
5549         
5550         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
5551         mempool.
5552
5553         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
5554         on every call.
5555
5556 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
5557
5558         * cpu-x86.md: Add store nta ops.
5559
5560         * mini-ops.h: Same.
5561
5562         * mini-x86.c: Same.
5563
5564         * mini.h: Add an enum for simd prefetch modes.
5565
5566         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
5567         of store. Use the changed code to support store nta.
5568
5569         * simd-intrinsics.c: Add prefetch ops for all vector types.
5570
5571 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5572
5573         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
5574         threads.
5575         
5576         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
5577         names.
5578
5579         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
5580         trampolines.
5581
5582 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5583
5584         * mini-x86.c: Fixed commit.
5585
5586 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5587
5588         * aot-compiler.c (emit_plt): Align the plt section only on x86.
5589
5590 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5591
5592         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
5593         and MONITOR_EXIT, for the ASM fastpaths.
5594
5595         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
5596         available.
5597
5598         * mini.c, patch-info.h: Signature and patch infos for
5599         Monitor.Enter/Exit trampolines.
5600
5601         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
5602
5603         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
5604         Monitor.Enter/Exit ASM fastpath for Linux.
5605
5606 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5607
5608         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
5609
5610         * objects.cs: Add a new test.
5611         
5612         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
5613
5614         * aot-runtime.c (load_method): Run class initialization in the PLT case even
5615         if MONO_LOG_LEVEL is set.
5616
5617         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
5618
5619         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
5620
5621         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
5622         
5623         * aot-compiler.c: Change the relocation code to use virtual addresses instead
5624         of file offsets. Align the sections belonging to the data segment to 
5625         PAGESIZE.
5626
5627 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5628
5629         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
5630         elf.h. Port it to amd64.
5631
5632 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5633
5634         * driver.c: Enable SIMD by default.
5635
5636 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5637
5638         * cpu-x86.md: Add prefetch op.
5639
5640         * mini-ops.h: Same.
5641
5642         * mini-x86.c: Same.
5643
5644         * mini.h: Add an enum for simd prefetch modes.
5645
5646         * simd-methods.h: Add prefetch function names.
5647
5648         * simd-intrinsics.c: Add prefetch ops for all vector types.
5649
5650 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5651
5652         * aot-compiler.c (emit_bytes): Speed this up a little.
5653
5654 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * aot-compiler.c: Add JIT time etc. statistics.
5657         
5658         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
5659
5660         * mini.h (MonoCompile): Add 'got_offset' field.
5661
5662         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
5663         method_got_offsets array.
5664
5665         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
5666         wrappers.
5667
5668         * aot-compiler.c (compile_method): Add generic method instances referenced
5669         by the method to the list of methods to be compiled, this is required so if
5670         A<T> references B<T>, and another assembly references A<int>, then it will
5671         also get a copy of B<int>.
5672
5673         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
5674         when checking for monitor enter/exit.
5675
5676 2008-10-30  Mark Probst  <mark.probst@gmail.com>
5677
5678         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
5679         for Monitor.Enter and Monitor.Exit if enabled.
5680
5681         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
5682         Solaris.
5683
5684 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
5685
5686         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
5687         of an OP_MOVE. Fixes #440046.
5688
5689         * basic-long.cs: Add a new test.
5690
5691 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5692
5693         * mini.h: Add synchronization note for the managed counter-part.
5694
5695         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
5696         returns the simd caps of the current cpu.
5697
5698 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5699
5700         * basic-simd.cs: Remove Console.WriteLine.
5701
5702 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5703
5704         * basic-simd.cs: New tests for Vector2ul.
5705
5706 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5707
5708         * simd-intrinsics.c: Add new vector type Vector2ul.
5709
5710 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5711
5712         * basic-simd.cs: New tests for Vector2l.
5713
5714 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5715
5716         * cpu-x86.md: Add long version of most packed int ops.
5717
5718         * mini-ops.h: Same.
5719
5720         * mini-x86.h: Same.
5721
5722         * simd-intrinsics.c: Add new vector type Vector2l.
5723
5724 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5725
5726         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
5727
5728         * simd-methods.h: Remove SN_op_BitwiseXor.
5729
5730 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
5731
5732         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
5733         alignment.
5734
5735 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5736
5737         * basic-simd.cs: Test for Vector2d.
5738
5739         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
5740         value.
5741
5742 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5743
5744         * cpu-x86.md: Add double version of all packed float ops.
5745
5746         * mini-ops.h: Same.
5747
5748         * mini-x86.h: Same.
5749
5750         * simd-intrinsics.c: Add new vector type Vector2d.
5751
5752         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
5753
5754         * simd-methods.h: Add Duplicate.
5755
5756 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5757
5758         * basic-simd.cs: Test for packing with signed saturation.
5759
5760 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
5761
5762         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
5763         found in the TYPESPEC table.
5764
5765 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
5766
5767         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
5768         too.
5769
5770         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
5771
5772         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
5773         instead of the RVA, since the RVA can be changed by tools like the cil 
5774         stripper.
5775
5776         * method-to-ir.c (mono_method_to_ir2): Ditto.
5777
5778         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
5779         (deserialize_variable): Ditto.
5780
5781 2008-10-25  Martin Baulig  <martin@ximian.com>
5782
5783         * debug-mini.c (write_variable): Use
5784         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
5785
5786 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5787
5788         * cpu-x86.md: Add unsigned variants of packd and packw.
5789
5790         * mini-ops.h: Same.
5791
5792         * mini-x86.h: Emit the right instruction for packd and packw.
5793         Add unsigned variants of packd and packw.
5794
5795         * simd-intrinsics.c: Packd and packw were used in place of their
5796         unsigned variants. Change that.
5797         Add intrinsics for (Signed)PackWithSignedSaturation.
5798
5799         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
5800
5801 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5802
5803         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
5804
5805 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5806
5807         * mini-ops.h: Remove dword packed add/sub with saturation ops.
5808
5809         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
5810
5811         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
5812         sse instructions.
5813
5814         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
5815
5816 2008-10-24  Mark Probst  <mark.probst@gmail.com>
5817
5818         * method-to-ir.c, mini.c: Special casing for the synchronized
5819         wrapper for the ldtoken+GetTypeFromHandle case.
5820
5821 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
5822
5823         * mini.c (mono_replace_ins): Move this to branch-opts.c.
5824
5825         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
5826         created/split bblocks.
5827
5828 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5829
5830         * mini-ops.h: Add packed signed mul high.
5831         
5832         * cpu-x86.md: Same.
5833
5834         * mini-x86.c (mono_arch_output_basic_block): Same.
5835
5836         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
5837
5838         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
5839
5840 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
5841
5842         * basic-simd.cs: Tests for Vector16sb.
5843
5844 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
5845
5846         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
5847
5848 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
5849
5850         * mini-ops.h: Add packed signed min, max and compare greater.
5851         
5852         * cpu-x86.md: Same.
5853
5854         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
5855         saturation.
5856
5857         * simd-methods.h: Add CompareGreaterThan.
5858
5859         * simd-methods.h: Remove CompareEquals.
5860
5861         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
5862
5863         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
5864
5865         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
5866         CompareEqual.
5867
5868 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
5869
5870         * basic-simd.cs: Fix tests due to change in the API.
5871
5872 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5873
5874         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
5875
5876 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5877
5878         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
5879
5880         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
5881         inst_offset as this has invalid values for LDADDR.
5882
5883 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5884
5885         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
5886
5887         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
5888
5889 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5890
5891         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
5892         for accessing field->data.
5893
5894 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5895
5896         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
5897
5898 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
5899
5900         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
5901
5902         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
5903
5904 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
5905
5906         * dominators.c (mono_compute_natural_loops): Allocate GList enties
5907         from the cfg mempool.
5908
5909 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
5910
5911         * basic-simd.cs: Tests for new methods in Vector8us.
5912
5913 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
5914
5915         * mini-ops.h: Add multiply and store high.
5916         
5917         * cpu-x86.md: Same.
5918
5919         * mini-x86.c (mono_arch_output_basic_block): Same.
5920
5921         * simd-methods.h: Same.
5922
5923         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
5924         and CompareEqual.
5925
5926 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
5927
5928         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
5929         mono_class_setup_vtable ().
5930
5931         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
5932         mono_class_get_vtable_entry () for accessing klass->vtable.
5933
5934         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
5935
5936         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
5937         found.
5938
5939         * method-to-ir.c (mono_save_token_info): Don't save references made from
5940         wrappers.
5941
5942         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
5943         of generic instances.
5944
5945         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
5946
5947 2008-10-19  Mark Probst  <mark.probst@gmail.com>
5948
5949         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
5950         OP_JMP depends on the method signature.  Calculate it properly.
5951
5952 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
5953         
5954         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
5955         called directly.
5956
5957         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
5958         instances.
5959         (emit_extra_methods): Add another table mapping method indexes to 
5960         offsets in the extra_method_info table.
5961
5962         * mini.h: Bump AOT file format version.
5963         
5964         * aot-runtime.c: Merge most of the code from mono_aot_get_method
5965         and mono_aot_get_method_from_token () into one function.
5966
5967 2008-10-19  Mark Probst  <mark.probst@gmail.com>
5968
5969         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
5970         separate counter.
5971
5972 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
5973
5974         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
5975         methods.
5976
5977         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
5978         disable_aot.
5979
5980         * mini.c (mono_patch_info_equal): Compare the generic context as well.
5981
5982         * mini.h: Bump aot file format version.
5983
5984         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
5985         AOT file can contain native code for methods which are not in the METHOD
5986         table. Generate code for non-sharable generic instances of generic methods
5987         found in the METHODSPEC table.
5988         
5989         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
5990         encoding generic type handles.
5991
5992         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
5993         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
5994
5995         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
5996         macros + MONO_ADD_INS.
5997
5998         * mini.c (mono_jump_info_token_new2): New function which takes a generic
5999         context as well.
6000
6001         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
6002
6003         * mini.h: Bump aot file format version.
6004
6005         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
6006
6007 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6008
6009         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
6010         platforms, with definable stack alignment value.  Set to 16 now
6011         for all platforms.
6012
6013         * mini.c, mini.h, driver.c: Command line option for disabling
6014         stack alignment.
6015
6016 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6017
6018         * basic-simd.cs: Tests for new methods in Vector4ui.
6019
6020 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6021
6022         * mini-ops.h: Add packed int shuffle.
6023         
6024         * cpu-x86.md: Same.
6025
6026         * mini-x86.c (mono_arch_output_basic_block): Same.
6027
6028         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
6029         extract mask, max, min, shuffle.
6030
6031         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
6032
6033 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6034
6035         * basic-simd.cs: Tests for new methods in Vector8us.
6036
6037 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6038
6039         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
6040         RuntimeTypeHandle, not a TypedReference.
6041
6042 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
6043
6044         * simd-intrinsics.c: remove relocations.
6045
6046 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
6047
6048         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
6049         optimizations from the x86 backend.
6050
6051 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
6052
6053         * simd-methods.h, simd-intrinsics.c: debloat method names and
6054         prepare for no relocations.
6055
6056 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6057
6058         * mini-ops.h: Add packed min/equal and sum of absolute differences.
6059         
6060         * cpu-x86.md: Same.
6061
6062         * mini-x86.c (mono_arch_output_basic_block): Same.
6063
6064         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
6065         extract mask, max, min and sum of absolute differences.
6066
6067         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
6068         method name.
6069
6070 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6071
6072         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
6073         Renamed one test for consistency.
6074
6075 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6076
6077         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
6078         fix to the code that deal with other blocks.
6079
6080 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6081
6082         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
6083
6084 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6085
6086         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
6087         that deals with vreg interference. Explicitly check for OP_LDADDR to be
6088         able to process the source reg.
6089
6090 2008-10-16  Martin Baulig  <martin@ximian.com>
6091
6092         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
6093
6094         * inssel.brg: Add `OP_HARD_NOP'.
6095
6096         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
6097
6098         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
6099         `OP_HARD_NOP' instruction when running inside the debugger.
6100
6101         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
6102         `OP_HARD_NOP' instruction when running inside the debugger.
6103
6104 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6105
6106         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
6107         now works. The issue with the regalloc tripping up no longer
6108         happens.
6109
6110         * simd-intrinsics.c (load_simd_vreg): Same.
6111
6112 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6113         
6114         * basic-simd.cs: Tests for new Vector8ui methods.
6115
6116 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6117
6118         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
6119         only for type. This fixes crashes where MonoInst::klass is checked
6120         for ops of type != VTYPE or OBJ.
6121
6122         * simd-intrinsics.c (load_simd_vreg): Same.
6123
6124 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6125
6126         * mini-ops.h: Add ops for packed shuffle/max/avg and
6127         extract mask.
6128         
6129         * cpu-x86.md: Same.
6130
6131         * mini-x86.c (mono_arch_output_basic_block): Same.
6132
6133         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
6134         extract mask.
6135
6136         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
6137         to emit extract mask op.
6138
6139         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
6140         to emit word shuffles.
6141
6142 2008-10-15  Mark Probst  <mark.probst@gmail.com>
6143
6144         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
6145         the largest alignment needed by a variable, but at least
6146         sizeof(gpointer).
6147
6148 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6149
6150         * basic-simd.cs: Tests for the fixes in the last commit.
6151
6152 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6153
6154         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
6155         no longer handles STACK_PTR input.
6156
6157         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
6158
6159         * simd-intrinsics.c (load_simd_vreg): New function that works like 
6160         get_simd_vreg   but handles STACK_PTR input.
6161
6162         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
6163         as the input can be an arbitrary pointer.
6164
6165         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
6166         LDADDR local optimization directly otherwise use a store op.
6167
6168 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6169
6170         * basic-simd.cs: Tests for dup low and dup high.
6171
6172 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6173
6174         * mini-ops.h: Add dup low and dup high ops.
6175         
6176         * cpu-x86.md: Same.
6177
6178         * mini-x86.c (mono_arch_output_basic_block): Same.
6179
6180         * simd-intrinsics.c (vector4f_intrinsics): Same.
6181
6182 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6183
6184         * basic-simd.cs: Tests for recently added functionality.
6185
6186 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6187
6188         * mini-ops.h: Add remaining sse1 fp ops.
6189         
6190         * cpu-x86.md: Add remaining sse1 fp ops.
6191
6192         * mini-x86.c (mono_arch_output_basic_block): Same.
6193
6194         * mini.h: Add enum for simd FP compare conditions.
6195
6196         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
6197
6198         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
6199         so the backed can generate the appropriate op.
6200
6201 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6202         This patch squeese one more byte from the SimdIntrinsc struct.
6203
6204         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
6205         a a shift amount intead of simply or'ing it.
6206
6207         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
6208
6209         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
6210         byte so we can have an aditional flags field without increasing struct size.
6211
6212         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
6213         against the simd_supported_versions bitmask.
6214
6215         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
6216
6217 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
6218
6219         * mini.c: remove rawbuffer code (the only use here is unsafe because
6220         it takes locks during signal handling and the kernel now provides much
6221         better info in proc/pid/smaps these days).
6222
6223 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
6224
6225         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
6226         OP_X86_PUSH_OBJ. Fixes #434620.
6227
6228         * objects.cs: Add a test.
6229         
6230 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
6231
6232         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
6233         that the packuswb/packusdw don't work with unsigned numbers for what
6234         would be negative numbers in signed format.
6235
6236         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
6237         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
6238
6239         * mini-ops.h: Add doubleword forms of many ops and packing ones.
6240
6241         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
6242
6243         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
6244
6245         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
6246
6247         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
6248         add more ops.
6249
6250         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
6251         version as the enum in mini.h.
6252
6253         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
6254         for sse3 ops, check the simd_version field if present. This way the code
6255         works with all versions of sse.
6256
6257 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6258
6259         * simd-intrinsics.c: Fixed intrinsic name typo.
6260
6261         * mini.h: Added missing simd exported function.
6262
6263         * basic-simd.cs: Added tests for Vector4ui.
6264         Fixed broken test for Vector16b.
6265
6266 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
6267
6268         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
6269         the max length to 64.
6270
6271 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6272
6273         * method-to-ir.c: Only do the fast virtual generic method call for
6274         non-wrapper methods.
6275
6276         * mini.h, mini-trampolines.c: The new generic virtual remoting
6277         trampoline handles virtual method calls via the vtable (as done by
6278         the fast virtual generic method calls) to remoting proxies.
6279
6280         * mini.c (mono_jit_create_remoting_trampoline): For generic
6281         methods reate a generic virtual remoting trampoline.
6282
6283         * mini-amd64.h: Enable fast virtual generic method calls again.
6284
6285 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6286
6287         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
6288         restore registers when doing tail calls.
6289
6290 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6291
6292         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
6293         Vector4ui.
6294
6295 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6296
6297         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
6298
6299 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6300
6301         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
6302
6303 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6304
6305         * basic-simd.cs: Retrofit for API changes.
6306
6307 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6308
6309         * mini-ppc.c: Handle integer stack arguments for tail calls.
6310
6311 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6312
6313         * optflags-def.h: Removed sse3 optimization.
6314
6315         * driver.c: Same.
6316
6317         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
6318         sse3.
6319
6320         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
6321
6322         * mini.h: Added enumeration with simd versions.
6323
6324         * simd-intrinsics.c (emit_intrinsics): Use the new static var
6325         for detecting SSE3.
6326
6327         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
6328
6329         * mini.c (mini_init): Call mono_simd_intrinsics_init.
6330
6331 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6332
6333         * basic-simd.cs: Added tests for Vector8u and Vector16u.
6334
6335         * basic-simd.cs: Fixed test naming.
6336
6337 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6338
6339         * mini-ops.h: Added ops for packed and saturated math, shifts
6340         and packing/unpacking.
6341
6342         * cpu-x86.md: Added descriptors for the above ops.
6343
6344         * mini-x86.c: Added code to emmit the above ops.
6345
6346         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
6347
6348 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
6349
6350         * aot-compiler.c (compile_method): Enable AOT for generic code.
6351
6352         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
6353
6354 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
6355
6356         * mini.c: add a workaround for a common screwup that ends up blamed
6357         to mono (other processes blocking signal delivery).
6358
6359 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6360
6361         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
6362         in the LDFLD/STFLD opcodes. Fixes #432673.
6363
6364         * iltests.il.in: Add a new test.
6365
6366 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
6367
6368         * mini-arm.c: attach the thread in unmanaged->managed transitions
6369         using delegates (bug #433148).
6370
6371 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6372
6373        * basic-simd.cs: Use new ShuffleSel constants.
6374
6375 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6376
6377         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
6378
6379         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
6380         only disable simd intrinsics if no sse2 is detected.
6381
6382         * optflags-def.h: Added sse3.
6383
6384         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
6385         is disabled.
6386
6387 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6388
6389         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
6390         when adding delegate-invoke wrappers.
6391
6392 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6393
6394         * Makefile.am: Reenable the simd tests.
6395
6396 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6397
6398         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
6399           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
6400           other vreg is allocated to that hreg.
6401
6402         Contributed under MIT/X11 license.
6403
6404 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6405
6406         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
6407         yet checked in.
6408
6409 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6410
6411         * basic-simd.cs: New test suite for SIMD intrinsics.
6412
6413         * Makefile.am: Added new tests.
6414
6415 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6416
6417         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
6418
6419         * mini-ops.h: Same.
6420
6421         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
6422
6423         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
6424         using SSE2 aware opcodes.
6425
6426         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
6427         is enabled, this code path is only reachable if conversion ops are emmited after
6428         mono_method_to_ir.
6429
6430         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
6431
6432         This optimization saves 6 bytes per conversion against the old version.
6433
6434 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6435
6436         * aot-compiler.c (compile_method): Don't skip methods referencing 
6437         generic methods without a corresponding entry in token_info_hash, since
6438         encode_method_ref () can handle all generic methods now.
6439
6440         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
6441         generic context is set.
6442         
6443         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
6444         generic sharing of LDTOKEN.
6445
6446 2008-10-06  Mark Probst  <mark.probst@gmail.com>
6447
6448         * mini-amd64.h: Temporarily disabled fast virtual generic method
6449         calls because it breaks the System.Runtime.Remoting tests.
6450
6451 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6452
6453         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
6454
6455         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
6456         so inlining actually works.
6457         (check_inline_caller_method_name_limit): Ditto.
6458
6459 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
6460
6461         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
6462         64 bit safety (from Olaf Hering and Andreas Farber).
6463
6464 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6465         
6466         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
6467         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
6468         unused virtual call support code.
6469
6470         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
6471         
6472         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
6473         which can't use aot trampolines.
6474         (decode_patch): Don't create aot trampolines for methods which can't use
6475         them.
6476
6477         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
6478         use aot trampolines.
6479
6480         * mini.h: Bump AOT image format version.
6481         
6482 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
6483
6484         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
6485         to save_token_info () since cmethod is inflated for constrained calls.
6486
6487         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
6488
6489 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
6490
6491         * Makefile.am: Add build rules for ppc64.
6492         This avoids the build failing at pedump with unresolved symbols
6493         due to lack of arch_sources. Instead it will now fail earlier
6494         due to lack of cpu-ppc64.md.
6495
6496         Contributed under MIT/X11 license.
6497
6498 2008-10-04  Mark Probst  <mark.probst@gmail.com>
6499
6500         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
6501         tail calls.
6502
6503         * iltests.il.in: Add test case for tail call with many arguments.
6504
6505 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6506
6507         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
6508         to the fast virtual generic method code until the aot case is fixed.
6509
6510 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6511
6512         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
6513
6514 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6515
6516         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
6517         thunks.
6518
6519 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6520         
6521         * simd-intrinsics.c: Forgot to add this one.
6522
6523         * mini-codegen.c: Fix macro in case SIMD is not supported.
6524
6525 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6526         
6527         This patch land initial JIT support for simd intrinsics.
6528
6529         * mini-x86.h: Added new define to make --enable_minimal work on x86.
6530
6531         * Makefile.am: Added simd-intrinsics.c
6532
6533         * simd-intrinsics.c: New file with simd instrinsic related
6534         code.
6535
6536         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
6537
6538         * cpu-x86.md: Add simd related instructions.
6539
6540         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
6541
6542         * driver.c: Added two new --regression variants.
6543
6544         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
6545
6546         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
6547
6548         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
6549         extract some complicated logic to helper functions.
6550
6551         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
6552
6553         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
6554
6555         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
6556         the specialized simplification pass.
6557
6558         * method-to-ir.c (mono_spill_global_vars): Use new macro.
6559
6560         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
6561
6562         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
6563         table.
6564
6565         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
6566         if MONO_ARCH_NEED_SIMD_BANK is defined.
6567
6568         * mini-ops.h: Added the new simd ops.
6569
6570         * mini-x86.c: Added mono_arch_xregname.
6571
6572         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
6573
6574         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
6575
6576         * mini-x86.h: Define simd related MONO_ARCH macros.
6577
6578         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
6579
6580         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
6581
6582         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
6583         MONO_CLASS_IS_SIMD to deal with simd related IR.
6584
6585         * mini.h (MonoInst): Added spill_var to the backend union.
6586
6587         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
6588
6589         * mini.h: Added forward declarations of the new simd fuctions.
6590
6591         * optflags-def.h: Added new optimization names SIMD.
6592
6593         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
6594
6595         * regalloc.h: Added support for working with 3 register banks.
6596
6597         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
6598
6599         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
6600
6601 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
6602
6603         * mini-exceptions.c: remove 64 bit related ifdef clutter.
6604
6605 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6606
6607         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
6608         instead of one on 64 bit systems.
6609
6610         * method-to-ir.c: Remove unused includes.
6611
6612 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
6615         cfg->used_int_regs, since the two are different on arm.
6616
6617 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6618
6619         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
6620         mono_method_get_vtable_index() to get the vtable index.
6621
6622 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6623
6624         * method-to-ir.c (mono_method_to_ir2): Don't create native
6625         wrappers for array methods, because they're never called (and if
6626         they were called they wouldn't work).
6627
6628 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6629
6630         * method-to-ir.c (mono_method_to_ir2): Array methods are
6631         special-cased and must not be invoked indirectly via the (M)RGCTX
6632         when generic sharing is turned on.  Fixes #431413.
6633
6634 2008-10-01  Mark Probst  <mark.probst@gmail.com>
6635
6636         * method-to-ir.c: When generic sharing is active, call
6637         non-interface virtual generic methods via the standard trampoline.
6638
6639         * mini-trampolines.c: Handle virtual generic shared methods.
6640
6641         * mini.h, mini-x86.c, mini-x86.h: New argument for
6642         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
6643         method thunks and which is the trampoline to call if the lookup
6644         fails.  Enable the virtual generic method thunk for x86.
6645
6646         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
6647         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
6648         argument but assert that it's NULL, because these archs don't yet
6649         implement the virtual generic method thunk.  Changes in the IMT
6650         thunk data structures.
6651
6652 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
6653
6654         * aot-compiler.c (emit_globals): Avoid invalid characters in
6655         the static linking symbol.
6656
6657         * objects.cs: Add a test for the range check optimization. Fix warnings.
6658
6659         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
6660         optimization from the current JIT.
6661
6662         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
6663         later in decompose_array_access_opts () to allow more optimizations.
6664
6665         * method-to-ir.c (mono_handle_soft_float): Rename this to 
6666         mono_decompose_soft_float () for consistency.
6667
6668         * mini-ops.h: Fix arguments of OP_STRLEN.
6669
6670         * method-to-ir.c (save_cast_details): Extract the cast details saving code
6671         into a separate function.
6672         (reset_cast_details): Ditto.
6673         (handle_unbox): Save cast details. Fixes #431254.
6674
6675         * method-to-ir.c: Remove some obsolete FIXMEs.
6676
6677 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6678
6679         * ir-emit.h (alloc_dreg): Write a warning before crashing.
6680
6681 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6682
6683         * mini-codegen.c: More work on macros to make them
6684         ready for multiple regbanks.
6685
6686 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6687
6688         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
6689
6690         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
6691
6692 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6693
6694         * mini-codegen.c (mono_spillvar_offset): Proper support for
6695         multiple regbanks.
6696
6697 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6698
6699         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
6700         the stack overflow changes.
6701
6702 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6703
6704         * mini-codegen.c: Make all bank macros depend on reg_bank.
6705
6706         * mini-codegen.c (mono_local_regalloc): Make free mask
6707         initialization regbank aware.
6708
6709 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6710
6711         * mini-codegen.c (mono_local_regalloc): Extract callee
6712         mask selection to a function and make it regbank aware.
6713
6714 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6715
6716         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
6717         code to deal with many regbanks.
6718
6719 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6720
6721         * mini-codegen.c: More fp->regbank changes.
6722
6723 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6724
6725         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
6726         of a hardcoded constant.
6727
6728 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6729
6730         * method-to-ir.c (type_from_stack_type): Fix typo.
6731
6732 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
6733
6734         * mini-ia64.c (emit_move_return_value): Convert float return values to
6735         double.
6736
6737         * objects.cs: Add a new test.
6738         
6739         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
6740         VARARG methods to fix an assert later.
6741
6742         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
6743         end so it at least compiles.
6744
6745 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
6746
6747         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
6748
6749 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
6750
6751         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
6752         optimization to a new function (emit_optimized_ldloca_ir) and enable
6753         it for both ldloca and ldloca_s.
6754
6755 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
6756
6757         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
6758         gshared CASTCLASS code.
6759
6760         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
6761         amd64, where the libc stack unwinder encounters stack frames referring to
6762         native code in unmapped memory.
6763
6764         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
6765         sharing.
6766
6767         * generics.cs: Add new test.
6768
6769 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
6770
6771         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
6772         add a check that one of the ARM_FPU_ constants is defined.
6773
6774         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
6775         
6776         * mini-exceptions.c: Fix build on non-altstack platforms.
6777
6778         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
6779         sharing of vtypes.
6780
6781         * ir-emit.h: Add a comment to NEW_PCONST.
6782
6783         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
6784
6785         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
6786
6787         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
6788         after the changes to MonoJitDomainInfo.
6789
6790 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6791
6792         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
6793
6794 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6795
6796         * mini-ppc.c: Compiler warning fixes.
6797
6798 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6799
6800         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
6801         for pinvokes.
6802
6803 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6804
6805         * exceptions-ppc.c, mini-ppc.h: Compile
6806         mono_arch_handle_altstack_exception() on Darwin, too.
6807
6808 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6809
6810         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
6811         work on archs which don't have generic sharing implemented, only
6812         without the vtable_arg.
6813
6814 2008-09-26  Mark Probst  <mark.probst@gmail.com>
6815
6816         * mini.c: Added comment explaining why delegate ctor icall
6817         wrappers are compiled.
6818
6819 2008-09-26  Mark Probst  <mark.probst@gmail.com>
6820
6821         * mini.c: Don't produce trampolines to delegate ctor icall
6822         wrappers but compile them upfront.
6823
6824 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
6825
6826         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
6827         runtime-set function when going back to managed code. Currently this
6828         is used to set back the protection on the soft ovf pages and/or to
6829         throw the stack overflow exception that happened in unmanaged code.
6830
6831 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
6832
6833         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
6834         runtime-set function when going back to managed code. Currently this
6835         is used to set back the protection on the soft ovf pages and/or to
6836         throw the stack overflow exception that happened in unmanaged code.
6837
6838 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
6839
6840         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
6841         the support code for restoring stack protection after stack overflows
6842         that happen in unmanaged code. Don't set the exec permission on the
6843         soft overflow area.
6844
6845 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
6846
6847         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
6848         delegate->method_ptr is set. Fixes #428054.
6849
6850 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
6851
6852         * tests.cs: Rename to ratests.cs.
6853
6854         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
6855         emit_get_rgctx_... functions.
6856
6857 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6858
6859         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
6860
6861 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6862
6863         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
6864         before asserting that method is sharable.
6865
6866 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6867
6868         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
6869         whether method needs a static RGCTX wrapper used instead of
6870         complex conditions.
6871
6872         * generic-sharing.c, mini.h: A few functions moved to
6873         metadata/generic-sharing.c.
6874
6875 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6876
6877         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
6878         Generic code sharing for value types, which essentially means
6879         treating value type methods like static methods.  The RGCTX is
6880         passed in the same way.
6881
6882 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
6883
6884         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
6885         opcode when creating multi-dimensional arrays of open types.
6886
6887         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
6888         open generic types.
6889
6890         * generics.cs: Add a test.
6891
6892         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
6893
6894 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
6895
6896         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
6897
6898         * mini.c (mini_method_compile): Set it when running under the debugger. 
6899
6900         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
6901         vreg optimization if the flag is set.
6902
6903         * driver.c (mono_main): Add --attach= option to pass options to
6904         the attach agent.
6905
6906         * mini.c (sigquit_signal_handler): Start the attach agent.
6907
6908         * ssapre.c: Disable this to save space since it is not yet ported to
6909         linear IR.
6910
6911         * regalloc2.c: Disable this to save space.
6912
6913         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
6914
6915 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
6916
6917         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
6918         the -v option useful again.
6919
6920 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
6921
6922         * mini-amd64.c (mono_arch_output_basic_block): Add support for
6923         --break-at-bb.
6924
6925         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
6926         arrays of arrays. Fixes #428406.
6927
6928         * method-to-ir.c (mini_emit_castclass): Ditto.
6929
6930         * objects.cs: Add new test.
6931         
6932 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
6933
6934         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
6935         was wrong at it choked against target_type_is_incompatible for byref types.
6936
6937 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
6938
6939         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
6940         places.
6941
6942 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
6943
6944         * mini-exceptions.c: update a few more exceptions-related counters.
6945
6946 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
6947
6948         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
6949         new functions to allocate from persistent mempools.
6950
6951 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
6952
6953         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
6954         multiple register banks in the future.
6955
6956         * mini-codegen.c (mono_local_regalloc): Fix a warning.
6957
6958 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
6959
6960         * mini.c (type_to_eval_stack_type): Remove duplicated function.
6961
6962         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
6963
6964         * mini.h: Export type_to_eval_stack_type.
6965
6966         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
6967         is only ins->klass of byref types.
6968
6969 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
6970
6971         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
6972         (mini_emit_memcpy2): Ditto.
6973
6974         * mini-amd64.c: Fix a warning.
6975
6976 2008-09-21  Mark Probst  <mark.probst@gmail.com>
6977
6978         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
6979         linking.
6980
6981 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
6982
6983         * method-to-ir.c: Extract stloc micro-optimization to a
6984         function and apply it to all cases.
6985
6986 2008-09-19  Mark Probst  <mark.probst@gmail.com>
6987
6988         * method-to-ir.c: Don't fail generic code sharing in cases we
6989         already support.
6990
6991 2008-09-18  Mark Probst  <mark.probst@gmail.com>
6992
6993         * mini-ppc.c: Handle structs in tailcalls on Darwin.
6994
6995 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
6996
6997         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
6998         implementation.
6999
7000 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
7001
7002         * trace.c: make tracing more useful and correct, with per-thread
7003         id and indent info.
7004
7005 2008-09-15  Mark Probst  <mark.probst@gmail.com>
7006
7007         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
7008         doing a method call and the argument is an R4.
7009
7010 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
7011
7012         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
7013         generic methods.
7014
7015 2008-09-13  Mark Probst  <mark.probst@gmail.com>
7016
7017         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
7018
7019 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
7020
7021         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
7022         (MONO_JUMP_TABLE_FROM_INS): Ditto.
7023
7024 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7025
7026         * driver.c: Add a --agent argument (not supported yet) to load managed
7027         agent assemblies before loading the main assembly, similarly to how the
7028         Java VM handles agents.
7029
7030 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7031
7032         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
7033         function to do stack layout of local variables.
7034
7035 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7036
7037         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
7038         calculation.
7039
7040 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7041
7042         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
7043         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
7044         JIT if DISABLE_JIT is defined.
7045
7046         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
7047         defined.
7048
7049 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7050
7051         * iltests.il.in: Disable the fconv test on PPC (the result is
7052         undefined according to ECMA).
7053
7054 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7055
7056         * iltests.il.in: Enable tail call tests for PPC.
7057
7058         * mini.h: Add variable for storing incoming valuetype argument
7059         addresses for tail calls.
7060
7061         * mini-ppc.c: Implement valuetype arguments and return values for
7062         tailcalls on Linux.
7063
7064 2008-09-09  Mark Probst  <mark.probst@gmail.com>
7065
7066         * mini-ppc.c: Partially implement tail calls (struct arguments and
7067         return values not supported).
7068
7069         * method-to-ir.c: Enable tail calls on PPC.
7070
7071 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
7072
7073         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
7074         runtime-invoke wrappers to work around the problem of them getting
7075         assigned to a random class.
7076
7077         * aot-runtime.c (mono_aot_get_method): Ditto.
7078         
7079 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
7080
7081         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
7082         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
7083
7084 2008-09-07  Mark Probst  <mark.probst@gmail.com>
7085
7086         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
7087         until they're implemented properly.
7088
7089         * exceptions-ppc.c: Use arch-independent exception-handling code
7090         instead of custom one.
7091
7092         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
7093         for Linear IR.
7094
7095         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
7096
7097         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
7098         applies when __powerpc__ is defined.
7099
7100 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
7101
7102         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
7103         methods to their code to avoid computing the full name of wrappers and
7104         doing a lookup in a string hash table.
7105
7106 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7107
7108         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
7109         we identify bblocks before method_to_ir () is ran.
7110
7111         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
7112         Also avoid optimizing branches pointing to themselves.
7113
7114         * mini.c (mini_method_compile): Ditto. Fixes #422947.
7115
7116 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
7117
7118         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
7119
7120 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7121
7122         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
7123         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
7124         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
7125         'buf'.
7126
7127         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
7128         jumped to the same entry in plt_jump_table.
7129
7130 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
7131
7132         * method-to-ir.c (initialize_array_data): Handle field with RVA from
7133         dynamic images.
7134
7135 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
7136
7137         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
7138         other assignment can be if converted. Saves 1.5% on corlib size and fixes
7139         #421807.
7140
7141 2008-08-29  Geoff Norton  <gnorton@novell.com>
7142
7143         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
7144         segment, and doesn't properly handle .space as .text.  Fixes
7145         AOT Mach/ARM
7146
7147 2008-08-29  Geoff Norton  <gnorton@novell.com>
7148
7149         * mini.c: Disable the mach exception handler when running on 
7150         ARM
7151
7152 2008-08-29  Geoff Norton  <gnorton@novell.com>
7153
7154         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
7155         globals on Darwin/ARM
7156
7157 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
7158
7159         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
7160         since too many things depend on it. Instead, call 
7161         mono_runtime_set_no_exec ().
7162         
7163         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
7164         the new JIT.
7165
7166         * aot-compiler.c: Add an 'asm-only' AOT option.
7167
7168         * mini.c: Avoid initializing the runtime when doing AOT compilation.
7169                 
7170         * aot-compiler.c (compile_method): Disable gshared support for now as it
7171         doesn't yet work.
7172
7173 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7174
7175         * mini-amd64.h : Fix a compiler warning.
7176
7177         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
7178           Changed to use a callback function to retrieve the unwind info.
7179           This avoids problems observed when code blocks were removed by
7180           unloading an app domain.
7181
7182         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
7183           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
7184           to work properly.
7185
7186         Contributed under MIT/X11 license.
7187
7188 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7189
7190         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
7191           case to keep the stack aligned to 8.
7192
7193         Contributed under MIT/X11 license.
7194
7195 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
7196
7197         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
7198         avoid repeated linear searches.
7199
7200 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
7201
7202         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
7203         methods it can't handle.
7204         
7205         * aot-compiler.c (add_method): Avoid adding a method twice.
7206         (add_wrappers): Add runtime invoke wrappers for all methods.
7207
7208         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
7209         function to create an aot-compatible version of this trampoline.
7210
7211         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
7212
7213 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
7214
7215         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
7216
7217         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
7218         with a generic sharing failure.
7219
7220         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
7221
7222         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
7223         CEE_RETHROW. Fixes #419634.
7224
7225         * mini.c (mono_method_to_ir): Ditto.
7226
7227         * exceptions.cs: Add a new test.
7228         
7229         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
7230         to mono_type_stack_size_internal () since some callers might not pass in
7231         an rgctx.
7232
7233         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
7234         instrument_prolog. Fixes #419878.
7235
7236         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
7237         doubles in soft float mode volatile.
7238
7239 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
7240
7241         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
7242
7243         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
7244         to handle soft float correctly.
7245
7246         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
7247         the fast path.
7248
7249         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
7250
7251         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
7252         to sp, since the generics catch code requires it.
7253
7254         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
7255         copying.
7256
7257         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
7258         mono_arch_emit_imt_argument ().
7259
7260         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
7261
7262         * mini-arm.c tramp-arm.c: Generic sharing updates.
7263
7264 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
7265
7266         * mini-arm.c: Fix the arm build.
7267
7268         * generic-sharing.c (mini_type_get_underlying_type): New helper function
7269         handling enums, generic instances and generic sharing.
7270         (mini_type_stack_size_full): Ditto.
7271
7272         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
7273         
7274         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
7275
7276         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
7277
7278         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
7279         trampolines.
7280
7281         * mini-arm.c: Various small generic sharing changes.
7282
7283         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
7284         this for x86.
7285         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
7286         custom code.
7287
7288         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
7289         helper function to return a generic class init trampoline.
7290
7291         * method-to-ir.c mini.c: Use it.
7292         
7293         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
7294         arch-specfic function to return a generic class init trampoline.
7295
7296         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
7297         the GENERIC_CLASS_INIT custom code.
7298
7299         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
7300         a fatal error, not a sharing failure.
7301
7302         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
7303         needed.
7304
7305         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
7306         trampoline argument from MONO_ARCH_VTABLE_REG.
7307
7308         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7309         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7310         argument, and pass the vtable in VTABLE_REG.
7311
7312         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7313         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7314         argument, and pass the vtable in VTABLE_REG.
7315         (mono_arch_create_trampoline_code_full): Remove some special casing for
7316         the rgctx fetch trampoline.
7317
7318         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
7319         Fixes #419273.
7320
7321         * iltests.il: Add a test for it.
7322
7323 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
7324
7325         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
7326
7327         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
7328         no longer needed.
7329
7330         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
7331         use mono_jit_info_table_find () to avoid recursion.
7332         (mono_delegate_trampoline): Add a sync wrapper here.
7333
7334         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
7335         here.
7336
7337         * mini.c (mono_method_to_ir): Ditto.
7338         
7339         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
7340         add_sync_wrapper argument. Don't add a sync wrapper here.
7341         (mono_create_jump_trampoline): Don't add a sync wrapper here.
7342
7343         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
7344         
7345 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7346
7347         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
7348           of nonvolatile registers back from MonoContext to CONTEXT.
7349
7350         Contributed under MIT/X11 license.
7351
7352 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7353
7354         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
7355           arguments on Winx64 there are only 4 argument registers.  For this
7356           logic to work the last argument must be pulled from the stack.  
7357
7358         Contributed under MIT/X11 license.
7359
7360 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
7361
7362         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7363
7364         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
7365         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
7366         encode/decode_method_ref ().
7367
7368         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
7369
7370         * aot-runtime.c (decode_patch): Ditto.  
7371
7372         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
7373         MONO_PATCH_INFO_METHOD.
7374
7375         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
7376         MonoGenericJitInfo.
7377
7378         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
7379         MonoGenericJitInfo.
7380
7381         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
7382
7383         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
7384         one from the caller.
7385
7386         * aot-runtime.c (decode_generic_inst): New function to decode and
7387         return a interned generic inst.
7388         (decode_klass_ref): Use it.
7389         (decode_method_ref): Ditto.
7390
7391         * aot-compiler.c (emit_exception_debug_info): Save 
7392         jinfo->has_generic_jit_info too.
7393
7394 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7395
7396         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
7397
7398         * iltests.il.in: Add a test for fconv_to_i.
7399
7400         * liveness.c: Disable the liveness2 pass for now to save space.
7401
7402         * regalloc2.c: Include mempool-internals.h to fix warnings.
7403
7404         * aot-compiler.c (encode_method_ref): Encode the context of generic
7405         instance methods.
7406
7407         * aot-runtime.c (decode_method_ref): Inflate generic methods using
7408         the context saved in the aot file.
7409
7410         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7411
7412         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
7413
7414         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
7415         volatile so they won't be optimized away.
7416
7417 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
7418
7419         * ssa.c:
7420         * ssa2.c:
7421         * mini.c:
7422         * regalloc2.c:
7423         * dominators.c: Remove duplicated functions that now are in
7424         mempool-internals.h.
7425
7426 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7427
7428         * aot-compiler.c: Fix warnings.
7429
7430         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
7431
7432         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
7433
7434         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
7435         as the patch type.
7436
7437         * mini.c (mono_resolve_patch_target): Ditto.
7438         
7439         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
7440         (encode_klass_ref): Add support for encoding VARs/MVARs.
7441
7442         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
7443
7444         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
7445         the handling of the got entries into a separate 'decode_got_entry' function.
7446         Add support for RGCTX_FETCH.
7447
7448         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
7449         clobbered by the trampoline code.
7450
7451         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
7452         not clobbered by the indirect calling code.
7453
7454 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7455
7456         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
7457         to fix the build.
7458
7459 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
7460
7461         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
7462         signature using the compilation mempool otherwise we would leak it.
7463
7464 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7465
7466         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
7467         mono_emit_abs_call ().
7468
7469         * patch-info.h: Add GENERIC_CLASS_INIT.
7470
7471         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
7472
7473         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
7474         as their target as a near call.
7475
7476         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
7477         ABS handling code.
7478         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
7479
7480         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
7481         call to a runtime function described by a patch.
7482
7483         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
7484         mono_emit_abs_call, this has the advantage that the ABS handling code in
7485         mono_codegen () can handle them both, and can handle other stuff in the
7486         future without additional code.
7487
7488         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
7489         entry.
7490         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
7491         abs addresses.
7492
7493         * mini.h: Add missing bblock related prototypes.
7494
7495         * mini.h (MonoCompile): Remove unused reverse_inst_list and
7496         reverse_inst_list_len fields.
7497
7498         * mini.c: Refactor this file a bit by moving branch optimizations to 
7499         branch-opts.c.
7500
7501         * method-to-ir.c: Merge generic sharing changes missed earlier.
7502
7503         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
7504
7505         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
7506         shared patches. Process METHODCONST as a shared patch.
7507
7508         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
7509         as it crashes on the 2.0 mscorlib.
7510
7511         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
7512         to cause crashes.
7513         
7514         * aot-compiler.c: Use is_plt_patch () in a few additional places.
7515         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
7516         by IMT.
7517
7518         * aot-compiler.c: Reorganize the got handling code to be a bit more
7519         understandable.
7520
7521 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7522
7523         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
7524         mono_patch_info_equals/hash, and use it to massively simplify
7525         get_plt_index ().
7526
7527         * mini.c (mono_patch_info_hash): Simplify this and add support for
7528         more patch types.
7529
7530         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
7531
7532         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
7533         handling code, since an offset is not enough to identify a trampoline.
7534
7535         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
7536
7537 2008-08-17  Mark Probst  <mark.probst@gmail.com>
7538
7539         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
7540
7541         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
7542
7543         * mini-ops.h: Argument and result types for OVF_CARRY ops.
7544
7545         * decompose.c: PPC decompositions for various ops.
7546
7547         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
7548
7549 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7550
7551         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
7552         call the generic trampoline code using a call, instead of a jump, to
7553         remove some special casing from the generic trampoline code.
7554
7555         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
7556         (mono_codegen): Ditto.
7557
7558         * aot-compiler.c aot-runtime.c: Ditto.
7559
7560         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
7561
7562         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
7563         helper function to find the offset corresponding to a lazy fetch trampoline.
7564
7565         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
7566         when doing generic sharing.
7567
7568         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
7569         places.
7570         
7571         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
7572         mini-trampolines.c to be with the other trampoline creation functions.
7573
7574         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
7575         as it is equal to method->signature in most cases, add a 
7576         mono_emit_method_call_full variant which takes a signature and an imt
7577         argument as well.
7578
7579 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
7580
7581         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
7582         to this function, since it could be computed easily from the method 
7583         argument.
7584         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
7585         more.
7586
7587         * method-to-ir.c mini.c: Remove references to 
7588         compile_generic_method_wo_context.
7589
7590         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
7591         generic method calls.
7592         
7593         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
7594         dimensional non-szarrays.
7595
7596         * mini.c (mini_init): Register mono_array_new_1.
7597
7598         * jit-icalls.c (mono_array_new_1): New jit icall.
7599
7600         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
7601         pointing to the method.
7602
7603         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
7604         method addresses belonging to METHOD_JUMP patches in the 
7605         jump_target_got_slot_hash.
7606         (mono_aot_load_method): Ditto.
7607
7608         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
7609         METHOD_JUMP patches.
7610
7611         * mini.c (mini_create_jit_domain_info): New helper function which 
7612         initializes/frees domain->runtime_info.
7613         (mini_free_jit_domain_info): Ditto.
7614         (mini_init): Install the domain hook functions with the runtime.
7615
7616         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
7617         information maintained by the JIT.
7618
7619         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
7620         insertion into jump_table_hash into mono_codegen (), also implement proper
7621         locking.
7622
7623         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
7624         tail calls, it is already done by the aot code.
7625         
7626         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
7627         mechanism on amd64.
7628
7629         * iltests.il.in: Make the jmp test a bit more complex.
7630
7631         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
7632         generic instances which doesn't have a token.
7633
7634         * aot-runtime.c (decode_method_ref): Ditto.
7635         
7636         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
7637         can handle this case now.
7638         (handle_box): Ditto.
7639
7640 2008-08-15  Geoff Norton  <gnorton@novell.com>
7641
7642         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
7643         debugging check.
7644
7645 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
7646
7647         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
7648         calling generic methods.
7649
7650         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
7651
7652         * aot-runtime.c (decode_patch_info): Ditto.
7653
7654         * mini.c (mono_resolve_patch_target): Ditto.
7655         
7656         * patch-info.h: Add METHOD_RGCTX.
7657
7658         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
7659
7660 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
7661
7662         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
7663         arguments in registers.
7664
7665         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
7666         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
7667
7668         * mini.c (mini_method_compile): Abort aot compilation for generic
7669         methods if generic sharing is disabled.
7670         
7671         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
7672         an mrgctx.
7673
7674         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
7675         requiring an mrgctx.
7676
7677         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
7678         store instructions when converting a vcall to a normal call.
7679
7680         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
7681         mono_arch_find_jit_info.
7682
7683 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
7684
7685         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
7686         avoid calling mono_method_full_name () for every method even if the
7687         env var is not set.
7688         (check_inline_caller_method_name_limit): Ditto.
7689
7690 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7691
7692         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
7693         assemblies in one run.
7694
7695         * aot-compiler.c (mono_compile_assembly): Only print out a count of
7696         skipped methods if it is not 0.
7697
7698         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
7699
7700 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7701
7702         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
7703           MONO_ARCH_HAVE_UNWIND_TABLE.
7704
7705         Contributed under MIT/X11 license.
7706
7707 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7708
7709         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
7710           from default optimizaton list on Winx64.
7711
7712         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
7713
7714         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
7715           the LMF from the MonoJitTlsData structure.
7716
7717         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
7718
7719         Contributed under MIT/X11 license.
7720
7721 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7722
7723         * mini.c (sigsegv_signal_handler): Fix the build.
7724
7725         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
7726         assembly->aot_module.
7727
7728         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
7729         hash table. This simplifies and speeds up a lot of code, and fixes support
7730         for .netmodules.
7731
7732         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
7733         with the runtime.
7734
7735         * mini-exceptions.c: Ditto.
7736         
7737         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
7738         'native_offset' argument, since these are computed in the 
7739         mono_find_jit_info () function.
7740
7741         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
7742         is used by exceptions-ppc.c.
7743
7744         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
7745         mono_arch_find_jit_info ().
7746         
7747         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
7748         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
7749         generic code in mini-exceptions.c.
7750
7751 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
7752
7753         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
7754
7755         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
7756         
7757         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
7758         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
7759         called while holding the loader lock. Fixes #415608.
7760         (mono_aot_get_method_from_token_inner): Ditto.
7761
7762 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
7763
7764         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
7765         to reduce differences between this and the generic implementation in
7766         mini-exceptions.c.
7767         (ves_icall_get_frame_info): Ditto.
7768
7769         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
7770
7771         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
7772         longer neccesarry.
7773
7774         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
7775         mono_arch_get_call_filter () and make it non-static, for consistency with the
7776         other architectures.
7777
7778 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
7779
7780         * mini.c:
7781         * local-propagation.c:
7782         * mini-x86.c: Correct the name of arch defines.
7783
7784 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
7785
7786         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
7787         NO_EMULATE_LONG_SHIFT_OPS define.
7788
7789 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
7790
7791         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
7792         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
7793
7794         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
7795         MACH fixes. Merged from the 2.0 branch.
7796
7797         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
7798
7799         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
7800         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
7801
7802         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
7803
7804         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
7805         mono_marshal_get_native_wrapper () signature changes.
7806
7807 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
7808
7809         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
7810         conversion bug under arm.
7811
7812 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
7813
7814         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
7815
7816         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
7817         with overflow checking.
7818
7819 2008-08-05  Marek Habersack  <mhabersack@novell.com>
7820
7821         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
7822         to the genmdesc.pl file
7823
7824 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
7825
7826         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
7827         arg_array in the soft-float versions of the LOAD/STORE macros.
7828
7829         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
7830         implementation.
7831
7832         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
7833
7834 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
7835
7836         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
7837         a float HFA. Fixes #413621.
7838
7839 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
7840
7841         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
7842         frame_size to args_size. Fixes build.
7843
7844 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
7845
7846         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
7847         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
7848
7849         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
7850         the stack are not unaligned. Fixes #413247.
7851         
7852 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
7853
7854         * mini.c: update jitted methods performance counters.
7855
7856 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7857
7858         * mini-exceptions.c: increase the exceptions thrown performance
7859         counter in mono_handle_exception ().
7860
7861 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
7862
7863         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
7864         can work with netmodules.
7865
7866 2008-07-28  Geoff Norton  <gnorton@novell.com>
7867
7868         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
7869         regression tests.
7870
7871 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
7872
7873         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
7874         correct place.
7875
7876 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
7877
7878         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
7879           The float param registers and other param registers must be the 
7880           same index on Windows x64.
7881
7882         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
7883           ArgValuetypeAddrInIReg argument case.  Setting the argument
7884           op to OP_VTARG_ADDR (OP_REGOFFSET)).
7885
7886         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
7887           variable computed above as the copy length for arguments of storage
7888           type ArgValuetypeAddrInIReg.
7889
7890         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
7891           ArgValuetypeAddrInIReg argument case.  This case will rely on
7892           mono_arch_emit_outarg_vt to emit the correct code later in the process.
7893
7894         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
7895           a 32 byte stack allocation for all calls.  We will omit the adjustment for
7896           jump and tail call instructoins as they do not follow the typical call behavior.
7897
7898         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
7899           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
7900           local variable and pass the local variable by reference to the called method.
7901
7902         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
7903           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
7904           of a struct is passed in a register it must be saved with the other
7905           volatile argument on the stack.
7906
7907         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
7908           frame pointer the stack adjustment value must be saved to the unwind 
7909           info structure.
7910
7911         Contributed under MIT/X11 license.
7912
7913 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
7914
7915         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
7916         which got lost in the merge.
7917
7918 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
7919
7920         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
7921         build.
7922
7923         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
7924         
7925         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
7926         icalls, since they won't be patched.
7927
7928         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
7929         different code sequence when running under valgrind to prevent some valgrind
7930         errors.
7931
7932         * iltests.il.in: Add new regression test.
7933
7934         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
7935         end with a throw.
7936
7937         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
7938         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
7939
7940         * iltests.il.in: Add new test.
7941
7942         * aot-compiler.c: Fix some warnings.
7943
7944         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
7945         Fixes #412494.
7946
7947 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
7948
7949         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
7950         (mini_usage_jitdeveloper): Add a missing --wapi option.
7951
7952 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7953
7954         * mini-codegen.c: Simplify the is_fp macros.
7955         (free_up_ireg): Remove, use free_up_reg instead.
7956         (free_up_reg): Fix the fp case.
7957
7958 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
7959
7960         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
7961         lowered earlier.
7962
7963         * exceptions-x86.c: Merge some changes which seemed to have got lost
7964         in the linear-ir merge.
7965
7966         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
7967
7968         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
7969         long vreg volatile even if the variable was already created.
7970
7971         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
7972         volatile variables.
7973
7974 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
7975
7976         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
7977
7978         * mini.c (mono_jit_compile_method_inner): Add support for 
7979         MONO_EXCEPTION_BAD_IMAGE.
7980
7981         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
7982         mini_method_get_context () returns NULL. Fixes #356531.
7983
7984         * mini.c (mono_method_to_ir): Ditto.
7985         
7986         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
7987         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
7988
7989 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
7990
7991         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
7992         in the LDFTN implementation.
7993
7994 2008-07-25  Mark Probst  <mark.probst@gmail.com>
7995
7996         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
7997         code, patch calls to icalls, too, even if they're not in the
7998         shared generic code hash.  Fixes #411962.
7999
8000 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8001
8002         * cpu-x86.md: Increase the length of the fcall opcodes.
8003
8004         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
8005         calls returning floats.
8006
8007         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
8008         on NEWARR.
8009         
8010         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
8011         missed earlier.
8012
8013         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
8014         into the domain->method_code_hash.
8015
8016         * aot-compiler.c: Fix win32 build.
8017
8018         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
8019         
8020         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
8021         gshared NEWARR implementation.
8022
8023         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
8024
8025         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
8026         can be used outside of method_to_ir.
8027
8028         * mini.h (MonoCompile): Add arg_types field.
8029
8030         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
8031         
8032         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
8033         the values of the local arg_array and param_types array.
8034
8035 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8036
8037         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
8038         got accesses might only get generated later when NEWOBJ is decomposed.
8039         
8040         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
8041         looking up the native code of the target method when a delegate is called
8042         for the first time.
8043
8044         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
8045         optimization.
8046
8047         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
8048
8049         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
8050         AOT work on platforms without a working dlsym implementation.
8051
8052         * mini.h: Bump AOT image format version.
8053         
8054 2008-07-24  Mark Probst  <mark.probst@gmail.com>
8055
8056         * mini-exceptions.c: Free a MonoType with
8057         mono_metadata_free_type() instead of g_free().
8058
8059         * aot-runtime.c: Free a MonoType.
8060
8061 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8062
8063         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
8064         optimization.
8065
8066         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
8067         fp stack on x86.
8068
8069 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
8070         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
8071         profiler hook.
8072
8073 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8074
8075         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
8076         NEWOBJ calls on valuetypes.
8077
8078         * iltests.il.in: Add new test.
8079
8080         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
8081
8082 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8083
8084         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
8085         is no longer needed.
8086
8087         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
8088         non register sized integer arguments.
8089         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
8090         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
8091         emit_memcpy2 ().
8092
8093         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
8094         CEE_MONO_RETOBJ.
8095         
8096         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
8097         two a binop with different sized arguments is emitted.
8098
8099         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
8100         instruction in the ins==NULL case.
8101
8102 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8103
8104         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
8105
8106         * mini-x86.c: Fix osx build.
8107
8108         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
8109         opcodes as well.
8110
8111         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
8112         instruction for non int sized variables.
8113
8114         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
8115         implementation.
8116
8117 2008-07-23  Robert Jordan  <robertj@gmx.net>
8118
8119         * method-to-ir.c: Fix MSVC build.
8120
8121 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8122
8123         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
8124         a non int sized type, widen it to an int since newer versions of gcc seem to
8125         generate code which needs this.
8126
8127         * ssa2.c abcremoval2.c: Fix warnings.
8128
8129         * *: Merge the Linear IR branch.
8130
8131         The original branch is at trunk/branches/vargaz/mini-linear-il, and
8132         the ChangeLog file there describes all the changes done over the years. 
8133         Further documentation can be found at www.mono-project.com/Linear_IL.
8134
8135 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8136
8137         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8138           The float param registers and other param registers must be the 
8139           same index on Windows x64.
8140
8141         Contributed under MIT/X11 license.
8142
8143 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
8144
8145         * mini.c: Make the previous fix GC safe.
8146
8147 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
8148
8149         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
8150
8151 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8152
8153         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
8154           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
8155           ArgValuetypeAddrInIReg instead.
8156
8157         Contributed under MIT/X11 license.
8158
8159 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
8160
8161         * mini-codegen.c (get_register_spilling): Fix a warning.
8162
8163 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
8164
8165         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
8166         for types which the initialization fails. Raises the provided exception
8167         at the right stop after cleanup.
8168
8169 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
8170
8171         * aot-compiler.c: Free most of the memory allocated during compilation.
8172
8173         * mini.c (mini_parse_debug_options): Fix a leak.
8174         
8175         * mini.c (mini_method_compile): Don't add the method to the jit info tables
8176         during aot compilation.
8177
8178 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
8179
8180         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
8181         it has too much register pressure.
8182
8183 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
8184
8185         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
8186
8187 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8188
8189         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8190         on x86.
8191
8192         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8193         on amd64 similar to the way it is done on arm.
8194
8195         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8196
8197         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
8198         consistency, normalize error messages, avoid loading aot-only modules in
8199         normal mode.
8200
8201         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
8202         for consistency.
8203
8204         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
8205
8206 2008-07-11  Martin Baulig  <martin@ximian.com>
8207
8208         * debug-debugger.h
8209         (MonoDebuggerInfo): Add `interruption_request'.
8210
8211 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8212
8213         * aot-compiler.c (emit_plt): Remove some dead code.
8214
8215         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
8216
8217         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
8218         return the plt info offset belonging to a given plt entry.
8219
8220         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
8221         mono_aot_get_plt_info_offset.
8222         
8223         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
8224         similar to the amd64 code by makeing jumps through a separate jump table 
8225         instead of embedding the jump addresses into the code.
8226
8227 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
8228
8229         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
8230         method.
8231
8232 2008-07-10  Martin Baulig  <martin@ximian.com>
8233
8234         * mini.c (mini_method_compile): Disable generics sharing when
8235         running in the debugger.
8236
8237 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8238
8239         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
8240
8241         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
8242         the local register allocator from running out of registers on x86 when 
8243         using aot.
8244
8245 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
8246
8247         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
8248         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
8249         C4146.
8250
8251         Contributed under MIT/X11 license.
8252
8253 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8254
8255         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
8256         speed up the assembler.
8257
8258 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8259
8260         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
8261         support.
8262
8263         * mini.c: Move the soft float handling macros a bit earlier, add 
8264         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
8265         place.
8266
8267         * mini.h: Add prototype for mono_arch_fixup_jinfo.
8268
8269         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
8270         read-only to help catch code allocation requests.
8271         
8272         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
8273         and turn it off when using --aot-only or when compiling with --aot=full.
8274
8275         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
8276         jump table for switches from the normal domain mempool, not the code
8277         manager.
8278
8279         * mini-trampolines.c (get_unbox_trampoline): New function to return an
8280         unbox trampoline which handles aot-only mode too.
8281
8282         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
8283         an AOTed unbox trampoline.
8284
8285         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
8286
8287 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8288
8289         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
8290         ""
8291
8292         Contributed under MIT/X11 license.
8293
8294 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8295
8296         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
8297           the unwind information for the method at the end of the allocated block.
8298           
8299         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
8300           MonoCompileArch to hold the unwind info for SEH on Winx64
8301         
8302         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
8303           frame pointer info for the method being compiled.
8304           
8305         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
8306           the call to mono_exception_from_token.
8307           
8308         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
8309           storing the method prolog information in a format that the Winx64 SEH can understand.  This
8310           information is stored a the end of the method block because it is all 32-bit offset based.
8311
8312         Contributed under MIT/X11 license.
8313
8314 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8315
8316         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
8317
8318         * wapihandles.c: Fix warnings.
8319
8320         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
8321         mode.
8322
8323         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
8324         mono_jit_compile_method in aot-only mode since that calls the type 
8325         initializer.
8326         
8327         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
8328         get_delegate_invoke_impl in aot-only mode.
8329
8330         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
8331
8332 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
8333
8334         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
8335
8336         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
8337         is on by default.
8338
8339         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
8340
8341         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
8342         init trampoline from the AOT file as well.
8343
8344         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
8345         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
8346         code.
8347
8348         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
8349         mono_init.
8350
8351         * exceptions-amd64.c: Add _full variants for the remaining exception code
8352         creation functions as well, allow emission of relocatable code, remove
8353         caching since that is now done by the caller.
8354
8355         * mini-exceptions.c: Add _full variants for the remaining exception code
8356         creation functions as well, add aot-only support.
8357
8358         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
8359         if we can determine a proper token for them.
8360         (add_wrappers): Add a few more wrappers.
8361         (emit_method_code): Remove some dead code.
8362         (emit_trampolines): Emit exception code too.
8363
8364         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
8365
8366         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
8367         mono_array_new_va which avoids varargs.
8368
8369         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
8370
8371         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
8372         mono_arch_create_specific_trampoline () in all places.
8373
8374         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
8375         a bit so it can be used for other things as well.
8376         
8377         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
8378         on demand as well.
8379
8380         * exceptions-amd64.c: Rename the caching from the exception code creation
8381         functions, it is done by the caller instead.
8382         
8383         * exceptions-amd64.c: Change the signature of the exception code creation 
8384         functions to allow the creation of relocatable code later.
8385
8386         * mini-exceptions.c: Add a set of functions to query the various 
8387         runtime-generated exception functions.
8388
8389         * mini.c mini-exceptions.c: Use the newly added functions instead of the
8390         mono_arch_.. () functions.
8391         
8392 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8393
8394         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
8395
8396         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
8397
8398         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
8399         (mini_get_vtable_trampoline): Ditto.
8400
8401         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
8402         code in the AOT case by returning the code size and a list of relocations to
8403         the caller.
8404
8405         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
8406
8407 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
8408
8409         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
8410           clean the stack.
8411
8412         Contributed under MIT/X11 license.
8413
8414 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8415
8416         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
8417         so the buffer size can be computed correctly. Fixes #404735.
8418
8419         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
8420         normally as cfg->debug_info is already freed.
8421
8422 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
8423
8424         * mini-amd64.c: For calls returning vtypes in registers, don't store
8425         the return address on the stack, instead allocate a separate local for
8426         it. Fixes #404729.
8427
8428 2008-07-05  Mark Probst  <mark.probst@gmail.com>
8429
8430         * mini-trampolines.c, mini.h: Add an argument to
8431         mono_create_jit_trampoline_in_domain() for turning off the adding
8432         of the sync wrapper.
8433
8434         * mini.c: Use the JIT trampoline without sync instead of
8435         ldftn_nosync in static RGCTX invoke wrappers so that the call can
8436         be patched.
8437
8438 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8439
8440         * driver.c: Turn on GSHARED optimization by default.
8441
8442 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
8443
8444         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
8445         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
8446
8447         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
8448         create a variant of the generic trampoline code callable from AOTed trampolines.
8449
8450         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
8451         trampoline code callable from AOTed trampolines.
8452
8453         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
8454
8455 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8456
8457         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
8458         pass-through manner.
8459
8460         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
8461         and don't fail sharing for them anymore.
8462
8463         * mini-exceptions.c: Handle exceptions in shared generic methods.
8464
8465         * generic-sharing.c: When checking the context of a generic
8466         method, also check its class's context.  Don't treat wrappers as
8467         sharable.
8468
8469         * mini-trampolines.c: Some code factored out to
8470         metadata/generic-sharing.c.  Handle the MRGCTX case.
8471
8472         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
8473         we must deal with the method being of another instantiation of the
8474         class.  Add static rgctx invoke wrappers to generic methods.
8475
8476 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8477
8478         * mini.c: Provide all jit infos of generic shared methods with a
8479         generic jit info.
8480
8481         * mini-exceptions.c: Handle the new situation that a generic info
8482         might be available, but not info about the this/vtable/mrgctx
8483         variable.
8484
8485 2008-07-03  Mark Probst  <mark.probst@gmail.com>
8486
8487         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
8488         generic methods.
8489
8490 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
8491
8492         * dominators.c (check_dominance_frontier): Fix a warning.
8493
8494         * mini.h: Add some missing prototypes.
8495
8496         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
8497
8498         * driver.c (mono_jit_init_version): Correct the comments since the first
8499         argument should be the name of the root domain, not a filename.
8500
8501         * aot-runtime.c (make_writable): Error out if this is called while running
8502         with --aot-only.
8503         (load_aot_module): Ditto.
8504
8505         * aot-compiler.c: Really fix the computation of method indexes.
8506
8507         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
8508         optimizations as this is no longer called frequently.
8509
8510         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
8511         method and the invoke impl code and pass it to the delegate trampoline instead of
8512         just the delegate class.
8513
8514 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
8515
8516         * aot-compiler.c: Fixup the computation of method indexes.
8517         (add_wrappers): Create the base methods of the runtime invoke wrappers using
8518         the method builder infrastructure.
8519
8520         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
8521         has no header.
8522
8523         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
8524         mode, load the method right away instead of creating a trampoline.
8525
8526         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
8527
8528         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
8529         some checks a bit.
8530
8531 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
8532
8533         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
8534         (mono_aot_load_method): Use method_index instead of method->token.
8535
8536         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
8537         can handle icalls etc. properly.
8538
8539         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8540
8541         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
8542
8543         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
8544         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
8545         JIT_ICALL_ADDR patch type.
8546
8547         * patch-info.h: Add JIT_ICALL_ADDR patch type.
8548
8549         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
8550         request flag.
8551         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
8552
8553         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
8554
8555 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
8556
8557         * mini.c: Use domain->jit_code_hash_lock for controlling access to
8558         domain->jit_code_hash.
8559
8560 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
8561
8562         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
8563
8564 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
8565
8566         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
8567         get_this_arg_from_call, let it compute it when needed.
8568
8569         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
8570         gsctx from code only when needed.
8571
8572         * mini-trampolines.c (get_generic_context): Rename this to 
8573         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
8574         it can be called by the arch backends.
8575
8576         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
8577
8578 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
8579
8580         * driver.c (mono_main): Add experimental --aot-only command line option.
8581
8582         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
8583         set.
8584
8585 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
8586
8587         * driver.c (DllMain): Remove mono_module_handle.
8588
8589         Contributed under MIT/X11 license.
8590
8591 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
8592
8593         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
8594         for emitting methods which are not in the source assembly. Detect and report
8595         failure of assembling+linking.
8596         
8597         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
8598
8599         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
8600
8601 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
8602
8603         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
8604
8605 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
8606
8607         * mini.h: Remove some obsolete prototypes.
8608
8609         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
8610
8611 2008-06-24  Mark Probst  <mark.probst@gmail.com>
8612
8613         * mini.c (get_object_generic_inst): Variable-sized arrays are not
8614         supported by Visual Studio, so use alloca().
8615
8616 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
8617
8618         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
8619         Fixes #402585.
8620
8621 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8622
8623         * mini.c: Fail sharing of a generic method if it contains an open
8624         catch clause (because we don't pass MRGCTXs yet).
8625
8626 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8627
8628         * mini.c: When compiling a method with generic sharing, insert the
8629         method instantiated with an all-Object generic context into the
8630         jit info table, instead of the context of the first instantiation
8631         of the method we happen to compile.
8632
8633 2008-06-18  Martin Baulig  <martin@ximian.com>
8634
8635         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
8636         `major_version' and `minor_version'.
8637
8638 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8639
8640         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
8641         mono_method_is_generic_sharable_impl() takes an additional
8642         argument specifying whether to treat type variables as reference
8643         types.
8644
8645 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8646
8647         * mini.h: Removed obsolete prototypes.
8648
8649 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8650
8651         * mini.c: Don't fail generic sharing for initobj and sizeof - we
8652         already handle them.
8653
8654 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8655
8656         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
8657         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
8658         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
8659         tramp-x86.c: Added a MonoGenericContext* argument to
8660         mono_arch_get_unbox_trampoline() so that it can call other
8661         functions which require it.
8662
8663 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8664
8665         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
8666         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
8667         mono_arch_get_this_arg_from_call() takes a
8668         MonoGenericSharingContext* as well.
8669
8670 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8671
8672         * mini.c: Factor out code for emitting unbox into emit_unbox() and
8673         implement generic sharing of unbox.
8674
8675 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8676
8677         * mini.c: Don't compute the vtable to determine whether a field is
8678         special static, because it might not work for open types.
8679
8680 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8681
8682         * mini.c: Removed the unused token_type and token_source arguments
8683         from get_runtime_generic_context_ptr().
8684
8685 2008-06-17  Marek Habersack  <mhabersack@novell.com>
8686
8687         * mini.c (ADD_BINOP): fix the build
8688
8689 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
8690
8691         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
8692         a widening op.
8693
8694 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8695
8696         * mini.h: Removed class relations enum that's not used anymore.
8697
8698 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8699
8700         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
8701
8702         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
8703         the lazy fetch trampoline access code.
8704
8705 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
8706
8707         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
8708
8709 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
8710
8711         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
8712
8713         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
8714
8715         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
8716
8717 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8718
8719         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
8720         intrinsics.
8721
8722         * mini-ops.h: Add MIN/MAX_UN opcodes.
8723
8724         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
8725         intrinsics.
8726
8727         * basic-math.cs: Add more min/max tests.
8728
8729         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
8730
8731 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8732
8733         * mini.c: Small fix in the prologue of emit_castclass.
8734
8735 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8736
8737         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
8738
8739         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
8740         do not work even for unsigned types. Fixes #400014.
8741
8742         * basic-math.cs: Add regression tests for unsigned Min/Max.
8743
8744 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8745
8746         * mini.c: Added additional context_used argument to several
8747         functions, which will be needed for sharing generic methods.  Use
8748         GET_RGCTX macro wherever appropriate.  Declare only one
8749         context_used in mono_method_to_ir().
8750
8751 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8752
8753         * mini.c, generic-sharing.c: Removed generic class relations.
8754
8755         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
8756         functions due to MRGCTX changes.
8757
8758 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8759
8760         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
8761         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
8762         with calculated IMT.
8763
8764         * mini.c: Generic sharing of calls via generic interfaces.
8765
8766         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
8767         generic method with non-constant MonoGenericContext*.  Instead,
8768         the context is taken out of the method itself.
8769
8770 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8771
8772         * mini.c: Generic sharing of ldvirtftn.
8773
8774 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8775
8776         * mini.c: Generic sharing of ldftn.
8777
8778 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8779
8780         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
8781
8782 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8783
8784         * mini.c: Generic sharing of the special case of ldtoken followed
8785         by a call to GetTypeFromHandle.
8786
8787 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8788
8789         * mini.c: Generic sharing of box for nullable types.
8790
8791 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
8794         are passed on the stack. Fixes #324807.
8795
8796 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
8797
8798         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
8799         for the ArgValuetypeAddrInIReg case.
8800
8801         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
8802         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
8803
8804         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
8805         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8806         local variable and pass the local variable by reference to the called method.
8807           
8808         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
8809         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
8810
8811         Contributed under MIT/X11 license.
8812
8813 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
8814
8815         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
8816
8817         * debug-mini.c (mono_debug_print_vars): Release memory after printing
8818         everything.
8819
8820 2008-06-10  Martin Baulig  <martin@ximian.com>
8821
8822         * debug-mini.c
8823         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
8824
8825 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
8826
8827         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
8828         possible error when no arguments are passed.
8829
8830         Contributed under MIT/X11 license.
8831
8832 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
8833
8834         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
8835         where the file name is NULL.
8836
8837 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
8838
8839         * mini.c: Fix s390 build.
8840
8841 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * trace.c (mono_trace_parse_options): Fix warnings.
8844
8845         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
8846
8847 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
8848
8849         * mini.c (remove_block_if_useless): Avoid printing the method name.
8850         
8851         * mini.c: Remove needless setting of ins->cil_code which is now done by 
8852         MONO_INST_NEW.
8853
8854         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
8855         LMF. Not yet used.
8856
8857         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
8858         translated code after it has been patched.
8859
8860 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
8861
8862         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
8863         avoid problems during code patching on SMP systems.
8864         (emit_call): Avoid adding a patch info which is already added by 
8865         emit_call_body.
8866         (mono_arch_emit_exceptions): Ditto.
8867
8868 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
8869
8870         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
8871         MONO_TYPE_ISSTRUCT already checks for it.
8872
8873 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
8874
8875         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
8876           structs with floats on Winx64 the float registers are not used.  
8877           The integer registers are always used..
8878         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
8879           only one register will be used and only if the size of the struct 
8880           is 1,2,4, or 8 bytes.
8881
8882         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
8883           to work for Winx64.
8884
8885         Contributed under MIT/X11 license.
8886
8887 2008-06-05  Martin Baulig  <martin@ximian.com>
8888
8889         * debug-debugger.c (debugger_lookup_class): Also call
8890         mono_class_setup_methods() here; we're only called from RTI.
8891
8892 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
8893
8894         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
8895         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
8896         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
8897         Post-process object files and add dtrace-generated object, if necessary.
8898
8899         Contributed under MIT/X11 license.
8900
8901 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8902
8903         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
8904         element class.
8905
8906         * mini.c: Generic sharing for unbox.any and castclass.
8907
8908 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8909
8910         * mini.c: Ignore tailcall prefix in shared generic code and when
8911         doing calls which require a vtable/rgctx argument.
8912
8913 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8914
8915         * mini.c: Don't free the JIT info.
8916
8917         * driver.c: Changes in the JIT info table testing code.
8918
8919 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
8920
8921         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
8922         interruption. Fix some warnings.
8923
8924         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
8925         interruption_checkpoint.
8926
8927 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
8928
8929         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
8930         from embedding applications.
8931
8932 2008-06-02  William Holmes  <billholmes54@gmail.com>
8933
8934         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
8935           reserving 32 bytes on the stack when making calls. 
8936
8937         Contributed under MIT/X11 license.
8938
8939 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
8940
8941         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
8942         the linear IL branch.
8943
8944         * driver.c: Print out more information for --version on arm.
8945
8946 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
8947
8948         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
8949         bb_exit instead, since out of line bblocks might not actually be emitted
8950         out-of-line.
8951         
8952         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
8953         maximum epilog size for out of line bblocks if tracing is enabled.
8954
8955         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
8956
8957 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
8958
8959         * arrays.cs: Regression tests for allocating arrays with negative sizes.
8960
8961 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
8962
8963         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
8964         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
8965         opcodes.
8966
8967 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
8968
8969         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
8970         the 'value' to store is a constant.
8971
8972         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
8973
8974         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
8975         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
8976
8977 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
8978
8979         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
8980         for accessing method->generic_container.
8981
8982 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
8983
8984         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
8985         
8986         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
8987
8988         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
8989
8990         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
8991         fails.
8992
8993 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
8994
8995         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
8996
8997         * mini.c: Handle the case when mono_class_vtable () fails.
8998
8999 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
9000         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
9001         the stat profiler.
9002
9003 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9004
9005         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
9006         together with domain sharing.
9007
9008 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9009
9010         * mini.c: Treat callvirts to final methods like non-virtual calls
9011         when doing generic sharing, i.e. look them up in the runtime
9012         generic context.
9013
9014 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9015
9016         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
9017         with computed types (for generic sharing).
9018
9019         * mini.c: Generic sharing for mkrefany and refanyval.
9020
9021 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
9022
9023         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
9024         possible.
9025
9026         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
9027         the generic sharing code.
9028         
9029         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
9030         when needed.
9031
9032 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9033
9034         * mini.h: Remove the declaration of mono_aot_init_vtable ().
9035
9036 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
9037
9038         * driver.c: updated copyright date
9039
9040 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9041
9042         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
9043         needed.
9044
9045 2008-05-19  Martin Baulig  <martin@ximian.com>
9046
9047         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
9048         pointing to the new `_mono_debug_using_mono_debugger' variable.
9049
9050         * driver.c
9051         (mono_main): Check mono_debug_using_mono_debugger() rather than
9052         the `MONO_INSIDE_MDB' environment variable to check whether we're
9053         inside the debugger.
9054
9055 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
9056
9057         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
9058         argument.
9059
9060 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
9061
9062         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
9063
9064         * mini.c: Added mini_assembly_can_skip_verification. This
9065         function checks if the assembly requested to skip verification. 
9066         Fixes part of #387274.
9067
9068 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
9069
9070         * mini.c (mini_get_method): Disable the check for open generic classes when
9071         using generic sharing.
9072
9073         * generics.cs: Add a test for #387034.
9074
9075         * mini.c (mini_get_method): Check whenever the method class is an open generic
9076         type, and return NULL in that case, causing a verification error. Fixes
9077         #384123.
9078
9079 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9080
9081         * driver.c (mono_main): Revert r102623. The right
9082         thing to do is to enable the verifier under verifiable
9083         unless a --security flag was passed.
9084
9085         We need this non-trivial behavior for --verify-all otherwise
9086         mcs-compileall won't be able to use it. As it needs everything to
9087         be verified under validil.
9088
9089 2008-05-06  Martin Baulig  <martin@ximian.com>
9090
9091         Fix #383749.
9092
9093         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
9094         (mono_debugger_thread_cleanup): Likewise.
9095         (mono_debugger_extended_notification): Likewise.
9096
9097 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9098
9099         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
9100         against both inflated and non-inflated methods. We need to check against the
9101         generic definition for cases where the instantiated method is not visible.
9102         We need to check against the inflated types for cases where the instantiation
9103         changes any super type. This fixes #382986.
9104
9105         Note that this doesn't need to be applied to other parts of mono_method_to_ir
9106         that check for visibiliy as generic params only appears as the type subject
9107         of tokens on call opcodes. Field manipulation and ldftn must always
9108         target an exact type.
9109
9110 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9111
9112         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
9113         if no related --security flag is passed.
9114
9115 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9116
9117         * mini-arch.h: Prepare support for ppc64.
9118
9119         Contributed under MIT/X11 license.
9120
9121 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9122
9123         * aot-runtime.c: Prepare support for ppc64.
9124
9125         Contributed under MIT/X11 license.
9126
9127 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9128
9129         * mini-ops.h: Prepare support for ppc64.
9130
9131         Contributed under MIT/X11 license.
9132
9133 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
9134
9135         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
9136
9137         Contributed under MIT/X11 license.
9138
9139 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
9140
9141         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
9142         assemblies, since aot_name is not a full path, causing us to load MS.NET 
9143         assemblies on windows.
9144
9145 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
9146
9147         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
9148         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
9149         * main.c: Use UTF-8 encoded command line instead of Windows default code
9150         page on Windows to support Unicode.
9151         * driver.c (DllMain): New function for mixed-mode assembly support.
9152         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
9153         export __stdcall functions without decoration.
9154
9155         Contributed under MIT/X11 license.
9156
9157 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9158
9159         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
9160         saving it very early.
9161
9162 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9163
9164         * mini.h, mini.c: Lots of code for accessing the old RGCTX
9165         deleted.  The only way to access the new RGCTX is via the
9166         trampline.
9167
9168         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
9169         vtable instead of the RGCTX to static methods.
9170
9171         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
9172         accessing the new RGCTX.
9173
9174         * generic-sharing.c: There is no separation between self, type
9175         arguments and other types in the RGCTX anymore.
9176
9177 2008-04-25  Jonathan Chambers <joncham@gmail.com>
9178
9179         * mini-amd64.c (add_general): Remove previous stack adjustment.
9180         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
9181         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
9182         for 32 bytes of stack space reserved for all calls.
9183         
9184         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
9185         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
9186         adjustment.
9187         
9188         Code contributed under MIT/X11 license.
9189
9190 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
9191
9192         * mini.c (mini_method_verify): Only verify non-inflated methods, check
9193         against the root definition, peeling out method and type instantiations.
9194         Cache verify success results, code that fails verification is still
9195         checked multiple times.
9196
9197 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
9198
9199         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
9200
9201 2008-04-23  Jonathan Chambers <joncham@gmail.com>
9202
9203         * mini-amd64.c (add_general): Always increment stack on Win64.
9204         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
9205         on Win64.
9206         
9207         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
9208         stack based argument handling on Win64.
9209         
9210         Code contributed under MIT/X11 license.
9211
9212 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
9213
9214         * Makefile.am (version.h): Add support for git-svn.
9215
9216 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
9217
9218         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
9219         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
9220         avoiding allocations and libc functions which might deadlock.
9221         
9222         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
9223         'no-gdb-backtrace' option is set.
9224
9225         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
9226
9227         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
9228
9229 2008-04-21  Martin Baulig  <martin@ximian.com>
9230
9231         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
9232         and `get_lmf_addr'; `notification_address' is no longer a pointer.
9233
9234 2008-04-21  Martin Baulig  <martin@ximian.com>
9235
9236         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
9237         `thread_vtable', `event_handler_ptr' and `event_handler'.
9238
9239 2008-04-21  Martin Baulig  <martin@ximian.com>
9240
9241         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
9242         allows delayed initialization of the `executable_code_buffer' when
9243         attaching.
9244
9245 2008-04-21  Martin Baulig  <martin@ximian.com>
9246
9247         * mini.h (mono_debugger_create_notification_function): Removed.
9248         * tramp-*.c (mono_debugger_create_notification_function): Removed.
9249
9250         * mdb-debug-info64.s
9251         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9252
9253         * mdb-debug-info32.s
9254         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9255
9256         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
9257         currently only works on x86 and x86_64, so don't create it on ppc.
9258
9259 2008-04-21  Martin Baulig  <martin@ximian.com>
9260
9261         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
9262
9263         * mini.c
9264         (mini_method_compile): In the fp elimination check, check
9265         `debug_options.mdb_optimizations' in addition to
9266         mono_debug_using_mono_debugger().       
9267
9268         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
9269         disable some JIT optimizations which are only disabled when
9270         running inside the debugger.
9271         Added `--help-debug' option to describe the debugging options.
9272         (parse_debug_options): New static function to parse the `--debug'
9273         options, so we can easily add more stuff in future.
9274
9275 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
9276
9277         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
9278         the method has no body.
9279
9280 2008-04-19  Jonathan Chambers <joncham@gmail.com>
9281
9282         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
9283         assembly is not allowed in MSVC 64-bit compiler. 
9284         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
9285         as we get floating point exceptions everywhere.
9286         
9287         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
9288         correctly align arguments for call to throw_exception.
9289         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
9290         
9291         Code contributed under MIT/X11 license.
9292
9293 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
9294
9295         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
9296
9297 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
9298
9299         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
9300
9301         * mini-amd64.c (NEW_INS): Set cil_code.
9302
9303         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
9304         from mini-amd64.c so all debugger related logic is in one place.
9305
9306         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
9307         later won't have a random ip assigned to them.
9308
9309 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
9310
9311         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
9312         the arch specific function initializes code_size.
9313         (mono_create_delegate_trampoline): Ditto.
9314
9315         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
9316         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
9317         platforms.
9318
9319         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
9320         running under the debugger.
9321
9322         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
9323         debugger.
9324
9325         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
9326         debugger. Also move the disabling of optimizations here from driver.c.
9327         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
9328         debugger.
9329
9330         * mini.h (MonoCompile): Add a few new flags.
9331
9332 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
9333
9334         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
9335         so the cil_code field of created MonoInst's is properly set.
9336         (mini_select_instructions): Ditto.
9337
9338         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
9339         (MONO_INST_NEW_CALL): Ditto.
9340
9341         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
9342         in many places so the ins->cil_code field is properly initialized.
9343
9344         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
9345         place.
9346
9347 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
9348
9349         * mini.c (mini_method_compile): Print a different message when compiling a 
9350         shared method.
9351         
9352         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
9353         > 1.
9354
9355 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9356
9357         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
9358         SSE2 instructions.
9359
9360         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
9361         
9362 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9363
9364         * mini.c (handle_stack_args): Make this return void since its return value was
9365         never used. Also set cfg->unverifiable for invalid IL instead of calling
9366         G_BREAKPOINT ().
9367
9368 2008-04-10  Mark Probst  <mark.probst@gmail.com>
9369
9370         * mini.c: Make sure "this" is live in catch clauses with type
9371         variables in shared generic code.
9372
9373 2008-04-08  Mark Probst  <mark.probst@gmail.com>
9374
9375         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
9376         generic_class_is_reference_type() to ensure the proper behaviour
9377         when sharing generic code and the type in question is a type
9378         argument.
9379
9380 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9381
9382         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
9383         race conditions when printing thread dumps. Fixes #377738.
9384
9385 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
9386         
9387         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
9388         shows up when both MonoInst arguments can cause aliasig.
9389         There is likely no way in the current JIT to trigger this problem, but
9390         it showed up in the development of generics sharing, when in a new
9391         opcode both args of an OP_GROUP can be aliases (addresses of a local).
9392         When the generics sharing code will be committed, its tests will be
9393         valid also for this bug.
9394
9395 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9396
9397         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
9398         PATCH_INFO_METHOD.
9399
9400         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
9401         NULL.
9402
9403 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
9404
9405         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
9406         use a more detailed exception message for InvalidCastException.
9407
9408         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
9409
9410         * driver.c (mono_main): Add --debug=casts option to turn on better 
9411         InvalidCastException message details.
9412
9413         * mini.c (mini_get_debug_options): New helper function to return the address of
9414         the debug_options variable.
9415
9416         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
9417         the jit_tls TLS variable.
9418
9419         * mini.c (mono_jit_tls): New TLS variable.
9420
9421         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
9422         option is used.
9423
9424 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
9425
9426         * mini.h: Removed verifer related stuff. This code was moved to verify.c
9427
9428         * mini.c: Removed verifer related stuff, code moved to verify.c.
9429
9430         * driver.c: Using code from verify.c instead of mini.c.
9431
9432 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
9433
9434         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
9435         longer valid.
9436
9437 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
9438
9439         * mini.c (check_for_method_verify): Enabling verification of
9440         corlib if mono_verify_all is set. Bugs in the verifier preventing that
9441         have been fixed.
9442
9443 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
9444
9445         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
9446         caller saved registers as well.
9447         
9448         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
9449         saved registers as well.
9450
9451 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
9452
9453         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
9454
9455         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
9456         code.
9457
9458 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
9459
9460         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
9461         to get_call_info.
9462         (get_call_info): Take a gsctx argument instead of 'cfg'.
9463
9464 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
9465
9466         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
9467         mono_verify_all is set.
9468
9469         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
9470
9471         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
9472
9473 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
9474
9475         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
9476         an exception.
9477
9478         * driver.c mini.c mini.h: Add a --verify-all development option to test the
9479         verifier and the code generated by the compiler.
9480
9481 2008-03-25  Mark Probst  <mark.probst@gmail.com>
9482
9483         * mini.c: Generic sharing of the non-nullable case of the box
9484         instruction.
9485
9486 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
9487
9488         * inssel.brg: Fix the build.
9489
9490         * iltests.il.in: Add a test for lconv.ovf.u8.un.
9491
9492 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
9493
9494         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
9495         Array:Address. Fixes #372410.
9496
9497         * iltests.il.in: New tests for readonly prefix.
9498
9499 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
9500
9501         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
9502         mini-trampolines.c.
9503
9504         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
9505         mini-exceptions.c.
9506
9507         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
9508         
9509         * mini.c (mono_decompose_op_imm): New helper function.
9510
9511         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
9512         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9513         return value.
9514
9515         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9516         mono_arch_output_basic_block. Fix warnings.
9517
9518         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
9519         for now.
9520
9521 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
9522
9523         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
9524         since the extra frame is now detected automatically inside the loop.
9525
9526         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
9527         opts which are now in mono_peephole_ins ().
9528         
9529         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
9530
9531         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
9532         frames and skip duplicate managed-to-native frames. Fixes #367665.
9533
9534         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9535         opts which are now in mono_peephole_ins ().
9536         (mono_arch_peephole_pass_2): Ditto.
9537
9538         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
9539
9540         * mini-codegen.c (mono_peephole_ins): New helper function containing the
9541         arch independent peephole optimizations.
9542
9543         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9544         opts which are now in mono_peephole_ins ().
9545
9546         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
9547         
9548         * mini-s390.c (mono_arch_output_basic_block): Fix build.
9549
9550         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
9551         pattern.
9552
9553         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
9554         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
9555         opcode. 
9556
9557 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
9558
9559         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
9560         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9561         return value.
9562
9563         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9564         mono_arch_output_basic_block. Fix warnings.
9565
9566 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9567
9568         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9569         conv.ovf.u.un.
9570
9571 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9572
9573         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9574         conv.ovf.u.un.
9575
9576         * iltests.il: Add new tests.
9577
9578 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
9579
9580         * mini.c: Removed Windows version macros.
9581
9582 2008-03-20  Mark Probst  <mark.probst@gmail.com>
9583
9584         * generic-sharing.c: Put reflection types in the extensible part
9585         of the runtime generic context.
9586
9587         * mini.c: Generic sharing of the GetTypeHandle special case of the
9588         ldtoken instruction.
9589
9590 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9591
9592         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
9593
9594         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
9595         
9596         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
9597         consistency with the other version on the linear IR branch.
9598
9599         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
9600
9601         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
9602
9603         * iltests.il.in: Add new tests.
9604
9605 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
9606
9607         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
9608
9609         * iltests.il.in: Add new tests.
9610
9611 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9612
9613         * mini.c: Two variables with the same name were declared in
9614         nesting contexts and one wasn't initialized.  Fixed.
9615
9616 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9617
9618         * mini.c: Generic sharing of the initobj instruction.
9619
9620 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
9621
9622         * mini.c: make the test to optimize ldtoken from typeof() more
9623         precise.
9624
9625 2008-03-18  Mark Probst  <mark.probst@gmail.com>
9626
9627         * mini.c: Generic sharing of the initobj instruction for reference
9628         types.
9629
9630 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
9631
9632         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
9633         the mono_breakpoint_clean_code() code to perform bound checks.
9634
9635 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
9636
9637         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
9638         mono_arch_patch_callsite() to include the start of the managed method
9639         to be able to perform bound checks.
9640
9641 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9642
9643         * mini.c: Generic sharing for the isinst instruction.
9644
9645 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9646
9647         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9648         inssel-long32-mips.brg: Added opcodes for doing indirect calls
9649         with the runtime generic context argument.
9650
9651         * mini.c: Share calls to several types of unsharable methods by
9652         putting the address of the method code in the runtime generic
9653         context and doing an indirect call.
9654
9655         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9656         to switches.
9657
9658 2008-03-16  Mark Probst  <mark.probst@gmail.com>
9659
9660         * generic-sharing.c: Change due to a change in the runtime genric
9661         context API.
9662
9663 2008-03-15  Martin Baulig  <martin@ximian.com>
9664
9665         * tramp-x86.c
9666         (mono_arch_nullify_class_init_trampoline): Add call to
9667         mono_breakpoint_clean_code() to make things work when running
9668         inside the debugger.
9669
9670         * tramp-amd64.c
9671         (mono_arch_nullify_class_init_trampoline): Add call to
9672         mono_breakpoint_clean_code() to make things work when running
9673         inside the debugger.
9674
9675 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9676
9677         * inssel-long.brg (reg): Fix 64 bit build.
9678
9679 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9680
9681         * mini.c, mini.h: Share static generic code by passing it an
9682         implicit argument pointing to the runtime generic context.
9683
9684         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9685         inssel-long32-mips.brg: New opcodes for calling shared static,
9686         which need to be passed the runtime generic context.
9687
9688         * mini-amd64.c, mini-x86.c: Save the runtime generic context
9689         argument on the stack in the prologue if needed.  New function for
9690         finding the runtime generic context argument from the registers
9691         saved by the trampoline.
9692
9693         * mini-amd64.h, mini-x86.h: Specify which register to use for the
9694         runtime generic context argument.
9695
9696         * tramp-amd64.c: Also restore the register used for the runtime
9697         generic context argument.
9698
9699         * mini-trampoline.c: Resolve shared static calls by consulting the
9700         runtime generic context via the new argument.
9701
9702         * generic-sharing.c: Add an argument to sharability-checking
9703         functions that specifies whether type variables should be treated
9704         as sharable type arguments.
9705
9706         * inssel-x86.brg: Removed a superfluous, buggy rule.
9707
9708         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9709         to switches.
9710
9711 2008-03-14  Martin Baulig  <martin@ximian.com>
9712
9713         * debug-debugger.c (main_thread_handler): Call
9714         mono_runtime_run_main() without sending any notifications.
9715
9716         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
9717
9718 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9719
9720         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
9721
9722 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9723
9724         * tramp-x86.c: Fixed register restore offsets in the trampoline
9725         code for ECX and EDX.
9726
9727 2008-03-12  Geoff Norton  <gnorton@novell.com>
9728
9729         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
9730         different ucontext_t implementations.
9731         * exceptions-arm.c: Use the above defines to get exceptions working on 
9732         iPhone (based on a patch by Luke Howard lukeh@padl.com)
9733         * mini-arm.c: Implement iPhone icache support (based on a patch by
9734         Luke Howard lukeh@padl.com)
9735
9736 2008-03-12  Mark Probst  <mark.probst@gmail.com>
9737
9738         * mini.c: Enable generic sharing of calls to non-static
9739         non-interface non-generic non-value-type methods.
9740
9741         * mini-trampolines.c: Resolve calls from shared generic code.
9742
9743 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
9744
9745         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
9746
9747         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
9748
9749 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
9750
9751         * mini.c: some fixes for the AOT compiler.
9752
9753 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
9754
9755         * cpu-amd64.md: Add clob:1 to some float opcodes.
9756
9757 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
9758
9759         * mini.h: Added MiniVerifierMode enumeration.
9760
9761         * mini.c: Added mini_verifier_set_mode to control
9762         the usage of the new verifier.
9763
9764         * mini.c (mono_method): Integrated the new verifier.
9765
9766         * driver.c: Extended --security option with validil and
9767         verifiable options to activate the new verifier.
9768
9769 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
9770
9771         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
9772         optimization to ctors taking 0 or 2 arguments too.
9773
9774         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
9775         a bit.
9776
9777         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
9778
9779         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
9780
9781 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
9782
9783         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
9784         non-aot case as well.
9785
9786         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
9787
9788         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
9789         changes.
9790
9791         * aot-compiler.c (encode_patch): Ditto.
9792
9793         * mini.h (G_MININT32): Fix the definition of this.
9794
9795 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
9796
9797         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
9798
9799         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
9800
9801 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
9802
9803         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
9804         methods returning vtypes in registers.
9805         (mono_arch_allocate_vars): Ditto.
9806
9807         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
9808
9809         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
9810
9811         * generics.cs: Add a test from the linear IR branch.
9812
9813         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
9814
9815         * mini.c (inline_method): Cache failed inline attempts.
9816
9817 2008-03-04  Mark Probst  <mark.probst@gmail.com>
9818
9819         * mini.c: For shared methods of generic classes put the location
9820         of "this" into the MonoGenericJitInfo.
9821
9822         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
9823         register out of a MonoContext by register number.  Add the generic
9824         sharing context as an argument to mono_arch_find_this_argument().
9825
9826         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
9827         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
9828         for new arch function.
9829
9830         * mini-exception.c: Handle open exception clauses in shared
9831         generic code.
9832
9833         * mini-trampolines.c: Supply additional argument to
9834         mono_arch_find_this_argument().
9835
9836 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
9837
9838         * Makefile.am (regtests): Run the bench.exe tests last.
9839
9840 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
9841
9842         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
9843         a bit.
9844
9845 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
9846
9847         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
9848         with MS.
9849
9850         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
9851         
9852         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
9853
9854         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
9855         whose class has no cctor.
9856
9857         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
9858
9859 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
9860
9861         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
9862         unverified.
9863
9864 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
9865
9866         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
9867         to be in sync with the code on the linear IR branch.
9868
9869         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
9870
9871         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
9872
9873 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
9874
9875         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
9876
9877         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
9878
9879         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
9880
9881         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
9882
9883         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
9884         
9885         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
9886         body.
9887
9888 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
9889
9890         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
9891         OP_LOADR4_MEMBASE emission.
9892
9893         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
9894         (mono_spillvar_offset_float): Ditto.
9895
9896         * mini-mips.c (mono_arch_emit_prolog): Ditto.
9897
9898         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
9899         emission.
9900
9901         * basic-long.cs: Add regression tests for them.
9902
9903         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
9904         use.
9905         (mono_arch_allocate_vars): Fix representation of single-precision float
9906         argument.
9907         (mono_arch_output_basic_block): Ditto.
9908
9909         * inssel-mips.brg: Ditto, remove duplicate items.
9910
9911         * mini-mips.c (emit_load_volatile_arguments): New function to handle
9912         arguments of tail calls as on other platforms.
9913         (mono_arch_output_basic_block): Handle tail calls.
9914
9915         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
9916         register.
9917
9918         * objects.cs (test_5_pass_static_struct): Add test for it.
9919
9920         Contributed under MIT/X11 license.
9921
9922 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
9923
9924         * Makefile.am: Use gmcs for compiling the regression tests.
9925
9926         * *.2.cs *.2.il: Rename to *.cs and *.il.
9927
9928 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
9929
9930         * regalloc.h: Make the vassign array smaller.
9931
9932         * mini.c (mini_method_compile): Remove an unused field in cfg.
9933
9934         * mini-codegen.c: Add a bunch of micro optimizations.
9935
9936 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
9937
9938         * regalloc.h: Remove some unused fields.
9939
9940 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
9941
9942         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
9943
9944         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
9945
9946 2008-02-22  Mark Probst  <mark.probst@gmail.com>
9947
9948         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
9949
9950         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
9951         trampoline: Fetch an entry from the runtime generic context.  If
9952         it's NULL, jump to the actual trampoline to fill the runtime
9953         generic context.  Otherwise, return it.
9954
9955         * mini.c: Call the lazy fetch trampoline to get entries out of the
9956         runtime generic context.
9957
9958         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
9959         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
9960         tramp-sparc.c: Stubs for the lazy fetch trampoline.
9961
9962 2008-02-21  Mark Probst  <mark.probst@gmail.com>
9963
9964         * mini.c: Fetch data out of the extensible part of the runtime
9965         generic context instead of calling a helper function.
9966
9967         * generic-sharing.c: Some functions moved into
9968         metadata/generic-sharing.c.  Helper function for fetching other
9969         types now checks and asserts against extensible rgctx (just for
9970         debugging purposes - the helper function isn't called anymore
9971         unless for debugging).
9972
9973 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
9974
9975         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
9976         for tail calls up to the point that the tests in iltests.exe run. Also add a
9977         dummy CKFINITE implementation.
9978         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
9979         needed for trampoline LMF frames.
9980
9981         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
9982         trampoline LMF frames.
9983
9984 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
9985
9986         * mini.c (inline_method): clean any pending loader error when inlining fail.
9987         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
9988
9989 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
9990
9991         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
9992
9993         * aot-runtime.c (decode_patch_info): Ditto.
9994
9995         * mini.c (mono_resolve_patch_target): Ditto.
9996         
9997         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
9998         icall wrappers.
9999
10000         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
10001         
10002         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
10003         if it references an icall address.
10004
10005 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
10006
10007         * cpu-s390x.md: Remove some more unused opcodes.
10008         
10009         * cpu-s390x.md: Remove some unused opcodes.
10010
10011         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
10012         mono_op_imm_to_op ().
10013
10014         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
10015         instead of a switch statement.
10016         
10017         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
10018         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
10019
10020         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
10021         
10022         * mini-codegen.c: Remove unused mono_regstate2_... functions.
10023
10024         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
10025         -1.
10026
10027 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
10028
10029         * driver.c (mono_main): Improve error reporting when an assembly cannot be
10030         opened. Fixes #362607.
10031
10032         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
10033
10034         * iltests.il.in: Add a test for static methods in interfaces.
10035
10036 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
10037
10038         * genmdesc.c (build_table): Fix a crash on older glib versions.
10039
10040         * cpu-sparc.md: Remove some unused opcodes.
10041         
10042         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
10043         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
10044
10045         * cpu-amd64.md: Remove some unused opcodes.
10046
10047         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
10048         like the other opcodes.
10049
10050 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
10051
10052         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
10053
10054         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
10055
10056         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
10057         variables 'cfg' instead of 'm' for consistency.
10058
10059         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
10060
10061         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
10062         argument holding the vtype return address, to avoid the ambigious use of
10063         cfg->ret for this purpose.
10064
10065         * mini.c (NEW_RETLOADA): Use vret_addr if set.
10066
10067         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
10068         
10069         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
10070         new mono_print_ins () function which only takes one argument.
10071
10072 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
10073
10074         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
10075         macro arguments.
10076
10077 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
10078
10079         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
10080
10081         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
10082
10083         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
10084         opcodes and other small changes.
10085
10086         * mini-ops.h: Add some new opcodes from the linear IR branch.
10087
10088         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
10089
10090         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
10091         opcodes, use the REG_MEMBASE opcodes instead.
10092         
10093         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
10094         opcodes, use the REG_MEMBASE opcodes instead.
10095         
10096         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
10097         linear IR branch.
10098
10099         * mini.c (mono_op_imm_to_op): New helper function.
10100
10101         * mini-ops.h: Add some opcodes from linear IR branch.
10102
10103 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
10104
10105         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
10106         <tsv@solvo.ru>.
10107
10108 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
10109
10110         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
10111         OP_ICONV_TO_R4/R8.
10112
10113         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
10114
10115 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
10116
10117         * aot-compiler.c (emit_method_code): Add an assert.
10118
10119         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
10120         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
10121         methods.
10122
10123 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
10124
10125         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
10126         some load/store opcodes so they are consistent. 
10127         (mono_arch_emit_prolog): Simplify some code.
10128
10129         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
10130
10131         * objects.cs: Add tests for large argument offsets on ARM.
10132
10133         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
10134         stack offsets. Fixes #359651.
10135
10136         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
10137
10138         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
10139
10140         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
10141
10142         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
10143
10144         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
10145
10146         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
10147         rid of CEE_CONV_R_UN.
10148
10149         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
10150
10151 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
10152
10153         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
10154
10155         * mini.c (mono_normalize_opcodes): Add some more opcodes.
10156
10157         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
10158
10159         * cpu-amd64.md: Remove some unused opcodes.
10160
10161         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
10162
10163         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
10164
10165         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
10166         arch specific functions for its parts. Call the peephole pass after local
10167         regalloc so the prolog can compute a more accurate max_offset.
10168         
10169         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
10170         the corresponding OP_I/OP_L opcodes.
10171
10172         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
10173
10174         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
10175
10176 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10177
10178         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
10179         as they are handled in mini.c.
10180
10181         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
10182         
10183         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
10184         case since it is handled in mini.c.
10185
10186         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
10187
10188         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
10189
10190         * *.c: Use the new opcodes in the IR and back end code.
10191
10192         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
10193
10194         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
10195
10196 2008-02-06  Mark Probst  <mark.probst@gmail.com>
10197
10198         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
10199         an assert because it has a race condition.
10200
10201 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10202
10203         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
10204
10205         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
10206
10207         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
10208
10209         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
10210         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
10211
10212 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
10213
10214         * cpu-amd64.md (move): Correct the maximum size of move.
10215
10216 2008-02-05  Mark Probst  <mark.probst@gmail.com>
10217
10218         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
10219         the generic class init trampoline to return quickly if the class
10220         is already inited.
10221
10222 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
10223
10224         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
10225         issues where an 32 bit callsite cannot be patched by a 64 bit address.
10226
10227 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
10228
10229         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
10230         branch.
10231
10232 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
10233
10234         * objects.cs: Add some soft-float tests.
10235
10236         * mini.c: Fix a couple more soft-float issues.
10237
10238         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
10239
10240         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
10241         avoid a REX prefix.
10242
10243 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
10244
10245         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
10246         exception happens while compiling a virtual method.
10247
10248 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
10249
10250         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
10251         
10252         * mini-sparc.c: Fix build.
10253
10254         * mini-sparc.c (get_call_info): Add support for generic sharing.
10255
10256         * mini-exceptions.c: Add a FIXME.
10257
10258 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
10259
10260         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
10261         altstack handling code.
10262
10263         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
10264         
10265         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
10266
10267         * mini-s390.c: Add support for generic sharing.
10268
10269         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10270         Fix CAS on s390.
10271         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10272
10273         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
10274
10275         * mini-s390x.c: Add support for generic sharing.
10276         
10277         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10278         Fix CAS on ia64.
10279         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10280
10281         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
10282         can be used since it takes a 16 bit signed immediate.
10283
10284         * inssel-s390x.brg: Fix OP_SETRET.
10285
10286         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
10287
10288         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
10289
10290         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
10291
10292         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
10293
10294         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
10295         in one place.
10296
10297         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
10298         stuff.
10299
10300         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
10301         of the unused mono_arch_patch_delegate_trampoline stuff.
10302
10303 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
10304
10305         * basic-long.cs: Move the fp related tests to basic-float.cs.
10306
10307         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
10308
10309         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
10310
10311         * basic-calls.cs: Add a test for proper float argument passing.
10312
10313         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
10314         if the context corresponds to an exception received through a signal.
10315
10316         * exceptions.cs: Add a test for nullref handling at the start of a try
10317         clause.
10318
10319         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
10320
10321         * jit-icalls.c (mono_break): New JIT icall.
10322
10323         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
10324
10325         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
10326
10327 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
10328
10329         * cpu-*.md: Get rid of unused opcodes.
10330
10331         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
10332
10333         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
10334         by all platforms.
10335
10336         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
10337         define.
10338
10339         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
10340         the arch independent trampoline code in mini-trampolines.c.
10341
10342         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
10343
10344         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
10345
10346         * mini-s390.h: Remove an unused define.
10347         
10348         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
10349         the arch independent trampoline code in mini-trampolines.c.
10350
10351         * mini-arm.c (mono_arch_emit_prolog): Fix build.
10352
10353 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
10354
10355         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
10356
10357         * mini-s390.c (mono_arch_emit_prolog): Fix build.
10358
10359         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
10360
10361         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
10362
10363         * cpu-amd64.md: Use smaller sizes for int opcodes.
10364
10365         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
10366
10367         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
10368         objects.cs.
10369
10370         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
10371         debugging.
10372
10373         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
10374         instead of though a pointer to save an indirection when accessing elements of
10375         the array.
10376
10377         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
10378         some typos.
10379         (NOT_IMPLEMENTED): New helper macro.
10380         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
10381         of a bb.
10382
10383         * *.c: Use the new helper macro.
10384
10385 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
10386
10387         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
10388
10389 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
10390
10391         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
10392         stack slots.
10393
10394 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
10395
10396         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
10397         profiling is enabled.
10398         
10399         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
10400         the end.
10401         (mono_arch_emit_prolog): Add more first bblock optimizations.
10402
10403         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
10404         in order if possible.
10405         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
10406         bblock, since the arguments are still in their original registers.
10407
10408         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
10409
10410 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
10411
10412         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
10413         as well.
10414
10415         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
10416         offset 0.
10417
10418         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
10419
10420         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
10421         process async exceptions received while in unmanaged code.
10422
10423         * mini.c (mini_init): Install a callback with the runtime which will be called
10424         when a thread receives an async exception while in unmanaged code.
10425
10426         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
10427
10428         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
10429
10430 2008-01-16  Wade Berrier  <wberrier@novell.com>
10431
10432         * cpu-g4.md:
10433         * cpu-arm.md:
10434         * cpu-s390x.md:
10435         fix build
10436
10437 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
10438
10439         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
10440         compilation with sun cc.
10441
10442         * cpu-*.md: Fix the build.
10443
10444         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
10445
10446         * mini-amd64.h: Add some comments to the MonoLMF structure.
10447
10448         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
10449         
10450         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
10451         in the LMF structure if possible. This saves two instructions in the
10452         managed->native wrappers.
10453
10454         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
10455
10456 2008-01-16  Mark Probst  <mark.probst@gmail.com>
10457
10458         * generic-sharing.c: New type argument lookup code which uses the
10459         runtime generic context template.
10460
10461 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
10462
10463         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
10464
10465         * mini-arm.c (add_general): Fix arm eabi parameter passing.
10466         (mono_arch_output_basic_block): Fix localloc implementation.
10467
10468         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
10469
10470         * mini-ia64.c (peephole_pass): Fix ia64 build.
10471
10472         * mini-amd64.c (peephole_pass): Fix a warning.
10473         
10474         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
10475         at a constant offset from sp/fp.
10476
10477         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
10478         instead of obtaining it from *lmf in the managed method case.
10479
10480 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
10481
10482         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
10483
10484 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
10485
10486         * mini.h (MonoInstList): New type.
10487         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
10488         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
10489         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
10490         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
10491         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
10492         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
10493         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
10494         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
10495         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
10496         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
10497         MONO_INST_LIST_FOR_EACH_ENTRY,
10498         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
10499         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
10500         mono_inst_list_first, mono_inst_list_last,
10501         mono_inst_list_next, mono_inst_list_prev): New instruction
10502         list handling interfaces.
10503         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
10504         list head 'ins_list'.
10505         (MonoInst): Replace next pointer with list head 'node'.
10506         (MonoCallInst): Make 'out_args' a MonoInstList.
10507         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
10508         (MonoCompile): Delete reverse_inst_list and
10509         reverse_inst_list_len.
10510         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
10511         mono_arch_lowering_pass, mono_arch_local_regalloc,
10512         mono_arch_output_basic_block, mono_arch_emit_prolog):
10513         Convert to new instruction lists.
10514         (insert_after_ins): Delete.
10515         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
10516         instruction lists.
10517         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
10518         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
10519         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
10520         mono_emulate_opcode, mono_emit_load_got_addr,
10521         inline_method, mono_method_to_ir, mono_print_bb_code,
10522         print_dfn, decompose_pass, nullify_basic_block,
10523         replace_out_block_in_code, remove_block_if_useless,
10524         merge_basic_blocks, move_basic_block_to_end,
10525         try_unsigned_compare, optimize_branches, mono_print_code,
10526         mini_select_instructions, remove_critical_edges): Likewise.
10527         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
10528         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
10529         mono_arch_output_basic_block, mono_arch_emit_prolog):
10530         Likewise.
10531         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
10532         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10533         mono_arch_output_basic_block): Likewise.
10534         (inst_list_prepend, insert_after_ins): Delete.
10535         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
10536         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
10537         instruction lists.
10538         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
10539         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
10540         mono_arch_emit_prolog): Likewise.
10541         * cfold.c (mono_constant_fold): Likewise.
10542         * liveness.c (visit_bb, mono_analyze_liveness,
10543         optimize_initlocals): Likewise.
10544         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
10545         * graph.c (mono_draw_code_cfg): Likewise.
10546         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
10547         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
10548         mono_ssa_cprop): Likewise.
10549         * abcremoval (get_relations_from_previous_bb, process_block):
10550         Likewise.
10551         * local-propagation (mono_cprop_invalidate_values,
10552         mono_local_cprop_bb): Likewise.
10553         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
10554         peephole_pass, mono_arch_output_basic_block,
10555         mono_arch_emit_prolog): Likewise.
10556         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
10557         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10558         mono_arch_emit_prolog): Likewise.
10559         (insert_after_ins): Delete.
10560         * aliasing.c (print_code_with_aliasing_information,
10561         mono_build_aliasing_information, mono_aliasing_deadce):
10562         Convert to new instruction lists.
10563         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
10564         peephole_pass, NEW_INS, mono_arch_lowering_pass,
10565         mono_arch_local_regalloc, mono_arch_output_basic_block):
10566         Likewise.
10567         (insert_after_ins): Delete.
10568         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
10569         peephole_pass, mono_arch_output_basic_block): Convert to
10570         new instruction lists.
10571         * mini-codegen (InstList, inst_list_prepend,
10572         insert_after_ins): Delete.
10573         (insert_before_ins, get_register_force_spilling,
10574         get_register_spilling, free_up_ireg, free_up_reg,
10575         create_copy_ins, create_spilled_store, alloc_int_reg,
10576         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
10577         to new instruction lists.
10578         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
10579         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10580         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
10581         (insert_after_ins): Delete.
10582         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
10583         mono_arch_local_regalloc, mono_arch_output_basic_block,
10584         mono_arch_call_opcode): Convert to new instruction lists.
10585         (insert_after_ins): Delete.
10586         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
10587         peephole_pass, mono_arch_output_basic_block,
10588         mono_arch_emit_prolog): Convert to new instruction lists.
10589
10590 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
10591
10592         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
10593
10594         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
10595         Fixes #353182.
10596
10597         * Makefile.am (version.h): Make this work with non-bash shells.
10598
10599 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
10600
10601         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
10602
10603 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
10604
10605         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
10606         the InitializeArray optimization.
10607
10608 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
10609
10610         * mini.c driver.c: Don't include os/gc_wrapper.h.
10611
10612 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
10613
10614         * mini.c (print_jit_stats): Print GC statistics if available.
10615
10616 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
10617
10618         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
10619
10620 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
10621
10622         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
10623
10624 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
10625
10626         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
10627         
10628         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
10629
10630         * driver.c (mono_main): Ditto.
10631
10632 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
10633
10634         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
10635
10636         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
10637         in the vtable can't be encoded.
10638         (compile_method): Ditto.
10639
10640 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
10641
10642         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
10643         defined.
10644
10645         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
10646         lmf->rbp.
10647
10648         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
10649         the top LMF entry belongs to the current method.
10650
10651         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
10652
10653 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
10654
10655         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
10656         
10657         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
10658
10659         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
10660
10661         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
10662
10663         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
10664
10665         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
10666         implementation.
10667
10668         * basic-float.cs: Add an ulong->double cast test.
10669
10670 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
10671
10672         * mini.c (mono_method_to_ir): Fix a warning.
10673
10674 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
10675
10676         * mini-ops.h: Add OP_SWITCH.
10677
10678         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
10679         CEE_SWITCH in back-end code, use OP_SWITCH instead.
10680
10681 2007-12-11  Geoff Norton  <gnorton@novell.com>
10682
10683         * mini-s390x.c: Minor change to the MAX() define to allow
10684         it to compile with other gcc versions.
10685
10686 2007-12-11  Geoff Norton  <gnorton@novell.com>
10687
10688         * cpu-s390x.md:
10689         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
10690
10691 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10692
10693         exceptions-arm.c (mono_arch_get_restore_context): Restore
10694         the frame pointer.
10695
10696         exceptions-arm.c (throw_exception): Save the frame pointer.
10697         This is a partial fix for #323747. Only the client side is
10698         fixed.
10699
10700 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10701
10702         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
10703         was using an unrelated variable to log the class which
10704         needed the cctor to be called. This was crashing on arm.
10705
10706 2007-12-09  Robert Jordan  <robertj@gmx.net>
10707
10708         * mini-x86.c (mono_arch_emit_epilog):
10709         Consider all kinds of 64-bit types. Fixes #323114.
10710
10711 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
10712
10713         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
10714
10715 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10716
10717         * mini-amd64.c (peephole_pass): Add a missing instruction check.
10718
10719 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10720
10721         * mini.c: run type ctor before allocating an object, not only
10722         when running it's constructor method (fixes at least part of bug #342507).
10723
10724 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10725         
10726         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
10727         
10728         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
10729         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
10730         function.
10731
10732         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
10733         mono_generic_class_init_trampoline () the same as it is done with the other
10734         trampolines.
10735
10736         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
10737         aot-runtime.c aot-compiler.c: Implement AOT support.    
10738
10739 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10740
10741         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
10742         build for archs which don't have the vtable trampoline defined
10743         yet.
10744
10745 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10746
10747         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
10748
10749         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
10750
10751         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
10752
10753         * tramp-<ARCH>.c: Use the new helper function.
10754
10755 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10756
10757         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
10758         trampoline call, which takes a vtable argument.
10759
10760         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
10761         OP_TRAMPCALL_VTABLEs like other calls.
10762
10763         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
10764         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
10765         call.  Implemented a support function which fetches the vtable
10766         from a register set.
10767
10768         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
10769         Implemented a generic class init trampoline, using the
10770         OP_TRAMPCALL_VTABLE opcode.
10771
10772         * mini.c: Implemented static field access when sharing generic
10773         code.  This implies initing the class using the new
10774         OP_TRAMPCALL_VTABLE call.
10775
10776 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10777
10778         * mini.c: Don't compile methods with sharing enabled if their
10779         classes are disabled for sharing.
10780
10781 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
10782
10783         * inssel.brg: Add a missing sign extension to the GETCHR and array access
10784         opcodes. Fixes #346563.
10785
10786         * objects.cs: Add a new test.
10787
10788         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
10789
10790         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
10791         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
10792
10793 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
10794
10795         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
10796
10797 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
10798
10799         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
10800         code stream.
10801
10802 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
10803
10804         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
10805
10806         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
10807         optimization in the AOT case.
10808         
10809 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
10810
10811         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
10812         
10813         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
10814
10815         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
10816
10817         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
10818
10819         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
10820         is created by the inlined delegate ctor.
10821
10822         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
10823
10824         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
10825
10826 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
10827
10828         * cpu-x86.md: Fix the length of ckfinite.
10829
10830 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
10831
10832         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
10833         
10834         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
10835         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
10836
10837         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
10838
10839         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
10840         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
10841
10842 2007-11-28  Martin Baulig  <martin@ximian.com>
10843
10844         * mini-x86.c
10845         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
10846         after creating the trampoline.
10847
10848 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
10849
10850         * aot-runtime.c (load_aot_module): Check runtime version if needed.
10851
10852         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
10853         the same version.
10854
10855         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
10856         instead of the calling method to help AOT.
10857
10858         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
10859
10860 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
10861
10862         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
10863         is defined.
10864
10865 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
10866
10867         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
10868         
10869         * aot-compiler.c (compile_method): Correct check for generic method definitions.
10870         (encode_method_ref): No need to handle generic method definitions specially.
10871
10872         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
10873
10874         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
10875         decode_klass_info.
10876
10877         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
10878         encode_klass_info.
10879         (compile_method): Enable generic sharing.
10880
10881 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
10882
10883         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
10884         (mini_method_compile): Add preliminary support for AOTing shared generic code.
10885
10886         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
10887         generic code.
10888
10889         * mini-trampolines.c: Fix a warning.
10890
10891         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
10892         NEW_PCONST.
10893         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
10894         (generic_class_is_reference_type): Remove unused function.
10895
10896         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
10897         in the generic vtable trampoline case.
10898
10899         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
10900         
10901         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
10902         return an AOT method based on a vtable slot.
10903
10904         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
10905
10906         * mini.c (mini_get_vtable_trampoline): Export this.
10907
10908 2007-11-22  Martin Baulig  <martin@ximian.com>
10909
10910         * debug-debugger.h
10911         (MonoDebuggerInfo): Move `debugger_version' up.
10912
10913 2007-11-22  Martin Baulig  <martin@ximian.com>
10914
10915         * mini-amd64.c
10916         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
10917
10918         * mini-trampolines.c
10919         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
10920         after compiling the method.
10921
10922 2007-11-20  Martin Baulig  <martin@ximian.com>
10923
10924         * debug-mini.c
10925         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
10926         (mono_debugger_remove_breakpoint): Likewise.
10927         (mono_debugger_check_breakpoints): Likewise.
10928
10929         * debug-debugger.c: Implement the new breakpoint interface here.
10930
10931 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
10932
10933         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
10934         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
10935
10936         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
10937
10938 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
10939
10940         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
10941
10942         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
10943         mini.c.
10944
10945         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
10946         mini.c.
10947
10948         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
10949         returning a vtype in a register.
10950
10951         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
10952         here from the arch specific code.
10953
10954         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
10955         mini.c.
10956
10957         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
10958         (mono_arch_emit_prolog): Increment maximum prolog size.
10959
10960         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
10961         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
10962
10963         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
10964         MonoGenericSharingContext.
10965
10966         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
10967         MonoGenericSharingContext. Allocate memory from the cfg mempool.
10968
10969 2007-11-15  Mark Probst  <mark.probst@gmail.com>
10970
10971         * mini.c, mini.h, generic-sharing.c: Functions for producing code
10972         which extract fields out of the runtime generic context.  Full
10973         sharing of the NEWARR opcode.
10974
10975 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
10976
10977         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
10978         --enable-minimal=ssa.
10979
10980 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
10981
10982         * mini-trampolines.c (mono_delegate_trampoline): Update after 
10983         mono_marshal_get_delegate_invoke () signature change.
10984
10985 2007-11-13  Mark Probst  <mark.probst@gmail.com>
10986
10987         * mini.c: Removed the shared context in favor of the generic
10988         sharing context.  Allocate the MonoJitInfo structure with room for
10989         the generic sharing context if it's needed.
10990
10991         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
10992         domain-internals.h now.
10993
10994         * mini-x86.c: Pass the generic sharing context to get_call_info ().
10995
10996         * generic-sharing.c: Several changes for working without a shared
10997         context and instead operating on open types instead.
10998
10999 2007-11-12  David S. Miller  <davem@davemloft.net>
11000
11001        * inssel-sparc.brg: Fix double instruction emit.
11002
11003 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
11004
11005         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
11006         Get/Set/Address methods.
11007         
11008         * mini.c debug-debugger.c mini-trampolines.c: Update after 
11009         mono_marshal_get_delegate_invoke signature change.
11010
11011 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11012
11013         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
11014         This can happens with dynamic methods. Fixes the other bug in #322722.
11015
11016 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11017
11018         * tramp-arm.c (mono_arch_patch_callsite): Support patching
11019         BX call sequence.
11020
11021         * mini-arm.c (arm_patch): Implement patching of BX call
11022         sequence. Fixes one of the bugs in #322722.
11023
11024 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
11025
11026        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
11027        under Linux.  We only need to flush every 32-byte cache line.    
11028
11029 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
11030
11031         * mini.c:
11032         move_basic_block_to_end: Add branches when needed, eventually creating
11033         a new BB.
11034         optimize_branches: added a parameter that tells if it's ok to create
11035         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
11036         and avoid calling move_basic_block_to_end when it's not ok.
11037         Fixes bug 318677.
11038
11039 2007-11-07  Mark Probst  <mark.probst@gmail.com>
11040
11041         * mini.c: Abort inlining call to InitializeArray if something
11042         looks wrong.  Let the icall handle it, which now has proper safety
11043         checks.
11044
11045 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
11046
11047         * mini.c (mono_spill_call): add support for soft-float.
11048
11049         * mini.c (mono_method_to_ir): add support for soft-float
11050         to inlined functions that return float.
11051
11052         * mini.c (mono_method_to_ir): add support for soft-float
11053         to cee_stsfld opcode on float fields.
11054
11055 2007-11-05  Geoff Norton  <gnorton@novell.com>
11056
11057         * mini-x86.h: Fix the structure access for X86 Leopard.
11058
11059
11060 2007-11-05  Martin Baulig  <martin@ximian.com>
11061
11062         * mini-trampolines.c
11063         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
11064         after compiling the method to notify the debugger.
11065
11066 2007-11-05  Martin Baulig  <martin@ximian.com>
11067
11068         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
11069
11070 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
11073         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
11074
11075 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
11076
11077         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
11078         native-to-managed wrappers.
11079         
11080 2007-11-01  Geoff Norton  <gnorton@novell.com>
11081
11082         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
11083         members.
11084
11085 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11086
11087         * mini.c, mini-x86.c: when getting back from unmanaged code
11088         to managed via a marshaled delegate we also need to set the
11089         right domain.
11090
11091 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11092
11093         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
11094         for amd64.
11095
11096 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11097
11098         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
11099         let the debugger or other external agents to tell the JIT when
11100         a sw breakpoint has been inserted in the code that the JIT needs
11101         to be able to inspect.
11102
11103 2007-10-31  Martin Baulig  <martin@ximian.com>
11104
11105         * debug-debugger.h
11106         (MonoDebuggerInfo): Remove `runtime_class_init'.
11107
11108 2007-10-30  Martin Baulig  <martin@ximian.com>
11109
11110         * debug-mini.h
11111         (mono_debugger_thread_created): Added `MonoThread *' argument.
11112         (mono_debugger_extended_notification): New public method.
11113         (mono_debugger_trampoline_compiled): New public method.
11114
11115         * debug-mini.c
11116         (MonoDebuggerThreadInfo): Added `thread' and
11117         `extended_notifications' fields.
11118
11119         * debug-debugger.c
11120         (debugger_executable_code_buffer): New static variable.
11121
11122         * debug-debugger.h
11123         (MonoDebuggerInfo): Added `executable_code_buffer',
11124         `executable_code_buffer_size', `breakpoint_info_area',
11125         `breakpoint_table' and `breakpoint_table_size'.
11126
11127 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
11128
11129         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
11130         that IP  either is an unused value or the vtable pointer. IMT 
11131         calls use vtable + offset now. Reduced by almost half the size
11132         of IMT entries.
11133
11134 2007-10-26  Jonathan Chambers <joncham@gmail.com>
11135
11136         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
11137         defines to access param registers. Replace long usage with
11138         gsize as sizeof(long) != sizeof(void*) on Win64.
11139
11140         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
11141         on Win64. Fix intrinsic, use _AddressOfReturnAddress
11142         instead of non-existant _GetAddressOfReturnAddress.
11143
11144         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
11145         param registers. Save/restore %rdi and %rsi in MonoLMF.
11146
11147         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
11148         param registers. Modify (throw_exception) signature to take 
11149         %rdi and %rsi on Win64. 
11150
11151         Code is contributed under MIT/X11 license.
11152
11153 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11154
11155         * helpers.c: unlink debugging output files.
11156
11157 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
11158
11159         * mini.c: Move mono_create_ftnptr () to object.c.
11160
11161 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
11162
11163         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
11164         optional. This function can now be used to disassemble code generated
11165         outside the JIT such as trampolines and IMT thunks.
11166
11167         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
11168
11169         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
11170         vtable pointer from a ldr instruction.
11171
11172         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
11173         new IMT call sequence.
11174
11175         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
11176         call sequence for interface invocations.
11177
11178         * mini-arm.c (mono_arch_emit_imt_argument): added, required
11179         for imt support. This function is empty since IMT on ARM requires no
11180         special handling on the IR side.
11181
11182         * mini-arm.c (mono_arch_find_imt_method): added, required for
11183         imt support.
11184
11185         * mini-arm.c (mono_arch_find_this_argument): added, required
11186         for imt support.
11187
11188         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
11189         a ldr instruction to load a value stored in the code stream.
11190
11191         * mini-arm.c (mono_arch_build_imt_thunk):added, required
11192         for imt support.
11193
11194
11195 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
11196
11197         * mini.c (mini_init): Install the jump trampoline callback.
11198
11199 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11200
11201         * mini-trampolines.c: handle synchronized methods with the common
11202         vtable trampoline (bug #335601).
11203
11204 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
11205
11206         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
11207
11208         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
11209         64 bit platforms.
11210
11211         * mini-ia64.h mini-ia64.c: Add support for IMT.
11212
11213         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
11214         prolog. Fixes #331958.
11215
11216 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
11217
11218         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
11219
11220 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11221
11222         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
11223         trampoline.
11224
11225 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11226
11227         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
11228         trampoline.
11229
11230 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
11231
11232         * mini-x86.c, mini-x86.h: x86 support for the common vtable
11233         trampoline.
11234
11235 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
11236
11237         * mini-trampolines.c: changed the magic rampoline to understand
11238         the common vtable trampoline method: the method to invoke is
11239         determined by the vtable displacement of the call.
11240
11241 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11242
11243         * mini.c, mini.h: register the common vtable trampoline if the
11244         architecture supports it.
11245
11246 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11247
11248         * cpu-amd64.md: use the correct max length for tls_get.
11249
11250 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
11251
11252         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
11253         CEE_STELEM_ANY. Fixes #333696.
11254
11255 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
11256
11257         * exceptions-x86.c: provide more graceful handling of the case where
11258         we followed a bogus function pointer from managed code (bug #332866).
11259
11260 2007-10-11  Mark Probst  <mark.probst@gmail.com>
11261
11262         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
11263         replaces the generic_shared flag and will carry more information
11264         in the future.
11265
11266         * generic-sharing.c: Added mini_type_stack_size() which allows
11267         allows open types if given a generic sharing context.
11268         mini_get_basic_type_from_generic() takes a
11269         MonoGenericSharingContext* instead of a MonoCompile* now.
11270
11271         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
11272         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
11273         mini-sparc.c, mini-x86.c: Trivial changes required by the two
11274         changes above.  Just passing arguments through to the right
11275         places.
11276
11277 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11278
11279         * mini-arm.c: unify the call emission to emit_code_seq().
11280
11281 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
11282
11283         * tramp-arm.c: reduced the trampoline size.
11284
11285 2007-10-10  Mark Probst  <mark.probst@gmail.com>
11286
11287         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
11288         variable handling out of arch-specific code.
11289
11290 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
11291
11292         * mini-arm.c: implemented fast delegate dispatch.
11293
11294 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11295
11296         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
11297         that fp elimination is turned off if the space required by locals is too
11298         big. Fixes #331958.
11299
11300 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11301
11302         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
11303         ARM to the new style trampoline.
11304
11305 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11306
11307         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
11308
11309         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
11310
11311 2007-10-09  Martin Baulig  <martin@ximian.com>
11312
11313         * debug-debugger.h
11314         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
11315         `field_info_offset_offset'.     
11316
11317 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
11318
11319         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
11320         removed more internal usage of the r11 register and made it available
11321         to the register allocator.
11322
11323 2007-10-08  Mark Probst  <mark.probst@gmail.com>
11324
11325         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
11326         when sharing generics and treat type variables as references.
11327
11328 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11329
11330         * mini-ppc.c: started removing the internal uses of register r11
11331         to eventually allow the register allocator to manage it as an
11332         additional available register.
11333
11334 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11335
11336         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
11337
11338 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
11339
11340         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
11341         specific trampolines as they are not performance critical as a jump
11342         target (maybe align as before only for AOT code?). This saves about
11343         200 KB of native code on x86 for monodevelop startup.
11344
11345 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11346
11347         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
11348         monodevelop startup.
11349
11350 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
11351
11352         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
11353
11354         * mini-sparc.h mini-sparc.c: Implement IMT support.
11355
11356         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
11357         its smaller and doesn't clobber sparc_g1.
11358
11359         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
11360
11361 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11362
11363         * mini-ppc.c: optimized the size of the IMT thunks a bit.
11364
11365 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11366
11367         * mini-ppc.c: implemented fast delegate invocation.
11368
11369 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11370
11371         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
11372
11373 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11374
11375         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
11376         code to the new style trampoline in preparation for IMT support.
11377
11378 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
11379
11380         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
11381         systems already. This also reduces the specific trampiline sizes and
11382         prepares for the use of r12 as the IMT identifier register.
11383
11384 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11385
11386         * mini-mips.h: endianess fix (simplified from a patch by
11387         Thomas Kunze <thommy@tabao.de>, bug #323737).
11388
11389 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11390
11391         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
11392         to access ucontext fields and enable netbsd support
11393         (partially from Magnus Henoch <mange@freemail.hu>).
11394
11395 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11396
11397         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
11398         use the preprocessor from the CPP env var if it is set.
11399
11400 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11401
11402         * mini-trampolines.c: fixed an assertion and moved it earlier in the
11403         code, before interface_offset gets used.
11404
11405 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
11406
11407         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
11408         mono_class_setup_vtable () before accessing klass->vtable.
11409
11410 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
11411
11412         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
11413         hackish.
11414
11415 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11416
11417         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
11418         IMT slots (this saves hundreds of KB of memory in programs like
11419         IronPython and Monodevelop).
11420
11421 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11422
11423         * mini.c: print the delegate counter.
11424
11425 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
11426
11427         * mini-x86.c: make it easier to enable the debugging code for IMT
11428         slots.
11429
11430 2007-09-28  Martin Baulig  <martin@ximian.com>
11431
11432         * debug-debugger.h
11433         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
11434         `mono_method_klass_offset' and `mono_method_token_offset'.
11435
11436 2007-09-20  Mark Probst  <mark.probst@gmail.com>
11437
11438         * mini.c: First generics sharing implementation.  Can only share
11439         in very simple cases.  If sharing doesn't work it falls back to
11440         dedicated compilation.
11441
11442         * mini.h: Flag in MonoCompile to specify whether generic
11443         compilation is shared.  Flags enum for marking which generic inst
11444         of a context is used.  Prototypes for helper functions.
11445
11446         * generic-sharing.c: Helper functions for generic method sharing.
11447
11448         * optflags-def.h: Optimization flag (gshared) for enabling generic
11449         method sharing added.
11450
11451         * Makefile.am: generic-sharing.c added.
11452
11453 2007-09-19 Daniel Nauck <dna@mono-project.de>
11454
11455         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
11456
11457 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
11458         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
11459         fixes bug 325507.
11460
11461 2007-09-19  Martin Baulig  <martin@ximian.com>
11462
11463         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
11464         mono_debug_cleanup() is now part of mono_cleanup().
11465
11466 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
11467
11468         * driver.c (mono_main): Fix a warning.
11469
11470 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
11471
11472         * aot-compiler.c: Optimize various parts when processing large assemblies.
11473         Fixes ##325568.
11474
11475         * mini.c (mono_patch_info_hash): Improve hash function.
11476
11477 2007-09-14  Jonathan Chambers <joncham@gmail.com>
11478
11479         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
11480         
11481         Code is contributed under MIT/X11 license.
11482
11483 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11484
11485         * mini.c (mini_init): Fix a leak.
11486
11487         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
11488
11489 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11490
11491         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
11492
11493 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11494
11495         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
11496
11497 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
11498
11499         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
11500         variance tests.
11501
11502         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
11503
11504         * mini.c (handle_alloc): Enable managed allocators in AOT code.
11505
11506         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
11507
11508         * aot-runtime.c (decode_patch_info): Ditto.
11509
11510 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11511
11512         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
11513         static case. Cache delegates in architecture specific code, 
11514         based on number of parameters.
11515         
11516         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
11517         in architecture specific code, based on number of parameters.
11518         
11519         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
11520         caching happen in architecture specific code now.
11521         
11522         Code is contributed under MIT/X11 license.
11523
11524 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11525
11526         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
11527         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
11528         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
11529
11530         Code is contributed under MIT/X11 license.
11531
11532 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11533         * mini.c: (mono_thread_abort) Fixed bug #82416.
11534
11535 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11536
11537         * mini.: hook the new managed GC allocation feature into the JIT.
11538
11539 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11540
11541         * mini.c: implementation for the new runtime tls opcode.
11542
11543 2007-09-11  Martin Baulig  <martin@ximian.com>
11544
11545         * debug-debugger.h
11546         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
11547         `mono_method_inflated_offset'.
11548
11549 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
11550
11551         * driver.c mini.h mini.c: Add a new devel command line option for injecting
11552         async exceptions into a method.
11553
11554         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
11555         purpose of testing whenever the unwinder works at every instruction.
11556
11557 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
11558
11559         * mini.c: check accessibility of method used in ldftn (fixes
11560         bug #82635).
11561
11562 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
11563
11564         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
11565
11566         * inssel.brg: Fix a warning.
11567
11568 2007-09-03  Martin Baulig  <martin@ximian.com>
11569
11570         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
11571         now takes the `main_method' as argument.
11572
11573 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
11574
11575         * cpu-sparc.md (endfilter): Add missing src1:i argument.
11576
11577 2007-08-30  Jonathan Chambers <joncham@gmail.com>
11578
11579         * driver.c: include the cil-coff.h header on Windows.
11580         
11581         Code is contributed under MIT/X11 license.
11582
11583 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11584
11585         * mini.c, driver.c: don't include the cil-coff.h header.
11586
11587 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11588
11589         * mini.c: flag places that needs fixes fo soft-float support.
11590
11591 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
11592
11593         * mini.h, inssel-float.brg: fix soft-float constant loads on big
11594         endian systems (partially from Dean Jenkins, bug #81924).
11595
11596 2007-08-28  Mark Probst  <mark.probst@gmail.com>
11597
11598         * mini.c (check_linkdemand): Remove embedded reference object in
11599         call to LinkDemandSecurityException.
11600         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
11601         with an IntPtr instead of a reference object.
11602
11603 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
11604
11605         * mini.c (handle_initobj): Handle alignment properly.
11606
11607         * inssel.brg (mini_emit_memset): Ditto. 
11608
11609         * inssel.brg (mini_emit_memcpy): Ditto. 
11610
11611         * inssel-sparc.brg: Ditto.              
11612
11613         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
11614
11615 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
11616
11617         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
11618         exceptions raised in unmanaged code. Fixes part of #82594.
11619
11620 2007-08-24  Mark Probst  <mark.probst@gmail.com>
11621
11622         * mini.c (mono_method_to_ir), declsec.c
11623         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
11624
11625 2007-08-22  Martin Baulig  <martin@ximian.com>
11626
11627         * debug-mini.h
11628         (MonoDebuggerThreadInfo): New typedef.
11629         (mono_debugger_thread_table): New global variable.
11630         (mono_debugger_thread_created): New public function.
11631         (mono_debugger_thread_cleanup): New public function.
11632
11633         * debug-debugger.h
11634         (MonoDebuggerInfo):
11635         - removed `get_current_thread' and `lookup_assembly'.
11636         - removed `data_table'.
11637         - added `thread_table'.
11638
11639         * mini.c
11640         (mono_thread_start_cb): Call mono_debugger_thread_created().
11641         (mono_thread_attach_cb): Likewise.
11642         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
11643         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
11644         initial domain.
11645
11646         * driver.c (mono_main): Move mono_debug_init() up, before calling
11647         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
11648
11649 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11650
11651         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
11652         together when passing several arguments of type double (gives a small
11653         speedup and saves a few bytes of generated code).
11654
11655 2007-08-20  Jb Evain  <jbevain@novell.com>
11656
11657         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
11658
11659 2007-08-20  Jb Evain  <jbevain@novell.com>
11660
11661         * mini.c (mono_method_to_ir): throw MethodAccessException
11662         and FieldAccessException instead of InvalidProgramException.
11663
11664 2007-08-20  Mark Probst  <mark.probst@gmail.com>
11665
11666         * mini.c: CoreCLR security checks.
11667
11668         * mini.h: Removed MonoSecurityMode (moved to
11669         metadata/security-manager.h) and mono_security_mode global var
11670         (replaced by set/get functions in security-manager.h).
11671
11672         * driver.c: Added "core-clr-test" security mode for testing.  Used
11673         set-function for setting security mode.
11674
11675 2007-08-17  Mark Probst  <mark.probst@gmail.com>
11676
11677         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
11678         the new jit_info_table.
11679
11680         * driver.c: Test code for the new jit_info_table (enabled by the
11681         define MONO_JIT_INFO_TABLE_TEST).
11682
11683 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
11684
11685         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11686         detection of call <REG> instruction sequence. Fixes build on freebsd.
11687
11688 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
11689
11690         * mini-exceptions.c: Fix a warning.
11691
11692 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
11693
11694         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
11695         stack overflow handling code on amd64 too.
11696
11697         * mini-exceptions.c (mono_setup_altstack): Make this use 
11698         mono_thread_get_stack_bounds ().
11699
11700         * mini-x86.h: Disable sigaltstack on solaris x86.
11701
11702 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
11703
11704         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
11705
11706 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
11707
11708         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
11709
11710 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
11711
11712         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
11713
11714         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
11715
11716 2007-08-03  Neale Ferguson <neale@sinenomine.net>
11717
11718         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
11719         due to alignment.
11720
11721 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11722
11723         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
11724         to be emitted (bug #82281).
11725
11726 2007-08-01  Martin Baulig  <martin@ximian.com>
11727
11728         Merged the `debugger-dublin' branch.
11729
11730         * debug-debugger.h (MonoDebuggerInfo):
11731         Removed the `old_*' compatibility entries.
11732         Added `debugger_version' and `data_table'.
11733         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
11734         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
11735
11736         * debug-mini.c
11737         (MiniDebugMethodBreakpointInfo): Add `address_list'.
11738         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
11739         instead of a `gconstpointer'.
11740         (mono_debugger_insert_method_breakpoint): Return a
11741         `MonoDebugMethodAddressList *'.
11742
11743 2007-06-28  Martin Baulig  <martin@ximian.com>
11744
11745         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
11746
11747 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
11748
11749         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
11750         __builtin_frame_address () since it is broken on older gcc versions.
11751
11752 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11753
11754         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
11755         on the stack overflow handling and made the managed stack overflows
11756         catchable in most cases using soft guard pages.
11757         * exceptions-x86.c: added code to restore the protection in the soft
11758         guard pages at the end of exception handling.
11759
11760 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
11761
11762         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
11763
11764 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11765
11766         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
11767         exception handling.
11768
11769 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11770
11771         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
11772         signal handling support until it has been ported to the new mechanism.
11773         * mini.c: fixed stack overflow detection and use the new
11774         architecture code  to handle signals on the altstack.
11775
11776 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
11777
11778         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
11779         stack overflows on the alt stack.
11780
11781 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
11782
11783         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
11784         stack overflows on the alt stack.
11785
11786 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
11787
11788         * exceptions-ppc.c: cleanup preparing for altstack support.
11789
11790 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
11791
11792         * exceptions-arm.c: cleanup preparing for altstack support.
11793
11794 2007-07-27  Mark Probst  <mark.probst@gmail.com>
11795
11796         * mini.c (print_jit_stats): Output hazard pointer stats.
11797
11798 2007-07-26  Mark Probst  <mark.probst@gmail.com>
11799
11800         * driver.c, mini.c: Replaced security mode flags with a single
11801         enum variable.
11802
11803 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11804
11805         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
11806
11807 2007-07-25  Mark Probst  <mark.probst@gmail.com>
11808
11809         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
11810         (which doesn't do anything yet) for activating Core CLR
11811         (Silverlight) security.
11812
11813 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
11814
11815         * mini-codegen.c: work around a possible gcc bug on arm.
11816
11817 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11818
11819         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
11820         message for platforms that don't support AOT compilation.
11821
11822 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
11823
11824         * mini.h, mini.c, driver.c: temporary smcs hack.
11825
11826 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
11827
11828         * mini-arm.h, mini-arm.c: arm EABI fixes.
11829
11830 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
11831
11832         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
11833         case.
11834
11835         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
11836         trampolines taking a method argument.
11837
11838         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
11839
11840         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
11841         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
11842
11843         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
11844         JIT compilation throws an exception. Fixes #82050.
11845
11846 2007-07-19  Mark Probst  <mark.probst@gmail.com>
11847
11848         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
11849         with the MONO_EXCEPTION_ defines.
11850
11851 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
11852
11853         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
11854         #82117.
11855         
11856         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
11857         the cause of an assertion.
11858
11859 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
11860
11861         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
11862         removed.
11863
11864 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
11865
11866         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
11867         assert. Should fix #82103.
11868
11869 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
11870
11871         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
11872         here too. Fixes #82095.
11873
11874         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
11875         addresses.
11876
11877         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
11878
11879         * mini-amd64.h: Enable IMT for amd64.
11880         
11881         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
11882
11883 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
11884
11885         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
11886
11887 2007-07-12  Mark Probst  <mark.probst@gmail.com>
11888
11889         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
11890         as soon as check_linkdemand sets an exception_type.
11891
11892 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11893
11894         * mini-x86.c: fixed offsets for IMT call sequence.
11895         * mini-x86.h: enable IMT again.
11896
11897 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
11898
11899         * trace.c (mono_trace_enter_method): Decode MonoType too.
11900
11901         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
11902
11903         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
11904
11905         * mini-amd64.c: Add preliminary IMT implementation.
11906         
11907 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11908
11909         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
11910         understand the new IMT-base interface invocation (thanks to
11911         Daniel Nauck for the report and the remote debugging session).
11912
11913 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11914
11915         * mini-x86.c: size and speed optimizations for the IMT bsearch.
11916
11917 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
11918
11919         * Makefile.am (aotcheck): Make this actually use the AOTed code.
11920
11921 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
11922
11923         * mini-trampolines.c: implement AOT IMT support.
11924         * mini-x86.h: enable IMT support for wider testing.
11925
11926 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11927
11928         * inssel.brg (emit_imt_argument): Add aot support here.
11929
11930         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
11931
11932 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11933
11934         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
11935         of the IMT implementation, partially from massi, with my
11936         implementation of the bsearch sequence. Disabled by default until
11937         the AOT code is implemented.
11938
11939 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
11940
11941         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
11942
11943         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
11944
11945 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11946
11947         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
11948         arch-independent IMT JIT code from Massimiliano
11949         Mantione (massi@ximian.com) with small cleanups from me.
11950
11951 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
11952
11953         * Makefile.am: fix svn invocation to get the svn revision to be
11954         independent of the local language (build fix).
11955
11956 2007-07-09  Mark Probst  <mark.probst@gmail.com>
11957
11958         * mini.c (inline_method): Reset cfg->exception_type if the
11959         inlining is aborted.  Fixes: 82049.
11960
11961 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
11962
11963         * mini.c: remove assert from exception handling code when exception_ptr
11964         is not set.
11965
11966 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11967
11968         * mini.c (mono_codegen): Add an assert.
11969
11970         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
11971         enter and leave code.
11972         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
11973
11974 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11975
11976         * mini-ppc.c: fixed memory corruption for localloc(0)
11977         (bug #81852).
11978
11979 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
11980         
11981         * mini.c: Fix warnings.
11982
11983 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
11984
11985         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
11986         to emit better double->int conversions.
11987
11988 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11989
11990         * mini.c: the provided Min/Max optimizations are valid for unisgned
11991         ints.
11992
11993 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
11994
11995         * 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
11996
11997 2007-06-28  Miguel de Icaza  <miguel@novell.com>
11998
11999         * mini.c (mono_running_on_valgrind): Add support for reporting the
12000         method and  its boundaries to valgrind.
12001
12002 2007-06-28  Martin Baulig  <martin@ximian.com>
12003
12004         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12005
12006 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
12007
12008         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
12009
12010         * generic.2.cs: Add new test case.
12011
12012 2007-06-25  Martin Baulig  <martin@ximian.com>
12013
12014         Merged the `debugger-dublin' branch.
12015
12016         * debug-mini.c
12017         (mono_debugger_insert_method_breakpoint): New public method.
12018         (mono_debugger_remove_method_breakpoint): Likewise.
12019         (mono_debugger_check_breakpoints): New static method.
12020         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
12021
12022         * debug-debugger.h (MonoDebuggerInfo):
12023         Renamed (to keep backward compatibility in the vtable):
12024         `insert_breakpoint' -> `old_insert_breakpoint'.
12025         `remove_breakpoint' -> `old_remove_breakpoint'.
12026         `create_string' -> `old_create_string'.
12027         `lookup_class' -> `old_lookup_class'.
12028         `lookup_type' -> removed; changed into a dummy field.
12029         `lookup_assembly' -> `old_lookup_assembly'.
12030         Added (same functionality, but different signature):
12031         `create_string', `lookup_class', `lookup_assembly'
12032         Added new:
12033         `get_method_addr_or_bpt', `remove_method_breakpoint',
12034         `runtime_class_init'.
12035
12036         * debug-debugger.c: Merged the `debugger-dublin' branch.
12037
12038 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
12039
12040         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
12041         well.
12042         (peephole_pass): Likewise.
12043
12044 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
12045
12046         * driver.c: hopefully make setaffinity work also for ancient
12047         versions of linux.
12048
12049 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
12050
12051         * driver.c : win32 build fix.
12052
12053 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12054
12055         * driver.c: check for the MONO_NO_SMP env var and bind to a single
12056         processor if it is set.
12057
12058 2007-06-21  Martin Baulig  <martin@ximian.com>
12059
12060         * debug-mini.h: New file.
12061
12062         * debug-mini.c
12063         (mono_debugger_insert_breakpoint_full): Moved here from
12064         ../metadata/mono-debug-debugger.c.
12065         (mono_debugger_remove_breakpoint): Likewise.
12066         (mono_debugger_breakpoint_callback): Likewise.
12067
12068 2007-06-15  Raja R Harinath  <rharinath@novell.com>
12069
12070         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12071         changes in MonoGenericClass.
12072
12073 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
12074
12075         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
12076
12077 2007-06-14  Raja R Harinath  <rharinath@novell.com>
12078
12079         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12080         removal of MonoGenericMethod.
12081
12082 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12083
12084         * mini-exceptions.c: hooks for the exception events profiling API.
12085
12086 2007-06-14  Randolph Chung  <tausq@debian.org>
12087
12088         * Makefile.ma: Add hppa target.
12089         * mini-arch.h: Include mini-hppa.h
12090         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
12091         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
12092         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12093
12094 2007-06-14  Randolph Chung  <tausq@debian.org>
12095
12096         * inssel.brg: Add rules for "chained" compare-branch operations so that
12097         a single compare op can affect multiple branches.  Adjust cost for
12098         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
12099         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
12100         cost for some rules so that they can more easily be overridden by
12101         per-arch rules (with fixes from lupus).
12102         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12103
12104 2007-06-13  Randolph Chung  <tausq@debian.org>
12105
12106         * mini-ops.h: Reorder branch ops so that they match the order of the
12107         corresponding CEE_* ops.  The code expects them this way.
12108         Add new ops for HPPA target.
12109         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12110
12111 2007-06-13  Randolph Chung  <tausq@debian.org>
12112
12113         * mini-exceptions.c: Handle cases where the stack grows towards
12114         larger addresses.
12115         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12116
12117 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12118
12119         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
12120         counter.
12121         * driver.c: explain where a non-matching corlib is found.
12122
12123 2007-06-13  Mark Probst  <mark.probst@gmail.com>
12124
12125         * mini.c (print_jit_stats): Output dynamic code allocation stats.
12126
12127 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
12128
12129         * mini-exceptions.c: Generate a method profile leave event during
12130         an exception to ensure that the profiler gets notified.
12131
12132 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
12133
12134         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
12135         branch.
12136
12137         * cpu-amd64.md: Add long_and/or/xor opcodes.
12138
12139 2007-06-06  Wade Berrier  <wberrier@novell.com>
12140
12141         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
12142         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
12143         length of instruction shr_imm (expected 8, got 10)
12144
12145 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
12146
12147         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
12148
12149 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12150
12151         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12152         MonoInternalHashTable again (fixed bug in the internal hash table
12153         code).
12154
12155 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12156
12157         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
12158         Have to figure out what makes it crash the SWF regression.
12159
12160 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
12161
12162         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
12163
12164 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12165
12166         * mini.c: optimize out the type check when storing null in a
12167         reference array.
12168
12169 2007-06-04  Mark Probst  <mark.probst@gmail.com>
12170
12171         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12172         MonoInternalHashTable.
12173
12174 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
12175
12176         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
12177         signed integer methods.
12178
12179 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12180
12181         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
12182         permanently since the current approach doesn't work.
12183
12184 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12185
12186         * inssel.brg (stmt): Only call delegate->invoke_impl if 
12187         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
12188
12189 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12190
12191         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
12192         the sreg2==rdx case.
12193         
12194         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
12195         account if it contains a rex prefix.
12196         (peephole_pass): Handle OP_FMOVE as well.
12197
12198 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12199
12200         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
12201         as it causes regressions.
12202
12203 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
12204
12205         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
12206         static case as well.
12207
12208         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
12209
12210         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12211         (mono_arch_get_this_arg_from_call): Ditto.
12212
12213         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
12214
12215         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
12216         invoke_impl field.
12217
12218         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12219         (mono_arch_get_this_arg_from_call): Ditto.
12220
12221         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
12222         
12223         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
12224         try to create optimized invoke code and use that for further invocations. 
12225         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
12226
12227         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
12228
12229 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
12230
12231         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
12232         sealed classes or methods.
12233         *devirtualization.cs: tests for the new optimization
12234
12235 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
12236
12237         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
12238         by the update_volatile () function.
12239
12240 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
12241
12242         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
12243         require it.
12244
12245         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
12246
12247 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
12248
12249         * mini.c: Add configure checks for header files.
12250         * mini-x86.c: Add configure checks for header files.
12251         * trace.c: Add configure checks for header files.
12252         * aot-runtime.c: Add configure checks for header files.
12253         * aot-compiler.c: Add configure checks for header files.
12254         * driver.c: Add configure checks for header files.
12255         * mini-codegen.c: Add configure checks for header files.
12256         
12257         Code is contributed under MIT/X11 license.
12258
12259 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
12260
12261         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
12262         icompare_imm -128 + op_iclt. Fixes #81703.
12263
12264 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
12265
12266         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
12267
12268 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12269
12270         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
12271         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
12272         so that all isinst checks now use "interface_bitmap".
12273
12274 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
12275
12276         * cpu-amd64.md (jmp): Fix a warning.
12277
12278         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
12279
12280         * basic.cs: Add new regression test.
12281
12282         * basic.cs: Remove test which is now in basic-long.cs.
12283
12284         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
12285
12286         * basic-long.cs: Add new test.
12287         
12288 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
12289
12290         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
12291
12292 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
12293
12294         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
12295
12296         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
12297         places.
12298         
12299         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
12300         throwing code a bit.
12301
12302         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
12303         the exception throwing code a bit.
12304
12305         * mini-x86.c (get_call_info): Allocate result from a mempool.
12306
12307 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
12308
12309         * aot-compiler.c (find_typespec_for_class): Fix the assert.
12310
12311         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
12312
12313         * mini.h (MonoCompile): Add 'token_info_hash' field.
12314
12315         * mini.c: Save token->method associations during compilation so the AOT 
12316         compiler can use it.
12317         
12318         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
12319         which reference generic classes and methods.
12320
12321 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
12322
12323         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
12324
12325         * aot-compiler.c (compile_method): Fix a typo in a comment.
12326
12327         * aot-runtime.c (decode_cached_class_info): Skip generic types.
12328
12329         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
12330         everything generic.
12331
12332         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
12333
12334 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
12335
12336         * mini.h (MonoCompile): Add 'args' field.
12337
12338         * mini.c (mono_compile_create_vars): Store variables representing the arguments
12339         into cfg->args.
12340
12341         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
12342
12343 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
12344
12345         * mini.c (mono_compile_get_interface_var): Remove this unused function.
12346
12347         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
12348
12349         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
12350         opcodes for some opcodes.
12351
12352         * mini.h *.brg *.c: Use the new opcodes.
12353
12354 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
12355
12356         * mini.h: Bumped aot revision.
12357
12358         * inssel.brg: modified code generation of type checks for interfaces
12359         to use the new "MonoClass.interface_bitmap" instead of the old
12360         "MonoClass.interface_offsets".
12361
12362 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
12363
12364         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
12365
12366 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
12367
12368         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
12369         64 bit platforms.
12370
12371 2007-04-27  Neale Ferguson <neale@sinenomine.net>
12372
12373         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
12374
12375 2007-04-27  Wade Berrier  <wberrier@novell.com>
12376
12377         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
12378         mini.h) to fix build.
12379
12380 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
12381
12382         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
12383         
12384         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
12385         causes the corlib unit tests to fail.
12386
12387 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
12388
12389         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
12390
12391         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
12392
12393         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
12394         opcodes to the comparison relations.
12395
12396         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
12397         opcodes to their types.
12398         
12399         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
12400
12401         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
12402         it in cfg->arch.cinfo.
12403
12404         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
12405
12406         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
12407         cfg->cil_offset_to_bb.
12408
12409 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
12410
12411         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
12412         created becase of initlocals.
12413
12414 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
12415
12416         * mini-alpha.c cpu-alpha.md: More alpha port work from 
12417         Sergey Tikhonov <tsv@solvo.ru>.
12418
12419 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
12420
12421         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
12422
12423 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
12424
12425         * cpu-s390.md (break): Correct the length of break instruction.
12426
12427 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12428
12429         * mini.c: fix a couple of soft-float issues and comments.
12430
12431 2007-04-15  Miguel de Icaza  <miguel@novell.com>
12432
12433         * trace.c (is_filenamechar): - is also a filename char.
12434
12435 2007-04-15  Neale Ferguson <neale@sinenomine.net>
12436
12437         * mini-s390.c: Correct checking for enum type in return value processing.
12438
12439 2007-04-14  Raja R Harinath  <rharinath@novell.com>
12440
12441         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
12442         (version.h): Makefile is in the build directory.
12443
12444 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
12445
12446         * mini-amd64.h: fix for assertion failure on Solaris/amd64
12447
12448 2007-04-11  Martin Baulig  <martin@ximian.com>
12449
12450         * mini.c (can_access_member): Fix handling of generic classes;
12451         fixes #81259.
12452
12453 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
12454
12455         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
12456
12457 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
12458
12459         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
12460
12461 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12462
12463         * mini-codegen.c: make sure the right spill amount is
12464         used for fp or integer registers (fixes the float_sub_spill() on ppc).
12465
12466 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
12467
12468         * mini-ppc.c: fixes for the fp_branch_nan test.
12469
12470 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
12471
12472         * basic.cs: Comment out new test which still fails on ia64.
12473
12474 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12475
12476         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
12477
12478 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12479
12480         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
12481
12482 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
12483
12484         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
12485         on 64 bit machines. Fixes part of #80738.
12486
12487         * basic.cs: Add regression test.
12488
12489 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12490
12491         * inssel.brg basic.cs: Revert previous change to fix build.
12492
12493         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
12494         platforms.
12495         
12496         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
12497
12498         * basic.cs: Add new regression test.
12499
12500 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12501
12502         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
12503         many arguments.
12504
12505 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12506
12507         * cpu-s390x.md: Correct length of break instruction.
12508
12509 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12510
12511         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
12512         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
12513
12514 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
12515
12516         * *.c: Begin WIN64 port.
12517         * mini.c:  Use correct register in profiler.
12518         * mini-amd64.c: No inline assembly on Win64.
12519         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
12520         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
12521         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
12522         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
12523         mono_arch_ip_from_context for Win64.
12524         
12525         Contributed under MIT/X11 license.
12526
12527 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
12528
12529         * exceptions-amd64.c (seh_handler): Ditto.
12530
12531         * exceptions-x86.c (seh_handler): Fix a memory leak.
12532
12533 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
12534
12535         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
12536         mini-s390x.c: fixed peephole optimizations to deal
12537         correctly with 1 and 2 byte reload avoidance.
12538
12539 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
12540
12541         * cpu-s390.md, cpu-s390x.md: update localloc length.
12542
12543 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12544
12545         * cpu-g4.md: added missing descriptions.
12546
12547 2007-03-14  Miguel de Icaza  <miguel@novell.com>
12548
12549         *  Makefile.am: Add support so the tail tests are not executed on
12550         PowerPC as that is a known limitation of the PowerPC port.
12551
12552 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12553
12554         * runmdesc.bat:  Move to msvc directory.
12555         
12556 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12557
12558         * runmdesc.bat:  Run executable that was produced by the current
12559         target and sent via an argument.
12560         
12561 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
12562
12563         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
12564         #81102.
12565
12566         * generics.2.cs: Add regression test.
12567
12568 2007-03-09  Wade berrier  <wberrier@novell.com>
12569
12570         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
12571
12572 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
12573
12574         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
12575         AOT code depends on this.
12576
12577 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
12578
12579         * mini.c: more precise tracking of types in the eval stack
12580         (part of fix for bug #81044).
12581
12582 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
12583
12584         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
12585
12586         * aot-compiler.c (encode_patch): Remove an obsolete comment.
12587
12588 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
12589
12590         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
12591
12592         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
12593
12594 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
12595
12596         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
12597         a pointer on 64 bit systems. Fixes #80190.
12598
12599         * iltests.il: Add new regression test.
12600
12601 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12602
12603         * mini.c: inline a constant for Environment.IsRunningOnWindows.
12604
12605 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
12606
12607         * trace.c: Remove an erroneous alignemnt check when tracing.
12608           Fixes --trace on OSX86.
12609
12610 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
12611
12612         * mini-$(arch).h: initialize SP in context for all the archs.
12613
12614 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
12615
12616         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
12617         regressions in the thread tests.
12618
12619 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
12620
12621         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
12622         - fixed implementation of LOCALLOC opcode
12623         - implemented non-un compare for floats
12624         - code cleanup
12625         - implementation of FDIV and CKFINITE opcodes
12626         - fixes for latest mono updates
12627         - additional arch opcodes
12628
12629 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12630
12631         * Makefile.am: simplify and merge rules for cross-compilation.
12632
12633 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
12634
12635         * local-propagation.c: Actually *apply* the fix for bug 80591...
12636
12637 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12638
12639         * mini-exceptions.c: backuot part of the last change
12640         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
12641
12642 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
12643         * inssel.brg: Fix bug 59286.
12644
12645
12646 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
12647
12648         * mini-exceptions.c: patch from Zoltan to correctly check for
12649         stack boundaries (using the stack register, not the frame register),
12650         fixes bugs #80724, #79717.
12651
12652 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
12653
12654         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
12655         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
12656
12657         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
12658         presence of frame pointer elimination.
12659
12660 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
12661         
12662         * mini-x86.h: NetBSD UCONTEX_REG defines.
12663
12664 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
12665
12666         * inssel-amd64.brg: Fix amd64 build.
12667
12668 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
12669
12670         * mini.h: remove extern to workaround what looks likes gcc bug 26905
12671         on amd64.
12672
12673 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
12674
12675         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
12676         ends.
12677
12678         * mini-<ARCH>.c: Use mono_is_regsize_var ().
12679
12680 2007-01-30 Mark Mason <mason@broadcom.com>
12681
12682            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
12683            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
12684            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
12685            beginning support for CEE_JMP [not quite working yet]
12686            * tramp-mips.c: LMF handling now works
12687         
12688 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
12689
12690         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
12691
12692         * mini.h (NULLIFY_INS): New macro.
12693
12694 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12695
12696         * mini.c: statistical profiler fix for windows, patch
12697         from Tor Lillqvist (tml@novell.com).
12698
12699 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
12700         * local-propagation.c: Fix bug 80591.
12701
12702 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
12703
12704         * Makefile.am: put back the --export-dynamic option as with
12705         the previous gmodule flags (thanks to Robert Jordan).
12706
12707 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
12708
12709         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
12710
12711         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
12712         simplify and speed up the local register allocator. Also rename some fields
12713         like iassign->vassign.
12714         
12715         * regalloc.c: Remove some functions which are no longer used since their
12716         inlined version is in mini-codegen.c.
12717         
12718         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
12719
12720         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
12721
12722 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
12723
12724         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
12725         narrowing. Fixes #80622.
12726
12727         * iltests.il: Add new regresssion test. 
12728
12729 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12730
12731         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
12732         debug-debugger.c, debug-debugger.h: warning fixes.
12733         * driver.c: updated copyright year and made it fit in one line.
12734
12735 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
12736
12737         * aot-runtime.c: updated to use mono-dl instead of gmodule.
12738
12739 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
12740
12741         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
12742
12743         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
12744
12745         * iltests.il: Add new test for bug #80507.
12746
12747 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12748
12749         * mini-arm.h: use soft-float also on vfp for now.
12750
12751 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
12752
12753         * mini.c: fix some more soft-float issues.
12754
12755 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
12756
12757         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
12758
12759 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
12760         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
12761         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
12762         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
12763
12764 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
12765
12766         * mini-arm.c: typo fix.
12767
12768 2007-01-23  Neale Ferguson <neale@sinenomine.net>
12769
12770         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
12771
12772 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
12773
12774         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
12775         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
12776
12777         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
12778
12779         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
12780
12781         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
12782         
12783         * inssel.brg: Fix a warning.
12784
12785         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
12786
12787         * abcremoval.c ssa.c ssapre.c: Update after this change.
12788         
12789         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
12790
12791         * dominators.c (df_set): Use mono_bitset_union_fast.    
12792
12793 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
12794
12795         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
12796         mini-codegen.c: reduce relocations and memory usage for the cpu
12797         description.
12798
12799 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
12800
12801         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
12802
12803         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
12804         to reduce their size.
12805
12806 2007-01-19 Mark Mason <mason@broadcom.com>
12807
12808         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
12809         * mini-mips.c: more configuration macros, support long conditional branches, additional
12810         asserts, fix epilog instrumentation.
12811         * mini-mips.h: use standard stack walk
12812         * cpu-mips.md: increase size of div, rem and conditional branches
12813         
12814 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
12815
12816         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
12817         to cpu spec data.
12818
12819 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
12820
12821         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
12822         (compile_method): Ditto.
12823
12824         * aot-runtime.c (decode_klass_info): Ditto.
12825
12826         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
12827         needed by the code generated by inssel.brg. Also fix a warning.
12828
12829 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
12830
12831         * mini.c: deal with enums that become genericinsts by
12832         being nested in a generic class (bug #79956).
12833
12834 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
12835
12836         * mini.c: match the generic definition to check for
12837         private access with generic types (bug #78431).
12838
12839 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
12840
12841         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
12842         to make life easier for people cross-compiling that insist on not
12843         using scratchbox.
12844
12845 2007-01-17 Mark Mason <mason@broadcom.com>
12846
12847         * inssel-long.brg: patch to deal with mips missing flags
12848         * inssel-long32-mips.brg: implement overflow checks
12849         * insset-mips.brg: implement overflow checks
12850         * mini-mips.h: implement conditional exception handling
12851         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
12852           Remove unused code, minor cleanups.
12853         * exceptions-mips.c: minor cleanups
12854         * mini-ops.h: add mips conditional exception ops
12855         * cpu-mips.md: add mips conditional exception ops
12856
12857         
12858 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
12859
12860         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
12861         to deal with mips missing of flags.
12862
12863 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
12864
12865         * exceptions-ppc.c: execute fault handlers.
12866
12867 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
12868
12869         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
12870
12871 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12872
12873         * mini.c: handle also floating point values in initialize_array.
12874
12875 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
12876
12877         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
12878         array initialization and make it conditional on the intrins option.
12879
12880 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12881
12882         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
12883         relocations and put the patch info names close to the enum definition.
12884
12885 2007-01-15 Mark Mason <mason@broadcom.com>
12886
12887         * basic.cs, exceptions.cs: break up large tests to increase debugability.
12888
12889 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
12890
12891         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
12892
12893 2007-01-12  Raja R Harinath  <rharinath@novell.com>
12894
12895         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
12896
12897 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
12898
12899         * Makefile.am: distribute the mips sources.
12900
12901 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12902
12903         * mini-codegen.h: handle bug #80489 here, by excluding ecx
12904         directly.
12905
12906 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
12907
12908         * cpu-x86.md: back out for now as this triggers other regressions.
12909
12910 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12911
12912         * cpu-x86.md: force src1 and dest regpair for long shift instructions
12913         to eax:edx, so ecx can't get allocated to them (bug #80489).
12914
12915 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
12916
12917         * mini.c, mini-exceptions.c: enabled running fault handlers
12918         (bug #80469).
12919
12920 2007-01-03  Miguel de Icaza  <miguel@novell.com>
12921
12922         * driver.c: If nothing fail, do not use the string "failed",
12923         because it makes it very annoying to view test result logs on the
12924         web. 
12925
12926 2006-12-30  Miguel de Icaza  <miguel@novell.com>
12927
12928         * debug-debugger.c (mono_debugger_main): Rename "main" to
12929         "main_method" to prevent a warning.
12930
12931         Remove a warning for unused field.
12932
12933 2006-12-28  Martin Baulig  <martin@ximian.com>
12934
12935         * debug-debugger.c
12936         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
12937
12938 2006-12-22  Martin Baulig  <martin@ximian.com>
12939
12940         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
12941         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
12942         seperate `.mdb_debug_info' section, so we can access it from the
12943         debugger even if the binary is stripped.
12944
12945         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
12946         from the `.mdb_debug_info' here to prevent the linker from
12947         removing that section.
12948
12949         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
12950         mdb-debug-info64.s.
12951
12952 2006-12-19  Robert Jordan  <robertj@gmx.net>
12953
12954         * mini-x86: enable the code to return small structures in
12955         registers for FreeBSD as well. Fixes bug #80278.
12956         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
12957
12958 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
12959
12960         * mini-x86.c: align the stack when calling the profiler
12961         function instrumenting the prolog (on OSX).
12962
12963 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
12964
12965         * mini.c: emit a break opcode where Debugger.Break () is called.
12966
12967 2006-12-13  Miguel de Icaza  <miguel@novell.com>
12968
12969         * mini.c (mono_method_to_ir): Provide useful information on this
12970         assert, to prevent others from debugging like I did.
12971
12972 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
12973
12974         * mini.c: enable code which was incorrectly commented
12975         (bug #80235).
12976
12977 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
12978
12979         * mini-x86.c: enable on OSX, too, the code to return small
12980         structures in registers.
12981
12982 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
12983
12984         * mini-x86.c: remove the use of the dynamic code manager here, too.
12985
12986 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
12987
12988         * mini.h, debug-debugger.c, tramp-*.c: fixed 
12989         mono_debugger_create_notification_function() to use
12990         mono_global_codeman_reserve () instead of a dynamic code manager.
12991
12992 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
12993
12994         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
12995         ves_array_element_address() jit icall and use a generated
12996         managed method instead (which is about 4 times faster for a rank 3
12997         array access).
12998
12999 2006-11-29  Mark Mason  <mason@broadcom.com>
13000
13001         * basic-calls.cs: additional tests for passing
13002         structures as function arguments.
13003
13004 2006-11-29  Mark Mason  <mason@broadcom.com>
13005
13006         * mini-mips.h: disable custom exception handling
13007         * mini-mips.c: throw/rethrow should use jalr to call
13008         exception stubs.  Fixed bug with passing structures
13009         by value. More support for tracing floating point
13010         functions.
13011
13012 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13013
13014         * mini.c: fixed typo in the soft-float ldind.r4 handling
13015         (bug #80086).
13016
13017 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13018
13019         * mini.c, mini.h, driver.c: added --runtime command line
13020         option to select a different runtime than the autodetected one.
13021         * jit.h: added API for embedders to initialize with a specific
13022         runtime version.
13023
13024 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13025
13026         * mini.c: handle also boxing of r4 values (bug #80024).
13027
13028 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13029
13030         * mini-ppc.c: force indirect calls until we reserve
13031         enough address space for all the generated code.
13032
13033 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
13034
13035         * exceptions-arm.c: workaround bugs in the libc definition
13036         of struct ucontext.
13037
13038 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13039
13040         * inssel.brg: fixes from me and Mark Mason.
13041
13042 2006-11-23  Dick Porter  <dick@ximian.com>
13043
13044         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
13045         semaphore display now we've fixed the initial value
13046
13047 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13048
13049         * inssel.brg: partially revert the last change to fix the build.
13050
13051 2006-11-21  Mark Mason  <mason@broadcom.com>
13052
13053         * inssel.brg: Add and use compare-and-branch macros to support
13054         architectures that do not have condition code registers (ie. MIPS).
13055         * *-mips.{c,brg,md}: Fix copyright statements
13056
13057 2006-11-20  Mark Mason  <mason@broadcom.com>
13058
13059         * Makefile.am: remove mini-codegen.c from list of MIPS sources
13060         * mini.c: Allow GET_CONTEXT to be specified by the arch port
13061         * mini.h: Added declaration for mono_print_ins()
13062         * mini-codegen.c: added ins_spec initializer for MIPS
13063         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
13064         vreg to be virtual and hreg to be non-virtual.
13065         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
13066         is not yet working/implemented correctly.
13067         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
13068         non-static, fixup calls to print_ins() from other parts in the file.
13069
13070 2006-11-20  Mark Mason  <mason@broadcom.com>
13071
13072         * basic-calls.cs: added tests for passing structures as arguments
13073         to calls.
13074
13075 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13076
13077         * inssel-long32.brg: optimize signed division by power of two.
13078
13079 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
13080
13081         * mini-arm.c: added support for interworking with thumb code
13082         (mono must be still be built using the ARM instruction encoding).
13083
13084 2006-11-19  Miguel de Icaza  <miguel@novell.com>
13085
13086         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
13087         verifier has different rules for it.   Fixes a few verifier issues
13088         in the test suite.
13089
13090         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
13091         at the end, so people know what happened.
13092
13093 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13094
13095         * brach-opts.c: in optimize_exception_target() make sure we
13096         are in a catch clause (fixes bug #79871).
13097
13098 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13099
13100         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
13101         more soft-float support fixes.
13102
13103 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
13104
13105         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
13106         that are passed half on the stack and half in registers.
13107
13108 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13109
13110         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
13111         more mips integration work from Mark E Mason 
13112         <mark.e.mason@broadcom.com>.
13113
13114 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13115
13116         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
13117         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
13118         tramp-mips.c: added sources for the mips port, not
13119         integrated in the build yet. Contributed by
13120         Mark E Mason <mark.e.mason@broadcom.com>.
13121
13122 2006-11-14  Neale Ferguson <neale@sinenomine.net>
13123
13124         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
13125
13126 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13127
13128         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
13129         put the soft-float rules in its own file since it seems to
13130         break s390 compilation.
13131
13132 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13133
13134         * mini-arm.c: fixed wrnings.
13135
13136 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
13137
13138         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
13139         inssel-arm.brg: ARM support for soft-float.
13140
13141 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13142
13143         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
13144         loads and stores of 32 bit fp values.
13145
13146 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
13147
13148         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
13149
13150         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
13151         works. Fixes #79852 and #79463.
13152
13153 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13154
13155         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
13156         more soft-float support WIP and fixes.
13157
13158 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
13159
13160         * mini-arm.c: some VFP updates.
13161
13162 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13163
13164         * mini-exceptions.c: 0 is a valid local var offset in some
13165         architectures, don't assert (bug #78508).
13166
13167 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
13168
13169         * exceptions-arm.c: fixed off by one error in stack walk code.
13170
13171 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
13172
13173         * mini.h, mini.c: more precise tracking of type load exceptions.
13174
13175 2006-11-03  Robert Jordan  <robertj@gmx.net>
13176
13177         * Makefile.am: [WIN32] Add monow.exe target.
13178         * driver.c: [WIN32] Don't detach the console when debugging.
13179         Fixes bug #79797.
13180         
13181 2006-10-30  Miguel de Icaza  <miguel@novell.com>
13182
13183         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
13184
13185 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
13186
13187         * aot-compiler.c (emit_method_info): Add a case missed earlier.
13188
13189         * driver.c (mini_regression): Fix --regression with AOT.
13190
13191         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
13192
13193 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
13194
13195         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
13196
13197         * mini-sparc.h: Don't use sigaction on sparc/linux.
13198
13199         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
13200
13201         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
13202
13203         * mini-exceptions.c: Add proper include files for getpid ().
13204
13205 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
13206
13207         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
13208         address instead of a MonoJitInfo* to avoid decoding the exception info for the
13209         method.
13210
13211         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
13212         name cache to reduce its size.
13213
13214         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
13215
13216 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
13217
13218         * mini-x86.c: Save/restore the current LMF structure more efficiently using
13219         the mono_lmf TLS variable.
13220
13221         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
13222         trampoline lmf frames.  
13223
13224         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
13225
13226 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
13227
13228         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
13229         the mono_lmf TLS variable.
13230
13231         * mini-exceptions.c: Access the LMF structure through accessors.
13232
13233         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
13234         variable instead of in jit_tls->lmf.
13235
13236         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
13237         
13238         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
13239         trampoline lmf frames.
13240
13241         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
13242
13243 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
13244
13245        * mini.c trace.c mini-x86.c: Revert these too.
13246         
13247        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
13248        signature change.
13249
13250 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
13251
13252         * genmdesc.c: removed now dead code.
13253
13254 2006-10-09  Robert Jordan <robertj@gmx.net>
13255
13256         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
13257
13258 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
13259
13260         * mini.h: do not leave gaps in the opcode values.
13261
13262 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
13263
13264         * jit-icalls.h: flag functions as internal here, too.
13265
13266 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
13267
13268         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
13269         functions with the internal attribute.
13270
13271 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
13272
13273         * aot-compiler.c: fclose the file descriptor in the profile read loop.
13274
13275 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
13276
13277         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
13278         for soft-float.
13279
13280 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
13281
13282         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
13283         tail calls as on other platforms.
13284
13285         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
13286
13287         * iltests.il: Add a few tailcall tests.
13288
13289 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13290
13291         * driver.c: fix loop for old compilers (bug #79521).
13292
13293 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
13294
13295         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
13296
13297         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
13298
13299         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
13300         metadata without any code.
13301
13302         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
13303         more precise debugging information using gdb.
13304
13305 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
13306
13307         * inssel-ia64.brg: Make the helper methods static.
13308
13309 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13310
13311         * inssel-x86.brg: make the helper methods static.
13312
13313 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
13314
13315         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
13316
13317 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13318
13319         * mini.c: updates for monoburg changes.
13320         * inssel.brg: make a few helper functions static as they should.
13321
13322 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
13323
13324         * Makefile.am: Move mini-codegen.c to common_sources.
13325
13326 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13327
13328         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
13329         instructions.
13330         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
13331         mini-ppc.h: port to use the common local register allocator.
13332
13333 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13334
13335         * mini.h: Remove the comment too then.
13336
13337 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
13338
13339         * mini.h: put back backend.data which is to be used shortly and
13340         doesn't increase the size of MonoInst. If any 64 bit arch aligned
13341         pointers on 4 byte boundaries it'd have much bigger issues running
13342         and you can ifdef it out anyway.
13343
13344 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13345
13346         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
13347         MonoInst size by 4 bytes on 64 bit machines.
13348
13349 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
13350
13351         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
13352         replacement with more meaningful field names. Arch maintainers, please
13353         check the assigned names are good enough for your arch.
13354
13355 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13356
13357         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
13358         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
13359
13360 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13361
13362         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
13363         relocations and memory requirements, put the optimization flags
13364         definitions in their own file.
13365
13366 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
13367
13368         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
13369
13370         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
13371
13372 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
13373
13374         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
13375
13376 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
13377
13378         * inssel.brg: use the correct function to get the size of an item
13379         in an array, given an element class.
13380         * aot-compiler.c: do not access class->class_size directly.
13381
13382 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13383
13384         * mini.h, debug-mini.c: added a debugging function to print
13385         info about local variables and arguments in a jitted method.
13386
13387 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
13388
13389         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13390
13391         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
13392
13393 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13394
13395         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
13396         inner and outer loops when passing vtypes.
13397
13398 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
13399
13400         * mini-ppc.c: take into account the cpu errata for cache flushing
13401         which caused some random errors (bug #79381).
13402
13403 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13404
13405         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
13406         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
13407
13408 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
13409
13410         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
13411         loaded.
13412
13413         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
13414         freebsd ports tree.
13415
13416         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
13417         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
13418
13419         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
13420         displacement.
13421
13422 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
13423
13424         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
13425
13426 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
13427
13428         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
13429         macro does not have to be changed during debugging.
13430
13431         * 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>.
13432
13433         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
13434
13435         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
13436         
13437         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
13438         MONO_ARCH_NO_EMULATE_MUL is defined.
13439
13440         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
13441
13442         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
13443
13444         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
13445
13446         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
13447         
13448 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
13449
13450         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
13451         stuff to mini-exceptions.c where it is used.
13452
13453         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
13454         setup code, the real one is in mini-exceptions.c.
13455
13456         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
13457         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
13458         some changes from the freebsd ports tree.
13459
13460         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
13461         constants.
13462         
13463         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
13464
13465 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
13466
13467         * mini.c: on Linux, check for /proc to be mounted
13468         (bug# 79351, novell bug#201204).
13469
13470 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
13471
13472         * mini.c: handle cases where pthread_attr_getstack() behaves
13473         incorrectly (bug #78096).
13474
13475 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
13476
13477         * mini-arm.c: support larger stack frames (bug #79272).
13478
13479 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
13480
13481         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
13482
13483         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
13484         tokens.
13485
13486         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
13487         mono_class_from_name () to find a class from its name.
13488
13489         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
13490
13491 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
13492
13493         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
13494
13495 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
13496
13497         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
13498
13499 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
13500
13501         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
13502         callinfo->trampoline.
13503
13504         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
13505         fixes #79271.
13506         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
13507         future.
13508
13509 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
13510
13511         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
13512
13513 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
13514
13515         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
13516         stats.method_trampolines, it is already done by the generic trampoline code.
13517
13518         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
13519         
13520 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
13521
13522         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
13523
13524         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
13525
13526         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
13527
13528         * mini.c (print_jit_stats): Print mscorlib mempool size too.
13529         
13530         * mini.c (print_jit_stats): Print new stats.
13531
13532         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13533
13534 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
13535
13536         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
13537         Address on two dimensional arrays. Fixes #78729.
13538
13539         * mini.h (MonoCompile): Add a 'skip_visibility' field.
13540
13541         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
13542         a method.
13543
13544         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
13545
13546         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
13547         #79130.
13548         
13549         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
13550         a race condition.
13551         (mini_get_ldelema_ins): Ditto.
13552
13553 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
13554
13555         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
13556         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
13557         Fixes #79213.
13558
13559 2006-08-29 Neale Ferguson <neale@sinenomine.net>
13560
13561         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
13562         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
13563
13564         * exceptions-s390x.c: Cosmetic change.
13565
13566         * tramp-s390.c: Fix warning.
13567
13568         * cpu-s390.md: Correct length of mul_imm.
13569
13570 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13571
13572         * aot-compiler.c: added binary writer with ELF backend
13573         implementation (only on Linux/x86 for now).
13574
13575 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13576
13577         * Makefile.am: Don't run net 2.0 AOT tests.
13578
13579         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
13580         (mono_compile_assembly): Skip net 2.0 assemblies as well.
13581
13582         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
13583
13584 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13585
13586         * aot-compiler.c: simplified and refactored the asm-writing code
13587         to allow different backends.
13588
13589 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13590
13591         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
13592
13593         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
13594         little. Share patches of type TYPE_FROM_HANDLE as well.
13595
13596         * mini.c (mono_patch_info_equal): New helper function.
13597         (mono_patch_info_hash): Ditto.
13598
13599         * aot-compiler.c (emit_method_code): Fix s390 build.
13600
13601         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
13602         is not handled because it is stored as a flag and not as a type ctor. Fixes
13603         #79016.
13604
13605 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
13606
13607         * aot-compiler.c: Fix computation of GOT slot statistics.
13608         
13609         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
13610         Also remove support for not PIC AOT.
13611
13612         * mini.h: Bump AOT file format version.
13613
13614         * objects.cs: Add a test for #78990.
13615
13616         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
13617         (peter.dettman@iinet.net.au). Fixes #79087.
13618
13619         * basic-long.cs: Add a test for the above.
13620
13621 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
13622
13623         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
13624         
13625         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
13626         code somewhat.
13627
13628 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
13629
13630         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
13631         exceptions.
13632
13633 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
13634
13635         * mini.c: Don't verify COM proxy invoke calls
13636         
13637
13638 2006-08-10  Dick Porter  <dick@ximian.com>
13639
13640         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
13641         which process is holding semaphores locked.
13642
13643 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
13644
13645         * mini-ia64.c mini-amd64.c: Fix #79027.
13646
13647         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
13648
13649         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
13650
13651         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
13652         implicit arguments in a vararg call. Fixes #79027.
13653
13654 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
13655
13656         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
13657         (mono_get_array_new_va_signature): Ditto.
13658
13659 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
13660
13661         * aot-runtime.c: Call init_plt lazily.
13662
13663         * inssel-long.brg: Fix unsigned long->int conversion.
13664
13665         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
13666
13667         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
13668         that most data is now in the .rss/.data section.
13669
13670 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
13671
13672         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
13673
13674         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
13675
13676         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
13677
13678         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
13679
13680         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
13681         virtual call. Fixes #79010.
13682
13683         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
13684         and use the result as the this argument in the real call.
13685
13686         * generics.2.cs: Add a new test for #79010.
13687         
13688 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
13689
13690         * mini-x86.c: Fix a warning.
13691
13692         * aot-compiler.c: Add a bunch of statistics.
13693
13694         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
13695
13696 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
13697
13698         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
13699
13700 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
13701
13702         * 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>.
13703
13704 2006-07-13  Miguel de Icaza  <miguel@novell.com>
13705
13706         * mini.c (mono_method_to_ir): Obtain the original method in the
13707         CIL stream and use this to perform validation.
13708
13709         Fixed: #78816
13710
13711 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
13712
13713         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
13714         (mono_arch_call_opcode): Ditto.
13715
13716         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
13717         #78826.
13718
13719         * mini.c (mono_patch_info_dup_mp): New helper function.
13720         
13721         * aot-compiler.c (compile_method): Fix some of the memory allocated during
13722         compilation. Fixes #78827.
13723
13724 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
13725
13726         * declsec.c: Use original security informations for
13727           MONO_WRAPPER_MANAGED_TO_MANAGED.
13728
13729 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
13730
13731         * mini.c: Allow Com Interop methods/classes and
13732         don't verify COM wrapper calls
13733         
13734
13735 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
13736
13737         * inssel-long32.brg: Fix long->i4 checked conversion.
13738
13739         * exceptions.cs: Add a test for the above.
13740
13741 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
13742
13743         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
13744
13745         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
13746         leaks.
13747
13748         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
13749         #78775.
13750
13751 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
13752
13753         * mini.c: Fix solaris/x86 exception handling.
13754
13755         * Makefile.am: Get rid of $(ICU_LIBS).
13756
13757 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
13758
13759         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
13760         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
13761         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
13762
13763         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
13764
13765         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
13766         this function causes a SIGSEGV.
13767
13768 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
13769
13770         * mini.c: Remove unused solaris/x86 includes.
13771
13772 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
13773
13774         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
13775
13776 2006-06-20  Jb Evain  <jbevain@gmail.com>
13777
13778         * cpu-g4.md: fix max length of start_handler instruction.
13779
13780 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
13781         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
13782
13783 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
13784         * ssa.c: Fixed bug 78653 for SSA based deadce.
13785         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
13786         MonoInst.flags, used in SSA based deadce.
13787         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
13788         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
13789
13790 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
13791
13792         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
13793         it can end up using non executable memory on ppc64 systems
13794         running ppc32 userspace (fix from Johannes Berg).
13795
13796 2006-06-14  Dick Porter  <dick@ximian.com>
13797
13798         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
13799         4.1.1
13800
13801 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
13802         * mini.c: Made so that inline is locally disabled if it would
13803         trigger a .cctor, because too many apps depend on this behavior
13804         (which seems to be also the one of the MS CLR).
13805
13806 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
13807
13808         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
13809         No idea why this worked before.
13810
13811         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
13812         which branch to outer exception clauses since they could skip the
13813         inner finally clauses. Fixes #78633.
13814
13815         * exceptions.cs: Add a test for the above.
13816
13817         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
13818         Fixes #78629.
13819
13820         * iltests.il: Add a test for the above.
13821
13822 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
13823
13824         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
13825         after the end of a try bblock, to prevent asserts in mini_method_compile ().
13826
13827         * iltests.il: Add a test for the above.
13828
13829 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
13830
13831         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
13832         
13833         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
13834         methods as instrinsics.
13835
13836 2006-06-09  Wade Berrier <wberrier@novell.com>
13837
13838         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
13839         (simple-cee-ops.h ssapre-mini-ops.h)
13840
13841 2006-06-09  Neale Ferguson <neale@sinenomine.net>
13842
13843         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
13844         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
13845         instruction).
13846         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
13847         * cpu-s390x.md: Fix max. length values for a couple of instructions.
13848
13849 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
13850
13851         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
13852
13853 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
13854
13855         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
13856         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
13857         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
13858         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
13859         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
13860         of opcodes, so that bug 78549 should not happen again.
13861         * ssapre.c: Updated to use the renamed files.
13862
13863 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
13864
13865         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
13866         in OP_ATOMIC_EXCHANGE_I4.
13867
13868 2006-06-07  Wade Berrier <wberrier@novell.com>
13869
13870         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
13871         in mono_debugger_create_notification_function)
13872
13873 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
13874
13875         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
13876         
13877         * mini.c (type_from_stack_type): Disable some changes which do not
13878         seem to work.
13879
13880         * driver.c: Reenable opts.
13881
13882         * mini.h (MonoStackSlot): New structure to keep track of the verification state
13883         of the evaluation stack.
13884         
13885         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
13886         evaluation stack trace at entry to the bblock.
13887
13888         * mini.c (merge_stacks): New function to perform verification of stack merges.
13889         Turned off by default.
13890
13891         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
13892         STACK_MP.
13893         
13894 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
13895
13896         * local-propagation.c: Fixed bug 78549.
13897
13898 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
13899
13900         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
13901
13902 2006-06-02  Miguel de Icaza  <miguel@novell.com>
13903
13904         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
13905         tramp-arm.c, tramp-ia64.c
13906         (mono_debugger_create_notification_function): Update signature to
13907         new signature and use new protocol for creating the notification
13908         function.  
13909
13910         Should fix the build.
13911
13912 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
13913
13914         * exceptions-ppc.c (mono_jit_walk_stack)
13915         (ves_icall_get_frame_info): Fix the build
13916
13917 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
13918
13919         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
13920
13921 2006-05-31  Raja R Harinath  <rharinath@novell.com>
13922
13923         * il2tests.2.il: New file for generics CIL tests.  Add test for
13924         #78019.
13925         * Makefile.am: Update.
13926
13927         Fix #78019
13928         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
13929         to nullable types.
13930
13931 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
13932
13933         * aliasing.c: Fixed bug 78311.
13934
13935 2006-05-29  Martin Baulig  <martin@ximian.com>
13936
13937         * mini-exceptions.c (mono_find_jit_info): When computing the
13938         native offset, check whether we're actually inside the method's
13939         code; call mono_debug_print_stack_frame() to format the frame.
13940         (ves_icall_System_Exception_get_trace): Call
13941         mono_debug_print_stack_frame() to format the stack frame.
13942         (ves_icall_get_trace): Update to the new debugging API.
13943         (mono_jit_walk_stack_from_ctx): Likewise.
13944         (ves_icall_get_frame_info): Likewise.
13945
13946         * mini.c (get_method_from_ip): Use the new debugging API.
13947         (mono_print_method_from_ip): Likewise.
13948
13949         * exceptions-ppc.c
13950         (mono_jit_walk_stack): Use the new debugging API.
13951         (ves_icall_get_frame_info): Likewise.   
13952
13953 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
13954
13955         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
13956
13957 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
13958
13959         * mini.c: Added "limitator" to inline for debugging.
13960
13961 2006-05-24  Martin Baulig  <martin@ximian.com>
13962
13963         * debug-debugger.c (mono_debugger_init): Create a private,
13964         malloc()-based code manager for the notification function and
13965         intentionally leak it on exit.  This fixes the crash-on-exit race
13966         condition.
13967
13968         * tramp-amd64.c
13969         (mono_debugger_create_notification_function): Added
13970         `MonoCodeManager *' argument.
13971
13972         * tramp-x86.c
13973         (mono_debugger_create_notification_function): Added
13974         `MonoCodeManager *' argument.
13975
13976 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
13977
13978         * aliasing.c: Fixed 64 bit issue.
13979         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
13980         default since all known bugs are fixed (one more time!).
13981
13982 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13983
13984         * mini.c: write barrier support.
13985
13986 2006-05-23  Martin Baulig  <martin@ximian.com>
13987
13988         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
13989         check at the top of the file.
13990
13991 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
13992
13993         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
13994         reverting changes without reason and without changelog entries.
13995
13996 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
13997
13998         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
13999         to a few opcodes. Fixes #78439.
14000
14001         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
14002         consistency with other archs.
14003
14004         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
14005
14006 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14007
14008         * debug-debugger.c: fix the build.
14009
14010 2006-05-17  Martin Baulig  <martin@ximian.com>
14011
14012         * debug-debugger.c
14013         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
14014         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
14015         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
14016         (debugger_attach): Call GC_mono_debugger_add_all_threads().
14017
14018 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
14019
14020         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
14021
14022 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
14023
14024         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
14025         MONO_TYPE_GENERICINST.
14026         
14027         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
14028         MONO_TYPE_GENERICINST.
14029
14030 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
14031
14032         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
14033         #78325.
14034
14035 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
14036
14037         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
14038         mempool.
14039         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
14040
14041 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
14042
14043         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
14044         mono_trace_cleanup ().
14045
14046         * iltests.il: Fix problem with the newly added test.
14047
14048         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
14049         due to register constraints, free up the previous hreg. Fixes #78314.
14050
14051         * iltests.il: Add new test for #78314.  
14052
14053         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
14054         Interlocked.Add. Fixes #78312.
14055
14056         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
14057         
14058 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
14059
14060         * inssel.brg (mini_emit_virtual_call): Fix a warning.
14061
14062 2006-05-05  Martin Baulig  <martin@ximian.com>
14063
14064         * debug-mini.c (mono_debug_open_block): New method.
14065
14066         * mini-amd64.c
14067         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14068         the beginning of each basic block.
14069
14070         * mini-x86.c
14071         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14072         the beginning of each basic block.
14073
14074 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14075
14076         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14077         default until I understand why they break the build on amd64.
14078
14079 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
14080
14081         * mini.c (mini_cleanup): Call mono_cleanup ().
14082
14083         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
14084         errors.
14085
14086 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14087
14088         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
14089         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14090         default since all known bugs are fixed, and I cannot reproduce bug
14091         77944... I'm asking Matt Hargett to test again after this commit.
14092
14093 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
14094
14095         * mini-codegen.c: Fixed typo that thrashed inline.
14096
14097 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
14098
14099         * dominators.c (compute_dominators): Avoid using a worklist since
14100         it is not correct in some cases. Instead, iterate over all bblocks as
14101         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
14102
14103 2006-04-28  Miguel de Icaza  <miguel@novell.com>
14104
14105         * mini.c (mono_jit_compile_method_inner): Use
14106         mono_prepare_exception_from_error that resets the value
14107         internally.
14108
14109 2006-04-27  Miguel de Icaza  <miguel@novell.com>
14110
14111         * mini.c: Move the mini_loader_error_to_exception to metadata. 
14112         
14113 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14114
14115         * aliasing.c: Fixed bug 78210.
14116
14117 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14118
14119         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14120         default until all their problems (or the ones they trigger) are fixed.
14121
14122 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
14123
14124         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
14125         
14126         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
14127         as loaded only after resolving patches since that could invoke the same method.
14128
14129         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
14130
14131         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
14132         functions.
14133
14134         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
14135         AOT loader.
14136
14137         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
14138         stack.
14139
14140         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
14141         made from AOT code through the PLT table.
14142
14143         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
14144         holding the plt offset when a call is made to the aot plt trampoline.
14145         
14146 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14147
14148         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
14149         amd64 AOT support.
14150
14151         * Makefile.am (common_sources): Fix build breakage.
14152
14153         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
14154         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
14155         intra-assembly calls if possible.
14156         
14157         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
14158
14159         * mini-trampolines.c: Handle PLT entries.
14160
14161         * mini.c: Avoid creating a GOT var for calls.
14162
14163         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
14164         from mscorlib code.
14165
14166         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
14167         from mscorlib code.
14168
14169         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
14170         AOT code.       
14171
14172         * mini.h: Bump AOT file format version.
14173         
14174         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
14175         covers more cases.
14176
14177 2006-04-25  Martin Baulig  <martin@ximian.com>
14178
14179         * driver.c: Disable copyprop, consprop and inline when running
14180         inside the debugger.
14181
14182 2006-04-25  Martin Baulig  <martin@ximian.com>
14183
14184         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
14185         with `get_current_thread' and added `detach'.
14186         (MonoDebuggerMetadataInfo): Added `thread_size',
14187         `thread_tid_offset', `thread_stack_ptr_offset' and
14188         `thread_end_stack_offset'.
14189
14190 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14191
14192         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
14193         aot-runtime.c.
14194
14195         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
14196         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
14197
14198         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
14199
14200         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
14201
14202         * aot.c: Add support for ADJUSTED_IID.  
14203
14204 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
14205
14206         * aot.c (emit_method_order): Don't align method_order_end.
14207
14208         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
14209         the interface ID changes.
14210
14211 2006-04-21  Dick Porter  <dick@ximian.com>
14212
14213         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
14214         cleaning up a thread.  Fixes the new part of bug 77470.
14215
14216 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
14217
14218         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
14219         to managed wrapper.
14220                      
14221 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
14222
14223         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
14224         
14225         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
14226         SIGSEGV. Fixes #78072.
14227
14228         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
14229         unregister our SIGABRT handler.
14230
14231 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
14232
14233         * mini.c: Disabled inline where it can alter the call stack in a
14234         way visible from managed code.
14235         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
14236         default.
14237
14238 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
14239
14240         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
14241         on other platforms. Fixes #78089.
14242
14243 2006-04-13  Martin Baulig  <martin@ximian.com>
14244
14245         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
14246         determine whether we're inside the debugger.
14247
14248         * debug-debugger.h
14249         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
14250
14251 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
14252
14253         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
14254         handler clauses. Fixes #78024.
14255
14256         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
14257         in the CALL_MEMBASE opcodes. Fixes #78088.
14258         (mono_arch_get_vcall_slot_addr): Ditto.
14259
14260 2006-04-10  Martin Baulig  <martin@ximian.com>
14261
14262         * debug-debugger.c: The thread handling code has now been moved
14263         into ../metadata/threads.c.
14264
14265 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14266
14267         * driver.c (mono_main): Fix --with-gc=none build.
14268
14269         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
14270         (mono_spillvar_offset_float): Ditto.
14271         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
14272         hreg, not when its !global, since on ia64, there is a third category: stacked
14273         registers.      
14274
14275 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
14276
14277         * mini.c: set MonoInst->klass for load field address and a few other
14278         places.
14279
14280 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14281
14282         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
14283
14284 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
14285
14286         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
14287         the branch opt changes.
14288
14289 2006-04-06  Dick Porter  <dick@ximian.com>
14290
14291         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
14292         
14293         * wapihandles.c (mini_wapi_seminfo): 
14294         * driver.c (mono_main): Add semaphore info option
14295
14296 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
14297
14298         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
14299         branch optimization changes. Fixes #78009.
14300
14301 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14302
14303         * mini.c: ignore accessibility of methods in managed->native wrappers.
14304
14305 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
14306
14307         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
14308         
14309         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
14310
14311 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
14312
14313         * mini.c: Modify the branch optimizations to preserve the invariant that
14314         the entries inside the in_bb and out_bb arrays are unique.
14315         (mono_unlink_bblock): Avoid creation of new arrays.
14316
14317 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
14318
14319         * mini.c (mono_unlink_bblock): Fix regression caused by previous
14320         change (#77992).
14321
14322 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
14323
14324         * mini.c (optimize_branches): Remove the "optimizations" in
14325         the cbranch1/cbranch2 -> branch cases which were causing several
14326         problems in the past. Fixes #77986.
14327
14328 2006-03-31  Chris Toshok  <toshok@ximian.com>
14329
14330         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
14331         default optimizations :(
14332
14333 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
14334
14335         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
14336         branch.
14337
14338 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
14339
14340         * local-propagation.c: Added comments to structs and removed
14341         "Mono" prefixes from local tree mover types.
14342
14343 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
14344
14345         * Makefile.am (arch_sources): Define this for each architecture so 
14346         libmono_la_SOURCES is defined in one place.
14347
14348 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
14349
14350         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
14351         from handles/.
14352
14353 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
14354
14355         * driver.c: print the GC name supplied by configure.
14356
14357 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
14358
14359         * local-propagation.c: Added tree mover, and moved here all the
14360         local propagation code from mini.c
14361         * mini.c: Added support for treeprop, and moved all the local
14362         propagation code to local-propagation.c
14363         * mini.h: Added support for treeprop
14364         * driver.c: Added support for treeprop, enabled consprop, copyprop,
14365         treeprop, inline and deadce by default
14366         * Makefile.am: Added local-propagation.c
14367
14368 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
14369
14370         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
14371
14372 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
14373
14374         * debug-debugger.c: make it compile without the Boehm GC.
14375
14376 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14377
14378         * mini.c: fixed issue with mismatch when an icall is registered
14379         with multiple names but same address.
14380
14381 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14382
14383         * declsec.c, mini-exceptions.c: use write barrier to set reference
14384         fields of managed objects.
14385
14386 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14387
14388         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
14389         (can_access_internals): Fix a warning.
14390
14391         * mini.c (print_method_from_ip): Rename this to 
14392         mono_print_method_from_ip so it gets exported.
14393
14394         * trace.c: Deal with strings inside StringBuilder's containing garbage
14395         and fix memory leaks. Fixes #77848.
14396
14397 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14398
14399         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
14400         fixes #77787.
14401
14402 2006-03-16 Neale Ferguson <neale@sinenomine.net>
14403         
14404         * mini-s390.c: Remove OP_X86_TEST_NULL.
14405
14406 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14407
14408         * mini.c: use the correct GetHashCode() for the moving collector.
14409
14410 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
14411
14412         * liveness.c: Regalloc spill cost tuning.
14413
14414 2006-03-15 Neale Ferguson <neale@sinenomine.net>
14415         
14416         * mini-s390x.h: Correct S390_LONG macro.
14417
14418         * mini-s390x.c: Cleanup unused code.
14419
14420 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14421
14422         * jit-icalls.h: New file.
14423
14424         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
14425         icalls and include that instead of including jit-icalls.c.
14426
14427         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
14428         OP_X86 opcodes.
14429
14430 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
14431
14432         * mini.c: when checking for member accessibility, also check for
14433         friend assemblies and for explicit interface implementations.
14434
14435 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14436
14437         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
14438
14439         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
14440
14441         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14442         common cases are done first.    
14443
14444         * mini-ops.h: Only define platform specific opcodes on the given platform.
14445
14446         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
14447         branch.
14448         
14449 2006-03-14  Martin Baulig  <martin@ximian.com>
14450
14451         Revert Paolo's change from r57348:
14452
14453         * mini.h: don't use gboolean for bitfields.
14454         * mini.c: verifier changes for fields and methods accessibility.
14455
14456 2006-03-13  Neale Ferguson <neale@sinenomine.net>
14457
14458         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
14459
14460         * mini-s390x.c: Fix conv_r_un.
14461
14462         * cpu-s390, cpu-s390x.md: Fix lengths.
14463
14464 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
14465
14466         * mini.c: nested types have access to all the nesting
14467         levels, not just the enclosing types.
14468
14469 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14470
14471         * mini.c: added a few more verification checks.
14472
14473 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
14474
14475         * liveness.c: Merge optimizations from the linear-il branch.
14476
14477 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14478
14479         * mini-ia64.c (emit_call): Add a comment.
14480
14481         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
14482
14483         * tramp-ia64.c: Fix some warnings.
14484
14485 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
14486
14487         * mini.h: don't use gboolean for bitfields.
14488         * mini.c: verifier changes for fields and methods accessibility.
14489
14490 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14491
14492         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
14493         lazy icall wrapper changes.
14494
14495         * dominators.c: Replace all the dominator algorithms with faster
14496         ones from the linear-il branch.
14497
14498         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
14499         the mempool.
14500
14501         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14502         common cases are done first.
14503
14504         * mini-amd64.c: Fix some warnings.
14505
14506         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
14507         from the mempool.
14508
14509         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
14510         added code.
14511
14512         * mini.h: Add a missing prototype.
14513
14514 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14515
14516         * mini.c: Compile icall wrappers lazily.
14517
14518         * mini-codegen.c: Use printf instead of g_print since its much faster.
14519
14520         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
14521         function.
14522
14523         * mini.c (optimize_branches): Cache the negative result from 
14524         remove_block_if_useless ().
14525
14526         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
14527         Also fix some bblock linking issues.
14528
14529         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
14530         assembly files.
14531
14532         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
14533
14534         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
14535         accessed fields first, for better cache behavior.
14536         
14537 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14538
14539         * mini.c: speedup IList<T> array accesses.
14540
14541 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14542
14543         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
14544         inline_costs counter. Fixes #77190.
14545
14546 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
14547
14548         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
14549         trace messages. Fixes #77706.
14550
14551 2006-03-04  Martin Baulig  <martin@ximian.com>
14552
14553         * tramp-amd64.c, tramp-x86.c
14554         (mono_debugger_create_notification_function): Use
14555         mono_global_codeman_reserve() to allocate a buffer at runtime and
14556         return it.
14557
14558         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
14559
14560         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
14561         notification function at runtime and then call `initialize' in the
14562         `MONO_DEBUGGER__debugger_info' vtable.
14563
14564 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14565
14566         * iltests.il: Fix a visibility problem.
14567
14568 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14569
14570         * driver.c, mini.c: add hooks for the counters API.
14571
14572 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14573
14574         * driver.c: show disabled options.
14575
14576 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14577
14578         * linear-scan.c: always use cost-driven selection.
14579
14580 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14581
14582         * jit-icalls.c (helper_compile_generic_method): Revert change from
14583         2006-02-24.
14584
14585 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
14586
14587         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
14588
14589 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14590
14591         * inssel.brg: style fixes, mostly to force the updated monoburg
14592         to run for people using svn.
14593
14594 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
14595
14596         * mini.c: match monoburg changes.
14597
14598 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14599
14600         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
14601         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
14602         declaration in the header file.
14603
14604 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14605
14606         * helpers.c: reduce relocations and mem usage.
14607
14608 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14609
14610         * mini.h, mini-codegen.c: disable logging features if
14611         requested by configure.
14612
14613 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
14614
14615         * mini.c: tiny verifier changes.
14616
14617 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14618
14619         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
14620         cpu-pentium.md: stack alignment changes for osx/x86,
14621         partially from Geoff Norton <gnorton@customerdna.com>.
14622
14623 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14624
14625         * jit-icalls.c (helper_compile_generic_method): Update to changes
14626         in metadata/class.c.
14627
14628 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14629         
14630         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
14631         
14632         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
14633         interface calls with large offsets.
14634
14635 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14636
14637         * jit-icalls.c (helper_compile_generic_method): Document the
14638         special-case we depend on so that we can inflate the method twice
14639         with the same context with no bad side-effects.
14640
14641 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
14642
14643         * mini-x86.c, mini-amd64.c: fix for case when xen support
14644         is disabled.
14645
14646 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
14647
14648         * mini-x86.c, mini-amd64.c: generate code to access tls items
14649         in a faster way for Xen systems.
14650
14651 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14652
14653         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
14654         updates and compilation fixes for the OSX/x86 port, mostly from
14655         Geoff Norton <gnorton@customerdna.com>.
14656
14657 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14658
14659         * inssel.brg: faster interface call implementation
14660         to sync with the interface_offsets MonoVTable changes.
14661
14662 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14663
14664         * mini.c: more verification checks.
14665
14666 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
14667
14668         * mini.c: added a few more verification checks.
14669
14670 2006-02-17      Neale Ferguson <neale@sinenomine.net>
14671
14672         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
14673         facility on the processor and use it if available.
14674
14675 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14676
14677         * driver.c, aot.c, mini.c: throw exception if the IL code is
14678         invalid or unverifiable.
14679
14680 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14681
14682         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
14683         m.StructField.
14684
14685 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
14686
14687         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
14688
14689 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14690
14691         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
14692         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
14693         handling of instantiated generic valuetypes.
14694
14695 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14696
14697         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
14698         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
14699         instead.
14700
14701         * generics.2.cs: Revert the nullable reftypes tests.
14702
14703 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
14704
14705         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
14706         using __builtin_frame_address (1) as it doesn't work in the presence
14707         of optimizations. Hopefully fixes #77273.
14708
14709         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
14710         -> generics.cs change as it doesn't work with some automake versions.
14711
14712 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14713
14714         * mini.c: handle systems that sue a different way to
14715         retrieve the stack address of the current thread.
14716
14717 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14718
14719         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
14720         it specially in the makefile.
14721
14722         * generics.2.cs: Add tests for nullable reference types.
14723
14724 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14725
14726         * mini.c: always handle the case when mono_jit_init()
14727         is called in a thread different from the main thread,
14728         confusing libgc (bug #77309).
14729
14730 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
14731
14732         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
14733
14734 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14735
14736         * mini.c: change optimize_branches () to use a single loop
14737         and introduce a new optimization to simplify some range checks.
14738
14739 2006-02-03  Martin Baulig  <martin@ximian.com>
14740
14741         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
14742         and merged with debugger_thread_manager_add_thread().
14743         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
14744         inform the debugger about the main thread.
14745
14746 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
14747
14748         * basic.cs: Add test for div.un/rem.un constant folding.
14749
14750 2006-02-03  Neale Ferguson <neale@sinenomine.net>
14751
14752         * cpu-s390x.md: correct int_xor_imm length
14753
14754 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
14755
14756         * generics.2.cs: New test for #77442.
14757
14758         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
14759         #77442.
14760
14761 2006-02-02  Martin Baulig  <martin@ximian.com>
14762
14763         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
14764         <mono/metadata/mono-debug-debugger.h>   
14765
14766         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
14767
14768 2006-02-02  Martin Baulig  <martin@ximian.com>
14769
14770         * debug-debugger.h: New header file for debug-debugger.c.
14771
14772         * debug-debugger.c: Big API cleanup; don't run the managed Main()
14773         function is a separate thread anymore; add support for attaching.
14774
14775 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
14776
14777         * tramp-x86.c: Fix a warning.
14778
14779 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
14780
14781         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
14782         on very large methods.
14783
14784         * aot.c (load_patch_info): Fix a warning.
14785
14786 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
14787
14788         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
14789         mini-ops.h: alu membase optimizations.
14790
14791 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
14792
14793         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
14794         to speedup StringBuilder.
14795
14796 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
14797
14798         * dominators.c (mono_compute_natural_loops): Fix detection of
14799         loop body start blocks.
14800
14801         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
14802
14803 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
14804
14805         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
14806         #75145.
14807
14808 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
14809
14810         * aliasing.c: Fixed aliasing issue on 64 bit archs.
14811
14812 2006-01-25  Martin Baulig  <martin@ximian.com>
14813
14814         * debug-debugger.c: Moved the `MonoDebuggerManager' and
14815         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
14816         started to cleanup this file a little bit.
14817
14818 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
14819
14820         * mini.c: optimize a codepath frequently happening in generics code.
14821
14822 2006-01-23  Martin Baulig  <martin@ximian.com>
14823
14824         * Makefile.am: Only compile debug-debugger.c on supported platforms.
14825
14826         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
14827         functions directly.
14828
14829         * driver.c: debug-debugger.c is only available if
14830         `MONO_DEBUGGER_SUPPORTED' is defined.   
14831
14832 2006-01-23  Martin Baulig  <martin@ximian.com>
14833
14834         * debug-debugger.c: Only enable this on platforms where the Mono
14835         Debugger is working (x86 and x86_64).
14836
14837 2006-01-21  Martin Baulig  <martin@ximian.com>
14838
14839         The Mono Debugger is now using the normal `mono' instead of the
14840         `mono-debugger-mini-wrapper' when executing managed code.
14841
14842         * debug-debugger.c: New file; previously known as
14843         debugger/wrapper/wrapper.c.
14844
14845         * debug-mini.c (mono_init_debugger): Removed.
14846
14847         * driver.c (mono_main): Added new `--inside-mdb' command line
14848         argument which is used when running inside the debugger.
14849
14850 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
14851
14852         * liveness.c (mono_analyze_liveness): Remove some unused data
14853         structures.
14854
14855 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
14856
14857         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
14858
14859 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
14860
14861         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
14862         depends on implementation details of monobitset.
14863
14864         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
14865         Fixes #77271.
14866
14867 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
14868
14869         * liveness.c: Update after monobitset changes.
14870
14871 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
14872
14873         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
14874
14875 2006-01-11 Neale Ferguson <neale@sinenomine.net>
14876
14877         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
14878
14879         * mini-s390x.c: Remove warning messages.
14880
14881 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
14882
14883         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
14884
14885 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
14886
14887         * generics.2.cs: Add ldelem/stelem_any test.
14888
14889 2006-01-10 Neale Ferguson <neale@sinenomine.net>
14890
14891         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
14892
14893 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
14894
14895         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
14896         
14897 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
14898
14899         * generics.2.cs: Reenable vtype tests.
14900
14901         * inssel-x86.brg: Remove an icorrect valuetype rule.
14902
14903 2006-01-06 Neale Ferguson <neale@sinenomine.net>
14904
14905         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
14906         initial support for OP_ABS.
14907
14908 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14909
14910         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
14911
14912 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14913
14914         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
14915         conversion and implement LADD/LSUB.
14916
14917         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
14918         architectures.
14919
14920 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14921
14922         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
14923
14924         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
14925         architectures.
14926
14927 2006-01-05 Neale Ferguson <neale@sinenomine.net>
14928
14929         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
14930         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
14931         (stack walk problem).
14932
14933 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
14934
14935         * aot.c (mono_aot_load_method): Fix a warning.
14936
14937 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14938
14939         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
14940
14941 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14942
14943         * iltests.il: Add test for #77148.
14944
14945         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
14946         #77148.
14947
14948 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14949
14950         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
14951
14952 2006-01-03  Neale Ferguson <neale@sinenomine.net>
14953
14954         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
14955         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
14956
14957         * basic-long.cs: Add lconv-to-r4/r8 tests.
14958
14959 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
14960
14961         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
14962
14963         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
14964         here as on other archs.
14965
14966 2005-12-29 Neale Ferguson <neale@sinenomine.net>
14967
14968         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
14969
14970 2005-12-29 Neale Ferguson <neale@sinenomine.net>
14971
14972         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
14973         
14974         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
14975
14976         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
14977         instrument_prolog; Add memory_barrier instruction.
14978
14979 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
14980
14981         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
14982
14983 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
14984
14985         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
14986
14987         * aliasing.c inssel.brg: Fix warnings.
14988
14989         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
14990         could skip initialization of some parts of memory.
14991
14992         * mini.c mini-ia64.c: Fix warnings.
14993
14994         * inssel-sparc.brg: Add an implementation of lneg which actually works.
14995
14996 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
14997
14998         * aliasing.c (mono_build_aliasing_information): Add a workaround for
14999         a crash seen on sparc.
15000
15001         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
15002         
15003         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
15004
15005 2005-12-21 Neale Ferguson <neale@sinenomine.net>
15006
15007         * mini-ops.h: Add s390_backchain instruction
15008
15009         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
15010
15011         * cpu-s390.md: Add s390_backchain instruction
15012
15013         * mini-s390.c: Significant ABI changes
15014
15015         * mini-s390.h: Cater for zero length structures
15016
15017 2005-12-20 Neale Ferguson <neale@sinenomine.net>
15018
15019         * mini-s390.c: ABI fixes
15020
15021         * inssel-s390.brg: Remove debug statements
15022
15023         * cpu-s390.md: Fix length of ATOMIC_xx operations
15024
15025 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
15026
15027         * basic-float.cs: Add float<->long conversion tests.
15028
15029 2005-12-16 Neale Ferguson <neale@sinenomine.net>
15030
15031         * mini-s390.c: Fix LOCALLOC processing.
15032
15033         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
15034
15035 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
15036
15037         * iltests.il: Add tests for some opcodes not covered by the other
15038         tests.
15039
15040 2005-12-15 Neale Ferguson <neale@sinenomine.net>
15041
15042         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
15043         register loading for Tail processing; Correct trace output.
15044
15045         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
15046
15047         * cpu-s390.md: Correct size of jmp instruction. 
15048
15049 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15050
15051         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
15052
15053 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15054
15055         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
15056           Bring s390 up to current level.
15057
15058 2005-12-12  Zltan Varga  <vargaz@gmail.com>
15059
15060         * generics.2.cs: Disable the newly added tests as they do not work yet.
15061         
15062         * generics.2.cs: Add valuetype tests.
15063
15064 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
15065
15066         * basic-long.cs: Add i4->u8 test.
15067
15068         * objects.cs: Add tests for JIT intrinsic.
15069
15070         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
15071         optimizations lost by a mistake.
15072
15073 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
15074
15075         * basic-long.cs: Remove a test moved to objects.cs.
15076
15077         * arrays.cs: Add more array tests.
15078
15079 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
15080
15081         * arrays.cs: Add new tests for multi-dimensional arrays.
15082
15083 2005-12-06  Raja R Harinath  <rharinath@novell.com>
15084
15085         * Makefile.am (test_sources2): Add generics.2.cs.
15086         (EXTRA_DIST): Add test_sources2.
15087
15088 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
15089
15090         Support for boxing and unboxing nullable types as well as the
15091         isinst operation on nullables, per the CLI ammendment.
15092
15093         * inssel.brg (CEE_ISINST): Special case for nullable
15094
15095         * mini.c (handle_unbox_nullable): new method
15096         (handle_box): Special case for nullable types
15097         (mono_method_to_ir): Call handle_unbox_nullable in correct
15098         places.
15099
15100         * generics.2.cs: New test suite
15101
15102         * Makefile.am: Support for regression tests with generics.
15103
15104 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
15105
15106         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
15107         allocated to registers. Fixes #76800.
15108
15109 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
15110
15111         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
15112
15113 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
15114
15115         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
15116         of platforms.
15117
15118 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
15119
15120         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
15121         objects.cs.
15122
15123         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
15124         
15125         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
15126 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
15127
15128         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
15129         single precision before storing to a single precision location.
15130
15131 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15132
15133         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
15134
15135 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
15136
15137         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
15138         correct files.
15139
15140         * basic.cs: Remove test_0_byte_compares test which was moved to
15141         objects.cs a long time ago.
15142
15143 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
15144
15145         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15146
15147 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
15148
15149         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
15150         handlers are called.
15151
15152         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
15153         throwing code.
15154
15155          * mini-ia64.c: Add support for the throw->branch exception 
15156         optimization.   
15157
15158         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
15159
15160 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15161
15162         * mini.c: Enabled "fastpath" deadce :-)
15163         
15164 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15165
15166         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
15167         alias analysis pass to support it.
15168         * mini.h: Likewise.
15169         * ssa.c: Likewise.
15170         * liveness.c: Likewise (liveness computation can use aliasing
15171         information to be more accurate).
15172         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
15173         moreover made so that "--compile-all" uses the given optimization
15174         flags and not the default ones.
15175         * aliasing.c: Alias analysis (new file).
15176         * aliasing.h: Likewise.
15177         * Makefile.am: added "aliasing.c" and "aliasing.h".
15178         
15179 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15180
15181         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
15182         OP_L opcodes.
15183
15184 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
15185
15186         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
15187         fp >= end_of_stack exit condition, as it is not needed, and it might
15188         become true for fp eliminated frames.
15189
15190 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15191
15192         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
15193         coded offsets.
15194
15195 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
15196
15197         * mini-arm.c: fixed alignment of doubles/longs to match
15198         the C ABI (bug #76635).
15199
15200 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
15201
15202         * aot.c: fix compilation with --enable-minimal=aot.
15203
15204 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
15205
15206         * mini-arm.c: fixed compatibility with the new
15207         floating point emulator package for compares.
15208
15209 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
15210
15211         * mini.c : reverted sig->pinvoke changes (r51396-51397).
15212
15213 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
15214
15215         * mini-exceptions.c (print_stack_frame): Output to stderr.
15216         (mono_handle_native_sigsegv): Ditto.
15217
15218 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15219
15220         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
15221         OP_LCONV_TO_OVF_I implementation.
15222
15223         * mini-amd64.c: Add support for the throw->branch exception 
15224         optimization.
15225
15226         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
15227         when the catch clause catches a more general exception, i.e. Object.
15228
15229 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
15230
15231         * cpu-ia64.md: Remove unused opcodes.
15232
15233         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
15234         specific defines for architectures defining USE_SIGACTION.
15235
15236         * mini-ia64.c: Fix some warnings.
15237
15238         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
15239         version seemed to skip a frame.
15240
15241 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15242
15243         * mini.c: Clean up the usage of sig->pinvoke flag. Now
15244         only calls which are made to native code use this flag.
15245
15246 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15247
15248         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
15249         varargs methods as well.
15250         
15251         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
15252         which have save_lmf set. Reorganize methods prologs a bit.
15253
15254         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
15255         debugger to the proper place.
15256
15257 2005-10-29  Martin Baulig  <martin@ximian.com>
15258
15259         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
15260         when running inside the debugger until the debugger has support
15261         for it.
15262
15263 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15264
15265         * mini.h: Fix a warning.
15266
15267 2005-10-24  Miguel de Icaza  <miguel@novell.com>
15268
15269         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
15270         we expose publicly, this returns the string.
15271
15272 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
15273
15274         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
15275         with fp elimination.
15276
15277 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15278
15279         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
15280         native stacktrace using the glibc 'backtrace' function if available.
15281
15282 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
15283
15284         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
15285
15286         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
15287         handle SIGSEGVs received while in native code.
15288
15289         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
15290         code, call mono_handle_native_sigsegv which will abort the runtime
15291         after printing some diagnostics, instead of converting it into a
15292         confusing NullReferenceException.
15293
15294 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15295
15296         * cpu-pentium.md: Remove unused opcodes.
15297
15298 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
15299
15300         * mini-amd64.h (MonoLMF): Add rsp field.
15301
15302         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
15303         the lmf too.
15304
15305 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
15306
15307         * mini-codegen.c (get_register_spilling): Fix some warnings.
15308
15309 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
15310
15311         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
15312         elimination during exception handling. Enable fp elimination by
15313         default.
15314
15315         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
15316         elimination.
15317
15318 2005-10-16  Martin Baulig  <martin@ximian.com>
15319
15320         * mini-exceptions.c
15321         (mono_debugger_run_finally): New public method for the debugger.
15322
15323 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15324
15325         * debug-mini.c (mono_debug_init_method): Fix warning.
15326
15327         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
15328         the 'exname' parameter const to fix some warnings.
15329
15330 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
15331
15332         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
15333         introduced by the previous patch.
15334
15335 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
15336
15337         * basic-float.cs: Add test for precision of float arithmetic.
15338
15339         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
15340         when loading/storing single values from/to memory.
15341
15342         * mini.c (mono_jit_compile_method_with_opt): Create the function
15343         pointers in the correct domain.
15344
15345 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15346
15347         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
15348         introduced by previous patch.
15349         
15350         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
15351         when out_filter_idx is NULL.
15352
15353         * mini-exceptions.c: Don't run filter clauses twice during exception
15354         handling. Fixes #75755.
15355
15356 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15357
15358         * aot.c: Add support for ldflda wrappers.
15359
15360         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
15361         #75902.
15362
15363 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
15364
15365         * mini.c, mini.h: do not consider exception handlers blocks when
15366         setting up interface variables.
15367
15368 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
15369
15370         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
15371
15372 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
15373
15374         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
15375         causes a regression.
15376
15377         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
15378
15379 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
15380
15381         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
15382         of the OP_P definitions.
15383
15384         * TODO: Add a proposal for dealing with the CEE/OP mess.
15385
15386         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
15387         optimizations from the x86 port.
15388
15389         * cpu-amd64.md: Ditto.
15390
15391         * basic.cs basic-long.cs: Add tests.
15392
15393 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
15394
15395         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
15396         Patrik Torstensson's implementation of my exception-handling
15397         optimization idea, when the exception object is not used
15398         (bug #62150).
15399
15400 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
15401
15402         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
15403         of the mul_imm optimizations from the old jit.
15404
15405 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
15406
15407         * mini.c, liveness.c: patch by Patrik Torstensson and
15408         Zoltan Varga to improve performance in methods with
15409         exception clauses.
15410
15411 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15412
15413         * driver.c: Remove 'Globalization' entry from --version.
15414
15415 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
15416
15417         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
15418         there is a profiler interested in JIT events.
15419
15420         * aot.c: Load profile files produced by the AOT profiling module, and
15421         reorder methods based on the profiling info. Add a 'method_order' table
15422         to the AOT file to make mono_aot_find_jit_info work with the reordered
15423         methods.
15424
15425         * mini.h: Bump AOT file version info.
15426
15427 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
15428
15429         * mini-arm.h: work around what looks like a gcc bug when optimizations
15430         are enabled.
15431
15432 2005-09-28  Raja R Harinath  <rharinath@novell.com>
15433
15434         * Makefile.am (AM_CFLAGS): Don't use += to append inside
15435         conditionals.  Use ...
15436         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
15437
15438 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
15439
15440         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
15441         to determine the amount of memory to copy when passing valuetypes.
15442
15443         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
15444         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
15445
15446 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
15447
15448         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
15449         information about aot.
15450
15451 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15452
15453         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15454         macros. This will allow a deadlock debugger to easily be plugged
15455         in.
15456
15457 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
15458
15459         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
15460
15461 2005-09-27  Raja R Harinath  <rharinath@novell.com>
15462
15463         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
15464         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
15465         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
15466         ($(arch_built)) [CROSS_COMPILING]: Error out.
15467
15468 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15469
15470         * aot.c: Add support for the no_special_static flag for classes.
15471
15472 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15473
15474         * Reapply reverted patches.
15475
15476         * *: Revert r50174 as well.
15477
15478         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
15479
15480 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15481
15482         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
15483
15484 2005-09-23  Miguel de Icaza  <miguel@novell.com>
15485
15486         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
15487         part of the SIG_HANDLER_SIGNATURE.  
15488
15489 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15490
15491         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
15492         statistics.
15493
15494         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
15495         introduced by previous patch.
15496
15497 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
15498
15499         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
15500         saved registers too.
15501
15502         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
15503         upon the information returned by get_call_info ().
15504         
15505         * mini-x86.c (add_float): Fix stack size calculation.
15506         (mono_arch_call_opcode): Rewrite this so it works based up the
15507         information returned by get_call_info ().
15508         (mono_arch_get_this_vret_args): Ditto.
15509
15510 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
15511
15512         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
15513         in cinfo to determine the registers which need to be used.
15514
15515 2005-09-20  Miguel de Icaza  <miguel@novell.com>
15516
15517         * driver.c (mono_main): Add --server and --desktop flags. 
15518
15519 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
15520
15521         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
15522         registers as global registers.
15523
15524         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
15525         longer needed with the new register allocator.
15526
15527         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
15528
15529         * cpu-ia64.md: Remove unused opcodes.
15530         
15531         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
15532         
15533 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
15534
15535         * cpu-amd64.md: Remove unused opcodes.
15536
15537         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
15538         needed with the new register allocator.
15539
15540         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
15541         reg-reg moves.
15542
15543 2005-09-16  Raja R Harinath  <rharinath@novell.com>
15544
15545         * Makefile.am (check-local): Don't invoke semdel-wrapper.
15546
15547 2005-09-16  Martin Baulig  <martin@ximian.com>
15548
15549         * exceptions-amd64.c
15550         (throw_exception): Don't call mono_debugger_throw_exception() if
15551         we're a rethrow - see the FIXME in the code.
15552
15553 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
15554
15555         * mini.c (mono_init_exceptions): This only works on some architectures.
15556         
15557 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15558
15559         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
15560         on ia64.
15561
15562         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
15563
15564         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
15565         now in mini-exceptions.c.
15566
15567 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
15568
15569         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
15570         now in mini-exceptions.c.
15571
15572 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15573
15574         * exceptions-x86.c: Applied patch from Patrik Torstensson 
15575         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
15576
15577         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
15578         code into mini-exceptions.c. Add some assertions to it.
15579
15580 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15581
15582         * aot.c (emit_section_change): Applied patch from "The Software Team" 
15583         (<software@solmersa.com>). Fix as errors on windows.
15584
15585 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15586
15587         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
15588         method info into the LMF.
15589
15590 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15591         
15592         * mini-ia64.c: Add proper unwind info for method epilogs.
15593
15594         * exceptions-ia64.c: Add some code to help debugging.
15595         
15596         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
15597
15598         * mini-exceptions.c: Fix warning.
15599
15600 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15601
15602         * mini.c: Really fix build.
15603
15604         * mini-x86.c mini-amd64.c: Fix build.
15605
15606 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15607
15608         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
15609
15610         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
15611         some Interlocked methods as intrinsics.
15612
15613         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
15614         for Thread methods as well.
15615
15616         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
15617
15618         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
15619
15620         * mini-ia64.c mini-x86.c mini-amd64.c 
15621         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
15622         OP_MEMORY_BARRIER.
15623         
15624         * mini.c (mono_init_exceptions): Fix build breakage.
15625
15626 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
15627
15628         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
15629         of instructions. Use the new ia64_unw_op macros for emitting unwind
15630         info.
15631
15632         * mini.c (mono_init_exceptions): Initialize exception handling
15633         related trampolines at startup.
15634
15635 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
15636
15637         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
15638
15639 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15640
15641         * mini.c: Handle type loading errors gracefully during compilation and
15642         throw the appropriate exception.
15643
15644 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
15645
15646         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
15647         for the mono binary.
15648
15649 2005-09-09  Martin Baulig  <martin@ximian.com>
15650
15651         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
15652         the release.
15653
15654 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15655
15656         * mini-arm.h: use emulation for conv.r.un for the release.
15657
15658 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15659
15660         * mini-arm.c, objects.cs: more fixes and tests for them.
15661
15662 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15663
15664         * mini-arm.c: align structures to at least 4 bytes to be able
15665         to keep our current optimized memcpy.
15666
15667 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
15668
15669         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
15670
15671 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15672
15673         * mini.c: ignore SIGPIPE.
15674
15675 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
15676
15677         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
15678
15679         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
15680
15681 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
15682
15683         * mini.h: Add prototype for mono_allocate_stack_slots_full.
15684
15685 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15686
15687         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
15688         exception handling support.
15689         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
15690         patch by Brian Koropoff <briank@marakicorp.com>).
15691
15692 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
15693
15694         * mini.c: revert another 'optimization' which breaks when
15695         items on the eval stack need to be saved at a basic block end
15696         (bug #75940).
15697
15698 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15699
15700         * jit-icalls.c: for arrays, ensure we always provide
15701         lower bounds.
15702
15703 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
15704
15705         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
15706         
15707         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
15708
15709 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15710
15711         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
15712         arguments in their original register.
15713
15714 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
15715
15716         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
15717         memset/memcpy.
15718
15719         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
15720         when ssapre is enabled.
15721
15722         * inssel-long.brg: Fix bug in previous patch.
15723
15724         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
15725         multiplication by a constant.
15726
15727 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
15728
15729         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
15730         icc.
15731
15732         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
15733         saving registers.
15734
15735 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
15736
15737         * inssel-arm.brg: apply changes tested by Brian Koropoff
15738         <briank@marakicorp.com>.
15739
15740 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15741
15742         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
15743         
15744 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
15745
15746         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
15747         to the same register if dreg is just a base register.
15748         (print_ins): Improve printing of membase opcodes.
15749
15750         * inssel-x86.brg: Add optimized ldind(reg) rules.
15751
15752         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
15753
15754 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
15755
15756         * mini.c: when running under valgrind, set the stack bottom for
15757         the GC at the actual approximate stack for the app (fixes running
15758         mono with valgrind).
15759
15760 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
15761
15762         * mini.c: do no break at the first valuetype to init found
15763         (fixes bug #75791).
15764
15765 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
15766
15767         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
15768
15769 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
15770
15771         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
15772
15773 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
15774
15775         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
15776
15777 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15778
15779         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
15780
15781         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
15782         code.
15783
15784         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
15785         code.
15786
15787         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
15788         methods.
15789
15790 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
15791
15792         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
15793
15794 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15795
15796         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
15797         in the tail recursion optimization.
15798
15799         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
15800         debug info into the assembly file.
15801
15802         * iltests.il: Add test for filter regions.
15803
15804         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
15805         initial stack of filter regions. Fixes #75755.
15806
15807 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
15808
15809         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
15810         stack requirements.
15811
15812 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
15813
15814         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
15815         the check for an already compiled method on non-ia64 platforms.
15816         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
15817         proper domain.
15818
15819         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
15820
15821         * inssel-x86.brg: Add some optimized call rules.
15822
15823 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
15824
15825         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
15826         method here.
15827
15828         * mini.h mini-trampolines.c: Pass the trampoline argument to 
15829         mono_arch_patch_delegate_trampoline.
15830
15831         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
15832
15833         * mini-trampolines.c: Fix build.
15834
15835         * mini-amd64.h: Add delegate trampolines.
15836
15837         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
15838
15839         * inssel-amd64.brg: Add optimized call rules.
15840         
15841         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
15842
15843         * inssel-ia64.brg: Add optimized ldind(reg) rules.
15844
15845 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
15846
15847         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
15848         change.
15849
15850         * mini-ia64.c: Remove LMF fixmes.
15851
15852         * mini-ia64.h: Remove most fields from LMF.
15853
15854         * inssel-ia64.brg (stmt): Fix unaligned access errors.
15855
15856         * mini-trampolines.c: Add support for IA64 function descriptors.
15857
15858         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
15859         for IA64 function descriptors.
15860
15861 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
15862
15863         * tramp-arm.c: patch the vtable for virtual calls. Added
15864         support code to register/unregister the LMF.
15865         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
15866         more LMF work.
15867
15868 2005-08-19  Dick Porter  <dick@ximian.com>
15869
15870         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
15871         bit value if needed.
15872
15873 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
15874
15875         * mini.c (mini_get_method): Move handling of wrapper data here.
15876
15877         * mini.c (mono_method_to_ir): Add support for dynamic methods.
15878
15879         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
15880         virtual.
15881
15882         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
15883         bblock->code does not remain empty.
15884
15885 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
15886
15887         * arrays.cs: Add regression test for #75832.
15888
15889         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
15890         rules. Fixes #75832.
15891
15892         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
15893         instruction scheduling.
15894
15895 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
15896
15897         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
15898
15899 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
15900
15901         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
15902
15903         * mini-codegen.c: Fix VC build.
15904
15905         * cpu-pentium.md: Increase length of atomic_exhange_i4.
15906
15907 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15908
15909         * mini.h: fix signature for mono_register_opcode_emulation.
15910
15911 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
15912
15913         * mini.c: Get rid of most of the helper_sig_... constants using
15914         mono_create_icall_signature ().
15915
15916 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
15917
15918         * jit-icalls.c (helper_ldstr): New helper function.
15919
15920         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
15921
15922         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
15923         throw, load the string using a helper call instead of creating a string object.
15924
15925         * aot.c: Update after LDSTR changes.
15926
15927         * mini.h: Bump AOT file version.
15928         
15929         * aot.c: Save class size info into the AOT file. Print more statistics during
15930         compilation.
15931
15932         * mini.h: Bump AOT file version.
15933
15934         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
15935         ordering of disasm cases. Fixes #74957.
15936
15937 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
15938
15939         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
15940         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
15941         the generic code needed for the ARM port.
15942
15943 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
15944
15945         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
15946         inssel-arm.brg: more ARM features and fixes.
15947
15948 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
15949
15950         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
15951         ARM port work in progress.
15952
15953 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
15954
15955         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
15956
15957         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
15958
15959         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
15960
15961         * inssel.brg (mini_emit_memset): Add support for unaligned access.
15962
15963         * *-ia64.*: Ongoing IA64 work.
15964         
15965         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
15966
15967 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
15968
15969         * TODO: Remove out-of-data todo stuff.
15970
15971         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
15972         dead code.
15973
15974         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
15975
15976         * mini.h: Bump corlib version.
15977
15978 2005-07-27  Martin Baulig  <martin@ximian.com>
15979
15980         * mini-codegen.c
15981         (create_copy_ins): Added `const unsigned char *ip' argument; set
15982         `copy->cil_code' from it.
15983
15984 2005-07-27  Martin Baulig  <martin@ximian.com>
15985
15986         * mini-exceptions.c (mono_handle_exception): Don't call
15987         mono_debugger_handle_exception() for filters.
15988
15989 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
15990
15991         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
15992         as well.
15993
15994 2005-07-26  Martin Baulig  <martin@ximian.com>
15995
15996         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
15997
15998         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
15999         helper_compile_generic_method() if the method is actually virtual
16000         and non-final.
16001
16002 2005-07-26  Martin Baulig  <martin@ximian.com>
16003
16004         * mini.c
16005         (trampoline_code): Renamed to `mono_trampoline_code' and made it
16006         public; this is now accessed directly by the debugger.
16007         (mono_generic_trampoline_code): Removed.
16008
16009         * debug-mini.c
16010         (mono_debug_init_method): Also add interncalls and wrappers.
16011
16012 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
16013
16014         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
16015
16016 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16017
16018         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
16019
16020 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16021
16022         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
16023
16024 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16025
16026         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
16027         getting TLS offsets on AMD64 too.
16028
16029 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
16030
16031         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
16032
16033 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
16034
16035         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
16036         inssel-arm.brg, mini-arm.h: ARM port work in progress.
16037
16038 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16039
16040         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
16041
16042         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
16043         to mini.c.
16044
16045         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
16046         mono_sparc_is_virtual_call ().
16047         
16048         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
16049
16050         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
16051         trampoline parameters.
16052
16053         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
16054         
16055         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
16056         to mono_arch_get_vcall_slot_addr.
16057
16058         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
16059         trampoline code.
16060
16061         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
16062
16063 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16064
16065         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
16066
16067 2005-07-19  Martin Baulig  <martin@ximian.com>
16068
16069         * exceptions-amd64.c (throw_exception): Call
16070         mono_debugger_throw_exception() here like we're doing it on i386.
16071
16072 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16073
16074         * mini-ia64.c: Add optimized TLS access support.
16075
16076 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
16077
16078         * mini-exceptions.c: Ongoing IA64 work.
16079
16080         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
16081
16082         * mini.c: Use the default optimization set when embedding. Fixes
16083         #75194.
16084
16085 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
16086
16087         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
16088         of trampolines to a separate file.
16089
16090         * mini-trampolines.c: New file.
16091
16092         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
16093         separate file.
16094         
16095         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
16096         amd64/ia64 code.
16097
16098         * mini-codegen.c: Fix cygwin build.
16099
16100 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
16101
16102         * mini.c: Add some minor changes needed by the IA64 port.
16103
16104         * *-ia64.*: Ongoing IA64 work.
16105
16106 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
16107
16108         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
16109         trampolines into arch-independent and arch-dependent parts.
16110
16111         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
16112
16113 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
16114
16115         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
16116
16117         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
16118         the xp-regalloc-branch for amd64.
16119
16120         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
16121         xp-regalloc-branch for x86.
16122
16123 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16124
16125         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
16126
16127 2005-07-06  Martin Baulig  <martin@ximian.com>
16128
16129         * mini.c
16130         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
16131         (mono_jit_runtime_invoke): Likewise.
16132
16133 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16134
16135         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
16136         on x86 too.
16137         
16138         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
16139         without loading their metadata. Reorganize the file format so exception handling+
16140         debug info is kept separate from normal method info. Create MonoJitInfo 
16141         structures for methods lazily.
16142
16143         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
16144         loading metadata.
16145         (x86_class_init_trampoline): Patch AOT class init trampolines too.
16146
16147         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
16148
16149         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
16150         in AOT code.
16151
16152         * mini.h: Bump AOT file version.
16153
16154 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
16155
16156         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16157
16158 2005-07-01  Raja R Harinath  <rharinath@novell.com>
16159
16160         * Makefile.am (check-local): Call semdel-wrapper.
16161
16162 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
16163
16164         * mini-x86.c: Revert the last change as it seems to break the build..
16165
16166 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16167
16168         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16169         
16170         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
16171
16172 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
16173
16174         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
16175         outside of the macro, so strange stuff doesn't happen with gcc4
16176         (NEW_AOTCONST_TOKEN): Likewise.
16177
16178 2005-06-28  Martin Baulig  <martin@ximian.com>
16179
16180         * mini.c (mini_class_is_system_array): New static method; use this
16181         instead of `klass->parent == mono_defaults.array_class' everywhere
16182         since this also works for the new generic array class.
16183
16184 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16185
16186         * inssel.brg: Remove warnings.
16187
16188 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
16189
16190         * mini-ia64.c: Ongoing IA64 work.
16191
16192         * basic-float.cs: Add float->i1 conversion test.
16193
16194         * iltests.il: Add conv.u4 test.
16195
16196 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
16197
16198         * inssel-long.brg: Fix bug caused by last change.
16199
16200 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
16201
16202         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
16203         BSDs.  Allows the x86 JIT to work on OSX86
16204
16205 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
16206
16207         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
16208         u4->i8 conversion.
16209
16210         * mini-ia64.c: Ongoing IA64 work.
16211
16212 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16213
16214         * mini-ia64.c: Ongoing IA64 work.
16215
16216         * driver.c: Clean up jit_code_hash as well when using --regression.
16217
16218         * inssel-long.brg: Fix long->i4/u4 conversion rules.
16219
16220         * basic-long.cs: Add tests for long->u4 conversion.
16221
16222 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
16223
16224         * mini.c: Take mono_get_domainvar out of macros. This makes sure
16225         that we do not depend on undefined C behavior: the order stuff
16226         gets evaluated within an expression. Fixes mono when compiled on
16227         GCC 4.
16228
16229 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
16230
16231         * *-ia64.*: Ongoing IA64 work.
16232
16233         * aot.c: Lower memory usage while loading AOT methods.
16234
16235         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
16236
16237         * mini.h: Bump AOT file format version.
16238
16239 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16240
16241         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
16242
16243 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
16244
16245         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
16246         not on callee assembly). Fixed some comments.
16247
16248 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
16249
16250         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
16251         it gets proper disassembly.
16252         (emit_method_info): Remove some dead code.
16253
16254         * mini.c (mini_method_compile): Allways allocate the GOT var in
16255         mono_method_to_ir for emulating opcodes.
16256
16257 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
16258
16259         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
16260         before freeing the code memory. Fixes #74990.
16261
16262         * objects.cs: Add regression test for #74992.
16263
16264         * liveness.c: Extend live ranges of arguments to the beginning of the
16265         method. Fixes #74992.
16266
16267         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
16268         so it points into the faulting instruction.
16269
16270 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
16271
16272         * jit-icalls.c (mono_imul_ovf): Add exception handling.
16273
16274         * *-ia64.*: Ongoing IA64 work.
16275
16276         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
16277
16278 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
16279
16280         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
16281
16282         * *-ia64.*: Ongoing IA64 work.
16283
16284 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
16285
16286         * basic-long.cs: Add tests for add/sub.ovf.
16287
16288         * basic.cs: Add tests for sub.ovf.
16289
16290         * *-ia64.*: Ongoing IA64 work.
16291
16292 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
16293
16294         * *-ia64.*: Ongoing IA64 work.
16295
16296         * basic.cs: Add conv.ovf.i4.un test.
16297
16298 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
16299
16300         * mini.c: (remove_block_if_useless) Fixed bug 75061.
16301         
16302 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16303
16304         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
16305
16306 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16307
16308         * *-ia64.*: Ongoing IA64 work.
16309
16310 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16311
16312         * trace.[ch]:
16313         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
16314
16315 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
16316
16317         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
16318
16319 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
16320
16321         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
16322
16323         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
16324         of a call is callable by a near call.
16325
16326 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
16327
16328         * mini-ia64.c: Ongoing IA64 work.
16329
16330 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
16331
16332         * genmdesc.c: Make the generated array non-static.
16333
16334         * inssel-long.brg: Fix LSHR_IMM rule.
16335
16336         * *-ia64.*: Ongoing IA64 work.
16337
16338         * *-ia64.*: Ongoing IA64 work.
16339
16340 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16341
16342         * *-ia64.*: Ongoing IA64 work.
16343
16344         * *-ia64.*: Ongoing IA64 work.
16345         
16346         * mini-ia64.c: Ongoing IA64 work.
16347
16348         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
16349
16350 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16351
16352         * objects.cs basic-calls.cs: Move some tests to objects.cs.
16353         
16354         * objects.cs basic-long.cs: Move some tests to objects.cs.
16355
16356 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
16357
16358         * *-ia64.*: Ongoing IA64 work.
16359
16360         * iltests.il: Add a new test.
16361
16362         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
16363         newobj. Fixes #75042.
16364
16365 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
16366
16367         * *-ia64.*: Ongoing IA64 work.
16368         
16369         * *-ia64.*: Ongoing IA64 work.
16370         
16371         * *-ia64.*: Ongoing IA64 work.
16372
16373         * basic.cs objects.cs: Move tests accessing static variables as well.
16374
16375         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
16376
16377 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
16378
16379         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
16380
16381         * driver.c: Always print failed tests.
16382
16383         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
16384         frame pointer.
16385
16386         * *ia64*: Ongoing IA64 work.
16387
16388 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16389
16390         * basic.cs: Add tests for add.ovf. Fix warnings.
16391
16392 2005-05-18  Miguel de Icaza  <miguel@novell.com>
16393
16394         * driver.c (mono_main): Avoid crash if no argument is passed to
16395         --break;  Do not use g_error, but f_printf.   And fix all other
16396         ocurrences of the same crash.
16397
16398 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
16399
16400         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
16401         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
16402         Fixes #74742.
16403
16404 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
16405
16406         * *-ia64.*: Add beginnings of IA64 backend.
16407
16408         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
16409
16410 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
16411
16412         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
16413         Fixes #74925.
16414
16415         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
16416
16417         * mini-amd64.c: Fix a warning.
16418
16419 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
16420
16421         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
16422         in float_neg. Fixes #74897.
16423
16424         * mini-amd64.c (emit_call): Fix another near call bug.
16425
16426 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
16427
16428         * declsec.c: Keep the appdomain information in the structure. Added a 
16429         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
16430         value gets overwritten).
16431         * declsec.h: Set the default MonoArray for the the stack to 6. Added
16432         an MonoAppDomain member to MonoSecurityFrame.
16433         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
16434         used in the stack walk. Now use a MonoArray which grow (double) when
16435         it gets full.
16436
16437 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16438
16439         * mini.c: Re-enabled runtime cleanup, since running threads should
16440         now properly stop when exiting.
16441
16442 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16443
16444         * mini-codegen.c: New file contaning the arch-independent local
16445         register allocator. Not used by any architectures yet.
16446
16447         * mini.h linear-scan.c: Merge some changes from the 
16448         mini-xp-local-regalloc branch.
16449
16450 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16451
16452         * mini-amd64.c (emit_call): Fix calls to native functions when the
16453         runtime is compiled as a shared library. Fixes #74756.
16454
16455         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
16456         on a literal field. Fixes #74751.
16457
16458 2005-04-25  Raja R Harinath  <rharinath@novell.com>
16459
16460         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
16461
16462 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16463
16464         * objects.cs: Add missing null casting test.
16465
16466 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16467
16468         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
16469         in wrapper methods. Also rename 'address' variable to 'offset'.
16470
16471 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16472
16473         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
16474         warnings.
16475         
16476         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
16477
16478         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
16479         work on windows.
16480
16481 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16482
16483         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
16484
16485 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16486
16487         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
16488         just the last bytes.
16489
16490 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16491
16492         * aot.c (mono_compile_assembly): Fix warning.
16493
16494         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
16495         by the _MSC_VER stuff.
16496
16497 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16498
16499         * inssel-long.brg: Fix #74588.
16500
16501         * cpu-amd64.md: Fix #74591.
16502
16503         * iltests.il: Add new regression tests.
16504
16505 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16506
16507         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
16508         valuetype.
16509
16510 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
16511
16512         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
16513
16514         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
16515         from Bill Middleton <flashdict@gmail.com>.
16516
16517 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
16518
16519         * arrays.cs: Add new regression test. Fix warnings.
16520
16521 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
16522
16523         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
16524         and leakage in CKFINITE.
16525
16526         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
16527         this to a null op since it is called on amd64 too.
16528
16529         * exceptions-amd64.c (get_throw_trampoline): Align stack.
16530
16531         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
16532         body since this is not used on amd64.
16533         
16534         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
16535
16536         * mini-amd64.c: Remove obsolete fixmes.
16537
16538         * mini.c (print_method_from_ip): Fix debugging support.
16539
16540 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16541
16542         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
16543         so that expressions that don't give much gain are not reduced.
16544         * ssapre.h: Likewise.
16545
16546 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
16547
16548         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
16549
16550         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
16551
16552         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
16553
16554 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
16555
16556         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
16557
16558         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
16559
16560 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
16561
16562         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
16563         stack touching.
16564
16565         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
16566
16567         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
16568
16569         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
16570
16571         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
16572         MONO_ARCH_USE_SIGACTION. Fixes #74252.
16573
16574         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
16575
16576         * mini-x86.c: Fix up stack overflow handling.   
16577
16578         * exceptions.cs: Add new regression test.
16579
16580 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
16581
16582         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
16583         mono_jit_thread_attach.
16584
16585         * mini.c (mono_method_to_ir): Verify called method is not abstract.
16586
16587 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16588
16589         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
16590         avoid calling constructors using callvirt.
16591
16592         * inssel.brg: Fix #74073.
16593
16594 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
16595
16596         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
16597         compilation with non-GCC compilers.
16598         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
16599         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
16600
16601 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
16602
16603         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
16604         klass->interface_offsets (will likely fix bug#74073).
16605
16606 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16607
16608         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
16609
16610 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
16611
16612         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
16613         to amd64_div_reg_size ().
16614         
16615         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
16616
16617 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
16618
16619         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
16620
16621 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16622
16623         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
16624
16625 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16626
16627         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
16628         
16629         * mini.c (mono_precompile_assembly): Load and precompile referenced
16630         assemblies as well. Fixes #74015.
16631
16632 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
16633
16634         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
16635
16636 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
16637
16638         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
16639         a lot of checks and (anyway) permissions cannot work until corlib is 
16640         loaded.
16641
16642 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
16643
16644         * mini-ppc.c: fixed ABI issue on sysv/ppc.
16645
16646 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
16647
16648         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
16649         calls (fixes bug#72824).
16650
16651 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16652
16653         * mini.c: fix tail recursion elimination (see test in bug#73936).
16654
16655 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
16656
16657         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
16658         some fp functions in sse2 mode.
16659
16660 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
16661
16662         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
16663
16664 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
16665
16666         * mini.h mini.c: Add mono_get_jit_tls_key ().
16667
16668         * mini-x86.c: Enable fast TLS support on windows.
16669
16670 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
16671
16672         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
16673         * mini.c: Check for p/invoke method when generating code. If a
16674         p/invoke method, or it's class, isn't decorated with [Suppress
16675         UnmanagedCodeSecurity] then generate code to call System.Security.
16676         UnmanagedDemand (only if the security manager is active).
16677
16678 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16679
16680         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
16681         last change as it seems to cause strange crashes.
16682         
16683 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16684
16685         * *.c: handle unsafe function pointers where needed.
16686
16687 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16688
16689         * mini.c (mono_jit_free_method): Remove the fixme too.
16690
16691 2005-03-15  Miguel de Icaza  <miguel@novell.com>
16692
16693         * mini.c: As discussed, make the code actually free the delegate
16694         thunk now, to enable the debugging of delegate problems, use
16695         MONO_DEBUG=1 when running Mono. 
16696
16697         This takes also care of parts of the leaks as seen by Joe.
16698
16699 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
16700
16701         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
16702         thread_tls_offset calculation.
16703
16704 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
16705
16706         * declsec.c: Reworked linkdemand checks for icall. The previous code
16707         was using the declaration code (untrusted) and didn't work as expected
16708         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
16709         specific case.
16710
16711 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
16712
16713         * iltests.il: Add new localloc test.
16714
16715         * mini-amd64.c: Handle large stack allocations the same way as on
16716         windows if stack overflow handling is working.
16717         
16718         * mini-amd64.c: Allocate the signal stack using mmap.
16719
16720         * mini.c (sigsegv_signal_handler): Fix reading of context.
16721
16722         * mini-exceptions.c: Fix up stack overflow handling.
16723
16724         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
16725
16726         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
16727
16728         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
16729
16730         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
16731
16732         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
16733         tramp_init functions as they are no longer needed.
16734
16735 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
16736
16737         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
16738         
16739         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
16740
16741         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
16742         
16743         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
16744         support that now.
16745
16746         * mini-ops.h: Add OP_LMUL_IMM.
16747
16748         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
16749         long mul/div opcodes as intrinsic.
16750
16751         * mini-amd64.c (emit_call): Handle the case when the callee might be
16752         an AOT method.
16753
16754 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
16755
16756         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
16757         extra safe.
16758         
16759         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
16760
16761         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
16762
16763 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
16764
16765         * mini.c (mono_codegen): Don't leak here, to help people running
16766         monogrind.
16767
16768 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
16769
16770         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
16771         conversions in sse2 mode.
16772
16773         * basic-float.cs: Add regression test.
16774         
16775         * mini-amd64.c: Reenable sse2.
16776
16777 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
16778
16779         * mini-amd64.c: Disable sse2 until some regressions are fixed.
16780
16781 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
16782
16783         * driver.c: Copyright text should include 2005.
16784         
16785 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
16786
16787         * cpu-amd64.md (load_membase): Fix more max lengths.
16788
16789 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
16790
16791         * cpu-amd64.md (load_membase): Fix max length.
16792
16793         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
16794
16795         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
16796
16797         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
16798         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
16799
16800         * basic-float.cs: Add rounding regression test.
16801
16802         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
16803
16804 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
16805
16806         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
16807         structures in registers for pinvoke wrappers.
16808
16809 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
16810
16811         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
16812
16813 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
16814
16815         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
16816         wrapper to mono_jit_thread_attach.
16817
16818         * mini.c (mini_jit_thread_attach): New jit icall.
16819
16820         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
16821         native->managed wrappers.
16822
16823         * exceptions.cs: Add new regression test.
16824
16825         * mini.c (optimize_branches): Check regions in the cbranch to throw
16826         block case as well. Fixes #73242.
16827
16828 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
16829
16830         * mini.c: thread safety fixes.
16831
16832 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
16833
16834         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
16835         patching stuff, since delegates use jump trampolines so there is
16836         no caller.
16837
16838         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
16839         jump trampolines.
16840         
16841         * tramp-amd64.c: Fix build.
16842
16843         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
16844         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
16845
16846         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
16847         Rename this to mono_arch....
16848         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
16849
16850         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
16851
16852         * mini-amd64.c (emit_call): If both the caller and the callee is
16853         guaranteed to have 32 bit addresses, emit a normal call.
16854
16855         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
16856
16857         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
16858         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
16859         method_ptr inside delegates.
16860
16861 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
16862
16863         * mini.c (mono_jit_free_method): Free the method info even if the native code is
16864         invalidated. Fixes #73001.
16865
16866         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
16867
16868         * mini-x86.c: Only use stdcall for pinvokes on windows.
16869
16870 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
16871
16872         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
16873         * mini-x86.c: remove unreliable __thread var offset detection,
16874         use the correct accessors and enable by default.
16875
16876 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
16877
16878         * mini.c (mono_jit_free_method): Fix memory leak.
16879
16880 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
16881
16882         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
16883
16884 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
16885
16886         * cpu-amd64.md: Fix lengths of atomic opcodes.
16887
16888 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
16889
16890         * driver.c: try to not imply using ICU is any good.
16891
16892 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
16893
16894         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
16895         functions as inline ops.
16896
16897         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
16898         some Interlocked functions as inline ops.
16899
16900         * mini.c (move_basic_block_to_end): Fix bug in last patch.
16901
16902         * mini.h (MonoBasicBlock): Reorganize fields a bit.
16903
16904         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
16905
16906         * mini.c: Add support for OP_NOT_TAKEN.
16907
16908         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
16909         structures in registers for pinvoke wrappers.
16910
16911         * mini-amd64.c: Fix warnings.
16912
16913 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
16914
16915         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
16916
16917         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
16918
16919         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
16920         address instead of loading the address from it.
16921
16922         * mini-x86.c: Add support for returning small structs in registers
16923         on Win32. Fixes part of #70864.
16924         
16925 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
16926
16927         * trace.c (get_token): Improve error checking.
16928
16929 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
16930
16931         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
16932
16933 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
16934  
16935         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
16936         it can be reused for MonoClass.
16937         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
16938         _LINKDEMAND.
16939
16940 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
16941
16942         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
16943         instead of a MonoReflectionMethod. The method information wasn't used
16944         when displaying SecurityException details (but will be now).
16945
16946 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
16947
16948         * Makefile.am : windows build fix.
16949
16950 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
16951
16952         * iltests.il: Add new regression test.
16953
16954         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
16955         #72522.
16956
16957 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
16958  
16959         * mini.c: Moved linkdemand check into helper function check_linkdemand
16960         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
16961         LDFTN, LDVIRTFTN).
16962
16963 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
16964
16965         * declsec.c: Added statistics counter for different kinds of 
16966         LinkDemands.
16967         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
16968         (and commented) declaration.
16969         * mini.c: Added statistics counter for security Demand code 
16970         generation. Added display of security statistics.
16971
16972 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
16973
16974         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
16975         Fix compilation errors under gcc-2.95.
16976
16977 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
16978
16979         * mini.c, driver.c: Use the new jit trampoline hashtable
16980
16981 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16982
16983         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
16984
16985 2005-02-11  Martin Baulig  <martin@ximian.com>
16986
16987         * debug-mini.c (mono_debug_close_method): Free the line number array.
16988
16989 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
16990
16991         * aot.c: Break up large methods into smaller ones. Share GOT slots for
16992         icalls.
16993
16994         * mini.h: Bump AOT file format version. 
16995
16996 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
16997
16998         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
16999         APTC and P/Invoke.
17000         * declsec.h: Added macros to get/set lazyly initialized security 
17001         informations about assemblies. Added new enum for different type of
17002         possible LinkDemand violation. Added function to check LinkDemands.
17003         * mini.h: Added a field to MonoCompile to hold any security violation
17004         detected when JITting a method (so it can be thrown later).
17005         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
17006         and CEE_CALLVIRT. Added code to throw exception at the end of
17007         mini_method_compile (note: the exception is unhandled right now).
17008
17009 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
17010
17011         * mini.c, jit-icalls.c: use the managed implementation of
17012         memset for initobj and memset, to avoid managed <-> unmanaged
17013         transitions.
17014
17015 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17016
17017         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
17018         optimization if it would need a GOT var.
17019
17020         * basic.cs: Add tests for constant propagation and switch statements.
17021
17022         * ssa.c: Fix out-of-range constant propagation and switch statements.
17023
17024 2005-02-09    <vargaz@freemail.hu>
17025
17026         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
17027
17028 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
17029
17030         * cpu-amd64.md (load_membase): Fix max length of load_membase.
17031
17032 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17033
17034         * mini.c: update to new signature of mono_class_get_allocation_ftn().
17035
17036 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
17037
17038         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
17039         arithmetic operations.
17040
17041 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
17042
17043         * mini-ppc.c: add a workaround for broken user code that
17044         DllImports vararg functions with non-vararg signatures.
17045
17046 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17047
17048         * mini.c (mono_jit_compile_method_inner): Add detection and a 
17049         meaningfull error message for assemblies written in Managed C++.
17050
17051         * tramp-amd64.c mini-amd64.h: Add support for 
17052         create_trampoline_from_token ().
17053
17054         * aot.c mini-x86.c abcremoval.c: Applied patch from
17055         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17056
17057 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17058
17059         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
17060         which takes a MonoImage/token as parameter instead of a MonoMethod.
17061
17062         * aot.c: Use the new trampoline for initializing vtables.
17063
17064         * aot.c: Add support for ldfld/stfld_remote wrappers.
17065
17066         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
17067         rules for compare <MEM>, IMM.
17068
17069         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
17070
17071         * aot.c: Handle inherited finalizers correctly.
17072
17073 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17074
17075         * inssel.brg (stmt): Add a missing _setup_... ().
17076
17077         * aot.c: Save some parts of the class state to the AOT file and use it
17078         to recompute that state when a class is initialized.
17079
17080         * mini.c: Install AOT hooks into the runtime.
17081
17082         * mini.h: Bump AOT file format version.
17083         
17084         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
17085         Fixes #72148.
17086
17087         * iltests.il: Add new test.
17088
17089 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17090
17091         * mini.c: fix typo.
17092
17093 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
17094
17095         * mini.c: setup the statistical profiler in the thread attach
17096         callback to cope with the new single thread code.
17097
17098 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
17099
17100         * mini-ppc.c: ensure we have enough room for the profiler
17101         calls (fixed bug#72084).
17102
17103 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
17104
17105         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
17106         it.
17107
17108 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17109
17110         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
17111
17112 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17113
17114         * ssapre.c: Fixed an issue with down safety (this allows IronPython
17115         to succesfully execute parrotbench).
17116         * ssapre.h: Likewise.
17117
17118 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17119
17120         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
17121         variable for stores to method arguments (fixes a SSAPRE issue).
17122
17123 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17124
17125         * mini.c: handle value types in dup, fixes gen-112.cs.
17126
17127 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
17128
17129         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
17130         sequence for calls in dynamic methods to avoid thunks.
17131
17132 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17133
17134         * mini.c: correctly remove dynamic methods from the hashtable.
17135
17136 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17137
17138         * driver.c: Disabled SSAPRE until fix the bug that appears
17139         in IronPython's parrotbench.
17140
17141 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
17142
17143         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
17144
17145         * mini.c (mono_method_to_ir): Revert the previous change.
17146         
17147         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
17148         when AOT compiling.
17149
17150         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
17151         mono_jit_info_table_find () etc. when running under valgrind.
17152
17153         * inssel.brg: Fix warnings.
17154
17155         * mini-exceptions.c: Fix warnings.
17156
17157 2005-01-31  Martin Baulig  <martin@ximian.com>
17158
17159         * driver.c (compile_all_methods_thread_main): Don't try to compile
17160         generic methods or anything which has type parameters.
17161
17162 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
17163
17164         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
17165
17166         * TestDriver.cs: Add --verbose flags.
17167
17168         * graph.c ssa.c: Fix 64 bit warnings.
17169         
17170         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
17171         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
17172         Fix 64 bit warnings.
17173
17174         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
17175         variable not spotted by gcc.
17176         
17177         * mini-amd64.c inssel-amd64.brg: Applied patch from  
17178         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
17179         X86_COMPARE_MEMBASE opcodes.
17180
17181         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
17182
17183 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
17184
17185         * *: MonoMethod->signature might be NULL now. You *MUST* use
17186         mono_method_signature.
17187
17188 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17189
17190         * driver.c (compile_all_methods_thread_main): Compile the methods
17191         without invoking cctors.
17192
17193 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17194
17195         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
17196         * basic-calls.cs: test for the above.
17197
17198 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17199
17200         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
17201         MonoJitInfo changes.
17202
17203 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
17204
17205         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
17206         eagerly if it contains dynamic methods.
17207         
17208         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
17209
17210         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
17211         trace, it is now computed by an icall from trace_ips.
17212         
17213         * mini-exceptions.c: Fix a warning.
17214
17215 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17216
17217         * mini-exceptions.c: don't bother getting stack trace info if
17218         it's not going to be used.
17219
17220 2005-01-27  Raja R Harinath  <rharinath@novell.com>
17221
17222         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
17223         ssapre-mini-ops.h.
17224
17225 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
17226
17227         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
17228
17229         * aot.c: Avoid calling mono_method_get_header () if not needed.
17230
17231         * mini.h: Bump AOT file format version.
17232         
17233         * mini.c (mono_emit_native_call): Allocate a GOT var here.
17234
17235         * mini.c (mono_print_tree): Print more info for calls.
17236
17237 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
17238
17239         * declsec.h: Remove warning by adding missing include for marshal.h
17240
17241 2005-01-26  Martin Baulig  <martin@ximian.com>
17242
17243         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
17244         `ip' twice.
17245
17246 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
17247
17248         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
17249         flags.
17250
17251         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
17252
17253         * aot.c (mono_compile_assembly): Fix a warning.
17254
17255 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
17256
17257         * declsec.c: Look for security attributes on the original MonoMethod 
17258         (and not the wrapped one). This fix permissions on icalls.
17259
17260 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17261
17262         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17263
17264         * mini.c (mono_allocate_stack_slots): Add a fixme.
17265
17266         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17267
17268 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17269
17270         * inssel.brg: optimize casts of sealed types (more
17271         optimizations waiting for fixes in remoting).
17272
17273 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17274
17275         * inssel.brg (stmt): Add another dummy rule.
17276
17277         * driver.c: Fix warnings.
17278
17279         * driver.c (mono_main): If running under valgrind, instruct glib to use
17280         the system allocation functions so valgrind can track the memory
17281         allocated by the g_... functions.
17282
17283         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
17284
17285         * mini-ops.h: Add OP_DUMMY_STORE opcode.
17286
17287         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
17288
17289         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
17290         variables in try regions.
17291
17292         * mini.c (mini_method_compile): Don't disable optimizations on large
17293         methods when AOT compiling.
17294
17295         * mini.c (mono_allocate_stack_slots): New arch independent method to 
17296         allocate stack slots. Not yet used.
17297
17298 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
17299
17300         * debug-mini.c (mono_debug_close_method): Plug some leaks.
17301
17302 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
17303
17304         * mini-ppc.c: make the branch info relative as the code
17305         buffer can be reallocated.
17306
17307 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
17308
17309         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
17310         * driver.c: Removed the AOT/security restriction. Now initialize the
17311         security manager (in metadata) if --security is used.
17312         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
17313         rather than the pointer to declarative security, when AOT is used.
17314
17315 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
17316
17317         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
17318         basic blocks, reduced intrinsic exception throwing code size.
17319
17320 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
17321
17322         * driver.c (mini_usage): Reorder the usage screen.
17323
17324 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
17325
17326         * mini.c (mono_resolve_patch_target): Fix warning.
17327
17328 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
17329
17330         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
17331         previous patch.
17332
17333         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17334
17335         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
17336         breaks the amd64 build.
17337
17338         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
17339         register allocation. Fixes #71454.
17340
17341         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17342
17343         * arrays.cs: Add new regression test.   
17344
17345 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17346
17347         * ssapre.c: Turned usage of snprintf to GString.
17348         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
17349         (I left it on by mistake in my previous commit).
17350
17351 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
17352
17353         * mini.c, cfold.c, basic-calls.cs: preserve side effects
17354         on cond branch optimization (fixes bug# 71515).
17355
17356 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17357
17358         * abcremoval.c: Fixed bug 71062.
17359         * abcremoval.h: Likewise.
17360
17361 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17362
17363         * mini.c: Added a new functionality to optimize_branches, the removal
17364         of useless basic blocks, and fixed some problem in the removal of
17365         critical edges; some utility functions added for both purposes.
17366         * ssapre.c: Added complex expression support, and fixed bug 70637.
17367         * ssapre.h: Likewise.
17368         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
17369         enabled in SSAPRE.
17370         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
17371         * driver.c: Re-enabled SSAPRE.
17372
17373 2005-01-19  Martin Baulig  <martin@ximian.com>
17374
17375         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
17376         the result of mono_get_method_constrained().
17377
17378 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
17379
17380         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
17381         manager.
17382
17383 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
17384
17385         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
17386         be detected.  Fixes #59296.
17387
17388 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17389
17390         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
17391         which can happen. Fixes #71361.
17392
17393 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17394
17395         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
17396         manager.
17397
17398 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17399
17400         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
17401         appdomain-unload.exe to fail.
17402         
17403         * mini.c: Fix some memory leaks.
17404
17405 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
17406
17407         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
17408         Fixed bug and sped up some codepaths.
17409
17410 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17411
17412         * mini.c: Fix some memory leaks.
17413
17414         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
17415         conversion.
17416
17417         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
17418
17419         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
17420         #71320.
17421
17422         * iltests.il: Add regression test for #71320.
17423
17424 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
17425
17426         * mini.c (mono_codegen): Fix installation of profiler hooks.
17427
17428         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
17429
17430 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17431
17432         * mini.h, mini.c, cfold.c: optimize access to enum
17433         readonly fields, too. Eval conditional branches if possible
17434         to perform unreachable code removal in more cases.
17435
17436 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
17437
17438         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
17439
17440         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
17441         code manager.
17442
17443         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
17444         WinXP DEP. Fixes #71244.
17445
17446 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
17447
17448         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
17449
17450 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
17451
17452         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
17453
17454 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
17455
17456         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
17457         changes.
17458
17459         * mini.h: Bump AOT version.
17460
17461         * mini.h (MonoCompile): Change exvar to a hash table.
17462
17463         * mini.c: Allocate a separate exvar for each handler block.
17464
17465         * mini.c: Get rid of the computation of filter_lengths, its not needed.
17466
17467         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
17468         ex var with the pending exception and only throw if the two are equal.
17469         Fixes #68552.
17470         
17471         * exceptions.cs: Add tests for rethrow and nested catch clauses.
17472
17473         * mini-x86.c: Fix warnings.
17474
17475         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
17476         used by all the ports now.
17477
17478         * aot.c: Add write-symbols and save-temps options.
17479
17480 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17481
17482         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
17483
17484 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
17485
17486         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
17487         operations.
17488
17489         * tramp-s390.c: Check vtable slot belongs to the domain.
17490
17491         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
17492         as per other platforms.
17493
17494         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
17495
17496 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
17497
17498         * driver.c: we don't run the Main() code in a subthread anymore.
17499
17500 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
17501
17502         * mini.c: added experimental rtc support in the statistical
17503         profiler: if the user has the permission, more accurate statistics
17504         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
17505         The MONO_RTC value must be restricted to what the linux rtc allows:
17506         power of two from 64 to 8192 Hz.
17507
17508 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17509
17510         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
17511
17512 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
17513
17514         * mini-ppc.c: better icache flush for smp.
17515
17516 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
17517
17518         * mini-amd64.c (emit_move_return_value): Fix memory leak.
17519
17520         * mini-x86.c (get_call_info): Add the get_call_info () code from the
17521         amd64 port, not yet used.
17522
17523 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17524
17525         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
17526         a struct type.
17527
17528 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
17529
17530         * driver.c: Added --security option to activate the security manager.
17531         Right now this will allow code generation for declarative demands and
17532         is disabled when AOT is specified.
17533         * mini.c: Add code generation for declarative security demands.
17534         * mini.h: Add mono_use_security_manager as an extern gboolean.
17535
17536 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17537
17538         * aot.c (mono_compile_assembly): Speed up compilation a bit by
17539         emitting more dense assembly code.
17540
17541         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
17542         exception throwing stuff.
17543
17544 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
17545
17546         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
17547         dead code.
17548
17549         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
17550         left in by mistake.
17551
17552         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
17553         fixed.
17554
17555         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
17556
17557         * tramp-*.c: Only patch vtable slots if the object is in the current
17558         domain. Fixes appdomain-unload.exe.
17559
17560         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
17561         
17562         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
17563         x86 branch.
17564
17565 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17566
17567         * mini.c (reverse_branch_op): New helper function.
17568
17569         * mini.c (optimize_branches): Run the new optimization only on 
17570         platforms which support it. Also reverse all kinds of branches.
17571
17572         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
17573
17574         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
17575         a throw statement.
17576
17577         * mini.c (optimize_branches): Reverse not-equals branches if the false
17578         bblock is a throw. This happens a lot of time with argument checking in
17579         corlib.
17580
17581         * mini.c (mono_codegen): Add support for placing basic blocks after
17582         the function epilogue.
17583
17584         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
17585         function epilogue.
17586         
17587 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
17588
17589         * mini.c (setup_stat_profiler): Only set this up if the platform
17590         supports ITIMER_PROF.
17591
17592 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17593
17594         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
17595         previous patch.
17596
17597         * inssel.brg: Fix a warning.
17598
17599 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
17600
17601         * mini.c: added support for statistical profiler 
17602         (run with: --profile=default:stat).
17603
17604 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
17605
17606         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
17607
17608         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
17609
17610         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
17611         related to global registers from the amd64 port.
17612
17613 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
17614
17615         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
17616
17617         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
17618         with global registers.
17619         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
17620
17621         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
17622
17623 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
17624
17625         * debug-mini.c (encode_value): Fix off-by-one.
17626
17627         * aot.c (encode_value): Likewise.
17628
17629         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
17630
17631 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
17632
17633         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
17634         AOT.
17635
17636         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
17637         
17638         * aot.c (emit_method_info): Increase size of temp buffer.
17639
17640         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
17641         the AOT case.
17642
17643 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
17644
17645         * aot.c (emit_method_info): Fix build.
17646         
17647         * aot.c: Further rework of the AOT file format to reduce the size of
17648         the method info data.
17649
17650         * mini.h: Bump AOT file format version.
17651
17652 2004-12-27  Martin Baulig  <martin@ximian.com>
17653
17654         * mini.c (mini_get_method): New static method; call
17655         mono_get_method_full() and mono_get_inflated_method().
17656         (mono_method_to_ir): Use mini_get_method() instead of
17657         mono_get_method_full(). 
17658
17659 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
17660
17661         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
17662
17663 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
17664
17665         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
17666
17667         * inssel-amd64.brg: Add some optimization rules.
17668
17669 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
17670
17671         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
17672         standard not GC'd stuff is fine.
17673
17674 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
17675
17676         * aot.c: Rework the AOT file format to get rid of most of the global
17677         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
17678
17679         * mini.h: Bump AOT file format version.
17680         
17681 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
17682
17683         * mini.h: Bump AOT file format version.
17684
17685         * aot.c (mono_aot_is_got_entry): New function to determine if an 
17686         address is inside a GOT.
17687
17688         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
17689
17690         * cpu-pentium.md: Increase the maximum size of some instructions which
17691         might involve a got access.
17692         
17693         * mini.c (get_method_from_ip): Another debug helper function.
17694
17695         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
17696         when got var accesses are created during the decompose phase.
17697
17698         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
17699
17700         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
17701         argument mini_compile_method and to MonoCompile, and use this to
17702         determine whenever a given method is compiled for AOT. This allows the
17703         other methods compiled during AOT compilation to be free of AOT stuff,
17704         so the backends does not need to add special support for them by
17705         creating a fake GOT etc.
17706
17707         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
17708         longer needed.
17709
17710 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17711
17712         * mini.c (mono_method_to_ir): It turns out that some of the
17713         x-appdomain wrappers are lax with types, so just ignore this for
17714         all wrappers.
17715
17716         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
17717         at the vtable->klass. If it is non-shared code we can just use the
17718         vtable.
17719
17720 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
17721
17722         * mini-ppc.c: access MonoDomain from tls, too.
17723
17724 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
17725
17726         * declsec.c: Removed unused variable (and related warning ;-)
17727
17728 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17729
17730         * iltests.il: New test for LDELEMA on an array of ref types.
17731
17732         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
17733         all ldelema's on reftypes.
17734         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
17735         it was the wrong place to put it.
17736
17737         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
17738         register to pop to make this cleaner, at the request of Paolo.
17739
17740 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
17741
17742         * mini-ops.h (OP_GETHASHCODE): New op.
17743
17744         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
17745
17746         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
17747         operation.
17748
17749         For a microbenchmark, this reduces the cost of Hashtable.get_Item
17750         by 25%.
17751         
17752         * mini-x86.c (mono_arch_output_basic_block): Rather than
17753
17754         add ebp, 4
17755
17756         Emit
17757
17758         pop edx
17759
17760         The first is 3 bytes while the second is 1. This saves 36 kb on
17761         mscorlib, quite a big saving. When bootstraping mcs, I was able to
17762         see a small boost because of icache locality.
17763
17764         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
17765
17766 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
17767
17768         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
17769         started code sharing with the generic code.
17770
17771 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
17772
17773         * mini-ppc.c, cpu-g4.md: added code for direct access to
17774         tls data slots.
17775
17776 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
17777
17778         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
17779          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
17780         to OP_TLS_GET.
17781
17782 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
17783
17784         * declsec.c|h: Added functions to cache the declarative stack modifiers
17785         in MonoJitInfo and to create a security frame from a MonoJitInfo 
17786         structure.
17787         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
17788         created. Register internal calls for System.Security.SecurityFrame::
17789         _GetSecurityFrame and _GetSecurityStack.
17790         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
17791         the definitions for the new stack walk/callback mechanism.
17792         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
17793         first security frame for LinkDemands and InheritanceDemands) and
17794         GetSecurityStack for Demands. Both use the new mono_walk_stack code
17795         from lupus.
17796         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
17797         walk initialization (lupus).
17798
17799 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
17800
17801         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
17802         idiom.
17803         (handle_loaded_temps): Do not create a temporary variable for
17804         things that we know are temps. They will never be modified.
17805         (mono_spill_call): Set MONO_INST_IS_TEMP
17806         (mono_emulate_opcode): ditto
17807         (emit_tree): ditto
17808         (mono_method_to_ir.CEE_DUP): ditto
17809
17810 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
17811
17812         * mini.c (type_to_eval_stack_type): Make this handle the void type
17813         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
17814         (emit_tree): use ip_in_bb to special case some common idioms
17815         Update all callers to pass in the IP.
17816         (mono_method_to_ir): Make CEE_CALL* do the above as well.
17817
17818         This gives us a nice 2% speedup in mcs bootstrap.
17819
17820         * mini-x86.c (peephole_pass): Peephole pass to make
17821         mov  [foo], eax
17822         push [foo]
17823
17824         into
17825
17826         mov [foo], eax
17827         push eax
17828
17829         * mini.c (ip_in_bb): new method.
17830         (mono_method_to_ir): use this method rather than doing the hash
17831         lookup ourselves.
17832
17833         * linear-scan.c (mono_linear_scan): When expiring actives, you
17834         don't need to keep around variables that expire on this
17835         instruction. This makes it so that:
17836              a = b + 1
17837         will turn into:
17838              store (ebx add (ebx, 1))
17839         which will become
17840              add ebx, 1
17841
17842 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
17843
17844         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
17845         combination to avoid doing two copies. Fix up problems with previous
17846         patch.
17847
17848         * mini.c: Fix 64 bit warnings.
17849
17850         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
17851
17852 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
17853
17854         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
17855         changes from the x86 code.
17856
17857         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
17858
17859 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
17860
17861         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
17862         throwing code to reduce its size, unify the AOT and non-aot code and 
17863         get rid of relocations in the AOT case.
17864
17865         * mini-x86.h mini.c exceptions-x86.c 
17866         (mono_arch_get_throw_corlib_exception): New arch specific function to 
17867         raise corlib exceptions which doesn't require relocations in the 
17868         caller.
17869
17870         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
17871
17872 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
17873
17874         * mini.c (mono_emit_method_call): Only allocate the got var when it is
17875         needed.
17876
17877         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
17878         in the AOT case.
17879
17880 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17881
17882         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
17883         with add function when used from Inc/dec atomic 
17884         functions. Re-enabled optimization on x86.
17885         * mini-ops.h: renamed atomic_add functions to
17886         allow _add to match the Interlocked::Add and
17887         _add_next to match Interlocked::Inc/Dec.
17888
17889 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
17890
17891         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
17892         linking of BBs to the end BB, and enabled SSAPRE also with
17893         consprop and copyprop (which was prevented by that bug).
17894
17895 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17896
17897         * mini-x86.c: disabling the Interlocked optimizing code. 
17898
17899 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
17900
17901         * aot.c (load_aot_module): Move reading of got_addr after the AOT
17902         file version check.
17903         
17904 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
17905
17906         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
17907         interlocked optimization due lack of support on x86, rewrote 
17908         exchange to take into account that base may be in eax.
17909         
17910         xsp works again; activated Interlocked optimizing code.
17911         
17912 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
17913
17914         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
17915
17916 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
17917
17918         * mini-ops.h: Add new opcodes.
17919
17920         * mini.h: Add new patch types. Add got_var to MonoCompile.
17921
17922         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
17923         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
17924         make it work with all kinds of patchable code.
17925
17926         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
17927         address of the GOT, and referencing entries in the GOT.
17928
17929         * mini.c: Add code to load the GOT address if needed by an opcode.
17930
17931         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
17932         independent AOT code on the x86 using an elf-style Global Offset Table.
17933
17934 2004-12-14  Raja R Harinath  <rharinath@novell.com>
17935
17936         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
17937
17938 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17939
17940         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
17941         when running xsp.
17942
17943 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
17944
17945         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
17946         of Interlocked:Increment/Decrement/Add as inline ops.
17947         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
17948
17949 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
17950
17951         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
17952         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
17953
17954 2004-12-12  Duncan Mak  <duncan@ximian.com>
17955
17956         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
17957         again. `patch_info->table_size' is no longer valid after Zoltan's
17958         commit #37636.
17959
17960 2004-12-12  Martin Baulig  <martin@ximian.com>
17961
17962         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
17963         if we are the "real" method, ie. not an inlined method inside it.
17964
17965 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
17966
17967         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
17968         before we look in the special fields table. This fixes
17969         ../tests/thread-static-init.cs.
17970
17971 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17972
17973         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
17974         for Array get_Rank and get_Length. Fixes bug #70465.
17975
17976 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
17977
17978         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
17979         separate structure to reduce the size of MonoJumpInfo.
17980
17981 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
17982
17983         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
17984
17985 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
17986
17987         * mini.c (mini_get_inst_for_method): Changed to allow ports
17988         to return a MonoInst instead of opcode 
17989         (renamed mini_get_opcode_for_method to better reflect the new functionality)
17990         
17991         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
17992         Allow ports to return a created MonoInst instead of op-code, will enable
17993         new optimizations.
17994         (renamed mini_get_opcode_for_method to better reflected the functionality)
17995
17996 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
17997
17998         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
17999
18000 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18001
18002         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
18003         Fixes #69985.
18004
18005 2004-12-08  Martin Baulig  <martin@ximian.com>
18006
18007         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
18008         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
18009
18010 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18011
18012         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
18013         correctly.
18014
18015         * exceptions.cs: Disable some tests which depend on properties of x86 fp
18016         arithmetic.
18017
18018 2004-12-08  Raja R Harinath  <rharinath@novell.com>
18019
18020         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
18021
18022 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18023
18024         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
18025         bug introduced by the previous patch.
18026
18027 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18028
18029         * mini-ppc.c, objectc.cs: handle large structs passed by value
18030         (fixes bug #69972).
18031
18032 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18033
18034         * mini-ppc.c: OP_ARGLIST implementation from
18035         Geoff Norton  <gnorton@customerdna.com>.
18036
18037 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18038
18039         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
18040         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
18041
18042 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18043
18044         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
18045
18046 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18047
18048         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
18049         support.
18050
18051 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18052
18053         * mini-sparc.c: Zero out localled-ed memory.
18054
18055         * iltests.il: Add tests for zeroing out localloc-ed memory.
18056
18057 2004-12-04  Martin Baulig  <martin@ximian.com>
18058
18059         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
18060         mono_method_get_signature_full().       
18061
18062 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
18063
18064         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
18065         and some utility functions (always for SSAPRE), integrated SSAPRE.
18066         * mini.h: Likewise.
18067         * driver.c: Added ssapre option.
18068         * ssa.c: Small fix on OP_ARG handling.
18069         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
18070         * Makefile.am: Likewise.
18071
18072 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18073
18074         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
18075         now in the xp code.
18076
18077         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
18078         icall.
18079
18080 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18081
18082         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
18083         
18084         * cpu-s390.md : Increase instruction length of oparglist.
18085
18086         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
18087
18088 2004-11-30  Martin Baulig  <martin@ximian.com>
18089
18090         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
18091         virtual generic methods.  We call a special helper_compile_generic_method()
18092         icall to retrieve the method from the vtable, inflate and compile
18093         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
18094
18095         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
18096
18097 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
18098
18099         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
18100
18101 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
18102
18103         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
18104         Fixes #69929.
18105
18106 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
18107
18108         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
18109         platforms with PIC aot.
18110
18111 2004-11-28  Martin Baulig  <martin@ximian.com>
18112
18113         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
18114         Fixes gen-112.cs.
18115
18116 2004-11-28  Martin Baulig  <martin@ximian.com>
18117
18118         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
18119         the result of mono_type_get_underlying_type() to check whether
18120         we're byref.
18121
18122 2004-11-26  Martin Baulig  <martin@ximian.com>
18123
18124         * mini.c
18125         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
18126         in the g_assert().
18127
18128 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
18129
18130         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
18131         the same way as the other arguments so they won't get clobbered.
18132
18133         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
18134         calls through R11 since it is clobbered by the trampoline code.
18135
18136 2004-11-26  Raja R Harinath  <rharinath@novell.com>
18137
18138         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
18139         pick up in-tree mscorlib.dll.
18140
18141 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
18142
18143         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
18144
18145         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
18146         runtime data/code are now stored in a table similar to the GOT in ELF. 
18147         This allows the code itself to be position independent.
18148
18149         * aot.c: Fix loading of referenced assemblies after the lazy assembly
18150         loading changes.
18151
18152         * aot.c: Attach ELF type (object/function) directives to all global
18153         symbols.
18154
18155         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
18156
18157         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
18158
18159         * mini-amd64.h: Turn on PIC AOT code.
18160
18161         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
18162         returning the offset within an OP_AOTCONST instruction where the GOT
18163         offset needs to be added.
18164
18165         * mini.h: Bump AOT file format version.
18166
18167 2004-11-25  Martin Baulig  <martin@ximian.com>
18168
18169         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
18170         uninflated generic methods.
18171
18172 2004-11-25  Martin Baulig  <martin@ximian.com>
18173
18174         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
18175
18176 2004-11-24  Martin Baulig  <martin@ximian.com>
18177
18178         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
18179         original klass (this only applies for generic instances).
18180
18181 2004-11-24  Martin Baulig  <martin@ximian.com>
18182
18183         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
18184         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
18185         that array).
18186
18187 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
18188
18189         * mini.c (mono_method_to_ir): Disable inlining for methods containing
18190         localloc. Fixes #69678.
18191
18192         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
18193         
18194 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
18195
18196         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
18197         used SSE registers on pinvoke calls. Fixes #69774.
18198
18199 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
18200
18201         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
18202         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
18203
18204 2004-11-23  Raja R Harinath  <rharinath@novell.com>
18205
18206         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
18207         Refer directly to the mcs/ tree.
18208
18209 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18210
18211         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
18212         Check if a trampoline for a synchronized method is required. 
18213
18214 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
18215
18216         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
18217         with localloc if needed. Throe arithmetric exception in
18218         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
18219         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
18220
18221 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
18222
18223         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
18224         types before switching on type.  Fixes #69622.
18225
18226 2004-11-19  Raja R Harinath  <rharinath@novell.com>
18227
18228         * Makefile.am (check-local): New.  Integrate into 'make check'.
18229         (MCS,RUNTIME): Define using in-tree mono and mcs.
18230         (ILASM): New.
18231         (%.exe): Use $(ILASM).
18232
18233 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
18234
18235         * mini-ppc.c: adjust initial prolog size (bug #69691).
18236
18237 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
18238
18239         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
18240         #69664.
18241
18242 2004-11-17  Raja R Harinath  <rharinath@novell.com>
18243
18244         * Makefile.am (clean-local): Rename from 'clean'.
18245
18246 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18247
18248         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
18249         to mono_arch_is_int_overflow. 
18250         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
18251         SIGFPE events.
18252
18253 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
18254
18255         * declsec.c|h: New files to support declarative security attributes.
18256         Added function to check if a method has (applicable) security.
18257         * mini.c|h: Add check for declarative security attributes in
18258         mono_method_check_inlining.
18259         * Makefile.am: Added declsec.c and declsec.h to the build.
18260
18261 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18262
18263         * mini.c, mini.h: update to keep dynamic code info per-domain.
18264
18265 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
18266
18267         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
18268         (mini_init): Get rid of it from here too.
18269
18270 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
18271
18272         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
18273         implemented OP_RETHROW (patch by Geoff Norton
18274         <gnorton@customerdna.com>).
18275
18276 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
18277
18278         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
18279         between appdomains.  Fixes appdomain-unload on PPC.
18280
18281 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
18282
18283         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18284         mini-exceptions.c: handle the new wrapper types.
18285         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
18286         token value as a MonoClass* when compiling a wrapper.
18287         mono_jit_create_remoting_trampoline now takes an additional
18288         MonoRemotingTarget parameter.
18289         
18290 2004-11-10  Martin Baulig  <martin@localhost>
18291
18292         * mini.c (mono_method_to_ir): Use `generic_container->context'
18293         rather than creating a new one.
18294
18295 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18296
18297         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
18298
18299         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
18300
18301 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
18302
18303         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
18304         the experimental aot cache stuff.
18305
18306 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18307
18308         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18309         mini-exceptions.c: update to exception clause structure changes.
18310
18311 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18312
18313         * exceptions-x86.c (throw_exception): Fix warnings.
18314
18315         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
18316         for OP_RETHROW.
18317
18318 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18319
18320         * exceptions-sparc.c (get_throw_exception): Really fix this.
18321
18322 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
18323
18324         * tramp-*.c: we no longer support icalls without wrappers, so
18325         a bit of code can be removed here
18326
18327 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
18328
18329         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
18330         patch.
18331
18332         * cpu-sparc.md: Add op_rethrow.
18333
18334         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
18335
18336         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
18337
18338         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
18339         * mini-ops.h: Add OP_RETHROW.
18340
18341         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
18342
18343         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
18344
18345 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
18346         
18347         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
18348         Makes the output much easier to read
18349
18350 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
18351
18352         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
18353         prevents another huge leak when compiling with ssa. Secondly, the
18354         performance of doing this rather than freeing the lists is much
18355         better. GList does a lock every time you allocate a list link,
18356         so that it can use a memory pool. So, it is better to just use
18357         a memory pool of our own.
18358         
18359         * ssa.c, linear-scan.c: replace g_list_remove_link with
18360         g_list_delete.  The remove one does not free the GList, so we were
18361         leaking memory. On -O=all --compile-all with corlib, this cut down
18362         3 MB of allocations.
18363
18364 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
18365
18366         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
18367
18368         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
18369
18370         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
18371         into a new function mono_create_jit_trampoline ().
18372
18373 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
18374
18375         * trace.c (get_spec): Allow tracing of classes without a namespace.
18376
18377 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
18378
18379         * mini.c: Fix pointer overwrite in mini_method_compile.
18380
18381 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
18382
18383         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
18384         The darwin ABI needs some special handling for 1 and 2 byte structs
18385         Lets use lbz/lhz instead of lwz everywhere.
18386         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
18387         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
18388         Use stb/sth for the former, and put the latter always on stack instead of in
18389         argument registers.
18390
18391 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
18392
18393         * trace.c (is_filenamechar): Add '_'.
18394
18395 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
18396
18397         * mini-s390.c: Fix prolog length to allow for large trace requirements.
18398
18399         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
18400
18401 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
18402
18403         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
18404         depends on libmonogc. Fixes #68805.
18405
18406 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
18407
18408         * mini.c (mono_jit_free_method): Provide extra information for
18409         this error.  Currently this leaks, but will be turned into a
18410         developer option in the future.
18411
18412 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
18413
18414         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
18415
18416 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
18417
18418         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
18419         boundary. Fixes reading of PATCH_INFO_R4 and R8.
18420         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
18421
18422 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
18423
18424         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
18425         trampolines for AOT code.
18426
18427 2004-10-22    <vargaz@freemail.hu>
18428
18429         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
18430         constructed types. Fixes #68136.
18431
18432 2004-10-21  Martin Baulig  <martin@ximian.com>
18433
18434         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
18435         if it returns true, unwind the stack to the call instruction.
18436
18437 2004-10-21    <vargaz@freemail.hu>
18438
18439         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
18440
18441         * mini.h: Bump AOT version number.
18442
18443         * objects.cs: Add another test for unbox trampolines.
18444
18445         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
18446         valuetype methods.
18447
18448 2004-10-20    <vargaz@freemail.hu>
18449
18450         * driver.c: Add SHARED to the set of optimizations tested.
18451
18452         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
18453
18454         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
18455         used by CEE_NEWARR.
18456
18457         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
18458
18459 2004-10-20  Martin Baulig  <martin@ximian.com>
18460
18461         * mini-exceptions.c (mono_handle_exception): Call
18462         mono_debugger_handle_exception() to tell the debugger about
18463         catch/finally clauses.
18464
18465 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
18466
18467         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
18468
18469         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
18470         #68447.
18471
18472 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
18473
18474         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
18475         methods as their native size, fixed bug #57543, #57545.
18476         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
18477         This saves a temporary register and mullw call down into 1 (minor perf
18478         increase for cases like sum = sum * 5;  This use to translate into:
18479             li r11,5
18480             mullw r28,r28,r11
18481         It now translates to
18482             mulli r28,r28,5
18483
18484 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
18485
18486         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
18487         #68388.
18488
18489 2004-10-11  Martin Baulig  <martin@ximian.com>
18490
18491         * mini.c (mono_method_to_ir): If we're a generic method, get the
18492         MonoGenericContainer from our MonoMethodNormal and create a
18493         MonoGenericContext from it.
18494
18495 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
18496
18497         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
18498
18499         * basic-long.cs: Add test for checked i8->i2 cast.
18500
18501 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18502
18503         * inssel-ppc.brg: added a couple of speedup rules.
18504
18505 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
18506
18507         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
18508         to speed up rebuilds.
18509
18510 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18511
18512         * mini-s390.c: Minor fix to OP_OR_IMM.
18513
18514 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
18515
18516         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
18517         better. Fixes appdomain-unload.exe on sparc.
18518
18519 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
18520
18521         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
18522         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
18523         see bug 67324.
18524
18525 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
18526
18527         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
18528
18529 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
18530
18531         * mini.c: Always generate a field read/write wrapper for members
18532         of the class MarshalByRefObject since the actual instance could
18533         be a CBO.
18534
18535 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
18536
18537         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
18538
18539 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
18540
18541         * driver.c mini.h trace.c: Move the setting of the main assembly into
18542         a separate function called mono_trace_set_assembly () and call it after
18543         actually loading the main assembly. Fixes #66872.
18544
18545 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
18546
18547         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
18548         using the code manager.
18549
18550 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
18551
18552         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
18553
18554 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
18555
18556         * cpu-amd64.md: Fix bug in previous patch.
18557         
18558         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
18559         #66650.
18560
18561 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
18562
18563         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18564         mini-exceptions.c: updates for changed stack walk interface.
18565
18566 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18567
18568         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
18569
18570 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
18571
18572         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
18573
18574 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
18575
18576         * driver.c (mini_regression_list): Do not call mono_assembly_close 
18577         since assemblies can't be unloaded.
18578         
18579 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18580
18581         * cpu-amd64.md: Fix more instruction lengths.
18582
18583         * cpu-amd64.md: Fix lengths of some instructions.
18584
18585 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
18586
18587         * inssel.brg: Make the array ldelema check aot friendly.
18588
18589 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18590
18591         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
18592
18593         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
18594
18595 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
18596
18597         * mini-x86.c: Fix build.
18598
18599         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
18600         mono_type_get_underlying_type () helper function to simplify code.
18601         
18602 2004-09-09  Martin Baulig  <martin@ximian.com>
18603
18604         * mini-amd64.c: Don't access `type->data.klass' directly, call
18605         mono_class_from_mono_type() instead since the type may be a
18606         generic instance.
18607
18608 2004-09-09  Martin Baulig  <martin@ximian.com>
18609
18610         * mini-amd64.c (get_call_info): Fix support for generic instances.
18611         (add_valuetype): Use mono_class_from_mono_type() to get the class
18612         since we can be a generic instance.
18613
18614 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
18615
18616         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
18617
18618 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18619
18620         * liveness.c: reset spill costs on each scan: bug 62107
18621
18622 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
18623
18624         * exceptions-sparc.c (mono_arch_find_jit_info): remove
18625         unnecessary line that doesn't compile
18626
18627 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
18628
18629         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
18630         trampolines, make them call an error function so people can fix their
18631         code.
18632
18633 2004-09-06  Martin Baulig  <martin@ximian.com>
18634
18635         * mini.c (mono_method_to_ir): When initializing locals, handle a
18636         generic instances like a valuetype if it's a valuetype and like a
18637         class if it's a class.
18638
18639 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18640
18641         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
18642         stack. Fixes #64674.
18643
18644         * exceptions.cs: Add test for unwinding of call arguments.
18645
18646 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
18647
18648         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
18649         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
18650         set the carry/borrow flag). The sparc and s390 implementations
18651         can now use optimized versions (and simplify the code). ppc bugfixes.
18652
18653 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18654
18655         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
18656
18657 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
18658
18659         * inssel-amd64.brg: Remove leftover 32 bit rule.
18660
18661         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
18662
18663 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
18664
18665         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
18666         mono_arch_find_jit_info functions into a new function. Fix a memory
18667         leak.
18668
18669         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
18670         refactored code.
18671         
18672 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18673
18674         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
18675         as well.
18676         
18677         * exceptions.cs: Add array size tests.
18678
18679         * mini.c: Allocate a separate icall wrapper for each arity of 
18680         mono_array_new_va. Fixes #59509.
18681
18682         * exceptions.cs: Add testcase for 64578.
18683
18684         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
18685
18686         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
18687         
18688 2004-09-02  Martin Baulig  <martin@ximian.com>
18689
18690         * mini.c (mono_method_to_ir): When initializing the locals, call
18691         handle_initobj() on the generic instance itself, not its
18692         underlying type.
18693
18694 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18695
18696         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
18697         MonoJitInfo for dynamic methods.
18698
18699         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
18700
18701         * mini.c: Add support for freeing JIT data for dynamic methods.
18702         
18703 2004-09-01  Martin Baulig  <martin@ximian.com>
18704
18705         * mini-x86.c (is_regsize_var): Added support for generic
18706         instances.
18707         (mono_arch_emit_prolog): Make this compile again, use
18708         `x86_push_imm_template (code)'.
18709
18710 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
18711
18712         * mini-x86.c: make all push_imm instructions that get
18713         patched always emit the long form
18714
18715 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
18716
18717         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
18718         in a per-domain hash.
18719
18720         * mini-amd64.c (merge_argument_class_from_type): Handle generic
18721         types.
18722
18723 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
18724
18725         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
18726         work.
18727         
18728         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
18729         work.
18730
18731         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
18732         Beginnings of SSE2 support.
18733
18734         * exceptions.cs: Add more tests for checked int<->uint casts.
18735
18736 2004-08-28  Martin Baulig  <martin@ximian.com>
18737
18738         * mini-x86.c (mono_arch_instrument_epilog): Added support for
18739         generic instances.
18740
18741         * mini.c
18742         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
18743         Handle generic instances recursively.
18744
18745 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18746
18747         * iltests.il: test for conv.u8 on a constant
18748
18749 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18750
18751         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
18752         LCONV_x4 (shrun_32 (membase)).
18753
18754 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18755
18756         * inssel-x86.brg: c&p rules for push/setret of long
18757
18758 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
18759
18760         * inssel-x86.brg: c&p rules for compare (base, regvar) and
18761         compare (regvar, base)
18762
18763         * inssel-x86.brg: more burg love
18764
18765         * inssel.brg: more cleanup
18766
18767         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
18768
18769 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
18770
18771         * basic-long.cs, basic-calls.cs: new tests for optimization.
18772
18773 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
18774
18775         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
18776         patch.
18777
18778 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
18779
18780         * mini-amd64.c (read_tls_offset_from_method): Add another case.
18781         
18782 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
18783
18784         * inssel.brg (mini_emit_memcpy): use 
18785         NO_UNALIGNED_ACCESS to disable memcpy optimization
18786
18787 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
18788
18789         * mini-amd64.c: Handle generic types in various places.
18790
18791         * mini.c (mono_method_to_ir): Handle generic types in init locals.
18792
18793 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
18794
18795         * mini.c (handle_box): Fix warning.
18796
18797         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
18798
18799         * mini-amd64.h: Enable the emit_state optimization.
18800
18801         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
18802
18803         * mini-amd64.c: Add some new 64 bit peephole opts.
18804
18805         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
18806
18807         * cpu-amd64.md: sreg1 of div instructions must be %rax.
18808
18809         * mini-amd64.c: Register allocator fixes.
18810
18811         * mini.c: Add an optimization to emit_state to avoid allocation of new
18812         registers on some platforms.
18813
18814 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
18815
18816         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
18817
18818         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
18819         allocation. Fixes #63085.
18820
18821         * basic-long.cs: Add new regression test.
18822
18823         * mini-amd64.c: Register allocator improvements.
18824
18825 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
18826
18827         * mini-amd64.c (read_tls_offset_from_method): Add another code
18828         sequence.
18829
18830         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
18831         instruction sequence for nullifying class init trampolines.
18832
18833         * objects.cs: Add new regalloc test.
18834
18835         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
18836
18837 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
18840         
18841         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
18842         arguments.
18843
18844         * driver.c: Fix profiling after TLS changes.
18845         
18846         * driver.c (mono_main): Set mono_stats.enabled if needed.
18847
18848         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
18849         CEE_BOX.
18850
18851 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
18852
18853         * mini-x86.c: use a 1 op rather than a 2 op tls access
18854         instruction -> faster.
18855
18856 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
18857
18858         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
18859         x86 backend.
18860
18861 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
18862
18863         * exceptions-sparc.c (throw_exception): fix typo
18864
18865 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
18866
18867         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
18868         set tree->dreg correctly with tls. Allow any
18869         register to be used.
18870
18871         * mini-x86.c (read_tls_offset_from_method): add new code
18872         generation pattern seen with GCC.
18873
18874
18875 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
18876
18877         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
18878         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18879         exceptions-sparc.c: fix some performance issues in exception
18880         handling and setting of the stack trace for exceptions that were
18881         already thrown.
18882
18883 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18884
18885         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
18886         x86 backend.
18887         
18888         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
18889         registers.
18890
18891 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
18892
18893         This patch inlines tls access, when possible.
18894         
18895         * mini.h: new arch functions for TLS intrinsics.
18896         All platforms updated with a stub.
18897
18898         * mini.c: use the new intrinsics
18899
18900         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
18901         arch specific intrinsic for tls variables
18902
18903 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
18904
18905         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
18906         under windows.
18907
18908 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
18909
18910         * mini.c: thread local allocation
18911
18912 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
18913
18914         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
18915
18916         * Makefile.am: Link against the static version of libmonogc.
18917         
18918         * Makefile.am: Link the static versions of the convenience libraries
18919         into the mono executable.
18920
18921         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
18922
18923 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
18924
18925         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
18926         on integer overflow.
18927
18928         * mini-amd64.c: Reorganize function call code.
18929
18930         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
18931
18932 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18933
18934         * inssel-x86.brg: use xor eax,eax.
18935         
18936         * basic.cs: new tests
18937
18938 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18939
18940         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
18941         in exception throwing code.
18942         
18943 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18944
18945         * inssel-x86.brg: use xor esi,esi.
18946
18947 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18948
18949         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
18950         can trace methods compiled during mini_init () too.
18951
18952         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
18953         CEE_CONV_U4.
18954
18955 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
18956
18957         * Makefile.am: static link on x86 (r=zoltan)
18958
18959 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
18960
18961         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
18962         code since it causes some programs to fail.
18963
18964 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
18965
18966         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
18967
18968 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
18969
18970         * mini.c: ovfops_op_map - add STACK_OBJ case for
18971         CONV_I 
18972         * basic.cs: add test_0_pin_string as test
18973         case for above.
18974
18975 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
18976
18977         * Makefile.am: build C# if srcdir != builddir
18978
18979 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
18980
18981         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
18982         fall-through blocks.
18983
18984 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
18985
18986         * driver.c: enable loop by default again and include abcrem in -O=all.
18987
18988 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
18989
18990         * iltests.il: Add some localloc tests.
18991
18992         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
18993
18994         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
18995         Fixes #62574.
18996
18997         * inssel-amd64.brg: Add some optimizations.
18998
18999         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
19000         for gcc-3.4.
19001
19002         * Makefile.am: Statically link mono against libmono on AMD64.
19003         
19004         * mini-amd64.c inssel-amd64.brg: Optimizations.
19005
19006 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
19007
19008         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
19009
19010         * tramp-amd64.c: Patch calling code in trampolines.
19011
19012 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
19013
19014         * mini-amd64.c: pinvoke struct passing fixes.
19015
19016 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
19017
19018         * mini-sparc.c: redo change, make mono_arch_cpu_init call
19019         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
19020
19021 2004-08-05  Duncan Mak  <duncan@ximian.com>
19022
19023         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
19024         CEE_LDELEM_ANY.
19025
19026 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19027
19028         * mini-amd64.c (emit_move_return_value): Move return value for normal
19029         calls too.
19030
19031 2004-08-05  Martin Baulig  <martin@ximian.com>
19032
19033         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
19034         `type->type'; just modify `type' itself when dealing with enums
19035         and generic instances.
19036         (check_call_signature): Make `simple_type' a `MonoType *'.
19037
19038 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19039
19040         * mini.c: Use OP_PADD to add offsets to addresses.
19041
19042         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
19043
19044 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
19045
19046         * mini-sparc.c (mono_arch_emit_epilog): fix check
19047         for folding last op into restore instruction
19048
19049 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19050
19051         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
19052         helper methods using the code manager.
19053         
19054         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
19055
19056         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
19057
19058 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19059         
19060         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
19061           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
19062
19063         * mini-s390.c: fix tail processing
19064
19065 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
19066
19067         * mini-ppc.c: mul.ovf.un exception name fix.
19068
19069 2004-08-03  Martin Baulig  <martin@ximian.com>
19070
19071         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
19072         instances; before jumping to `handle_enum', also modify `ptype'.
19073
19074 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
19075
19076         * cpu-sparc.md: fcall maximal length too small.
19077
19078 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
19079
19080         * mini-amd64.c mini.h: Add initial support for passing/returning 
19081         structures to/from pinvoked methods.
19082
19083 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
19084
19085         * mini-ppc.c: reg allocator fix.
19086
19087 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
19088
19089         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
19090
19091         * inssel.brg: Optimize memset on 64 bit machines.
19092
19093         * mini-amd64.c: Fix some vararg cases.
19094
19095 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19096
19097         * mini-s390.c: Corrected macro in emit_float_to_int
19098
19099         * s390-abi.cs: Tests to exercise the s390 ABI
19100
19101 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19102
19103         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
19104         caller saved regs.
19105
19106         * basic.cs: Add a test for add.ovf.un.
19107
19108 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
19109
19110         * mini-sparc.c: add case for OP_IDIV_UN
19111
19112 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19113
19114         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
19115         
19116         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
19117
19118 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
19119
19120         * basic.cs: regression tests.
19121
19122         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
19123         regressions.
19124
19125 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19126
19127         * basic.cs: Add a new test.
19128
19129         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
19130         and AOT. Various fixes and optimizations.
19131
19132         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
19133
19134 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
19135
19136         * mini-ppc.c: make sure temp regs are not used for global reg
19137         allocation.
19138
19139 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
19140
19141         * cpu-sparc.md: conv_i8 fix for 64bits
19142
19143         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
19144
19145 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
19146         
19147         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
19148         add opcode for cmp BYTE PTR [eax], imm.
19149
19150         * inssel.brg: Make memcpy and memset takes bases.
19151
19152 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19153
19154         * *-amd64.*: More AMD64 work.
19155         
19156 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19157
19158         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
19159         add a compare-not-equal opcode.
19160         
19161 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
19162
19163         * mini.c: Use mono_init_from_assembly instead of mono_init.
19164         
19165 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19166
19167         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
19168
19169         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
19170
19171         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
19172
19173         * inssel.brg: 64 bit fixes.
19174
19175         * mini.h (MonoCallInst): Add some AMD64 specific data.
19176
19177         * mini.h: Add some OP_P opcodes.
19178
19179 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19180
19181         * basic.cs: tests for 61797 and 61740
19182
19183 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
19184
19185         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
19186         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
19187
19188 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
19189
19190         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
19191
19192         * *-amd64*.*: Ongoing AMD64 work.
19193
19194 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
19195
19196         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
19197
19198         * *-amd64*: Ongoing AMD64 work.
19199
19200         * mini-arch.h: Add AMD64 support.
19201
19202         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
19203
19204         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
19205
19206         * mini-ops.h: Add new opcodes.
19207
19208         * Makefile.am: Add AMD64 support.
19209
19210         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
19211         rules into the inssel-long*.brg files.
19212
19213         * *-amd64.*: Add beginnings of AMD64 backend.
19214
19215 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
19216
19217         * mini.c (print_dfn): commenting out the code that prints
19218         the cil. With -O=deadce, this makes -v -v crash.
19219         
19220         * cpu-pentium.md: make checkthis have a length of 2
19221
19222 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
19223
19224         * mini-sparc.h: fix implementations of __builtin
19225         functions for Sun compiler for V9.
19226
19227 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
19228
19229         * mini.c: use the new stelem.ref wrapper
19230         * exceptions.cs, arrays.cs: new stelem.ref tests
19231
19232 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19233
19234         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
19235         new XSP should work with these changes).
19236
19237 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
19238         
19239         * inssel-{long32,x86,}.brg: trivial optimizations.
19240         
19241 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
19242
19243         * mini.c: load value when emitting box operation in
19244         constrained calls.
19245
19246 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
19247
19248         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
19249         is one byte shorter than cmp DWORD PTR [eax], 0.
19250
19251 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
19252
19253         * inssel-ppc.brg: arguments on the stack are always
19254         relative to the stack pointer (spotted by Neale Ferguson).
19255
19256 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19257
19258         * exceptions-x86.c: delay appending the method name to the trace until
19259         after mono_jit_info_table_find is called, as this gets the real
19260         MonoMethod.
19261
19262 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
19263
19264         * aot.c: register roots
19265
19266 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19267
19268         * aot.c : I could just use PLATFORM_WIN32 flag.
19269
19270 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19271
19272         * aot.c : Reverting the previous fix. This time it broke linux build.
19273
19274 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19275
19276         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
19277
19278 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
19279
19280         * mini.c (handle_stack_args): Remove some more debugging code.
19281         
19282         * mini.c (handle_stack_args): Remove debug output left in by mistake.
19283
19284         * driver.c mini.h aot.c: Allow additional options to be specified with
19285         --aot and pass them to mono_compile_assembly.
19286
19287         * aot.c: Add experimental code to AOT compile all loaded assemblies
19288         on demand and save the code into a cache in the filesystem.
19289
19290         * aot.c: Add support for more wrapper methods.
19291         
19292         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
19293         58863.
19294
19295         * cpu-*.md: Remove removed opcodes.
19296
19297         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
19298         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
19299         related icalls to marshal.c.
19300
19301 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
19302
19303         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
19304
19305         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
19306
19307         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
19308
19309 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
19310         * liveness.c: If liveness is recomputated we need to reset the information
19311         for each variable. This way, if the liveness range has been narrowed
19312         by optimizations that happened after the last computation, we can return
19313         a smaller range.
19314         
19315         For example, if you have
19316         
19317         {
19318                 int i = 0;
19319                 
19320                 // Tons of code that does not affect i
19321                 
19322                 i = foo ();
19323                 ...
19324         }
19325         
19326         i = 0 is dead code and will be removed by SSA. However, when
19327         linear scan gets to the code, i will still appear to be live
19328         throughout the entire block. This prevents good register allocation.
19329
19330 2004-07-06  Martin Baulig  <martin@ximian.com>
19331
19332         * debug-mini.c (mono_debug_init_method): Allow
19333         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
19334         (mono_debug_add_icall_wrapper): New method.
19335
19336         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
19337
19338 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
19339
19340         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
19341         optimization.
19342
19343 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
19344
19345         * aot.c (mono_aot_load_method): Fix loading of debug info.
19346
19347 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19348
19349         * aot.c: Add logging support.
19350
19351 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19352
19353         * mini.h: Add prototype for mono_print_method_from_ip.
19354
19355         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
19356
19357         * inssel.brg: 64 bit fixes.
19358
19359         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
19360         inssel-long32.brg.
19361
19362         * Makefile.am: Add SPARC64 support.
19363
19364 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19365
19366         * aot.c: Fix alignment problems on 32 bit platforms.
19367
19368 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19369
19370         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
19371         SPARC64.
19372
19373         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
19374         problems.
19375
19376         * mini.h: Bump AOT file version. Some 64 bit fixes.
19377
19378 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19379
19380         * inssel-sparc.brg: Add new rule to avoid register moves.
19381
19382         * inssel.brg: Add ldind_to_load_membase helper function.
19383
19384 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
19385
19386         * mini.c: OffsetToStringData intrinsic.
19387         
19388 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19389
19390         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
19391
19392         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
19393         regression tests.
19394
19395         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
19396 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19397
19398         * mini.c: reinstated mono_compile_get_interface_var()
19399         on x86, too, since the change breaks the Gtk# build there as well.
19400
19401 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19402
19403         * driver.c: remove loop from the default optimizations: it seems to
19404         interact badly with some of the other options (see bug #60613).
19405
19406 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
19407
19408         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
19409         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
19410
19411 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
19412
19413         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
19414         vararg-using methods.
19415
19416 2004-06-21  Martin Baulig  <martin@ximian.com>
19417
19418         * mini/mini-exceptions.c
19419         (mono_handle_exception): Added `gpointer original_ip' argument.
19420         After calling mono_unhandled_exception(), call
19421         mono_debugger_unhandled_exception() and if that returns true,
19422         restore the context and return.
19423
19424 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19425
19426         * mini-ppc.c: prefer the use of relative branches so
19427         they won't need to be patched in aot code (patch from Patrick Beard).
19428
19429 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19430
19431         * aot.c: patch from Patrick Beard to make the output assembly
19432         more correct for the MacOSX assembler. Small tweak to
19433         generate sane images on Linux/PPC, too.
19434
19435 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19436
19437         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
19438         case until bug #59509 is fixed (shows up in #60332).
19439
19440 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19441
19442         * mini.c: make sure the needed wrappers are compiled, too, with
19443         precomp.
19444
19445 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
19446
19447         * driver.c: remove NPTL reference in --version output.
19448
19449 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19450
19451         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
19452         generate valid assembly for the Mach-O assembler.
19453
19454 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19455
19456         * driver.c: don't include abcrem in the all optimization specifier
19457         since it slows down jit compilation too much for now.
19458
19459 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
19460
19461         * mini.c: use BIGMUL only if both operands have the same signage.
19462         * iltests.il: Test for bug 60056. (errors related to signage in
19463         BIGMUL).
19464
19465         r=lupus.
19466
19467 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
19468
19469         * mini.c, aot.c: memory leak fixes.
19470
19471 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19472
19473         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
19474
19475 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
19476
19477         * Makefile.am: remove the -static hack completely, it links in
19478         statically glib as well.
19479
19480 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
19481
19482         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
19483         * exceptions.cs: make it compile with new mcs/csc.
19484
19485 2004-06-03 Massimiliano Mantione <massi@ximian.com>
19486         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
19487         and added relevant test case.
19488
19489 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19490
19491         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
19492         regressions in gtk-sharp.
19493
19494 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
19495
19496         * exceptions.cs: New regression tests.
19497
19498         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
19499
19500 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
19501
19502         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
19503
19504 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
19505
19506         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
19507
19508         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
19509
19510 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
19511
19512         * mini.c (mono_jit_runtime_invoke): Init class in this
19513         method instead of trusting mono_jit_compile_method to
19514         do the work (because wrappers can be in object class)
19515
19516 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
19517
19518         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
19519
19520         * basic-long.cs: New regression test.
19521
19522 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
19523
19524         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
19525         and div/rem checks.
19526
19527 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
19528
19529         * Makefile.am: fix miguel's change to build mono statically against
19530         libmono (track build dependencies).
19531
19532 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19533
19534         * cfold.c: Some glib versions do not have G_MININT32.
19535
19536 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
19537
19538         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
19539         with precision of tan, atan, sin and cos, and implemented related
19540         regressions tests (fixes bug 54467, but one new problem appeared and
19541         is not fixed yet).
19542
19543 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19544
19545         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
19546
19547         * exceptions.cs: Add test for constant folding && division by zero.
19548
19549         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
19550         since driver.c is in libmono too, so the optimization was useless.
19551
19552         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
19553         variable to driver.c so the compiler can emit more efficient code to
19554         access them.
19555
19556 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19557
19558         * Makefile.am: don't distribute generated inssel.[ch] files.
19559
19560 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
19561
19562         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
19563         into the default appdomain. Fixes #58707.
19564
19565         * jit-icalls.c: Remove the broken approximation for truncl, doing
19566         no conversion is better.
19567
19568         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
19569         Fixes #58863.
19570
19571 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19572
19573         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
19574         of the mcrxr instruction which is not available on some processors
19575         even if it's documented to be. Implement add and sub overflow correctly
19576         (still not complete for long unsigned). Speed up icalls a bit.
19577
19578 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
19579
19580         * mini.c (mono_jit_compile_method_with_opt): Make sure that
19581         we run .cctor in the current domain instead of target_domain.
19582         
19583         Fixes bug #58558, .cctor not being called in -O=shared.
19584
19585 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19586
19587         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
19588
19589 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
19590
19591         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
19592         which can be done with an imm8, do it that way.
19593         (mono_arch_output_basic_block): ditto for a jmp
19594         (mono_arch_emit_prolog): Computate maximum offset of a label.
19595
19596 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
19597
19598         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
19599         now tries to allocate prefered physical reg's for virtual
19600         regs. This reduces the number of emited spills/loads with
19601         20-30% on our core assemblies.
19602
19603 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19604
19605         * jit-icalls.c: truncl() is not needed and trunc() is
19606         the correct thing to do anyway (bug #58287).
19607
19608 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
19609
19610         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
19611         if available.
19612
19613 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
19614
19615         * driver.c: enable loop optimizations by default.
19616
19617 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19618
19619         * mini-x86.c: fix calc of max loop size when aligning loops start.
19620
19621 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
19622
19623         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
19624         the stack.
19625
19626 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
19627
19628         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
19629         should set carry.
19630
19631         * basic-long.cs: Add tests for add/subtract of immediates with carry.
19632
19633         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
19634         
19635         * mini.c (inline_method): Allways inline some wrappers even if the cost
19636         is too large. Fixes #58785.
19637
19638         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
19639         
19640 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
19641
19642         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
19643         (crichton@gimp.org). Beginning of support for sparc/linux.
19644
19645         * mini-sparc.c: Optimize retrieval of LMF address.
19646
19647 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
19648
19649         * exceptions-ppc.c:  handle alloca in methods with clauses.
19650
19651 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
19652
19653         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
19654
19655 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
19656
19657         * mini.c: Delegate most of the abort signal work to 
19658           mono_thread_request_interruption, which also handles Stop and Suspend
19659           states.
19660
19661 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
19662
19663         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
19664         supports the save/restore lmf opcodes.
19665
19666 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
19667
19668         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
19669         by gcc-3.4 as well.
19670
19671         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
19672
19673 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19674
19675         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
19676         methods which contain array accesses.
19677
19678         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
19679         boundaries. Fixes #58537.
19680
19681         * iltests.il: Add regression test for #58537.
19682
19683 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19684
19685         * mini-x86.c (mono_arch_local_regalloc): Last part of
19686         fix for bug #58633 (releasing register to early).
19687
19688 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
19689
19690         * basic-long.cs: Add new regression test.
19691
19692 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19693
19694         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
19695         register too early on the chain.
19696
19697 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19698
19699         * mini.c (create_helper_signature): Use a helper function to reduce
19700         the code which needs to be written. Also set the calling convention of
19701         icalls on windows. Fixes #57840.
19702
19703 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19704
19705         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
19706         exceptions-ppc.c: added helper function to get the instruction address
19707         from a signal handler context.
19708
19709 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19710
19711         * helpers.c: use g_get_tmp_dir. Invokes happyness 
19712         from gonzalo.
19713
19714 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19715
19716         * helpers.c: Add new env variable to pass args to objdump.
19717         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
19718
19719 2004-05-17  Radek Doulik  <rodo@ximian.com>
19720
19721         * Makefile.am (common_sources): added abcremoval.h so it get
19722         disted and daily mono packages on go-mono.com will build again
19723
19724 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
19725
19726         * abcremoval.c: Fixed coding style, added copyright header.
19727
19728         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
19729
19730         * mini.h: Added prototype for abc removal main function.
19731
19732         * build_relations_propagation_table.pl: Added copyright header.
19733
19734 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
19735
19736         * basic-long.cs: reg test for complex ceq_long bug.
19737
19738 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
19739
19740         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
19741         reg in long and clob case (bug #58343). Fixed/added comments.
19742
19743 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
19744
19745         * mini.c (mono_jit_runtime_invoke): Follow new convention
19746         of calling the invoke method with an function pointer.
19747
19748 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
19749
19750         * ChangeLog: Fix author of memory leak patch.
19751
19752 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
19753
19754         * Makefile.am: fix make dist as well...
19755
19756
19757 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
19758
19759         * cfold.c: Made so that conversions from pointer to int4 are no-ops
19760         on archs where pointers are 4 bytes long.
19761
19762         * Makefile.am: Added abcremoval.c source file.
19763
19764         * abcremoval.c: Added abcremoval.c.
19765
19766         * abcremoval.h: Added abcremoval.h.
19767
19768         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
19769
19770         * inssel.brg: Enabled bounds check removal.
19771
19772         * mini.c: Added support for abcrem optimization.
19773
19774         * mini.h: Added abcrem optimization label.
19775
19776         * driver.c: Added support for abcrem optimization.
19777
19778         * propagated_relations_table.def: Added propagated_relations_table.def.
19779
19780 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
19781
19782         * mini.c, cfold.c: fix style.
19783
19784 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19785
19786         * mini.c: handle issue with the low-level implementation of
19787         some long opcodes (bug #54209).
19788
19789 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
19790
19791         * basic.cs: test for my new cmov stuff.
19792
19793 2004-05-13      Patrik Torstensson
19794
19795         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
19796         opt and added peephole documentation.
19797
19798 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
19799
19800         * tramp-ppc.c: rewrote the generic trampoline code.
19801
19802 2004-05-11      Patrik Torstensson
19803
19804         * mini-x86.c: optimize long shl/shr asm code (one less branch)
19805
19806 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
19807
19808         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
19809
19810         * mini.h mini.c dominators.c: Applied patch from Derek Woo
19811         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
19812
19813         * mini.c: Add new icalls for AsAny marshalling.
19814
19815 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19816
19817         * tramp-ppc.c, mini-ppc.c: more cleanups.
19818
19819 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19820
19821         * mini.c: no warnings.
19822
19823 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19824
19825         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
19826
19827 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
19828
19829         * mini.c: In the thread abort signal handler, if the thread is in the
19830         process of being stoped, don't throw the Abort exception, just stop the
19831         thread.
19832
19833 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
19834
19835         * tramp-ppc.c: removed old code.
19836
19837 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19838
19839         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
19840         do some simple speed optimizations on ppc.
19841
19842 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
19843
19844         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
19845         and large offsets in load/store.
19846
19847 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
19848
19849         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
19850         it causes regressions.
19851
19852 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
19853
19854         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
19855         support.
19856
19857 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19858
19859         * jit-icalls.c: remove warnings.
19860         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
19861         speedups for unsafe code.
19862
19863 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
19864
19865         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
19866
19867 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
19868
19869         * basic-calls.cs: Add new regression test.
19870
19871         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
19872         more portable.
19873
19874         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
19875
19876         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
19877         is no longer used.
19878
19879 2004-05-06      Patrik Torstensson
19880
19881         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
19882         long reg allocation in any reg (not only eax:edx) and implemented 
19883         long shl/shr ops in asm instead of helpers.
19884
19885 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
19886
19887         * mini-sparc.h: Fix warnings.
19888
19889         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
19890         stack.
19891
19892         * mini-exceptions.c (mono_handle_exception): Call the filter in a
19893         separate statement for clarity.
19894
19895         * mini-sparc.c: Update status.
19896
19897 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
19898
19899         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
19900         here.
19901
19902 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19903
19904         * inssel-ppc.brg: another small pre-release workaround:
19905         we don't do overflow detection for long_sub_un.
19906
19907 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19908
19909         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
19910         (also works around a weird ppc bug: 57957).
19911
19912 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
19913
19914         * tramp-ppc.c: trampoline fixes.
19915
19916 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
19917
19918         * mini-ppc.c: fixed typos.
19919
19920 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19921
19922         * mini-ppc.c, exceptions-ppc.c: more code saves registers
19923         at the top of the stack. Fixed typos. Use a frame registers
19924         for all the methods with exception clauses.
19925
19926 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19927
19928         * exceptions-ppc.c: restore fp registers.
19929
19930 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19931
19932         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
19933         order from the stack top (moved the stack room to save the
19934         return value for trace after the param area). Fixed corruption
19935         in restoring registers on unwind.
19936
19937 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19938
19939         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
19940
19941 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19942
19943         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
19944         and prolog/epilog for methods that use it. Allow
19945         enough param area room for varargs methods. Fix miguel's
19946         breakage in exception handling.
19947
19948 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19949
19950         * Makefile.am: run genmdesc only on current arch.
19951
19952 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19953
19954         * exceptions-x86.c:
19955         * mini-x86.h: fix the build on windows.
19956
19957 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
19958
19959         * 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.
19960
19961         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
19962
19963         * mini-exceptions.c: New file.
19964         
19965         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
19966         Move some parts of the x86 exception handling code to an 
19967         arch-independent file so it can be shared with other ports.
19968
19969 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
19970
19971         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
19972
19973 2004-04-26  David Waite  <mass@akuma.org>
19974
19975         * driver.c: remove comma from end of enumeration declaration
19976
19977 2004-04-26  Jackson Harper  <jackson@ximian.com>
19978
19979         * driver.c: parse config file before loading first assembly. This
19980         allows the user gac to be enabled/disabled. 
19981         
19982 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
19983
19984         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
19985         simpler mechanism: we do not care what is encoded initially
19986         (branch absolute or relative), we care about the code and its
19987         target.  I kept the old code for reference for now.
19988
19989         The new code tries first to determine if the jump is anywhere in
19990         the -/+32 absolute meg range, if it succeeds, it encodes using the
19991         absolute branch;  If not, it tried to find something in the
19992         relative range, if not, it uses the handle_thunk code. 
19993
19994 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
19995
19996         * exceptions-ppc.c: use the correct ip register on macosx.
19997
19998 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
19999
20000         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
20001
20002 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
20003
20004         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
20005         Raise exception on integer divide by zero by hand since the hw
20006         doesn't support it. Handle NaNs in FP compares.
20007
20008 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20009
20010         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
20011         code reducing duplication between the platforms and enabled
20012         signal exception handling (on linux for now).
20013
20014 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
20015
20016         * exceptions-ppc.c: more macosx support.
20017
20018 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20019
20020         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
20021
20022 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20023
20024         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
20025
20026 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20027
20028         * iltests.il: more tests.
20029
20030 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20031
20032         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
20033         vars as well.
20034
20035 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20036
20037         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
20038
20039 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20040
20041         * liveness.c: Mark variables as volatile in all basic blocks reachable
20042         from exception clauses.
20043
20044 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
20045
20046         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
20047         inlining.
20048
20049 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20050
20051         * iltests.il, basic.cs: more tests for regalloc.
20052
20053 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20054
20055         * iltests.il: Some tests for register allocation modifications
20056         I have locally.
20057
20058 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
20059
20060         * exceptions.cs: Add regression test for bug #56782.
20061
20062         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
20063         original stack trace if an exception is rethrown. Fixes #56782. Oh,
20064         the beauty of fixing the same thing in 5 different files...
20065
20066 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
20067
20068         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
20069         methods.
20070
20071 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
20072
20073         * mini.c: Add support for STRWLPARRAY marshalling convention.
20074
20075 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20076
20077         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
20078         to init the context to setup the regs pointer).
20079
20080 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20081
20082         * exceptions-ppc.c: more exceptions work.
20083
20084 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20085
20086         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
20087         not allowed.
20088
20089 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20090
20091         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
20092         can use the memory directly.
20093
20094         * cpu-pentium.md: Update documentation from a post from Zoltan. 
20095
20096         add x86_add_membase, x86_sub_membase, x86_mul_membase
20097
20098 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20099
20100         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
20101         GENERAL_REGS they were also hardcoded for all PPC ports.
20102
20103         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
20104
20105         Remove hard-coded limit for floating point registers, use
20106         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
20107
20108         Notice that in MacOS X calling conventions you can fit a lot more
20109         floating point values in registers, so I should update the PInvoke
20110         test to excercise the passing of floating point values on the
20111         stack (currently broken).
20112         
20113 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
20114
20115         * tramp-ppc.c (create_trampoline_code): Added
20116         JUMP_TRAMPOLINE_SIZE. 
20117         (ppc_magic_trampoline): Follow the pattern from
20118         x86_magic_trampoline: if code is set to zero, return. 
20119         (create_trampoline_code): Always pass MonoMethod to the jump
20120         trampoline, before it was passing a null.
20121         (mono_arch_create_jump_trampoline): Implement the jump stub, could
20122         share the code with mono_arch_create_jit_trampoline. 
20123
20124         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
20125         implemented.
20126         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
20127         implemented.  
20128
20129         * cpu-g4.md: Added length for jmp instruction, the worst case
20130         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
20131         for save_lmf).
20132
20133 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
20134
20135         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
20136
20137 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
20138
20139         * mini.c: Only set bblock->real_offset when adding a new bblock, and
20140         before each IL instruction.
20141
20142         * mini.c (CEE_BOX): Fix warnings.
20143
20144 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20145
20146         * mini.c: removed a few unused vars and extra whitespace.
20147
20148 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
20149
20150         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
20151         checks.
20152         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
20153         index.
20154         (OP_GETCHR): use the above
20155         (CEE_LDELEMA): use the above.
20156
20157         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
20158         version of the generic impl.
20159         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
20160         (CEE_LDELEMA): use the above.
20161
20162 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20163
20164         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
20165         Fixes #56317.
20166
20167         * iltests.il: Added new regression test for #56317.
20168
20169 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20170
20171         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
20172         under NetBSD. Fixes #56450.
20173
20174         * liveness.c (update_gen_kill_set): Fix previous patch.
20175
20176 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20177
20178         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
20179
20180 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
20181
20182         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
20183         ldsfld and ldsflda.
20184
20185         * inssel-sparc.brg: Add more optimizations.
20186
20187         * mini-sparc.c: Replace multiply/divide with shifts if possible.
20188
20189 2004-04-01  Martin Baulig  <martin@ximian.com>
20190
20191         * mini.c (handle_box): New static function; moved the
20192         implementation of CEE_BOX here.
20193         (mono_method_to_ir): Added `constrained_call' variable.
20194         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
20195         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
20196         mono_method_get_constrained() to get the method.
20197
20198 2004-04-01  Martin Baulig  <martin@ximian.com>
20199
20200         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
20201         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
20202         (mono_method_to_ir): We don't need these macros anymore since
20203         mono_class_get_full() already takes care of it. 
20204
20205 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20206
20207         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
20208         use @function (as doesn't accept #function here) and check the return
20209         value of system and stop if fails.
20210
20211 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20212
20213         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
20214
20215 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
20216
20217         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
20218
20219         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
20220
20221         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
20222         #56223.
20223
20224         * basic-long.cs: Add test for negation of Int64.MinValue.
20225
20226 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
20227
20228         * mini-sparc.c: Update status.
20229
20230         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
20231
20232         * exceptions-sparc.c: Fix return value in filters.
20233
20234         * inssel-sparc.brg: Fix register allocation in some rules.
20235
20236 2004-03-28  Martin Baulig  <martin@ximian.com>
20237
20238         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
20239         if neccessary.  
20240
20241 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
20242
20243         * mini-x86.c (mono_arch_patch_code): Fix warnings.
20244         
20245         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
20246         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
20247         remove unused conv_u4 opcode.
20248
20249         * mini-x86.c: Remove valgrind workaround since it slows down things
20250         even when mono is not run under valgrind.
20251
20252 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
20253
20254         * mini-sparc.c: Update status.
20255
20256         * inssel-sparc.brg: Add some optimizations.
20257
20258         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
20259         future delay slot filling. Add support for varargs, tail calls and JMP.
20260
20261         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
20262         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
20263
20264         * inssel.brg: Fix register allocation in OP_ARGLIST.
20265
20266         * inssel.brg: Fix warnings.
20267
20268 2004-03-25  Martin Baulig  <martin@ximian.com>
20269
20270         * mini.c (inflate_generic_field): Removed.
20271         (mini_get_method): Removed, use mono_get_method_full(),
20272         (mini_get_class): Removed, use mono_class_get_full().
20273         (mono_method_to_ir): Pass our generic context to
20274         mono_field_from_token().        
20275
20276 2004-03-25  Martin Baulig  <martin@ximian.com>
20277
20278         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
20279         of a `MonoMethod *'.
20280         (mini_get_method): Take a `MonoGenericContext *' instead
20281         of a `MonoMethod *'.
20282         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
20283         a new local variable called `generic_context' which holds the
20284         current `MonoGenericContext *'; use it to lookup things.
20285
20286 2004-03-24  Martin Baulig  <martin@ximian.com>
20287
20288         * mini.c (mini_get_class): New static method; if we're inside a
20289         generic instance, inflate the class if neccessary.
20290         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
20291
20292 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
20293
20294         * iltests.il: New regression test for #55976.
20295
20296         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
20297         #55976.
20298
20299 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20300
20301         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
20302         output.
20303
20304 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20305
20306         * liveness.c: Consider SSA stores as well as loads when making vars
20307         volatile.
20308
20309         * exceptions.cs: New regression tests for register allocation.
20310         
20311 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
20312
20313         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
20314         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
20315           domain lock only to protect puntual access to data structures.
20316           Added access lock for sighash, jit_icall_hash_name, 
20317           jit_icall_hash_addr and domain->code_mp.
20318
20319 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
20320
20321         * driver.c: Print SIGSEGV handling method.
20322
20323         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
20324
20325         * mini.c (setup_jit_tls_data): Handle case when this is called
20326         multiple times for a thread.
20327
20328         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
20329         is different from fbxx_un. Fixes #54303. Also use constants instead of
20330         magic numbers in a lot of places.
20331
20332 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
20333
20334         * exceptions.cs: Fix cctor test when --regression is used.
20335
20336 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
20337
20338         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
20339         for Linux/ppc.
20340
20341 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20342
20343         * inssel-ppc.brg: fixed register assignments for some rules.
20344
20345 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20346
20347         * exceptions.cs: Add test for exceptions in static constructors.
20348
20349         * mini.c (mono_jit_compile_method_with_out): Move the calling of
20350         static constructors outside the domain lock. Fixes #55720.
20351
20352 2004-03-17  Martin Baulig  <martin@ximian.com>
20353
20354         * mini.c (get_generic_field_inst): Removed, this'll never happen.
20355         (inflate_generic_field): Take the `MonoMethod *' instead of the
20356         `MonoClass *' and added support for generic method.
20357         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
20358         have a `field->parent->gen_params', only inflate the field if it's
20359         an open constructed type.
20360
20361 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20362
20363         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
20364         exception object instead of the preconstructed ones.
20365
20366 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20367
20368         * mini.c: reverted changed to sigsegv_signal_handler commited
20369         accidentally in the previous patch.
20370
20371 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20372
20373         * mini.c:
20374         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
20375         running --aot with an old assembly.
20376
20377 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
20378
20379         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
20380         point values.
20381
20382         * mini-sparc.c: Add support for v9 branches with prediction.
20383
20384 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
20385
20386         * mini.c (mini_init): #warning is GNUC only
20387
20388         * mini-sparc.h: implement __builtin_frame_address
20389         and __builtin_return_address for Sun C compiler
20390
20391 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
20392
20393         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
20394
20395 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
20396
20397         * basic-calls.cs: Add test for unaligned byref long argument passing.
20398
20399         * mini-ops.h: Add sparcv9 compare and branch instructions.
20400
20401         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
20402         v9 instructions if we have a v9 cpu.
20403
20404         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
20405         registers for global allocation.
20406
20407         * exceptions-sparc.c: Fixes.
20408         
20409 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
20410
20411         * liveness.c (mono_analyze_liveness): Optimized version.
20412
20413         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
20414
20415         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
20416         sparc work.
20417
20418         * basic-float.cs basic-calls.cs: New regression tests.
20419
20420 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
20421
20422         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
20423         sigaltstack implementation.
20424
20425         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
20426         
20427         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
20428         stuff if SIGSEGV_ON_ALTSTACK is not defined.
20429
20430 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
20431
20432         * mini.c: Fix warnings.
20433         
20434         * mini.c (mono_resolve_patch_target): New function which contains the
20435         arch independent part of the patching process.
20436
20437         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
20438         patching code to a separate function.
20439
20440 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
20441
20442         * mini.c (add_signal_handler): ifdef out on Windows
20443
20444 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
20445
20446         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
20447         cpu-sparc.md: Add exception handling support + other fixes.
20448
20449         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
20450         typed GC detection in --version.
20451
20452         * basic.cs exceptions.cs: New regression tests.
20453
20454         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
20455         the arch specific code can store data during a compilation.
20456
20457         * mini-ops.h: Add OP_SETFRET.
20458
20459         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
20460         function, register a separate icall for each arity, so the icalls can
20461         get a wrapper.
20462         
20463         * mini.c (mono_print_tree): Print negative offsets in a more readable
20464         form.
20465         
20466         * mini.c: Make signal handling work on sparc.
20467         
20468         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
20469
20470         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
20471
20472         * jit-icalls.c: Emulate truncl by aintl on solaris.
20473
20474         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
20475
20476 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
20477
20478         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
20479
20480 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
20481
20482         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
20483         a MarshalByRef type, inline a method that performs the check, taking into
20484         account that the object can be a proxy. Also implemented tow new opcodes:
20485         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20486         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
20487         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20488
20489 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
20490
20491         * mini-ppc.c: if a relative branch displacement is too big
20492         but it points to and area reachable with an absolute branch, 
20493         avoid the thunks.
20494
20495 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
20496
20497         * mini.c: optimize small copies in cpblk.
20498
20499 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
20500
20501         * basic-calls.cs basic-float.cs: New regression tests.
20502
20503         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
20504         negative offsets from %fp. Implement localloc. Fix local register 
20505         allocation. Fix the case when the this argument needs to be saved to
20506         the stack. Implement some missing opcodes.
20507
20508 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
20509
20510         * mini.c (mini_method_compile): Reenable global regalloc in methods
20511         with exception handlers.
20512
20513         * linear-scan.c (mono_varlist_sort): Fix warning.
20514
20515         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
20516
20517         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
20518         regalloc costs.
20519
20520         * liveness.c: Make all variables uses in exception clauses volatile, to
20521         prevent them from being allocated to registers. Fixes #42136.
20522
20523 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
20524
20525         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
20526         causes regressions.
20527
20528         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
20529         argument to mono_arch_regalloc_cost.
20530
20531         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
20532         precisely.
20533
20534 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
20535
20536         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
20537         Make the cost of allocating a variable to a register arch dependent.
20538
20539         * basic-calls.cs: Fix compilation of tests.
20540         
20541         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
20542         helper function to cut back on the number of #ifdefs needed.
20543
20544         * mini-ppc.c: Fix compilation.
20545
20546         * basic-calls.cs: New regression tests.
20547
20548         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
20549
20550         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
20551         of l0 since that is callee saved.
20552
20553         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
20554         to virtual calls.
20555
20556         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
20557         of delay instruction.
20558
20559         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
20560
20561         * mini.h (MonoCallInst): Add 'virtual' flag.
20562
20563         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
20564
20565 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
20566
20567         * *.cs: New regression tests.
20568
20569         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
20570         work.
20571
20572         * mini.c (mono_runtime_install_handlers): Fix build.
20573
20574         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
20575         'signal_stack_size' members.
20576
20577         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
20578         alternate signal stack.
20579
20580         * exceptions-x86.c: Add stack overflow handling.
20581
20582         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
20583         functions to arch independent code.
20584
20585         * mini.c (mono_print_tree): Print more detailed info for load_membase
20586         opcodes.
20587         
20588 2004-02-23  Martin Baulig  <martin@ximian.com>
20589
20590         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
20591
20592 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20593
20594         * mini-x86.c: fixed reg allocation for div/rem.
20595
20596 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
20597
20598         * driver.c (mono_main): Report some configuratio options on --version.
20599
20600 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
20601
20602         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
20603         low in the address space. Correctly flush memory in thunks where we
20604         output native code.
20605
20606 2004-02-20  Martin Baulig  <martin@ximian.com>
20607
20608         * mini.c (mini_get_method): New static method; inflate all generic
20609         methods and methods in open generic instances.
20610         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
20611         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
20612
20613 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20614
20615         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
20616
20617         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
20618
20619 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
20620
20621         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
20622
20623         * mini-sparc.c (flushi mono_arch_output_basic_block): make
20624         it compile using Sun's compiler.
20625
20626 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20627
20628         * 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.
20629
20630         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
20631
20632 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20633
20634         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
20635         code.
20636         * mini-ppc.c: handle calls outside of the allowed range with thunks
20637         allocated using the code manager.
20638         * tramp-ppc.c: use the code manager to hold generated native code.
20639         Fixed the magic trampoline to just patch vtable entries.
20640
20641 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
20642
20643         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
20644         independent file.
20645
20646 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
20647
20648         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
20649         PPC.
20650
20651         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
20652         if we have a working __thread implementation.
20653
20654         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
20655         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
20656
20657 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
20658
20659         * mini-x86.c: Fix compilation under gcc 2.
20660         
20661 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
20662
20663         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
20664         contains a call to the wrapped function.
20665
20666         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
20667         OP_<CALL>_IMM opcodes, and use them under X86.
20668         
20669         * mini.c (mono_jit_find_compiled_method): Fix warning.
20670
20671         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
20672
20673         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
20674
20675         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
20676         functionality to mini.c.
20677
20678         * mini.c (mono_create_jump_trampoline): New function to create a jump
20679         trampoline. Return a compiled method instead of a trampoline if it
20680         exists. Add a cache for jump trampolines.
20681
20682         * mini.c (mono_jit_find_compiled_method): New function to return a
20683         compiled method if it exists.
20684
20685         * mini-x86.c: Call mono_create_jump_trampoline instead of 
20686         mono_arch_create_jit_trampoline.
20687
20688         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
20689         a jump trampoline. Fixes #52092.
20690         
20691 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
20692
20693         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
20694         which is not up-to-date. Add check_corlib_version () instead.
20695
20696         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
20697         have to call it.
20698         
20699         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
20700         since newer valgrind versions do not need it.
20701
20702         * mini.c (mono_jit_compile_method_with_opt): New helper function to
20703         compile a method with a given set of optimizations.
20704
20705         * mini.c: Compile icall wrappers on-demand instead of at startup.
20706
20707         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
20708         wrapper for an icall.
20709
20710 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
20711
20712         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
20713         #54063.
20714
20715         * iltests.il: Add test for non-empty stack before switch instruction.
20716
20717 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
20718
20719         * mini.c: Add support for new stringbuilder marshalling conventions.
20720
20721         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
20722
20723 2004-02-01  Martin Baulig  <martin@ximian.com>
20724
20725         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
20726         in `ginst->mtype_argv'.
20727
20728 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
20729
20730         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
20731         facilitate grepping.
20732
20733 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
20734
20735         * mini.c: fixed buglet in initobj generic implementation for references.
20736
20737 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
20738
20739         * Makefile.am: make the version script conditional.
20740         * jit-icalls.c: handle missing truncl().
20741
20742 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
20743
20744         * exceptions.cs: Add more tests for double->int conversion.
20745
20746         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
20747         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
20748
20749 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
20750
20751         * driver.c: make --verbose --version emit an error
20752         if the loaded corlib doesn't match the runtime version.
20753
20754 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
20755
20756         * mini-ppc.h: export ppc_patch().
20757         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
20758         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
20759         on par or better than on MacOSX.
20760
20761 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
20762
20763         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
20764         mono_lookup_pinvoke_call.
20765
20766         * mini-x86.c: Under windows, the default pinvoke calling convention is
20767         stdcall. Fixes #52834.
20768
20769         * mini.c (optimize_branches): Add an upper bound to the number of
20770         iterations to prevent infinite loops on strange loops. Fixes #53003.
20771
20772 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
20773
20774         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
20775         and ISINST. Fixes #52093.
20776
20777         * objects.cs (test_0_vector_array_cast): New tests.
20778         
20779 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
20780
20781         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
20782         checking in Array.Set ().
20783
20784         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
20785         #52590.
20786
20787         * object.cs (test_0_multi_array_cast): New regression test.
20788
20789 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
20790
20791         * exceptions-ppc.c: fix build on Linux/PPC.
20792
20793 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
20794
20795         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
20796         running under valgrind.
20797         (x86_magic_trampoline): Fix build bustage.
20798
20799         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
20800         negative values as well. This is needed for the encoding of the line number
20801         info, since sometimes the line numbers are not in increasing order.
20802
20803 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
20804
20805         * cpu-pentium.md (localloc): Increase the size of the localloc 
20806         instruction since it is a loop under Win32.
20807
20808         * debug-mini.c (record_line_number): Get rid of unneccesary memory
20809         allocation.
20810
20811 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
20812
20813         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
20814         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
20815         Max Horn (max@quendi.de). Fix file names in comments.
20816
20817 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
20818
20819         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
20820         avoid stack overflow.
20821         (replace_usage): Avoid uninitialized variable warnings.
20822
20823         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
20824         and taking the address of valuetype variables.
20825
20826 2004-01-03  Patrik Torstensson
20827
20828         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
20829         for other purposes than FP later on.
20830
20831 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
20832
20833         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
20834         of tail calls.
20835
20836 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20837
20838         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
20839
20840 2003-12-30  Patrik Torstensson <p@rxc.se>
20841
20842         * mini-x86.h: Decreased number of availiable fp regs.
20843         Solves corner cases with FP spilling.
20844
20845 2003-12-23  Patrik Torstensson <p@rxc.se>
20846
20847         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
20848         for floating point stack tracking / spilling on x86. 
20849         Fixes bug #49012.
20850         
20851         * basic-float.cs: added float mul overflow test.
20852
20853 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
20854
20855         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
20856
20857 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
20858
20859         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
20860         supports for cond branches that overflow the immediate
20861         overflow offset. mcs can compile simple programs.
20862
20863 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
20864
20865         * exceptions-ppc.c: exception handling support wip:
20866         finally handlers get run on exception.
20867
20868 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
20869
20870         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
20871         profiling.
20872
20873 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
20874
20875         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
20876         initial support for stack walking and unwinding.
20877
20878 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
20879
20880         * driver.c (mono_main): Make corlib-out-of-sync message more 
20881         descriptive. Also remove verify_corlib call.
20882
20883 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
20884
20885         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
20886         not overlap with other call's arguments, too.
20887
20888 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
20889
20890         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
20891         move to arch-specific code the choice of arch-specific
20892         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
20893         * mini.c: ensure emulation calls will not interleave
20894         with other calls.
20895
20896 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
20897
20898         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
20899         the magic trampoline stack frame is dropped before executing
20900         the new method.
20901
20902 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
20903
20904         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
20905         and integer to fp conversions. Added support for overflowing
20906         arguments on the stack. Reserve a couple more registers as temps.
20907         Added support for aot compilation (as output still needs to be
20908         tweaked, though).
20909
20910 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
20911
20912         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
20913         Don't overwrite return register in some corner cases.
20914
20915 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
20916
20917         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
20918         static constructors when AOT compiling.
20919
20920         * driver.c (mono_main): Call mono_check_corlib_version.
20921
20922 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
20923
20924         * cpu-g4.md, basic.cs: fixed div target register.
20925
20926 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
20927
20928         * mini-ppc.c, basic.cs: shl_imm fix with test.
20929
20930 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
20931
20932         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
20933         structures by value. Misc fixes.
20934         * objects.cs: more tests.
20935
20936 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
20937
20938         * mini-ppc.c: lconv.ovf.i implemented.
20939
20940 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20941
20942         * mini.c:
20943         (mini_init): don't error out if someone already called g_thread_init.
20944
20945 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
20946
20947         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
20948         to be any type per the spec. Fix abnormal memory usage when
20949         the same object is repeatedly thrown.
20950
20951 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
20952
20953         * mini.c: check for overruns in IL code.
20954
20955 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
20956
20957         * TODO: Add/remove some todo entries.
20958
20959 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
20960
20961         * driver.c (mono_main): Call mono_verify_corlib.
20962
20963 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
20964
20965         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
20966         This has been moved to mini.c
20967         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
20968         type being casted is marshalbyref it could be a proxy, so instead of
20969         emitting the type check code, emit a call to a runtime method that will
20970         perform the check by calling CanCastTo if needed.
20971
20972 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
20973
20974         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
20975         methods with large stack frames under Win32.
20976
20977 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
20978
20979         * Makefile.am: Distribute regression tests.
20980
20981         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
20982         at the end instead of inserting each variable into the sorted list.
20983
20984         * linear-scan.c (mono_varlist_sort): New helper function.
20985         
20986 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
20987
20988         * mini.c: ensure arguments and locals are within bounds.
20989
20990 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
20991
20992         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
20993         related fixes.
20994
20995 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
20996
20997         * mini.c (mono_cprop_copy_values): Fix crash.
20998
20999         * aot.c: Set verbosity back to 0.
21000         
21001 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21002
21003         * regalloc.c: complete memory leak fix by Laurent Morichetti
21004         (l_m@pacbell.net).
21005
21006 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21007
21008         * driver.c (main_thread_handler): Revert the previous patch.
21009
21010         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
21011         under valgrind.
21012
21013         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
21014         memory from the memory pool.
21015
21016         * driver.c (main_thread_handler): Turn on all optimizations when
21017         --aot is used.
21018
21019         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
21020         an array for better performance.
21021
21022         * regalloc.c (mono_regstate_assign): Fix memory leak.
21023
21024         * debug-mini.c (mono_debug_serialize_debug_info): New function to
21025         serialize the debug info.
21026
21027         * debug-mini.c (mono_debug_add_aot_method): New function to load the
21028         debug info from the serialized representation.
21029
21030         * aot.c: Save debug info into the generated file and load it when 
21031         loading a method.
21032
21033         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21034
21035 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21036
21037         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
21038         More FP-related fixes.
21039
21040 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
21041
21042         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
21043         and register allocation buglet. Hello world now runs.
21044
21045 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21046
21047         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
21048         * tramp-ppc.c: fixed class init trampoline.
21049         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
21050
21051 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21052
21053         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
21054         mini.c: more ppc changes/fixes.
21055
21056 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21057
21058         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
21059         Also optimize the case when the arguments are the same in the caller 
21060         and in the callee.
21061
21062         * iltests.il: Add tests for tail calls with valuetype arguments.
21063
21064 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21065
21066         * mini-ppc.c: fixes for struct return type.
21067
21068 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
21069
21070         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
21071         mono_spillvar_offset() to arch-specific code.
21072
21073 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
21074
21075         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
21076
21077 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21078
21079         * exceptions-x86.c: Fix stack space leaks.
21080         
21081         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
21082         registers from the lmf if the method has save_lmf set.
21083
21084 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
21085
21086         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
21087         of icall wrappers into InvokeInDomain, since these are now per-domain.
21088
21089 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
21090
21091         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
21092         make some opcode emulation and intrinsic ops enabled/disabled 
21093         according to the architecture. More fixes.
21094
21095 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
21096
21097         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
21098
21099 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21100
21101         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
21102         arch-specific handling for 'this' and struct return type to
21103         arch-specific code.
21104
21105 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21106
21107         * aot.c: prevent divide by zero error when reporting (it happened with
21108         Accessibility.dll).
21109
21110 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
21111
21112         * mini.h (inst_switch): Remove unused macro.
21113
21114 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21115
21116         * aot.c:
21117         (load_aot_module): free 'info->methods' and 'info' properly. No more
21118         "free(): invalid pointer blah" messages when you have an old aot
21119         compiled assembly.
21120
21121 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
21122
21123         * jit-icalls.c, mini.c: Added support for context static fields.
21124
21125 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21126
21127         * mini.c (mono_method_blittable): Methods which set LastError are not 
21128         blittable either. Fixes #51108.
21129         
21130 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21131
21132         * mini.c: flush icache.
21133         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
21134
21135 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21136
21137         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
21138
21139 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
21140
21141         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
21142         safe on IA32.
21143
21144         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
21145         vararg calls.
21146
21147         * inssel.brg (CEE_MKREFANY): Fix AOT case.
21148
21149 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
21150
21151         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
21152         instruction when the result is discarded.
21153
21154         * iltests.il (test_0_div_regalloc): New regression test.
21155
21156         * arrays.cs: Fix compilation error.
21157
21158 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
21159
21160         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
21161         float rules to inssel-x86.brg: sane architectures with FP registers
21162         don't need to implement these rules.
21163
21164 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21165
21166         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
21167
21168 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21169
21170         * mini.h, inssel-long32.brg: fixed endianess issues in int64
21171         implementation of 32 bit systems.
21172
21173 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21174
21175         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
21176         (Jeroen Zwartepoorte).
21177
21178 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21179
21180         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
21181         the caller and the callee matches.
21182         
21183         * mini.c (mono_method_to_ir): Add comment.
21184
21185         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
21186         signbit is missing on some platforms.
21187
21188 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
21189
21190         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
21191
21192         * mini.c (setup_jit_tls_data): Call the new function.
21193         
21194         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
21195
21196         * mini-x86.c: Add experimental support for fast access to the lmf
21197         structure under NPTL/Linux 2.6.x.
21198
21199 2003-11-06  Martin Baulig  <martin@ximian.com>
21200
21201         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
21202         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
21203         the debugger.
21204
21205 2003-11-02  Martin Baulig  <martin@ximian.com>
21206
21207         * mini.c (inflate_generic_field): New static method.
21208         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
21209         generic instance and the field is declared in a generic type, call
21210         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
21211
21212 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
21213
21214         * mini.h mini.c (mono_method_same_domain): New function to return
21215         whenever the caller and the callee are in the same domain.
21216
21217         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
21218
21219 2003-10-30  Martin Baulig  <martin@ximian.com>
21220
21221         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
21222         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
21223         method parameters.
21224         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
21225         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
21226
21227 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
21228
21229         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
21230         propagation.
21231
21232         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
21233         object here, so it is in the correct appdomain etc.
21234
21235 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
21236
21237         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
21238         already done.
21239         (mono_method_to_ir): Avoid freeing the type created returned from
21240         mono_type_create_from_typespec, since it is put into an internal cache
21241         by the function. Fixes pointer.exe.
21242
21243         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
21244         trampolines for icalls and pinvokes as well. Fixes #33569.
21245
21246 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
21247
21248         * mini.c: Update after appdomain changes.
21249
21250         * mini.c (mono_jit_compile_method_inner): Allways compile native
21251         method wrappers in the root domain, since there can only be one
21252         instance of them, whose address is stored in method->info.
21253
21254 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
21255
21256         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
21257         environment variable. Instead detect automatically whenever running
21258         under valgrind using the magic macro RUNNING_ON_VALGRIND from
21259         valgrind.h.
21260
21261 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
21262
21263         * trace.c, trace.h: New files that implement the new trace option
21264         parsing. 
21265
21266         * driver.c: Document new --trace options.
21267
21268         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
21269         mini-x86.c: Apply:
21270
21271         -       if (mono_jit_trace_calls)
21272         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
21273
21274         * mini.h: prototypes.
21275         
21276 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
21277
21278         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
21279
21280         * mini.c inssel.brg: Implement typedefbyref opcodes.
21281
21282         * mini.c (mono_jit_compile_method): Remove unused local variable.
21283
21284         * mini.c (mono_jit_compile_method_inner): Ditto.
21285         
21286 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
21287
21288         * tramp-x86.c (x86_class_init_trampoline): Fix build.
21289         
21290         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
21291
21292 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
21293
21294         * mini.c (mono_no_aot): Remove unused global variable.
21295
21296         * mini.c: Thread safety fixes.
21297
21298 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
21299
21300         * mini.c (mono_create_class_init_trampoline): Add a lock around
21301         class_init_hash_addr.
21302
21303         * arrays.cs (test_0_newarr_emulation): Add new regression test for
21304         #30073.
21305
21306         * mini.c: Decompose the NEWARR instruction before decomposing its
21307         arguments. Fixes #30073.
21308
21309 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
21310
21311         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
21312         convention.
21313
21314 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
21315
21316         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
21317
21318         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
21319
21320         * driver.c: Add support for compiling icall wrappers to --compile.
21321
21322 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
21323
21324         * inssel.brg: The empty value in class->interface_offsets is -1, not
21325         0. Fixes #49287.
21326
21327 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
21328
21329         * objects.cs: New test for 'is' operator on an array of interfaces.
21330
21331 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21332
21333         * tramp-ppc.c: update trampoline code to support jumps
21334         and class initialization.
21335
21336 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
21337
21338         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
21339
21340         * inssel.brg (OP_UNBOXCAST): Fix #46027.
21341
21342         * inssel.brg (OP_UNBOX): Remove unused rule.
21343
21344         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
21345         region instead of one for each method. Fixes #47813.
21346
21347 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
21348
21349         * exceptions.cs (test_0_nested_finally): New regression test for
21350         nested exception handlers.
21351
21352         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
21353
21354         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
21355
21356         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
21357         inlining.
21358
21359         * mini.c (mono_method_check_inlining): Make the inlining limit 
21360         configurable by an environment variable.
21361         
21362         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
21363
21364         * mini.h: Bump AOT file version.
21365
21366         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
21367         token, store the image along with the token, since the token might not 
21368         refer to the same image as the method containing the relocation, 
21369         because of inlining.
21370
21371 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
21372
21373         * mini.c (mono_precompile_assemblies): New function to compile
21374         all methods in all loaded assemblies.
21375
21376         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
21377
21378         * regalloc.h regalloc.c (MonoRegState): Change the type of 
21379         iassign and fassign to int*, since they can contain large negative
21380         values if the register is spilled. Also added some comments. Fixes
21381         #45817.
21382
21383         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
21384         under Win32. Fixes #42964.
21385
21386 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
21387
21388         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
21389
21390         * aot.c: Added support for AOT compiling methods which contain calls
21391         to wrappers. Currently, only remoting-invoke-with-check wrappers are
21392         handled.
21393         
21394         * driver.c (compile_all_methods): Run the compilation in a thread
21395         managed by mono. Fixes #44023.
21396
21397         * mini.c (mono_codegen): Print full method name in verbose output.
21398
21399         * mini-x86.c (mono_arch_patch_code): Fix warning.
21400         
21401         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
21402         jumps, since the method we are jumping to might be domain-specific.
21403
21404         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
21405
21406 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21407
21408         * inssel.brg: string chars are unsigned.
21409
21410 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
21411
21412         * TODO: New todo item.
21413
21414         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
21415         which calls mono_runtime_class_init and patches the call site to
21416         avoid further calls.
21417         (mono_arch_create_class_init_trampoline): New arch specific function 
21418         to create a class init trampoline.
21419         (create_trampoline_code): Generalized so it can create
21420         class init trampolines as well.
21421
21422         * mini.c (helper_sig_class_init_trampoline): New helper variable.
21423         (mono_create_class_init_trampoline): New function to create and cache
21424         class init trampolines.
21425         (mono_find_class_init_trampoline_by_addr): New function to lookup the
21426         vtable given the address of a class init trampoline. Used by the
21427         patching process.
21428         (mono_codegen): Generate a call to a trampoline instead of
21429         mono_runtime_class_init in LDSFLD[A].
21430         (mono_codegen): Add relocations for the new trampoline.
21431         
21432         * mini.h mini-x86.c aot.c: Added a new relocation type: 
21433         MONO_PATCH_INFO_CLASS_INIT.
21434
21435         * mini.h: Bump AOT version number.
21436
21437         * aot.c: Create a copy of the loaded code instead of using the original
21438         so methods which call each other will be close in memory, improving
21439         cache behaviour.
21440         
21441         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
21442         patch since it breaks the regression tests.
21443         
21444         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
21445         for the register saving instruction sequence since the 
21446         frame_state_for function in glibc 2.3.2 don't seem to detect it.
21447
21448 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
21449
21450         * TODO: Fix todo item && remove another.
21451
21452 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
21453
21454         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
21455         previous checkin.
21456
21457         * aot.c: Moved the check for MONO_LASTAOT into the initialization
21458         function of the module.
21459
21460         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
21461         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
21462         --no-aot command line option.
21463
21464 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
21465
21466         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
21467         by Bernie Solomon (bernard@ugsolutions.com).
21468
21469         * inssel.brg: Refactor the interface offset table related code into
21470         its separate functions and add support for the AOT case.
21471
21472 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
21473
21474         * aot.c (mono_aot_get_method_inner): Fix memory leak.
21475         
21476         * aot.c: Added mono_aot_verbose variable and made all debugging
21477         output depend on the value of this variable.
21478
21479         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
21480         method_label and info_label.
21481
21482         * mini.h mini-x86.c aot.c: Added a new relocation type 
21483         MONO_PATCH_INFO_IID for klass->interface_id.
21484
21485         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
21486         the MonoJitInfo structure.
21487
21488         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
21489         a non-root appdomain in shared mode.
21490
21491 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21492
21493         * aot.c: make aot loader less verbose. Remove free of unused variable.
21494
21495 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
21496
21497         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
21498
21499         * .cvsignore: Added *.dll.
21500
21501         * mini.c (mono_print_tree_nl): New function callable while debugging.
21502
21503         * mini.c (mono_print_code): Export this.
21504
21505         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
21506         patched code.
21507
21508 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
21509
21510         * mini.h (MonoCompile): Added 'jit_info' field.
21511
21512         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
21513         the cfg structure, since it is needed by the AOT compiler.
21514
21515         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21516
21517         * aot.c: A major rewrite. Changes include:
21518         - save exception tables for methods which have them.
21519         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
21520         to g_module_symbol.
21521         - reworked the file format so it is now much smaller and needs
21522         fewer relocation entries.
21523         
21524 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21525
21526         * aot.c (load_aot_module): Fix build bustage on platforms without
21527         Boehm GC.
21528
21529 2003-09-04  Martin Baulig  <martin@ximian.com>
21530
21531         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
21532
21533 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21534
21535         * TODO: Some new optimization ideas.
21536
21537         * aot.c: Move AOT module loading logic here from mono_assembly_open.
21538
21539         * aot.c: Save the optimization flags used to compile the code into
21540         the AOT module.
21541
21542         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
21543         support emitting domain specific code.
21544         
21545         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
21546         no longer domain neutral. It can be made domain neutral by compiling 
21547         with --optimize=shared.
21548
21549         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
21550         between appdomains.
21551
21552         * driver.c mini.h mini.c: New --no-aot debugging option which disables
21553         loading of AOT code.
21554
21555         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
21556         
21557         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
21558         if there is no domain neutrality information.
21559
21560 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
21561
21562         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
21563         format version into the generated library.
21564
21565         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
21566         callee method into the caller since one of them could be shared.
21567
21568         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
21569         system exceptions from AOT code now works.
21570
21571         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
21572         method if it is domain neutral and the callee is not.
21573
21574         * graph.c (cfg_emit_one_loop_level): Fix warning.
21575
21576 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
21577
21578         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
21579         last checkin.
21580
21581 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
21582
21583         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
21584         is needed  by code which is executed before mono_runtime_init ().
21585         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
21586         
21587         * mini.c (mono_thread_abort): Fix warning.
21588         (mono_jit_compile_method): Call static constructor in the AOT case too.
21589
21590         * aot.c (mono_compile_assembly): Fix warning.
21591
21592 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21593
21594         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
21595
21596 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
21597
21598         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
21599
21600         * cpu-pentium.md: Fix the length of call opcodes so they include the
21601         ESP restoring instruction. Fixes #47968.
21602
21603 2003-08-28  Martin Baulig  <martin@ximian.com>
21604
21605         * mini-x86.c (mono_arch_call_opcode): Added support for
21606         MONO_TYPE_GENERICINST.
21607
21608         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
21609
21610 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
21611
21612         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
21613         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
21614
21615         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
21616         metadata_section.
21617
21618 2003-08-26  Martin Baulig  <martin@ximian.com>
21619
21620         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
21621         when reporting an error, set this to the actual error location.
21622         (mono_method_to_ir): Report the correct error location if
21623         get_basic_blocks() returned an error.
21624
21625 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
21626
21627         * mini.c (mono_type_blittable): OBJECT is not blittable.
21628         (mono_method_blittable): Methods which have marshalling descriptors
21629         are not blittable either. Fixes #47842.
21630
21631 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
21632
21633         * driver.c mini.c: Use an environment variable instead of a global 
21634         variable. Also fix the build.
21635
21636         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
21637         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
21638         reporting this. 
21639
21640         * driver.c mini.c: Added --with-valgrind option to turn off some
21641         code which prevents mono from running under valgrind.
21642
21643         * mini.c (mono_emit_call_args): Fixed warning.
21644
21645         * mini.c (mono_emulate_opcode): Fixed warning.
21646
21647 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21648
21649         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
21650         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
21651         regalloc.c, regalloc.h: specify available registers in arch-specific
21652         code and support floats in the regallocator (patch by Laurent Morichetti 
21653         <l_m@pacbell.net>)
21654
21655 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21656
21657         * mini.c: mono_thread_current() can be called only after
21658         mono_runtime_init(): rearrange code to not call it early on.
21659
21660 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21661
21662         * mini.c: allocate jump tables in the code mempools.
21663
21664 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21665
21666         * mini.c, mini.h: make sure per-thread data allocated by the jit is
21667         freed.
21668
21669 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
21670
21671         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
21672         12 to 16.  This fixes bug #47453.
21673
21674
21675 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21676
21677         * mini-ppc.c: fixed indexed load and unsigned compares.
21678
21679 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
21680
21681         * mini.c: reenabled installation of handler for
21682           thread abort signal.
21683
21684 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21685
21686         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
21687         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
21688         until it's fixed and actually useful.
21689
21690 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21691
21692         * inssel-long32.brg: couple more opcodes implemented.
21693
21694 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21695         
21696         * mini-sparc.c: Even more opcodes implemeted.
21697
21698 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
21699
21700         * mini-sparc.c: More opcodes implemented.
21701
21702 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
21703
21704         * mini-sparc.c: More opcodes implemented.
21705
21706 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21707
21708         * inssel-sparc.brg: Add some needed rules.  Direct
21709         copy from PPC.
21710         * Makefile.am: Use inssel-sparc.brg
21711         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
21712         an assert happy for now.
21713
21714 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
21715
21716         * mini-sparc.c: Fixed compile errors.
21717         * exceptions-sparc.c: Same.  We now produce a mono binary 
21718         on sparc-linux.  Yea.
21719
21720 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
21721
21722         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
21723         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
21724         They compile, but do not work.
21725
21726 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21727
21728         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
21729         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
21730         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
21731         (ct@gentoo.org).
21732
21733 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21734
21735         * mini.c: more opcodes implemented and better support for generics.
21736
21737 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21738
21739         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
21740         * mini.c, mini.h: first cut at generics support: some new instructions 
21741         added and changed the behaviour of some of the existing ones.
21742
21743 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
21744
21745         * mini.c: Removed definition of metadata_shared mutex here.
21746
21747 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
21748
21749         * mini-x86.c: make vararg calls work for instance methods.
21750
21751 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21752
21753         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
21754         returns the arguments in a separte list, now.
21755
21756 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21757
21758         * aot.c, mini.c: updates for array type representation changes.
21759
21760 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
21761
21762         * mini.c: register function to perform jit shutdown.
21763
21764 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21765
21766         * mini.c: use a faster allocator if possible.
21767
21768 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21769
21770         * aot.c: some cleanups and portability changes.
21771
21772 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21773
21774         * mini.c: use faster allocation for CEE_BOX if possible.
21775
21776 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
21777
21778         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
21779         Moved inlined mempcy code to its own function so that is can be
21780         reused. Added an inline memset function as well (optimized initobj).
21781         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
21782
21783 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
21784
21785         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
21786
21787 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
21788
21789         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
21790         arch code can setup the cpu for CLR execution, if needed.
21791         We use it on x86 to set the precision of FP operations.
21792
21793 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
21794
21795         * mini.c: disable some optimizations if we can guess they'll cost too
21796         much for a given method.
21797
21798 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21799
21800         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
21801         
21802 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21803         * mini.h mini.c mini-x86.c: Added instruction level coverage 
21804         info collection support.
21805
21806 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21807
21808         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
21809         is now implemented in the profiling API. Get rid of a couple of
21810         unnecessary global variables.
21811
21812 2003-06-15  Nick Drochak <ndrochak@gol.com>
21813
21814         * basic-long.cs: tests for negative values for bigmul, and unsigned.
21815         * cpu-g4.md: add op_bigmul and op_bigmul_un
21816         * cpu_pentium.md: add op_bigmul_un
21817         * inssel-long32.brg: add rule for unsigned bigmul
21818         * mini-ops.h: define OP_BIGMUL_UN
21819         * mini-x86.c: THE BUG: handle (un)signed properly
21820         * mini.c: choose unsigned opcode if needed.
21821         This set of patches fixes bug #44291
21822
21823 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
21824
21825         * mini.c (optimize_branches): improved to handle all kinds of
21826         conditional branches.
21827
21828 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21829
21830         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
21831         don't raise exceptions.
21832
21833 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21834
21835         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
21836         to arch-specific files.
21837
21838 2003-06-09  Martin Baulig  <martin@ximian.com>
21839
21840         * Makefile.am (libs): Added $(LIBGC_LIBS).
21841
21842 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
21843
21844         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
21845         and OP_ATAN (fixes bug#44293).
21846
21847 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
21848
21849         * Makefile.am, mini-x86.c: rename cpu description array to
21850         pentium_desc, since some compilers define the 'pentium' preprocessor
21851         symbol.
21852
21853 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
21854
21855         * mini.c (mini_select_instructions): add explicit branch if the
21856         following block is not the false target of a conditional branch -
21857         we need this with any optimization that reorder or remove bblocks
21858
21859         * mini.c (optimize_branches): bug fixes
21860
21861 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
21862
21863         * mini.c (mono_method_to_ir): inline static readonly fields
21864
21865         * ssa.c (fold_tree): start cfold support for long (very simple
21866         cases only)
21867
21868         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
21869
21870 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
21871
21872         * inssel.brg: fixed memcpy (bug #44219).
21873
21874 2003-06-05  Dick Porter  <dick@ximian.com>
21875
21876         * driver.c: Set the glib log levels to not abort if g_message
21877         recurses.
21878
21879         g_set_prgname() has to happen before mini_init() so that the
21880         process handle gets the info.
21881         
21882 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21883
21884         * driver.c: add intrins to the default optimizations to get wider
21885         exposure.
21886
21887 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21888
21889         * mini.h: some large basic blocks will overflow a 16-bit
21890         integers for symbolic registers.
21891
21892 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21893
21894         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
21895         (mono_arch_output_basic_block): fix bug 43499 
21896
21897 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
21898
21899         * mini.c: kill duplicated definition of mono_debug_format.
21900
21901 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
21902
21903         * mini-x86.c, arrays.cs: fixed register allocation bug.
21904
21905 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
21906
21907         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
21908
21909         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
21910
21911 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21912
21913         * mini.c:
21914         (print_method_from_ip): also print source location information if
21915         available.
21916
21917 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
21918
21919         * mini.c (mono_find_block_region): bug fix in region code
21920         (mini_method_compile): enable removing unreachable code again, but
21921         only in methods without exception clauses.
21922
21923 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
21924
21925         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
21926         Implemented arglist opcode and handling of TypedReference type.
21927         Fixed x86 call convention when a structure is returned.
21928         Minimal support for calling static vararg methods.
21929
21930 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
21931
21932         * mini.c (mini_method_compile):  always remove unreachable code,
21933         because the code in them may be inconsistent  (access to dead
21934         variables for example).
21935
21936 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
21937
21938         * driver.c, debug-mini.c: warning fixes.
21939
21940 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
21941
21942         * Makefile.am, jit.h, mini.h: install header for embedding mono.
21943
21944 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
21945
21946         * mini.c: thread-static fields are registered in mono_class_vtable(),
21947         so ensure the function is called before checking for them.
21948
21949 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
21950
21951         * mini.c (optimize_branches): fix for bug 43586
21952
21953         * jit-icalls.c (mono_llmult_ovf): added an additional check for
21954         overflow (fixes Bug #43639)
21955
21956 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21957
21958         * mini.c, objects.cs: allow the use of stobj for primitive types.
21959
21960 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21961
21962         * mini.c: be less strict about argument checking until we support
21963         running the verifier.
21964
21965 2003-05-27  Nick Drochak <ndrochak@gol.com>
21966
21967         * basic-long.cs: tests for (ulong)int * (ulong)int also
21968         * mini.c: use the same trick for (ulong)int * (ulong)int
21969
21970 2003-05-27  Nick Drochak <ndrochak@gol.com>
21971
21972         * basic-long.cs: add regression test for (long)int * (long)int
21973         * cpu-pentium.md: add op_bigmul specification
21974         * inssel-long32.brg: add OP_BIGMUL rule
21975         * mini-ops.h: add OP_BIGMUL
21976         * mini-x86.c: register allocator: handle case where src1 needs to be
21977         in EAX.
21978         * mini.c: substitute special BIGMUL opcode in the tree for 
21979         (long)int * (long)int
21980
21981 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21982
21983         * jit-icalls.c: call the type ctor on field access if needed.
21984
21985 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21986
21987         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
21988         to a method (including results of ldelema, bug#43207).
21989
21990 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
21991
21992         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
21993         colors to show exception handler blocks.
21994
21995         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
21996         (fix for pinvoke7.cs).
21997
21998 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21999
22000         * mini.h, mini.c: ensure correct initialization order for types that
22001         require it. Prepare for lazy compilation of jit icall wrappers.
22002         Provide a name for opcode emulation to reduce unneeded mallocing.
22003
22004 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
22005
22006         * mini-x86.c: better register restoring code and profiling
22007         support for tail calls.
22008
22009 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22010
22011         * mini.h, driver.c: prepare for leaf methods optimization.
22012
22013 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22014
22015         * mini.c: get targets of branches before converting a method.
22016
22017 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
22018
22019         * mini.c (optimize_branches): added some experimental code (disbaled) 
22020
22021 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
22022
22023         * mini.c (optimize_branches): fix branch to branch optimization 
22024
22025         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
22026
22027         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
22028
22029         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
22030
22031         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
22032         if needed.
22033
22034 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
22035
22036         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
22037         enable use of interface variables again.
22038
22039         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
22040         I1 to registers because there is no simply way to sign extend 8bit
22041         quantities in caller saved registers on x86.
22042
22043         * inssel-float.brg: set costs of some rules to 2 so
22044         that monobure always select the arch. specific ones if supplied,
22045         regardless of the order we pass the files to monoburg.
22046
22047 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22048
22049         * mini.c, mini-x86.c: since the magic trampoline for jumps
22050         can't patch the code directly, we do it as soon as the
22051         method gets compiled.
22052
22053 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22054
22055         * mini-x86.c, mini.h: introduce a new patching method
22056         to support CEE_JMP and tail calls.
22057         * mini.c: obey tail.call. Don't precompile methods target
22058         of CEE_JMP.
22059         * tramp-x86.c: new trampoline code to handle methods
22060         reached through a jump.
22061
22062 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
22063
22064         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
22065         bit values to registers
22066
22067 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
22068
22069         * mini.c (mono_compile_get_interface_var): share interface
22070         variables if possible.
22071
22072 2003-05-16  Martin Baulig  <martin@ximian.com>
22073
22074         * debug-mini.c (mono_init_debugger): New function to initialize
22075         the debugger.  This is not in the debugger since it needs to
22076         access some of mini's internals.
22077
22078 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22079
22080         * mini.c (mono_method_to_ir): inlining fixes/cleanups
22081
22082 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
22083
22084         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
22085         for value type handling.
22086
22087 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22088
22089         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
22090         (mono_method_check_inlining): enable inlining of all kinds of wrappers
22091
22092 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
22093
22094         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
22095           the constructor through a proxy.
22096
22097 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22098
22099         * jit-icalls.c, inssel.brg: fixes to array element address
22100         calculations.
22101
22102 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
22103
22104         * mini-x86.c (is_regsize_var): allocate pointer to registers
22105
22106 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22107
22108         * driver.c: fixed typo, added intrins to the set of optimizations
22109         tested with regressions.
22110
22111 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
22112
22113         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
22114         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
22115         test case.
22116
22117 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
22118
22119         * inssel.brg: remove some common pop instructions without side effects
22120
22121 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22122
22123         * inssel-x86.brg: fixed thinko in int to double conversions.
22124
22125 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
22126
22127         * mini.c, jit-icalls.c: added runtime thread-static variable support.
22128
22129 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22130
22131         * inssel-long32.brg: two more missing instructions.
22132
22133 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
22134
22135         * mini.c (mono_emit_call_args): set the cil_code for all arguments
22136         if not already set.
22137
22138 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
22139
22140         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
22141         correctly.
22142
22143         * basic-float.cs: Added tests for negative zero.
22144
22145 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22146
22147         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
22148         a couple of missing operations for long casts, with test cases.
22149
22150 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22151
22152         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
22153
22154 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
22155
22156         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
22157         code size estimation.
22158
22159 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
22160
22161         * mini.c (mono_jit_create_remoting_trampoline): make it work with
22162         abstract methods (fix bug 42542)
22163
22164         * aot.c: add ability to handle array types
22165         
22166 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
22167
22168         * mini.c: Call the _specific versions of the object allocation
22169         functions if possible.
22170
22171 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22172
22173         * driver.c: call setlocale ().
22174
22175 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22176
22177         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
22178         windows build.
22179
22180 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
22181
22182         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
22183
22184         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
22185         wrappers (fix bug 42122)
22186
22187 2003-05-04  Martin Baulig  <martin@ximian.com>
22188
22189         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
22190
22191         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
22192         s/mini_set_defaults/mono_set_defaults/g.
22193
22194 2003-05-04  Martin Baulig  <martin@ximian.com>
22195
22196         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
22197
22198 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22199
22200         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
22201         (reported by Don Roberts).
22202
22203 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22204
22205         * mini.c: temporarily work around two bugs for this release.
22206
22207 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22208
22209         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
22210         that contains -export-dynamic and it makes using the ld script
22211         useless.
22212         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
22213
22214 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22215
22216         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
22217         specific cpu.
22218
22219 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22220
22221         * mini.c: make sure leave calls all the needed finally blocks,
22222         even when the target jumps out of multiple exception clauses.
22223
22224 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22225
22226         * ldscript, Makefile.am: add linker script to reduce the number of
22227         exported symbols (should also fix the issues with libwine defining
22228         some of the same symbols in io-layer).
22229
22230 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
22231
22232         * driver.c (mini_main): Avoid assertion when no file name is given on 
22233         the command line.
22234
22235 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
22236
22237         * driver.c: added --version/-V command line option.
22238         Added the inline optimization in the regression tests.
22239
22240 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22241
22242         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
22243         to the type in the method signature (fixes bug#42134).
22244
22245 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
22246
22247         * mini.c: when inlining, check this is not null only when needed (bug #42135).
22248
22249 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
22250
22251         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
22252
22253 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22254
22255         * driver.c: fixed bug #42100.
22256
22257 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
22258
22259         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
22260
22261 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22262
22263         * mini.c: moved most of the code required to do inlining to its own
22264         function so it can be reused. Inline also ctors if appropriate.
22265
22266 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
22267
22268         * Makefile.am: Link with -export-dynamic so shared libs loaded by
22269         the runtime can call mono API functions.
22270
22271 2003-04-27  Martin Baulig  <martin@ximian.com>
22272
22273         * debug-mini.c (mono_debug_init_method): Added
22274         `guint32 breakpoint_id' argument; if the method has a breakpoint,
22275         send a notification to the debugger.
22276
22277         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
22278         running in the Mono Debugger, just pass the breakpoint number to
22279         mono_debug_init_method().
22280
22281         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
22282
22283 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
22284
22285         * mini.c: allow some more unsafe compares.
22286
22287 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22288
22289         * mini-x86.c, Makefile.am: make distcheck works (partially from
22290         a patch by Richard Lee <r.h.lee@attbi.com>).
22291         * regset.c, regset.h: removed, they are unused.
22292
22293 2003-04-25  Dick Porter  <dick@ximian.com>
22294
22295         * driver.c: Usage reports the name as 'mono' not 'mini'
22296         * exceptions-x86.c: Build and run on freebsd
22297
22298 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
22299
22300         * Makefile.am: install the program with the 'mono' name and
22301         the library as libmono instead of mini and libmini.
22302
22303 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22304
22305         * driver.c: provide the APIs for the embedding interface of the old jit.
22306
22307 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
22308
22309         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
22310
22311 2003-04-23  Martin Baulig  <martin@ximian.com>
22312
22313         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
22314
22315         * driver.c: Added `--debug' command line argument to enable
22316         debugging support.
22317
22318 2003-04-23  Martin Baulig  <martin@ximian.com>
22319
22320         * debug.[ch]: Removed.  The code is now in
22321         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
22322
22323         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
22324         last six months.
22325
22326 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
22327
22328         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
22329
22330 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22331
22332         * mini.c:
22333         (mini_cleanup): moved mono_runtime_cleanup call after the call to
22334         mono_domain_finalize.
22335         (mini_method_compile): use mono_method_profile* if the the option is
22336         enabled.
22337
22338 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22339
22340         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22341         methods with their wrapper.
22342
22343         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22344         methods with their wrapper.
22345
22346         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
22347         their wrapper.
22348
22349         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
22350         wrapper.
22351
22352         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
22353         methods.
22354
22355 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
22356
22357         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
22358
22359 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
22360
22361         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
22362         of the mempool. This is slightly faster and uses less memory
22363
22364 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22365
22366         * mini.c: avoid O(n) allocation for variables.
22367
22368 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22369
22370         * mini.c: handle items on the stack after inlining methods.
22371
22372 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22373
22374         * mini.c: make the method->opcode optimization dependent
22375         on MONO_OPT_INSTRINS and do it lazily.
22376
22377 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22378
22379         * driver.c: print overall results at the end of regression run.
22380
22381 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
22382
22383         * inssel.brg: don't overwrite symbolic registers.
22384
22385 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22386
22387         * inssel-x86.brg: fix conversion from long to float.
22388
22389 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
22390
22391         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
22392
22393 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22394
22395         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
22396
22397         * driver.c: Added --print-vtable option as in the old JIT.
22398
22399 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22400
22401         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
22402
22403 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
22404
22405         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
22406
22407 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22408
22409         * mini.c regalloc.c regalloc.h: Fix memory leak.
22410
22411 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
22412
22413         * aot.c (mono_aot_get_method): register all used strings
22414
22415 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22416
22417         * mini.c: always intern strings references with ldstr at compile time.
22418
22419 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22420
22421         * Makefile.am: add BUILT_SOURCES.
22422
22423 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22424
22425         * driver.c: give a better error message when the assembly to execute
22426         doesn't have an entry point.
22427
22428 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
22429
22430         * Makefile.am: added hack for automake
22431
22432         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
22433         correct sematics.
22434
22435         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
22436
22437 22003-04-07  Martin Baulig  <martin@ximian.com>
22438
22439         * Makefile.am: Added Makefile.am.
22440
22441         * debugger-main.c: Removed, this is now in the debugger where it
22442         belongs.
22443
22444         * mini.pc.in: Call this package `mini' for the moment.
22445
22446
22447
22448
22449
22450
22451
22452
22453
22454
22455
22456
22457
22458
22459