2009-11-13 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2
3         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
4         this is called on the debugger thread.
5
6 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
7
8         * mini-llvm.c: Add soft-float support.
9
10         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
11         FCALL which returns an R4.
12
13         * driver.c (mono_main): Add a missing '\n'.
14
15         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
16         platforms which doesn't support the LLVM IMT trampoline.
17
18 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
19
20         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
21
22         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
23
24         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
25         virtual calls.
26
27         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
28
29 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
30
31         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
32         Instead of emitting a method_order table, sort the contents of the code_offsets
33         table and do a binary search in the sorted table. The previous approach doesn't
34         work with LLVM which emits methods in a arbitrary order.
35
36         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
37         in the .eh_frame section in ELF files.
38
39         * mini.h: Bump corlib file format version.
40
41         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
42
43         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
44         LDMIA->LDM macro name change.
45
46 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
47
48         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
49         x86.
50
51         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
52         SVN.
53
54         * aot-compiler.c: Ditto.
55
56         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
57         &align to mini_type_stack_size_full ().
58
59         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
60
61         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
62
63 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
64
65         * mini-arm.c: Compute the stack space used by arguments using
66         mini_type_stack_size_full ().
67
68 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
69
70         * optflags-def.h: Remove dead TREEPROP optimization.
71
72 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
73
74         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
75
76         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
77
78 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
79
80         * driver.c (mono_jit_parse_options): New public API function to parse options
81         as done by the runtime executable.
82
83         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
84         when handling named arguments.
85
86 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
87
88         * mini-arm.c: Implement support for returning vtypes in registers, fix support
89         for passing small vtypes in registers, make the CallInfo structures more
90         similar to the code on the other platforms.
91
92         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
93         the code in the prolog requires it.
94
95 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
96
97         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
98         (koush@koushikdutta.com).
99
100         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
101         where the thunk memory should be allocated from. Fixes appdomain unloading
102         on arm.
103
104 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
105
106         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
107         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
108
109 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
110
111         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
112         AOT, as it is not implemented yet.
113
114         * mini-x86.c (mono_arch_output_basic_block): Ditto.
115
116 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
117
118         * debugger-agent.c: Fix windows build.
119
120 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
121
122         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
123         after the client connects/disconnects.
124
125         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
126         when an exception of a given type is thrown.
127
128         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
129         only on an uncaught exception.
130
131         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
132
133         * debugger-agent.c: Add a 'launch' option.
134
135 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
136
137         * debugger-agent.c: Add a 'timeout' option.
138
139 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
140
141         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
142         the JDWP agent.
143
144 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
145
146         * debugger-agent.c (set_breakpoint): Emit a log message.
147
148 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
149
150         * mini-arm.c: Fix the arm build.
151
152 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
153
154         * aot-compiler.c: don't leak the value returned from
155         mono_type_full_name().
156
157 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
158
159         * debugger-agent.c: defer including mono-mutex.h until we know the
160         agent is supported.
161
162 2009-11-04 Jonathan Chambers <joncham@gmail.com>
163
164         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
165         of pthreads directly.
166
167         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
168         exception handlers. Pass info argument.
169
170         * mini.h: Adjust signatures of soft debugger functions to pass void*
171         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
172
173         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
174         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
175         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
176         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
177
178         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
179
180         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
181         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
182         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
183         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
184
185         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
186
187         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
188
189         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
190
191         * mono-semaphore.h: Skeleton implementation for Windows.
192
193         Code contributed under MIT/X11 license.
194
195 2009-11-04 Jonathan Chambers <joncham@gmail.com>
196
197         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
198
199         Code contributed under MIT/X11 license.
200
201 2009-11-04 Jonathan Chambers <joncham@gmail.com>
202
203         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
204
205         Code contributed under MIT/X11 license.
206
207 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
208
209         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
210         debug info to 100 because 10 still slows down gdb too much.
211
212         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
213         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
214         them in the wrappers.
215
216 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
217
218         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
219
220         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
221
222         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
223         function mono_aot_get_array_helper_from_wrapper ().
224
225         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
226         array helper methods.
227
228 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
229
230         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
231         the value was loaded from memory.
232
233         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
234         the value was loader from there.
235
236         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
237         without constant swizzle.
238
239 2009-11-02 Jonathan Chambers <joncham@gmail.com>
240
241         * mini-amd64.c: Put soft debugger functions behind a
242         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
243
244         * mini-amd64.h: disable the soft debugger in windows.
245
246         Code contributed under MIT/X11 license.
247
248 2009-11-02 Jonathan Chambers <joncham@gmail.com>
249
250         * mini-x86.c: Put soft debugger functions behind a
251         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
252
253         Code contributed under MIT/X11 license.
254
255 2009-11-02 Jonathan Chambers <joncham@gmail.com>
256
257         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
258         to mono_arch_find_jit_info_ext.
259
260         Code contributed under MIT/X11 license.
261
262 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
263
264         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
265
266         * debugger-agent.c: Add support for filtering events by assemblies.
267
268         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
269         the agent is not enabled.
270
271 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
272
273         * exceptions-x86.c: hopefully last change to fix the windows build.
274         This one courtesy of Jonathan Chambers.
275
276 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
277
278         * debugger-agent.c: remove unused function.
279
280 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
281
282         * debugger-agent.c: add #ifdefs for a few header files.
283         * mini-x86.h: disable the soft debugger in windows.
284         Step 1 of 2 to make this compile on windows with gcc.
285
286 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
287
288         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
289         as it breaks the build.
290
291 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
292
293         Merge the soft debugger branch.
294
295         * debugger-agent.h debugger-agent.c: New files containing the soft
296         mode debugger module.
297
298         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
299         at the appropriate locations.
300
301         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
302         opcode.
303
304         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
305         enable/disable single stepping.
306
307         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
308         which returns all information in a StackFrameInfo structure, and can handle the
309         LMF frames added by the debugger.
310
311         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
312         about an LMF frame.
313
314         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
315         walker function which works on a specific thread and passes a StackFrameInfo
316         structure to its callback.
317
318         * mini.c (mini_init): Initialize the debugger agent.
319
320         * aot-compiler.c aot-runtime.c: Add soft-debug support.
321
322         * mini-ops.h: Add OP_SEQ_POINT opcode.
323
324         * driver.c (mono_main): Add new '--debugger-agent' option for passing
325         arguments to the debugger agent.
326
327 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
328
329         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
330         speed things up.
331
332         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
333
334         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
335
336         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
337
338         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
339         if needed.
340         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
341         sets the IMT argument and makes a virtual call.
342
343         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
344
345 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
346
347         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
348         the windows build.
349
350 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
351
352         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
353         runtime. Fixes #551228.
354
355 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
356
357         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
358
359         * basic.cs: Add a test.
360
361         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
362         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
363         CONSTRAINED. Fixes #550964.
364
365         * generics.cs: Add a test.
366
367 2009-10-28  Mark Probst  <mark.probst@gmail.com>
368
369         * mini-posix.c (add_signal_handler): Use
370         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
371
372 2009-10-28 Jerry Maine <crashfourit@gmail.com>
373
374         Contributed under the terms of the MIT/X11 license by
375         Jerry Maine <crashfourit@gail.com>.
376
377         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
378         sse4a for simd intrinsics.
379
380         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
381         sse4a for simd intrinsics.
382
383 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
384
385         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
386         instead of inst_p1 which is not the same on ILP32 platforms.
387
388 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
389
390         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
391         not the mscorlib one before calling mono_get_lmf_addr.
392
393         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
394         of the ip to the LMF.
395
396         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
397         immediate in the op->op_imm optimization.
398
399         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
400         understand. VTypes now work, but are not abi compliant, as they are
401         split into 4 byte parts instead of 8.
402         (emit_memcpy): Fix the unrolled case to work on the PS3.
403
404         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
405
406         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
407         the default when static linking.
408
409         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
410
411         * aot-compiler.c: Add an autoreg option to automatically register
412         statically linked aot modules using ELF .ctors.
413
414         * genmdesc.pl: Add __ppc64__ to allowed defines.
415
416 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
417
418         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
419         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
420
421 2009-10-24  Mark Probst  <mark.probst@gmail.com>
422
423         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
424
425 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
426
427         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
428         which will contain the domain where the method was found.
429
430         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
431         mini_jit_info_table_find ().
432
433         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
434
435         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
436
437 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
438
439         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
440         set, its not supported yet.
441
442 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
443
444         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
445         iface wrapper is not found.
446         (mono_aot_get_method): Ditto for GetGenericValueImpl.
447
448 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
449
450         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
451         which have a different name.
452
453         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
454         wrappers and Array.GetGenericValueImpl ().
455
456         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
457         because of the change above.
458
459         * generics.cs: Add a test for full aot + generic array ifaces.
460
461 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
462
463         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
464         that hides the previous one.
465
466 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
467
468         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
469         marshalled. Fixes #541623.
470
471 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
472
473         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
474
475 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
476
477         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
478
479 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
480
481         * mini-posix.c (sigprof_signal_handler):
482         Implemented support for building stat call chans in different ways.
483
484 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
485
486         * mini-exceptions.c (mono_find_jit_info):
487         Also check that a jit info has been found (fixes a profiler crash).
488
489 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
490
491         * mini.c (mono_codegen):
492         Call mono_profiler_code_buffer_new with correct code address.
493
494 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
495
496         * driver.c (mono_main): Change the date in the copyright.
497
498 2009-10-14  Mark Probst  <mark.probst@gmail.com>
499
500         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
501         allocator in shared generic code for open classes, because we
502         can't get those classes' vtables.  We need to make managed
503         allocators not depend on the vtable at compile-time to solve this.
504
505 2009-10-13  Martin Baulig  <martin@ximian.com>
506
507         * debug-mini.c (mono_debugger_trampoline_compiled): Add
508         `const guint8 *trampoline' argument; send both the old and the new
509         notification.
510
511 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
512
513         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
514         mono_runtime_capture_context () without calling mono_runtime_invoke ().
515         (can_marshal_struct): Skip structures with auto layout.
516
517         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
518
519 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
520
521         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
522         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
523         a variable to hold the stack slot used by the int<->float conversion opcodes.
524
525         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
526
527 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
528
529         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
530         when using full-aot.
531
532 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
533
534         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
535         each instance of Comparer<T>.
536
537         * generics.cs: Add a new test.
538
539 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
540
541         * driver.c (parse_debug_options): Add a 'gdb' option.
542
543         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
544
545         * image-writer.c: Add support for emitting the image into a memory buffer.
546
547         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
548
549         * aot-compiler.c: Add support for registering debug info with GDB using the
550         new JIT debugging interface in GDB 7.0. It can be turned on by setting
551         MONO_XDEBUG to 'gdb'.
552
553 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
554
555         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
556         gdb mode.
557
558 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
559
560         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
561         can be used to set breakpoints in gdb.
562
563         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
564         segment to an absolute address.
565
566 2009-10-13  Mark Probst  <mark.probst@gmail.com>
567
568         * method-to-ir.c: Use the managed array allocator method if
569         available.
570
571 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
572
573         * aot-compiler.c : Fix the MSVC builds
574
575         Code is contributed under MIT/X11 license.
576
577 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
578
579         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
580         avoid registering 1 symbol file per method with gdb.
581
582 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
583
584         * mini-sparc.c: Fix the handling of enums with base type long.
585
586         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
587
588         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
589         instead of using type->data.klass as the later doesn't work with generics.
590
591 2009-09-25  Mark Probst  <mark.probst@gmail.com>
592
593         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
594         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
595         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
596         works differently now and we don't handle it in the JIT anymore.
597
598         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
599         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
600         the Thread class split.
601
602 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
603
604         * driver.c: Don't run tests with the obsolete treeprop optimization.
605
606         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
607         variable volatile. Fixes #541577.
608
609         * basic-calls.cs: Add a new test.
610
611         * basic-long.cs: Remove tests which are now in basic-calls.cs.
612
613 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
614
615         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
616         work/required with recent iphone sdk versions.
617
618         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
619         structures.
620
621         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
622         in the VCALL decomposition code.
623
624 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
625
626         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
627
628         * basic.cs: Add a test.
629
630         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
631         generic invokes.
632
633         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
634         searches all the domains of the current thread.
635
636         * exceptions-<ARCH>.c: Use it. Fixes #539394.
637
638 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
639
640         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
641         so catching exceptions thrown in the same method works. Fixes exception17.exe.
642
643         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
644         for non-jit trampolines.
645
646         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
647
648         * aot-compiler.c (add_wrappers): Ditto.
649
650         * mini-arm.c: Implement support for passing vtypes and floats, and increase
651         the size of the param area used by dyn_call to 6 which covers the majority of
652         methods.
653
654         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
655
656         * mini-arm.c: Implement support for passing/receiving
657         longs and receiving floats in the dyn_call code.
658
659         * mini-amd64.c: Implement support for receiving vtypes in registers in
660         the dyn_call code.
661
662         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
663         the dyn_call code.
664
665 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
666
667         * mini-arm.c (get_call_info): Return more precise information in
668         ArgInfo->regtype.
669         (dyn_call_supported): Use the information in CallInfo.
670
671         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
672
673         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
674         code.
675
676         * mini-arm.c: Update after the dyn_call api changes.
677
678         * mini.c (mini_create_jit_domain_info): Register a destructor function
679         for the runtime_invoke_hash.
680
681         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
682         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
683         this function.
684         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
685         (dyn_call_supported): Simplify this by using get_call_info ().
686         (mono_arch_dyn_call_free): New destructor function.
687
688         * generics.cs: Remove a printf.
689
690         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
691
692         * mini-arm.c: Add support for enum return values and passing a few arguments
693         on the stack.
694         
695         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
696         dyn invoke.
697
698         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
699
700         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
701         the dynamic invoke wrappers.
702
703         * mini-arm.c: Implement OP_DYN_CALL for arm.
704
705         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
706         supported by the dynamic runtime invoke wrapper.
707
708         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
709         runtime invoke wrapper.
710
711         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
712         if possible when running with full-aot.
713
714         * mini-ops.h: Add OP_DYN_CALL opcode.
715
716         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
717         with dynamic arguments lists similar to libffi.
718
719 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
720
721         * method-to-ir.c: Fix the previous change on 64 bit platforms.
722         
723         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
724         to NEWARR.
725
726         * iltests.il.in: Add a new test.
727         
728 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
729
730         * aot-compiler.c (add_generic_instances): Add more instances of
731         GenericEqualityComparer.
732
733 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
734
735         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
736
737 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
738
739         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
740         comments on some functions that now can fail.
741
742 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
743
744         * Makefile.am: Add Info.plist to EXTRA_DIST
745
746 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
747
748         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
749         static synchronized wrappers. Fixes #539500.
750
751 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
752
753         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
754         properly.
755
756 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
757
758         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
759         lmf before calling filter clauses as well. Fixes #539550.
760
761         * exceptions.cs: Add a test.
762         
763 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
764
765         * aot-compiler.c (add_generic_class): Add instances of
766         Array.GetGenericValueImpl as well.
767
768         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
769         can be tested too.
770
771         * generics.cs: Add a fullaot linq test.
772
773 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
774
775         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
776         reg r1 on arm.
777
778 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
779
780         * mini-trampolines.c (mono_delegate_trampoline) : Call
781           mono_cominterop_get_invoke if the delegate target object
782           is a COM object.
783
784         Code is contributed under MIT/X11 license.
785
786 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
787
788         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
789         internal call is defined outside platform code. Reduce code 
790         duplication with existing [Method|Field]AccessException
791
792 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
793
794         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
795         if the return value is a small struct passed on regs.
796
797 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
798
799         * cpu-arm.md mini-arm.c: Remove unused opcodes.
800
801         * mini-codegen.c: Enable the cpu description validation for arm.
802
803 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
804
805         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
806         test which depends on structs to objects.cs.
807         
808         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
809         require object model related stuff working.
810
811         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
812
813         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
814
815         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
816         against the instruction metadata in mini-ops.h. amd64 only for now.
817
818         * mini-ops.h: Fix some instruction descriptions.
819
820         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
821         unused instructions.
822
823 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
824
825         * exceptions.cs: Add a new test.
826
827 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
828
829         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
830
831 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
832
833         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
834         skip empty phi opcodes.
835         
836         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
837         correctly by zero extending after loads. Skip methods containing calls
838         to the monitor enter/exit trampolines.
839
840         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
841         when calling mono_thread_force_interruption_checkpoint ().
842
843         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
844
845         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
846         64 bit thunks.
847         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
848
849         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
850         bootstrap could run.
851
852 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
853
854         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
855
856 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
857
858         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
859         of the method to
860         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
861         LLVM might be very short.
862
863         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
864         in OP_THROW/RETHROW.
865
866         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
867         alignment on osx.
868
869 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
870
871         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
872         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
873         LLVM might be very short.
874
875 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
876
877         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
878         the alignment for the value of sp.
879
880 2009-09-01  Geoff Norton  <gnorton@novell.com>
881
882         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
883         managed wrappers in full aot.
884
885 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
886
887         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
888
889 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
890
891         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
892
893 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
894
895         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
896
897         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
898         saved info.
899
900         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
901
902         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
903         depend on the info MonoMethodHeader which could be missing in IL stripped
904         assemblies.
905
906 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
907
908         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
909         they are only 4 byte aligned.
910
911 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
912
913         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
914         was done previously, since using SP causes too many problems.
915
916         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
917         frames without a frame pointer works.
918
919         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
920         global register in methods with calls, since the calls can go through
921         a static rgctx trampoline which doesn't save it.
922
923 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
924
925         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
926
927 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
928
929         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
930
931 2009-08-18  Christian Hergert  <chris@dronelabs.com>
932
933         * method-to-ir.c: Fix warnings for uninitialized variables.
934
935 2009-08-18  Christian Hergert  <chris@dronelabs.com>
936
937         * mini-exceptions.c:
938         * aot-compiler.c: Fix printf warnings.
939
940 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
941
942         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
943         Add GetGenericValueImpl<string>.
944         
945         * aot-compiler.c (add_generic_instances): Add instances of
946         GenericEqualityComparer<T> for primitive types. Only emit the array
947         wrappers into the mscorlib image.
948
949 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
950
951         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
952         the methods_loaded array using amodule->info->nmethods.
953
954         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
955         (MONO_AOT_FILE_VERSION): Bump this.
956
957         * aot-compiler.c: Emit more generic instances allowing some parts of linq
958         to work.
959
960         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
961         MonoJitInfo doesn't belong to its methods aot image.
962
963 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
964
965         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
966
967         * mini-arm.c: Fix warnings.
968         
969         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
970
971         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
972         supports it.
973
974 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
975
976         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
977         avoid clobbering IP.
978
979         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
980         hold the trampoline argument, so its initial value is available during
981         debugging.
982
983 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
984
985         * exceptions-arm.c:
986         * exceptions-hppa.c:
987         * mini.c:
988         * exceptions-s390x.c:
989         * exceptions-mips.c:
990         * exceptions-ppc.c:
991         * exceptions-sparc.c:
992         * exceptions-alpha.c:
993         * aot-runtime.c:
994         * mini-trampolines.c:
995         * exceptions-x86.c:
996         * exceptions-s390.c: add and use #define's instead of sizeof()
997         for MonoJitInfo and MonoJitInfoTable.
998
999 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1000
1001         * tramp-arm.c:
1002         * tramp-amd64.c:
1003         * tramp-ppc.c:
1004         * tramp-x86.c: use a #define instead of sizeof() for a few
1005         structures that use a zero-length array.
1006
1007 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
1008
1009         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
1010         case when the method is dynamic. Fixes #529238.
1011
1012 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
1013
1014         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
1015         of asserting when a method is JIT compiled in full-aot mode.
1016
1017 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1018         
1019         Contributed under the terms of the MIT/X11 license by
1020         Jerry Maine <crashfourit@gail.com>.
1021         
1022         * fixed wrong dates in changelog.
1023
1024 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1025         
1026         Contributed under the terms of the MIT/X11 license by
1027         Jerry Maine <crashfourit@gail.com>.
1028
1029         * basic-simd.cs: added test for packed double square root.
1030         * cpu-amd64.md: added opcode info for packed double square root.
1031         * cpu-x86.md: added opcode info for packed double square root.
1032         * mini-ops.h: added IR opcode for packed double square root.
1033         * mini-x86.c: added IR to native translation code for packed double square root.
1034         * mini-amd64.c: removed todo for packed double square root.
1035         * simd-intrinsics.c: added method to IR opcode converstion for
1036         packed double square root.
1037
1038 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1039
1040         Contributed under the terms of the MIT/X11 license by
1041         Jerry Maine <crashfourit@gail.com>.
1042
1043         * mini-amd64.c: Added a change to help tell the difference as 
1044         to what perpose the xmm register is being used--mainly to help
1045         with debuging.
1046         * mini-amd64.h: Changed callee regs to use 15 out of 16 
1047         (one used for special cases) xmm registers for both fp
1048         and simd ops. Added define to turn on new feature in the regalloc
1049         that allows fp and simd ops to share the xmm regs happily.
1050         * codegen.c: Added code to detect for which perpose an xmm reg is
1051         being used (fp or simd) and to translate back and forth to the
1052         correct logical reg bank (fp or simd) for 'spill load's.
1053
1054 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1055
1056         Contributed under the terms of the MIT/X11 license by
1057         Jerry Maine <crashfourit@gail.com>.
1058
1059         * basic-simd.cs: Added tests for stressing the regalloc when running with
1060         16 simd regs and when simd and fp ops share the same reg bank.
1061
1062 2009-08-01  Mark Probst  <mark.probst@gmail.com>
1063
1064         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
1065         in shared generic code, we might have to look up the class in the
1066         RGCTX.  If we use the class directly, compute its GC descriptor.
1067
1068 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1069
1070         * mini.c (mono_jit_runtime_invoke): Fix a warning.
1071
1072 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1073
1074         * mini.c (mono_jit_runtime_invoke): Initialize the class and
1075         check for errors. Fixed the case when the class with the Main
1076         method is broken.
1077
1078 2009-07-31 Jerry Maine <crashfourit@gmail.com>
1079
1080         Contributed under the terms of the MIT/X11 license by
1081         Jerry Maine <crashfourit@gail.com>.
1082
1083         * cpu-amd64.md: Fixed simple bug in machine discrition file.
1084
1085 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
1086
1087         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
1088
1089 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
1090
1091         * method-to-ir.c: Fix naming of stelem and ldelem.
1092
1093 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
1094
1095         * driver.c (main_thread_handler): Check that the assembly loaded
1096         matches the filename when doing AOT.
1097
1098 2009-07-30  Mark Probst  <mark.probst@gmail.com>
1099
1100         * mini.c: get_ip_from_sigctx installer has been removed, so don't
1101         call it anymore.
1102
1103         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
1104         utils/mono-sigcontext.h).
1105
1106         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
1107         #ifdef.
1108
1109 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
1110
1111         * mini.c (mono_codegen):
1112         Call profiler hook to keep track of method code buffers.
1113
1114 2009-07-27  Mark Probst  <mark.probst@gmail.com>
1115
1116         * method-to-ir.c: Invoke write barriers for the
1117         Interlocked.(Compare)Exchange JIT intrinsics.
1118
1119 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
1120
1121         * Makefile.am (version.h): Fix issues when built out of tree.
1122         Remove some redundant 'grep's piped through 'sed's.
1123
1124 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1125
1126         This patch is contributed under the terms of the MIT/X11 license
1127
1128         * mini-ppc.c (mono_arch_output_basic_block):
1129         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
1130         for bits 32-47 with signed load/store diplacements for bits
1131         48-63.  Use prefered base/offset order for indexed form.
1132         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
1133         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
1134         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
1135         OP_LOADI2_MEMBASE): Same.
1136         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
1137         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
1138         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
1139         indexed form.
1140         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
1141         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
1142         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
1143         OP_LOADI1_MEMINDEX): Same
1144         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
1145         OP_STORER8_MEMINDEX): Same
1146         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
1147         computations.
1148         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
1149         for bits 32-47 with signed load/store diplacements for bits
1150         48-63.  Use prefered base/offset order for indexed form.
1151
1152 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1153
1154 This patch is contributed under the terms of the MIT/X11 license
1155
1156         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
1157         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
1158         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
1159         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
1160         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
1161         cfg->stack_usage to avoid size warnings.
1162         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
1163         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
1164         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
1165         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
1166         to convert.
1167         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
1168         after code varible is initialized.
1169         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
1170         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
1171         (mono_arch_emit_epilog): 
1172         Move Use ppc_load32 for cfg->stack_usage to avoid size
1173         warnings.
1174
1175 2009-07-24  Mark Probst  <mark.probst@gmail.com>
1176
1177         * method-to-ir.c: The write barrier doesn't do the store anymore,
1178         so we have always to emit it.  Also, emit the wbarrier after the
1179         store.
1180
1181 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
1184         for argument count 3 too.
1185
1186 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
1187
1188         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
1189         the caller handle the exceptions.
1190         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
1191         method. Fixes #524498.
1192
1193 2009-07-22  Geoff Norton  <gnorton@novell.com>
1194
1195         * mini-exceptions.c: Fix build on ia64.
1196
1197 2009-07-22  Mark Probst  <mark.probst@gmail.com>
1198
1199         * mini-exceptions.c (ves_icall_get_frame_info): Use write
1200         barriers.
1201
1202 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
1203
1204         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
1205         code.
1206
1207 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1208
1209         * basic-simd.cs (Main): Pass args to the test driver.
1210
1211 2009-07-20  Geoff Norton  <gnorton@novell.com>
1212
1213         * mini-x86.h: Fix the x86 version guards to use Apple's
1214         properly defined macros.
1215
1216 2009-07-20  Geoff Norton  <gnorton@novell.com>
1217
1218         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
1219         aligned access.
1220
1221 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1222
1223         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
1224         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
1225         the information which is needed for invokes, so only one locking+hash table
1226         lookup is needed.
1227
1228         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
1229         
1230         * aot-compiler.c (add_generic_instances): Emit instances of 
1231         GenericComparer<T> for primitive types.
1232
1233 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
1234
1235         * mini-posix.c: Fix linux build.
1236
1237 2009-07-19  Geoff Norton  <gnorton@novell.com>
1238
1239         * mini.h: Add prototypes for mono_runtime_syscall_fork and
1240         mono_gdb_render_native_backtraces
1241         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
1242         so we implement the sane semantics to the runtime here
1243         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
1244         so we need to call it differently (mono_gdb_render_native_backtraces)
1245         * mini-posix.c: Move the old semantics from mini.c to the prototypes
1246         here for default implementations.
1247         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
1248         support Apple's weird syscall (SYS_fork) implementation and not busy
1249         loop in abort() on native crashes on OSX anymore.
1250
1251 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
1252
1253         * aot-runtime.c (load_method): Change the handling of the
1254         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
1255         are used.
1256
1257         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
1258
1259 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
1260
1261         * mini.c (mono_patch_info_equal): Revert the last change for now as it
1262         seems to break the aot tests.
1263         
1264         * mini.c (mono_patch_info_equal): Fix the handling of 
1265         MONO_PATCH_INFO_RGCTX_FETCH.
1266
1267 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1268
1269         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
1270
1271         * mini.c (mono_patch_info_hash): Fix the handling of 
1272         MONO_PATCH_INFO_INTERNAL_METHOD.
1273         (mono_patch_info_equal): Ditto.
1274
1275 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1276
1277         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
1278         in a few places.
1279         
1280         * mini-llvm.c: Add some infrastructure for AOT support.
1281
1282 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1283
1284         * mini-llvm-cpp.c: Update to the latest llvm api.
1285         
1286         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
1287         option to false to prevent llvm from installing signal handlers which
1288         trip up the gc.
1289         
1290 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
1291
1292         * cpu-x86.md:
1293         * cpu-amd64.md: Revert previous change as those instructions
1294         take 2 separate arguments. Remember to read the arch docs more
1295         carefully next time.
1296
1297 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1298
1299         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
1300
1301 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
1302
1303         * mini-ppc.c: exploit multiple load/store units if available (rest of
1304         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
1305         http://bugzilla.novell.com/show_bug.cgi?id=487846).
1306
1307 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
1308
1309         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
1310         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
1311
1312 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
1313
1314         * cpu-x86.md: Fix missing clobbering from trancendental simd
1315         ops.
1316
1317         * cpu-amd64.md: Same.
1318
1319 2009-07-14 Jerry Maine <crashfourit@gmail.com>
1320
1321         Contributed under the terms of the MIT/X11 license by
1322         Jerry Maine <crashfourit@gail.com>.
1323
1324         * basic-simd.cs: Added tests for single and doulble indexers.
1325
1326         * cpu-amd64.md: Added simd opcode information.
1327
1328         * mini-amd64.c: Added IR to native simd generation code.
1329         Added simd register names and function that returns them.
1330
1331         * mini-amd64.h: Added marcos to turn on simd code compilation in
1332         amd64. Added max simd register count marco. Added caller/callee
1333         register mask marcos. Added marcos to use simd register bank.
1334
1335         * mini.h: Added helper marco for shufling dwords and simple
1336         floats.
1337
1338 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
1339
1340         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
1341
1342         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
1343
1344         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
1345         the length of the native code as well.
1346
1347         * basic-simd.cs: Add a test for #521662.
1348
1349 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
1350
1351         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
1352
1353 2009-07-13  Mark Probst  <mark.probst@gmail.com>
1354
1355         * mini.c: Register function for getting the IP from a signal
1356         context with metadata.
1357
1358 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
1359
1360         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
1361         call a generic class init trampoline if needed. Fixes #519336.
1362
1363         * generics.cs: Add a test.
1364         
1365 2009-07-09  Mark Probst  <mark.probst@gmail.com>
1366
1367         * method-to-ir.c: When doing a call which might be remote from
1368         shared generic code to other shared code with open type arguments,
1369         get the remoting invoke wrapper from the RGCTX and do an indirect
1370         call to it.
1371
1372 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
1373
1374         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
1375         after the unbox trampoline in the full-aot case.
1376
1377 2009-07-02  jonas echterhoff <jonas@unity3d.com>
1378         
1379         * mini.c: Move initialization of jit_mutex before debugger initialization
1380         
1381         to avoid crashes.
1382         
1383         
1384         * Info.plist: added Info.plist and link flag to enable the mono executable
1385         to access other processes. Requires codesigning of the executable to work.
1386         
1387         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
1388         
1389         compile on OS X.
1390         
1391
1392 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
1395
1396 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
1397
1398         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
1399         when the generic instance is an instantiation of a subclass of the
1400         methods class. Fixes #517166.
1401
1402 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
1405         code.
1406
1407         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
1408         AOTed code.
1409
1410         * CMakeLists.txt: Add minimal support for installation.
1411
1412 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
1413
1414         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
1415         determine whenever a method is directly callable to a separate function.
1416
1417         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
1418         needed ones as a result of the previous change.
1419
1420         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
1421         type of register arrays.
1422
1423         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
1424         type of register arrays.
1425
1426 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
1427         
1428         Contributed under the terms of the MIT/X11 license by
1429         Jerry Maine <crashfourit@gail.com>.
1430
1431         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
1432
1433 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1434
1435         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
1436
1437 2009-06-24  Neale Ferguson <neale@sinenomine.net>
1438
1439         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
1440         dump of structure return value. Fix some formatting.
1441         * cpu-s390x.md: Fix lengths of instruction sequences.
1442         * mini-s390.c: Minor formatting changes.
1443
1444 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1445
1446         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
1447         Use sigaction on freebsd as well.
1448
1449 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
1450
1451         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
1452         uses #ifdef on it.
1453         
1454         * mini.c (mini_init): Revert a change which breaks cross-compilation.
1455
1456 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1457
1458         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
1459
1460 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1461
1462         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
1463
1464 2009-06-20  Martin Baulig  <martin@ximian.com>
1465
1466         * debug-mini.c
1467         (MonoDebuggerThreadFlags): New enum typedef.
1468         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
1469         (mono_debugger_thread_created): Added `gpointer func' argument;
1470         initialize the new `thread_flags' field.
1471
1472 2009-06-18  Martin Baulig  <martin@ximian.com>
1473
1474         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
1475         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
1476
1477         * debug-debugger.c
1478         (mini_debugger_set_attach_ok): New function; sets the attach-ok
1479         flag in `MONO_DEBUGGER__info.runtime_info'.
1480
1481         * driver.c
1482         (mono_main): Call mini_debugger_set_attach_ok() if generics
1483         sharing is disabled.
1484
1485 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
1486
1487         * aot-compiler.c (add_wrappers): Fix a warning.
1488
1489         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
1490         the ppc load/store macro changes.
1491
1492 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
1493
1494         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
1495
1496         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
1497         not just the got symbol.
1498
1499         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
1500         on ppc.
1501
1502         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
1503         ppc.
1504         
1505         * aot-compiler.c: Remove some fixmes.
1506
1507         * driver.c (mono_main): Print a helpful message when cross-compiling.
1508
1509         * mini.c (mini_init): Disable signal handlers when cross-compiling.
1510
1511         * method-to-ir.c (initialize_array_data): Do the optimization if the
1512         target byte order is little endian, instead of the host byte order.
1513
1514         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
1515         wrappers into the mscorlib image, Emit a unique plt symbol for each
1516         image, emit symbols for plt entries.
1517
1518         * image-writer.c (img_writer_emit_symbol_size): New function to emit
1519         a .size directive.
1520         
1521 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
1522
1523         * aot-compiler.c (add_wrappers): Avoid calling 
1524         mono_marshal_get_type_info () since it can assert for some types.
1525
1526         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
1527         ldtoken are used inside wrappers.
1528
1529         * helpers.c: Add support for prefixing tools with the arch name.
1530
1531         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
1532         quantities when using ilp32.
1533
1534         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
1535         spill slots. Use sizeof(mgreg_t) for the spill slot size.
1536
1537         * image-writer.c: Use .long on ilp32.
1538
1539         * aot-compiler.c: Use 32 bit loads on ilp32.
1540         
1541 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
1542
1543         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
1544
1545         * mini-ops.h: Use TARGET_POWERPC define for consistency.
1546
1547         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
1548
1549         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
1550         second got slot of every aot image.
1551         
1552         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
1553         aot on platforms with function pointers.
1554
1555         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
1556         support for aot/full aot on ppc/ppc64.
1557         
1558         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
1559         arguments which are needed on ppc.
1560
1561         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
1562         argument.
1563
1564         * mini-trampolines.c aot-runtime.c: Update after the above changes.
1565         
1566         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
1567
1568         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
1569
1570         * aot-compiler.c (emit_got_info): Fix reading unused memory.
1571
1572         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
1573
1574 2009-06-17  Geoff Norton  <gnorton@novell.com>
1575
1576         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
1577
1578 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
1581         to control whenever the dwarf writer is in xdebug or aot mode.
1582         (emit_class_dwarf_info): Use a separate abbrev for structures without
1583         children.
1584
1585         * aot-compiler.c: Pass the appending parameter to 
1586         mono_dwarf_writer_create ().
1587
1588         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
1589         falls through to its next bblock. Fixes #513931.
1590
1591         * iltests.il: Add a test.
1592
1593         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
1594         infor even if emit_line is FALSE, as the apple linker seems to require it.
1595
1596         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
1597
1598         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
1599         gcc does.
1600         (emit_fde): Ditto.
1601
1602 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
1603
1604         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
1605         mips build.
1606
1607 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
1608
1609         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
1610         'has_call_handler' fields.
1611
1612         * method-to-ir.c (mono_method_to_ir): Set them if needed.
1613
1614         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
1615         first bblock if not needed. Fixes #512790.
1616         
1617 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1618
1619         * aot-compiler.c (mono_compile_assembly): Fix a warning.
1620         
1621         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
1622         wrappers.
1623
1624         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
1625         remoting-invoke-with-check wrappers, which are not needed when running with
1626         full-aot, since it doesn't support remoting.
1627         
1628 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1629
1630         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
1631
1632         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
1633         method info, it is not used anymore.
1634
1635         * mini.h: Bump AOT file format version.
1636         
1637         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
1638         word smaller.
1639
1640         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
1641         change above.
1642         
1643         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
1644
1645         * mini.h: Bump AOT file format version.
1646         
1647 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1648
1649         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
1650         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
1651         iphone.
1652
1653         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
1654         of CKFINITE and FBGE for VFP.
1655
1656 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * aot-compiler.c: Don't align code to 16 bytes on arm.
1659         
1660         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
1661         before the methods they belong to.
1662
1663         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
1664         the full-aot case if possible, since the trampoline will be called right 
1665         away.
1666
1667         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
1668         trampolines to 1024 after the change above.
1669
1670         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
1671         trampoline to save 8 bytes per trampoline.
1672
1673         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
1674         change above.
1675
1676 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1677
1678         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
1679
1680 2009-06-08  Martin Baulig  <martin@ximian.com>
1681
1682         * debug-mini.c
1683         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1684         (_mono_debugger_throw_exception): Don't make this static.
1685         (_mono_debugger_unhandled_exception): Likewise.
1686         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1687
1688         * debug-mini.c
1689         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1690         (_mono_debugger_throw_exception): Add function prototype.
1691         (_mono_debugger_unhandled_exception): Likewise.
1692
1693         * mini-exceptions.c
1694         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1695         arg; return the first exception handler if the exception is caught
1696         and we're running inside the debugger.
1697         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1698         improve exception handle inside runtime-invoke, check whether the
1699         exception is actually caught in the method being invoked and not
1700         by the runtime-invoke-wrapper.
1701
1702 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1703
1704         * image-writer.c: Improve support for the osx assembler.
1705
1706         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
1707         support them.
1708
1709 2009-06-08  Martin Baulig  <martin@ximian.com>
1710
1711         * debug-mini.c
1712         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1713         (_mono_debugger_throw_exception): Don't make this static.
1714         (_mono_debugger_unhandled_exception): Likewise.
1715         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1716
1717         * debug-mini.c
1718         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1719         (_mono_debugger_throw_exception): Add function prototype.
1720         (_mono_debugger_unhandled_exception): Likewise.
1721
1722         * mini-exceptions.c
1723         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1724         arg; return the first exception handler if the exception is caught
1725         and we're running inside the debugger.
1726         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1727         improve exception handle inside runtime-invoke, check whether the
1728         exception is actually caught in the method being invoked and not
1729         by the runtime-invoke-wrapper.
1730
1731 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
1732
1733         * image-writer.c (append_subsection): Don't align subsections of the
1734         debug_line section as a workaround.
1735
1736         * dwarfwriter.c: Emit line number info in the AOT case as well.
1737
1738 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
1739
1740         This patch is contributed under the terms of the MIT/X11 license
1741
1742        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
1743        code_len <= code_size
1744
1745 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
1746
1747         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
1748
1749 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
1750
1751         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
1752         invoke wrappers, we now use trampolines instead.
1753
1754 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1755
1756         * mini-darwin.c: The exception thread must not be registered with
1757         the GC.
1758
1759 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1760
1761         * mini-gc.c: Disable the code because it makes SGen crash.
1762
1763 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
1766         instead of asserting.
1767
1768 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1769
1770         * aot-compiler.c (mono_compile_assembly): Move the creation of the
1771         output file after the code has been compiled.
1772
1773 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
1774
1775         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
1776
1777 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1778
1779         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
1780         entries distinction to simplify the code.
1781
1782         * mini.h: Bump AOT file format version.
1783         
1784 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
1785
1786         * objects.cs: Fix the signature of one of the tests.
1787
1788         * mini.c (mini_create_ftnptr): New helper function, moved here from
1789         object.c.
1790         (mini_get_addr_from_ftnptr): Ditto.
1791         (mini_init): Install the new helpers.
1792
1793 2009-05-28  Martin Baulig  <martin@ximian.com>
1794
1795         Correctly initialize the debugger when embedding Mono.
1796
1797         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
1798         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
1799         see documentation in mini_debug_running_inside_mdb().
1800
1801         * debug-debugger.c
1802         (mini_debug_running_inside_mdb): New function to check whether
1803         we're running inside mdb.
1804
1805         * mini.c (mini_init): Call mini_debugger_init() if we're running
1806         inside the debugger.
1807
1808         * driver.c (mono_main): Moved the call to mini_debugger_init()
1809         into mini_init() to make this work when embedding Mono.
1810
1811         * debug-debugger.c (mini_debugger_init): Warn about duplicate
1812         calls to mini_debugger_init().
1813
1814         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
1815         mono_debugger_main() -> mini_debugger_main() and put them inside a
1816         `MONO_DEBUGGER_SUPPORTED' conditional.
1817
1818 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
1819
1820         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
1821         this is no longer in use.
1822         * mini.h: Same.
1823
1824 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
1825
1826         * mini-sparc.c (add_outarg_load): Fix the sparc build.
1827
1828         * aot-compiler.c (emit_method_code): Always write out C style symbols for
1829         methods.
1830
1831 2009-05-27  Martin Baulig  <martin@ximian.com>
1832
1833 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1834
1835         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
1836         long_conv_to_r_un to 64 bits.
1837
1838         * cpu-x86.md: Increase the instruction size due to the changes.
1839
1840         * iltests.il.in: Add regression test.
1841
1842         Fixes #467201.
1843
1844 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1845
1846         * objects.cs: Move the previous test from basic.cs to here.
1847
1848 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1849
1850         * basic.cs: Add regression test for #506915.
1851
1852 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1853
1854         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
1855         optimization we must check the bb of the first byte of stobj as
1856         it's the only one set in cil_offset_to_bb.
1857
1858         Fixes #506915.  
1859
1860 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
1861
1862         * image-writer.c: Fix pointer directive on ppc64.
1863
1864 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
1865
1866         * image-writer.c (asm_writer_emit_section_change): Avoid using
1867         .bss subsections on ppc too.
1868
1869 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
1870
1871         * image-writer.c: Fix the definition of TARGET_ASM_....
1872         
1873         * image-writer.c: Fix the emission of assembler directives in the last
1874         change.
1875
1876         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
1877         exception throwing code to accomodate ppc64.
1878
1879         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
1880         size to work on ppc64 too.
1881
1882         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
1883         too.
1884
1885         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
1886         the assembler dialect instead of using platform specific defines.
1887
1888 2009-05-22  Geoff Norton  <gnorton@novell.com>
1889
1890         * mini-arm.c (get_call_info): If a structure is split between the stack
1891         and argument registers, we should not advance the stack pointer by the entire
1892         native size, but just by the amount that spilled.
1893
1894 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
1895
1896         * mini-arm.c (get_call_info): Handle structures with alignment requirements
1897         correctly.
1898
1899 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1900
1901         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
1902         wrappers normally.
1903         
1904         * aot-compiler.c (add_extra_method): Fix up the collection of extra
1905         methods so wrapper don't get added twice.
1906         (add_generic_instances): Don't add methods of arrays.
1907
1908         * generics.cs: Mark one test as !FULLAOT.
1909
1910 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1911
1912         * mini-x86.c (emit_move_return_value): Remove unused vars.
1913
1914 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1915
1916         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
1917         decomposing 8 bytes structs into a LCALL.
1918
1919         * mini-x86.c (emit_move_return_value): We no longer push the vtype
1920         pointer for where to store the returned regs.
1921
1922         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
1923         state the concern.
1924
1925         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
1926
1927 2009-05-20  Miguel de Icaza  <miguel@novell.com>
1928
1929         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
1930         without getenv.
1931
1932 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1933
1934         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
1935
1936         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
1937         generics.
1938
1939 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
1940
1941         * local-propagation.c (mono_local_cprop): Avoid local propagation
1942         across paired add/sub if the first instruction dest reg is it's
1943         source reg. For example:
1944
1945         int_add_imm R12 <- R12 [1] clobbers: 1
1946         int_sub_imm R42 <- R12 [1] clobbers: 1
1947
1948         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
1949         maintain the math identify.
1950
1951         Fixes #505375.
1952
1953 2009-05-20  Andreia Gaita  <avidigal@novell.com>
1954
1955         * Makefile.am: avoid going on the network just to get the revision,
1956         use git log instead
1957
1958 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
1959
1960         Fixed estimate for short branches on amd64 (they were off mark, and
1961         enabling call prolog-epilog instrumentations caused assertions).
1962         * mini.h (struct MonoBasicBlock): added max_length field to hold the
1963         estimate for the maximum length of this basic block.
1964         * mini-amd64.c:
1965         - mono_arch_emit_prolog: compute max_length for each basic block
1966           (instead of max_offset), and inflate size estimate also for entry bb
1967           in case of code instrumentation.
1968         - mono_arch_output_basic_block: get rid of "cpos" (the current
1969           estimated "position" in the code), and always use "offset" instead,
1970           which is accurate; at the beginning of the function quickly recompute
1971           max_offset for all the remaining blocks, starting from the current
1972           cfg->code_len (which is correct, and not estimated) and using the
1973           estimated block lengths computed previously.
1974
1975 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
1976
1977         * exceptions-ppc.c: Remove the caching from the trampoline creation 
1978         functions, it is already done in the caller.
1979
1980         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
1981
1982         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
1983         MONO_ARCH_GSHARED_SUPPORTED define.
1984
1985         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
1986
1987         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
1988         function.
1989
1990 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
1993         call to mono_marshal_get_rgctx_invoke ().
1994
1995         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
1996         mono_marshal_get_static_rgctx_invoke (), all platforms which support
1997         gshared use the static rgctx trampolines now.
1998         
1999         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
2000         platform supports it.
2001
2002 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2003
2004         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
2005
2006         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
2007
2008 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2009
2010         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
2011
2012         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
2013         for ppc.
2014
2015 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
2016
2017         Made it possible for mono_arch_instrument_epilog to preserve
2018         argument registers, otherwise instrumenting the "epilogue" before
2019         a tail call would clobber them.
2020         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
2021         if like mono_arch_instrument_epilog but with an additional parameter
2022         that states if argument registers must be preserved.
2023         * mini.c: implemented mono_arch_instrument_epilog as a call to
2024         mono_arch_instrument_epilog_full without asking to preserve argument
2025         registers (this makes the existing code work as usual).
2026         * mini-amd64.c:
2027         - mono_arch_instrument_epilog: add parameter to transform it into
2028         mono_arch_instrument_epilog_full, and preserve argument registers
2029         when required.
2030         - mono_arch_output_basic_block, OP_TAILCALL case: call
2031         mono_arch_instrument_epilog_full.
2032         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
2033         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
2034         only transformed mono_arch_instrument_epilog into
2035         mono_arch_instrument_epilog_full.
2036
2037 2009-05-15  Geoff Norton  <gnorton@novell.com>
2038
2039         * mini-darwin.c: This works on arm now.
2040
2041 2009-05-14  Geoff Norton  <gnorton@novell.com>
2042
2043         * jit.h, driver.c: Allow full-aot to be decided programatically by the
2044         embedding api.
2045
2046 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2047
2048         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
2049         label names.
2050
2051         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
2052         wrappers during full aot mode correctly.
2053
2054         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
2055         methods correctly.
2056
2057         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
2058         mono_metadata_type_hash ().
2059
2060 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
2061
2062         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
2063         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
2064         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
2065         Removed MONO_INST_BRLABEL from the instruction flags, and the
2066         remaining code that used it, because we do not support branches inside
2067         basic blocks (and branch target labels) anymore.
2068         * Makefile.am: As part of the above cleanup, remove reference to
2069         BURG files which don't exist anymore.
2070
2071 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
2072
2073         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
2074         osx.
2075
2076         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
2077         to use mono_arch_throw_corlib_exception.
2078
2079         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
2080         mono_arch_throw_corlib_exception for throwing corlib exceptions.
2081
2082         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
2083         domain mempool.
2084
2085         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
2086
2087         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
2088         for the got to make debugging easier and to avoid confusing it with the
2089         system got.
2090         
2091         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
2092         method so a breakpoint can be set when using gdb.
2093
2094 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
2095
2096         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
2097         on mono_method_get_imt_slot ().
2098
2099         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
2100         num_decodes variables.
2101
2102         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
2103         change as it doesn't seem to work.
2104         
2105         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
2106         wrappers.
2107
2108 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
2109
2110         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
2111         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
2112
2113         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
2114         builder when using full aot.
2115
2116         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
2117         here, it is already handled.
2118         
2119         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
2120         correctly for IMT.
2121
2122         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
2123
2124         * mini-arm.h: Enable IMT for full aot.
2125         
2126         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
2127         arch doesn't support it.
2128
2129         * mini.c (mini_init): Don't disable IMT for full aot if the
2130         architecture supports it.
2131
2132         * mini.h (MonoAotTrampoline): New enum containing the different types
2133         of 'numerous' trampolines.
2134         (MONO_AOT_FILE_VERSION): Bump this.
2135
2136         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
2137         static rgctx trampolines. Add support for full-aot IMT thunks.
2138
2139         * mini-amd64.h: Enable IMT for full aot.
2140
2141         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
2142         to exclude tests belonging to a category.
2143
2144         * generics.cs: Mark some tests with a !FULLAOT category.
2145
2146         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
2147         generics tests.
2148
2149 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
2150
2151         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
2152         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
2153         (emit_plt): Fix a warning.
2154
2155 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
2156
2157         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
2158         back into aot-compiler.c to a place where the other functions shared by
2159         the runtime and aot compiler are.
2160         
2161         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
2162         as done previously, instead of in MonoAotFileInfo, since pointers might have
2163         alignment requirements.
2164
2165         * mini.h: Bump AOT file format version.
2166
2167 2009-05-10  Miguel de Icaza  <miguel@novell.com>
2168
2169         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
2170         that is used at runtime from the aot-compiler.c, this makes it
2171         work on setups that remove the AOT compiler from the output
2172         image. 
2173
2174 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
2175
2176         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
2177         PPC.
2178
2179         * mini-ppc.h: Enable static rgctx trampolines for ppc.
2180
2181         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
2182
2183         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
2184         stuff to mono_arch_decompose_long_opts ().
2185         (mono_decompose_opcode): Remove some dead code.
2186
2187 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2188
2189         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
2190         cmethod can be null for quite a some reasons.
2191
2192 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2193
2194         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
2195
2196 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2197
2198         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
2199
2200 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2201
2202         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
2203         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
2204         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
2205         calls returning structures by addr on amd64.
2206
2207         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
2208
2209         * iltests.il.in: Restructure the tail call tests a bit.
2210         
2211 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
2212
2213         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
2214         for virtual methods too.
2215
2216 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
2217
2218         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
2219         due to regression in verifying System.dll.
2220
2221 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2222
2223         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
2224         in dynamic methods.
2225
2226         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
2227         instances.
2228
2229         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
2230         g_str_hash () which can change.
2231
2232         * driver.c (mini_regression): Disable optimizations not supported by
2233         the cpu. Fixes #500019.
2234
2235         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
2236         build.
2237
2238 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2239
2240         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
2241         to the latest LLVM code.
2242
2243 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
2244
2245         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
2246
2247 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
2248
2249         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
2250         x86/amd64.
2251
2252         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
2253         no longer saving offsets, so just save the patch types along with the other
2254         info.
2255         * aot-runtime.c (load_patch_info): Update after the changes to 
2256         encode_patch_list ().
2257         (decode_got_entry): Removed, merged into load_patch_info ().
2258         (is_shared_got_patch): Removed, call the same function from
2259         aot-compiler.c.
2260
2261         * mini.h: Bump aot file format version.
2262         
2263         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
2264         half-finished no-dlsym code.
2265
2266         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
2267         option.
2268
2269         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
2270         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
2271
2272 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
2273
2274         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
2275         buffer length to work with AOT code.
2276
2277         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
2278         ldfld/stfld opcodes.
2279
2280         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
2281         as it is not used.
2282
2283         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
2284
2285         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
2286
2287         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
2288         LLVM API.
2289
2290         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
2291         if needed. Don't decompose long operations when using llvm.
2292
2293 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
2294
2295         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
2296         PAGESIZE constant.
2297
2298         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
2299
2300 2009-05-03  Martin Baulig  <martin@ximian.com>
2301
2302         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
2303         mono_debugger_insert_method_breakpoint() since the class init
2304         handler we're inserting at the top of the method already gives us
2305         a notification.
2306
2307 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
2310         to mono_arch_decompose_long_opts () for x86 and arm.
2311
2312 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
2313
2314         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
2315         TARGET_AMD64 here.
2316
2317 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
2318
2319         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
2320         JIT code.
2321
2322 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
2325         number of trampolines used in full-aot mode.
2326
2327         * aot-compiler.c: Add an ntrampolines option to set the number of 
2328         trampolines emitted in full-aot mode.
2329
2330 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
2331
2332         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
2333         a volatile load. Get rid of get_tempname (), llvm assigns names
2334         automatically.
2335
2336         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
2337         builder function.
2338
2339         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
2340         a value.
2341
2342         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
2343         level 1.
2344
2345         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
2346         to the same register as a fixed sreg2. Fixes #497271.
2347
2348         * iltests.il.in: Add a new test.
2349
2350 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2351
2352         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
2353         stack, since pushes complicate exception handling.
2354
2355         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
2356         the stack if they are passed using moves.
2357
2358         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2359
2360         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
2361         when using llvm.
2362
2363         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
2364         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
2365         of FMOVE if it is an R4.
2366
2367 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
2368
2369         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
2370
2371         * mini.h (LLVMCallInfo): New structure to store calling convention 
2372         information for the LLVM back end similar to the CallInfo structures in 
2373         the back-ends.
2374
2375         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
2376         call information in a format usable by LLVM.
2377         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
2378
2379         * method-to-ir.c (mono_emit_call_args): Emit calls using 
2380         mono_llvm_emit_call () when compiling using LLVM.
2381
2382         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
2383         comments to all functions. Fix memory leaks. Add a public init/cleanup
2384         function.
2385
2386         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
2387
2388         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
2389         mono_array_new_va () jit icall.
2390         
2391 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
2392
2393         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
2394         multiple machine description files to be specified.
2395         * mini-ops.h: fixes for cross-compilation.
2396
2397 2009-04-22  Miguel de Icaza  <miguel@novell.com>
2398
2399         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
2400         some porting work.
2401
2402 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
2403
2404         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
2405         to prevent asserts in various passes. Fixes #497220.
2406
2407 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
2408
2409         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
2410         a racy assert.
2411
2412         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
2413         table to avoid duplicates.
2414
2415         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2416         
2417         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
2418         option is used.
2419
2420 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2421
2422         * mini.c (mini_method_verify): Fail fulltrust code if the exception
2423         is for method or field access.
2424
2425 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
2426
2427         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
2428         a Value to stdout.
2429
2430         * mini-llvm.c (mono_llvm_emit_method): Use it.
2431         
2432         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
2433         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
2434         on volatile values.
2435
2436         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
2437         synchronized methods.
2438
2439         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
2440
2441         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
2442
2443         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
2444         OP_LOADI8_MEM.
2445
2446         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
2447         allowing some options to be set dynamically.
2448
2449 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
2450
2451         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
2452         unconditional branch.
2453
2454         * mini.h (MonoTrampolineType): Add new trampoline type 
2455         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
2456         compiled code.
2457
2458         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
2459         function.
2460
2461         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
2462         creation function.
2463
2464         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
2465         is enabled. Instead, use the llvm vcall trampoline.
2466         
2467         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
2468
2469         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
2470         
2471         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
2472         functions.
2473
2474         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
2475         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
2476
2477         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
2478         OP_IA64_CSET opcode.
2479
2480         * mini.c: Fix a warning.
2481
2482         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
2483         THROW to the appropriate llvm type.
2484
2485 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
2486
2487         * mini.c (mini_method_compile): Add statistics for methods JITted
2488         with/without LLVM.
2489
2490 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2491
2492         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
2493         OP_IA64_CMP_<cond>_IMM opcodes.
2494
2495 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2496
2497         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
2498         corlib exceptions.
2499
2500         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
2501         correctly.
2502
2503         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
2504         GENERICINST.
2505
2506 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
2507
2508         * mini-exceptions.c : add thread id to EXCEPTION trace message.
2509
2510 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2511
2512         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
2513         support.
2514
2515         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
2516         rgctx invoke trampolines for x86.
2517
2518         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
2519         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
2520         (mono_arch_get_vcall_slot): Simplify this.
2521
2522 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
2523
2524         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
2525         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
2526
2527 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
2528
2529         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
2530         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
2531
2532         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
2533
2534         * liveness.c (visit_bb): Remove a needless assert.
2535
2536 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
2537
2538         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
2539         full aot support to the arch specific code.
2540
2541         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
2542
2543         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
2544
2545         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
2546         
2547         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
2548         collect information about the delegate invoke impl trampolines.
2549
2550         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
2551         to save trampolines during full-aot mode.
2552
2553         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
2554         creation function which returns a trampoline which sets the rgctx
2555         argument.
2556         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
2557         wrapper if possible.
2558         (mono_delegate_trampoline): Ditto.
2559
2560         * mini.c (mono_jit_runtime_invoke): Ditto.
2561
2562         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
2563         
2564         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
2565
2566         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2567         
2568 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
2569
2570         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
2571         just setting the opcode to OP_NOP.
2572
2573 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * mini.c (mini_method_compile): Put the last change inside an 
2576         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
2577         
2578         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
2579         and extend live ranges to cover the whole method when using xdb.
2580
2581         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
2582         do it in the trampolines.
2583
2584         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
2585         needed.
2586
2587         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
2588         
2589         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
2590         call code in full-aot mode since IMT is disabled there.
2591         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
2592         new JIT no longer has that restriction.
2593
2594         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2595
2596         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
2597         a more compact format.
2598         (mono_aot_wrapper_name): New function to return a unique name for a
2599         wrapper method, also used by the AOT runtime.
2600
2601         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
2602         aot-compiler.c.
2603
2604         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
2605         when a ICollection<T> etc is encountered.
2606         (add_generic_instances): Process method arguments/locals too.
2607         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
2608         trampoline names.
2609
2610         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
2611         
2612 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
2613
2614         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
2615
2616         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
2617
2618         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
2619         representing the result of the decomposition. Nullify instructions
2620         instead of setting them to OP_NOP since nops can't have registers
2621         set.
2622
2623 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
2624
2625         * aot-compiler.c (mono_compile_assembly): Split this huge function into
2626         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
2627         info. Strip 'mapping symbols' on ARM.
2628
2629         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
2630         
2631         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
2632         this with the native genmdesc.
2633
2634 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
2635
2636         * aot-runtime.c:  Fixing the MSVC build.
2637
2638         Code is contributed under MIT/X11 license.
2639
2640 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2641
2642         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
2643         JITted code depends on it.
2644
2645 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2646
2647         * aot-compiler.c: Use new MonoGenericParam accessors.
2648
2649 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2650
2651         Reduce memory usage and improve correctness wrt MonoGenericParam
2652         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
2653         handing.  Avoid allocating MonoGenericParams, but use the ones in
2654         the container itself.
2655
2656 2009-04-07  Miguel de Icaza  <miguel@novell.com>
2657
2658         * tasklets.c: Return exceptions in the out argument.
2659
2660 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
2663         opcode. Use pointer types in more places instead of casting them to 
2664         integers.
2665
2666         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
2667         optimizations.
2668         (mono_llvm_optimize_method): New helper function to optimize a method.
2669
2670         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
2671         widening code so it could be called from more places.
2672         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
2673         code paths in the call opcodes.
2674
2675 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
2676
2677         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
2678
2679 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
2680
2681         * dwarfwriter.c: Use _ to separate class name 
2682         components as gdb can't handle '.'. Represent reference variables
2683         as 'class <NAME>&'.
2684         
2685         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
2686
2687         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
2688         
2689         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
2690
2691         * gc-test.cs: New file with GC stack marking tests.
2692         
2693         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
2694         negative numbers for vfp.
2695
2696         * basic-float.cs: Add a test.
2697         
2698 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
2699
2700         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
2701
2702 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
2703
2704         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
2705         part of tasklet/continuation support.
2706
2707 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
2708
2709         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
2710         amd64 opcodes inside an ifdef.
2711
2712         * dwarfwriter.c: Emit inheritance information for classes, emit fields
2713         of complex types.
2714         
2715         * dwarfwriter.c (emit_type): Emit the class info for classes.
2716
2717 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
2718
2719         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
2720
2721         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
2722
2723         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
2724
2725         * ssa.c (mono_ssa_compute): Fix some memory leaks.
2726
2727 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
2728
2729         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
2730
2731         * mini-llvm.c: Update comments.
2732
2733         * mini.h (COMPILE_LLVM): New macro.
2734
2735         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
2736
2737         * ssa.c (mono_ssa_compute): Ditto.
2738         
2739         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
2740         the unwind ops from a DWARF FDE.
2741
2742         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
2743         methods by extracting the dwarf unwind ops from the unwind info generated
2744         by LLVM.
2745         
2746         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
2747         calls.
2748
2749         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
2750         addressing modes.
2751
2752 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
2753
2754         * Makefile.am (llvm_sources): Enable this.
2755
2756         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
2757         failing back to the JIT if something cannot be handled.
2758
2759         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
2760         compiling with LLVM.
2761
2762         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
2763         compiling with LLVM.
2764
2765         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
2766         compiling with LLVM.
2767
2768         * mini-ops.h: Add a few opcodes needed by LLVM.
2769
2770         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
2771         has no unwind info.
2772
2773         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
2774         backend.
2775
2776         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
2777
2778         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
2779
2780 2009-04-01  Mark Probst  <mark.probst@gmail.com>
2781
2782         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
2783         ridiculously large methods.
2784
2785 2009-03-31  Martin Baulig  <martin@ximian.com>
2786
2787         * debug-debugger.c (debugger_remove_breakpoint): Call
2788         mono_debugger_remove_class_init_callback ().
2789
2790 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
2791
2792         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
2793         right before emitting code, not at the start.
2794
2795         * mini.c (mono_postprocess_patches): Extract this into a separate function
2796         from mono_codegen ().
2797
2798         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
2799         byref types correctly.
2800
2801 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
2804         by the last change.
2805
2806 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
2807
2808         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
2809         indirect calls, this avoids problems where get_vcall_slot () would get
2810         confused by the native code for the instruction preceeding the call.
2811         (mono_arch_get_vcall_slot): Simplify this.
2812         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
2813
2814         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
2815         register allocator now seems to depend on them instead of the data in
2816         cpu-<ARCH>.md.
2817
2818         * mini.c (mini_method_compile): Throw the correct type of exception if
2819         mono_method_get_header () fails because of a loading error.
2820
2821 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
2822
2823         * mini.c (mini_method_compile): Clear the loader error if the method
2824         header cannot be decoded.
2825
2826         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
2827         interface methods on proxies correctly.
2828
2829         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
2830         this argument for vtype methods. Add precise liveness info for arguments.
2831
2832         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
2833         LIVERANGE_START/END opcodes.
2834
2835         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
2836         for arguments and values in registers.
2837
2838 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
2839
2840         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
2841         return a valuetype. Fixes #487518.
2842
2843         * iltests.il: Add a test.
2844         
2845         * aot-compiler.c: Use mono_thread_create () to create helper threads.
2846
2847         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
2848         closed over a null reference correctly.
2849
2850 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
2851
2852         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
2853
2854 2009-03-25  Mark Probst  <mark.probst@gmail.com>
2855
2856         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
2857         allocated to the same registers as fixed sregs.
2858
2859 2009-03-24  Mark Probst  <mark.probst@gmail.com>
2860
2861         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
2862         ATOMIC_CAS_IMM ops.
2863
2864         * method-to-ir.c: Handle more cases for
2865         Interlocked.CompareExchange.
2866
2867         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
2868         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
2869         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
2870
2871 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * aot-runtime.c (decode_method_ref): Fix a warning.
2874
2875         * unwind.c (mono_unwind_frame): Ditto.  
2876
2877 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2878
2879         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
2880         (mono_compile_assembly): Enable the binary writer for full-aot as well.
2881
2882         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
2883         fix the handling of large values in the ALU_PC_G0_NC relocation.
2884
2885 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
2888
2889 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2890
2891         * method-to-ir.c (mono_spill_global_vars): Support for ternary
2892         ops.
2893
2894 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2895
2896         * method-to-ir.c: MINI_OP3 needs a comma.
2897
2898         * method-to-ir.c, mini.h, mini.c: Remove
2899         mono_init_op_sreg_counts ().
2900
2901 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2902
2903         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
2904         OP_JMP.
2905         
2906         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
2907         assertion.
2908
2909         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
2910
2911         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
2912         code somewhat.
2913
2914 2009-03-21  Mark Probst  <mark.probst@gmail.com>
2915
2916         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
2917         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
2918         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
2919         operations.
2920
2921 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
2922
2923         * driver.c: Change location of gc_wrapper.h.
2924
2925         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
2926         inside finally clauses correctly. Fixes #485721.
2927
2928         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
2929         after the change above.
2930
2931         * exceptions.cs: Add a test.
2932         
2933 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2934
2935         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
2936
2937         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
2938         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
2939         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
2940
2941         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
2942         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
2943
2944 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
2945
2946         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
2947         Simplify logic for ensure_method_is_allowed_to_call_method. 
2948         Handle wrappers on callers.
2949
2950 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2951
2952         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
2953         them don't run yet.
2954
2955         * basic-simd.cs: Fix the names of some test methods.
2956
2957 2009-03-18  Geoff Norton  <gnorton@novell.com>
2958
2959         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
2960
2961 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
2962
2963         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
2964
2965 2009-03-17  Jb Evain  <jbevain@novell.com>
2966
2967         * driver.c: remove now uneeded call to mono_gc_base_init before
2968         mono_profiler_load.
2969
2970 2009-03-17  Jb Evain  <jbevain@novell.com>
2971
2972         * dwarfwriter.c (token_handler): handle more cases.
2973
2974 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
2975
2976         * method-to-ir.c: Remove more dead code (that was required only
2977         because of method_is_safe). Fix compiler warnings.
2978
2979 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
2980
2981         * method-to-ir.c: Remove unneeded/useless method_is_safe
2982         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
2983
2984 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
2985
2986         * mini.c (mini_method_compile): Print the method been compiled with
2987         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
2988         for people not familiar with the runtime.
2989
2990 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
2991
2992         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
2993         a managed object which is later put into a GList. Return its class instead.
2994
2995         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
2996         stack slots when using sgen.
2997
2998 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
2999
3000         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
3001
3002 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
3003
3004         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
3005         > so it works on the first vreg as well.
3006
3007 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
3008
3009         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
3010         trigger randomly.
3011
3012         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
3013         
3014         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
3015         implement GArray.
3016
3017 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
3018
3019         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
3020         native->IL offset mapping.
3021
3022 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
3023
3024         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
3025
3026         * basic.cs: Add a test.
3027
3028 2009-03-11  Mark Probst  <mark.probst@gmail.com>
3029
3030         * mini-x86.c (mono_arch_output_basic_block): Use different
3031         registers in case the ones we want to overwrite are used by the
3032         other operand.  Fixes regression in #480807.
3033
3034 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
3035
3036         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
3037
3038         * dwarfwriter.c (emit_line_number_info): The line number info for
3039         IL code was off by one. Fix that.
3040
3041         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
3042         stack.
3043
3044 2009-03-09  Mark Probst  <mark.probst@gmail.com>
3045
3046         Contributed under the terms of the MIT/X11 license by Steven
3047         Munroe <munroesj@us.ibm.com>.
3048
3049         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
3050         Fixes #483462.
3051
3052 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
3053
3054         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
3055         as well.
3056
3057 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
3058
3059         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
3060         the delegate ctor handling code. Fixes #482638.
3061         
3062         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
3063         #481458.
3064
3065         * iltests.il.in: Add a test.
3066         
3067         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
3068         mini-posix.c.
3069
3070 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3071
3072         * mini-trampolines.c (mono_create_jump_trampoline): If the method
3073         is shared generic code, return the trampoline, even if the method
3074         has already been compiled.  Fixes #479763.
3075
3076         * mini.c, mini.h: New function
3077         mono_jit_find_compiled_method_with_jit_info() which is the same as
3078         mono_jit_find_compiled_method() but also returns the jit info.
3079
3080 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3081
3082         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
3083         for methods which actually have one.  For all other methods, make
3084         sure the this argument var is live the whole method.
3085
3086         * mini.c (mini_method_compile): Every shared method has a
3087         this/vtable/mrgctx info.  Fixes #480807.
3088
3089 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3090
3091         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
3092         generic/imt thunks where some entries branch through the vtable,
3093         while other entries branch directly.
3094
3095 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
3096
3097         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
3098
3099         * mini-windows.c: Ditto.
3100         
3101         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
3102         ctors.
3103
3104 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
3105
3106         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
3107         down an assert.
3108
3109 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3110
3111         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
3112         #481403.
3113
3114 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3115
3116         * exceptions-x86.c: Include debug-mini.h - fixes build.
3117
3118 2009-03-04  Martin Baulig  <martin@ximian.com>
3119
3120         * debug-mini.c: Clean up the exception API and add documentation.
3121         (mono_debugger_handle_exception): New public method; this is
3122         called when throwing an exception or encountering an unhandled one.
3123         (mono_debugger_call_exception_handler): Formerly known as
3124         mono_debugger_handle_exception(); this is used to tell the
3125         debugger that we're about to invoke an exception handler.
3126
3127 2009-03-04  Martin Baulig  <martin@ximian.com>
3128
3129         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
3130         ../metadata/mono-debug-debugger.c; save and reset exception state.
3131
3132 2009-03-02  Martin Baulig  <martin@ximian.com>
3133
3134         * debug-mini.c: Moved the debugger exception handling here from
3135         ../metadata/mono-debug-debugger.c.
3136
3137         * debug-mini.h
3138         (MonoDebuggerExceptionAction): New exception typedef.
3139
3140         * debug-mini.c
3141         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
3142
3143         * exceptions-amd64.c
3144         (mono_amd64_throw_exception): Use the new debugger exception
3145         handling code.
3146
3147         * mini-exceptions.c
3148         (mono_handle_exception_internal): Don't call
3149         mono_debugger_unhandled_exception() here.
3150
3151 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
3152
3153         * mini.c aot-compiler.c: Update after the changes to 
3154         mono_marshal_get_runtime_invoke ().
3155
3156         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
3157         Virtual generic methods might not have method->slot set, work around
3158         that.
3159
3160         * generics.cs: Add a test.
3161
3162 2009-03-02  Geoff Norton  <gnorton@novell.com>
3163
3164         * mini.c:
3165         * driver.c: Allow signal chaining of SIGFPE as well.
3166
3167 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
3168
3169         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
3170         this since it now receives the method not its generic context in the
3171         IMT reg.
3172
3173         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
3174         generic/imt thunks where some entries branch through the vtable, while
3175         other entries branch directly.
3176
3177         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
3178
3179         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
3180         support for interface methods as well.
3181
3182         * mini-trampolines.c: Add support for virtual generic methods in interfaces
3183         using the normal IMT thunks.
3184
3185         generics.cs: Add new tests.
3186         
3187         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
3188         the generic inst to the generic imt thunks. This fixes AOT support, 
3189         improves consistency with the normal IMT thunks, and makes it easier to
3190         add support for interface generic virtual methods later.
3191
3192         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
3193         
3194 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
3195
3196         * driver.c (mono_set_signal_chaining): New public API function to enable
3197         signal chaining on POSIX platforms.
3198
3199         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
3200         (si@lindenlab.com) to implement signal chaining. The original patch was
3201         contributed under the MIT X/11 license:
3202         https://bugzilla.novell.com/show_bug.cgi?id=318894
3203
3204 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
3205
3206         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
3207         too until it can be made to run on amd64.
3208
3209 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
3210
3211         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
3212         to  get_generic_context_from_code () + get_call_info () if possible.
3213
3214 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
3215
3216         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
3217         suspend-on-sigsegv functionality.
3218
3219         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
3220         to suspend when a native SIGSEGV is received. This is useful for debugging
3221         crashes which don't happen under gdb, since a live process contains more
3222         information than a core file.
3223
3224         * mini-exceptions.c (mono_print_thread_dump): Use 
3225         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
3226
3227         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
3228
3229         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
3230         
3231         * basic-float.cs: Disable the tests which currently fail on amd64.
3232
3233         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
3234         value to mono_arch_patch_callsite () to fix crashes.
3235         
3236         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
3237
3238 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3239
3240         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
3241         nop code by patching the call address to point to the nullified class init
3242         trampoline, as the former does not seem to be safe on SMP machines.
3243
3244 2009-02-23  Mark Probst  <mark.probst@gmail.com>
3245
3246         * mini-ops.h: Fix the argument types for a few x86 opcodes where
3247         they were wrong.
3248
3249 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3250
3251         * basic-float.cs basic-calls.cs: Fix warnings.
3252
3253 2009-02-22  Mark Probst  <mark.probst@gmail.com>
3254
3255         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
3256         correct frame pointer in the LMF.  Should fix #478394.
3257
3258 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
3259
3260         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
3261
3262         * image-writer.c: Make the binary writer less verbose.
3263
3264 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
3265
3266         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
3267         are called from runtime invoke wrappers.
3268
3269 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
3270
3271         * cpu-ppc.md (store_memindex): Increase the size of this.
3272
3273 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3274
3275         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3276
3277         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
3278
3279         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
3280         OP_LCONV_TO_R_UN.
3281
3282         Last fix for of #467201.
3283
3284
3285 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3286
3287         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3288
3289         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
3290         and long_conv_to_r8_2:
3291
3292         Fixed part of #467201.
3293
3294 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3295
3296         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3297
3298         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
3299         conversion to 32 bits.
3300
3301         * cpu-x86.md: Increase the size of int_conv_to_r4.
3302
3303         * basic-float.cs: Add a test for this.
3304
3305         Fixed part of #467201.
3306
3307 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3308
3309         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3310
3311         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
3312         conversion to 64 bits.
3313
3314         * basic-float.cs: Add a test for this.
3315
3316         Fixed part of #467201.
3317
3318 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3319
3320         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3321
3322         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
3323         This behavior is compatible with MS.
3324
3325         * iltest.il.in: Add a test for this.
3326
3327         Fixed part of #467201.
3328
3329 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3330
3331         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3332
3333         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
3334         change the precision of the value.
3335
3336         * cpu-x86.md: Define len for float_conv_to_r4.
3337
3338         * basic-float.cs: Add a test for this.
3339
3340         Fixed part of #467201.
3341
3342 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
3343
3344         * mini.c: Adjust locking order to the new semantics where the loader lock
3345         comes first.
3346
3347 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
3348
3349         * aot-runtime.c:
3350         * mini-amd64.c:
3351         * mini-arm.c:
3352         * mini-ia64.c:
3353         * mini-mips.c:
3354         * mini-ppc.c:
3355         * mini-sparc.c:
3356         * mini-trampolines.c:
3357         * mini-x86.c:
3358         * mini.c:
3359         * tramp-alpha.c:
3360         * tramp-amd64.c:
3361         * tramp-arm.c:
3362         * tramp-hppa.c:
3363         * tramp-ia64.c:
3364         * tramp-mips.c:
3365         * tramp-ppc.c:
3366         * tramp-s390.c:
3367         * tramp-s390x.c:
3368         * tramp-sparc.c:
3369         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
3370
3371 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
3372
3373         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
3374         as it is incorrect.
3375
3376 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3377
3378         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
3379         for cctors if needed.
3380
3381 2009-02-17  Mark Probst  <mark.probst@gmail.com>
3382
3383         * mini-ppc.c: Fix build on Darwin.
3384
3385 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3386
3387         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
3388         version instead of 3 as valgrind doesn't like version 3.
3389
3390         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3391
3392         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
3393         usable for hashing methods.
3394         (emit_extra_methods): Use the new hash to avoid putting every method in the
3395         same hash bucket.
3396
3397         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
3398
3399         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
3400         whenever a method ref could match a method.
3401         
3402         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
3403         test to fail.
3404         
3405         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
3406         methods refs.
3407
3408         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
3409
3410         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
3411         the encoding buffer.
3412
3413         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
3414         mono_method_get_header () on inflated methods as an optimization.
3415
3416 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3417
3418         * ssa.c (fold_ins): Fix another crash if the instruction following the
3419         switch was optimized away.
3420
3421 2009-02-16  Mark Probst  <mark.probst@gmail.com>
3422
3423         Contributed under the terms of the MIT/X11 license by Steven
3424         Munroe <munroesj@us.ibm.com>.
3425
3426         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
3427
3428 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3429
3430         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
3431         around the mono_domain_alloc calls, it is now done by the functions
3432         themselves.
3433
3434         * aot-compiler.c (compile_method): Only add wrappers referenced by
3435         the method if compiling with full AOT.
3436         (mono_compile_assembly): Error out if --aot=full is specified on
3437         a platform where it is not supported.
3438
3439         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
3440         on ARM too.
3441
3442         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
3443         AOT support.
3444
3445         * aot-runtime.c (load_named_code): Handle 
3446         mono_arm_throw_exception_by_token.
3447
3448         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
3449
3450         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
3451         unaligned.
3452
3453         * Makefile.am (fullaotcheck): Exit if a test fails.
3454
3455         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
3456         on ARM.
3457         (mono_compile_assembly): Handle the assembler failing.
3458
3459         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
3460         accepting subsections of .bss.
3461
3462         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
3463         was optimized away.
3464
3465         * aot-compiler.c: Remove some unused includes.
3466         
3467         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
3468         now in MonoImageWriter.
3469
3470         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
3471         code sequence which matches a non-virtual call. Fixes #472654.
3472
3473 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
3474
3475         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
3476         xdebug code.
3477         
3478         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
3479         use the image/dwarf writers directly.
3480
3481         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
3482         field.
3483
3484         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
3485         MonoDwarfWriter.
3486
3487         * image-writer.h: Fix some typos.
3488
3489         * dwarfwriter.h dwarfwriter.c: New files.
3490         
3491         * aot-compiler.c: Extract the DWARF info writing functionality into a 
3492         separate module.
3493
3494         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
3495         argument to return unwind info.
3496
3497         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
3498
3499         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
3500         
3501         * aot-runtime.c (decode_method_ref): Add a case for 
3502         MONO_AOT_METHODREF_WRAPPER_NAME.
3503
3504         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
3505         for AOT.
3506
3507         * aot-compiler.c (encode_method_ref): Use the new constants.
3508
3509         * aot-runtime.c (decode_method_ref): Ditto.
3510
3511         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
3512         be compiled, not the icall itself.
3513
3514 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
3515
3516         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
3517         using decode_method_ref ().
3518
3519         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
3520         convert it to an in32. Fixes #475859.
3521
3522         * arrays.cs: Add a test.
3523
3524 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3525
3526         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
3527         OP_LCONV_TO_U2.
3528
3529         * basic-long.cs: Add a test.
3530
3531 2009-02-12  Mark Probst  <mark.probst@gmail.com>
3532
3533         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
3534         remove the frame pointer in leaf methods which don't receive any
3535         arguments, don't throw exceptions and don't do dynamic stack
3536         allocations.
3537
3538 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3539
3540         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
3541         the fail_tramp changes. Hopefully fixes #475132.
3542
3543 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
3544
3545         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
3546         instead of mono_metadata_signature_dup_full.
3547
3548 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3549
3550         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
3551         for processing jump tables. Fixes #473787.
3552
3553 2009-02-11  Mark Probst  <mark.probst@gmail.com>
3554
3555         * mini-generic-sharing.c: mini_method_get_context() just calls
3556         mono_method_get_context_general() now.
3557
3558         * mini.c, mini.h: Moved get_object_generic_inst(),
3559         construct_object_context_for_method() and
3560         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
3561
3562 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
3563
3564         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
3565         basic block fell through to its successor bblock without a branch. Fixes
3566         #474718.
3567
3568         * iltests.il.in: Add a test.
3569         
3570         * aot-compiler.c (encode_method_ref): Encode methods of array types.
3571         (can_encode_patch): We can now handle arrays of generic parameters and
3572         array methods.
3573
3574         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
3575
3576         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
3577         the AOT file to avoid some #ifdefs in aot-runtime.c
3578
3579         * mini.h: Bump AOT file format version.
3580
3581 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3582
3583         * Makefile.am (fullaotcheck): Make this run the tests.
3584
3585         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
3586
3587 2009-02-10  Mark Probst  <mark.probst@gmail.com>
3588
3589         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
3590         individually.  Fixes #473482.
3591
3592 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3593
3594         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
3595
3596 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
3597
3598         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
3599         (mono_compile_assembly): Hush compile warnings about
3600         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
3601         code path.
3602
3603 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3604
3605         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
3606
3607         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
3608
3609         * aot-compiler.c: Fix arm support.
3610
3611         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
3612         img_writer_emit_unset_mode () function.
3613
3614         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
3615         (mono_unwind_get_dwarf_pc_reg): Ditto.
3616
3617         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
3618         Move almost all platform specific code to a set of arch_ functions, 
3619         and document them to ease porting.
3620         
3621         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
3622
3623         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
3624
3625         * aot-compiler.c: Extract the image writing functionality into a separate
3626         module to reduce the size of this file.
3627
3628 2009-02-09  Geoff Norton  <gnorton@novell.com>
3629
3630         * mini-s390.c: Fix the signature of emit_sig_cookie.
3631
3632 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
3633
3634         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
3635
3636         * aot-runtime.c (is_shared_got_patch): Ditto.
3637
3638         * aot-runtime.c (load_named_code): Cope with the fact that 
3639         decode_got_entry () won't decode the patch fully if its corresponding got
3640         entry is already filled.
3641         
3642         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
3643         Initialize *ji.
3644         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
3645
3646         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
3647         as the moving pointer instead of 'buf' for consistency with the rest of the
3648         codebase.
3649         (mono_arch_create_monitor_exit_trampoline): Ditto.
3650
3651         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
3652         generic_class_init trampolines.
3653         (add_generic_class): Extract some code from add_generic_instances () into a
3654         separate function so it can be called from other places too.
3655         (compile_method): Call add_generic_class () for the classes of inflated methods
3656         referenced by the method.
3657         (can_encode_patch): Allow references to generic parameters.
3658
3659         * aot-runtime.c: Add support the patches required by the new trampolines.
3660         
3661         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
3662         support.
3663
3664         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
3665         full-aot support.
3666
3667         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
3668         this from get_throw_pending_exception, make the signature full aot compatible.
3669
3670         * Makefile.am (fullaotcheck): New target to run full-aot tests.
3671
3672         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
3673
3674         * exceptions.cs: Add a test.
3675
3676 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3677
3678         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
3679         use the DWARF_DATA_ALIGN constant instead.
3680
3681         * exception-<ARCH>.c: Update after the above change.
3682
3683         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
3684         dwarf unwinder.
3685
3686         * mini-arm.c: Enable the dwarf unwinder.
3687
3688         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
3689         instead of mono_class_setup_vtable ().
3690
3691 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3692
3693         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
3694         dwarf unwinder.
3695
3696         * mini-x86.h: Enable the dwarf unwinder.
3697
3698 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
3699
3700         Fix mcs/tests/test-7.cs
3701         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
3702         2009-02-03.
3703
3704 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
3705
3706         * mini.c (print_jit_stats): Remove some unused statistics.
3707
3708 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3709
3710         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
3711
3712 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3713
3714         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
3715         the method we get from mono_object_get_virtual_method() because
3716         that function does it properly, now.
3717
3718 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3719
3720         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
3721         opcodes. Fixes #472775.
3722
3723 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3724
3725         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
3726         fact that mono_find_jit_info() sometimes returns the context
3727         corresponding to the jit info in new_ctx.  Fixes #472600.
3728
3729 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3730
3731         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
3732         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
3733         klass->enum_basetype directly.
3734
3735         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
3736         enum subtypes.
3737
3738         * unwind.c: Avoid 0 sized arrays.
3739
3740 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3741
3742         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
3743         size on systems with 64k pages. Fixes #471389.
3744
3745 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3746
3747         Contributed under the terms of the MIT/X11 license by Steven
3748         Munroe <munroesj@us.ibm.com>.
3749
3750         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
3751         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
3752         necessary.
3753
3754 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3755
3756         Contributed under the terms of the MIT/X11 license by Steven
3757         Munroe <munroesj@us.ibm.com>.
3758
3759         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
3760         comparison fix.
3761
3762         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
3763         The trampoline can be longer on PPC64.
3764
3765 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3766
3767         Contributed under the terms of the MIT/X11 license by Steven
3768         Munroe <munroesj@us.ibm.com>.
3769
3770         * mini-ppc.c: Compiler warning fixes and trivial code
3771         simplifications.
3772
3773 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3774
3775         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
3776         ins->dreg which could be a hardware register, not a vreg.
3777
3778         * aot-compiler.c (emit_method_dwarf_info): Ditto.
3779         
3780         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
3781         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
3782
3783         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
3784         
3785         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
3786         ->dreg, that is not the vreg we are looking for.
3787
3788         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
3789
3790         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
3791         LIVERANGE_END.
3792
3793         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
3794         strange crashes.
3795
3796 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
3797
3798         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
3799
3800         * aot-compiler.c (emit_line_number_info): Fix line number emission when
3801         the line diff is 0.
3802
3803         * aot-compiler.c: Add xdebug support on x86.
3804
3805         * unwind.c: Add x86 support.
3806         
3807         * aot-compiler.c (emit_exception_debug_info): Control the emission of
3808         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
3809
3810         * mini.c (mini_method_compile): Ditto.
3811         
3812         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
3813         the variable index.
3814
3815         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
3816         which mimic .push_section/.pop_section in GAS.
3817         
3818         * aot-compiler.c: Emit precise live range information for variables.
3819
3820         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
3821
3822         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
3823         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
3824         them.
3825
3826         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
3827         the live ranges of variables.
3828
3829         * mini.h (struct MonoMethodVar): Add two fields containing the live range
3830         of the variable in terms of native offsets.
3831
3832 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
3833
3834         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
3835         
3836 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3837
3838         Contributed under the terms of the MIT/X11 license by Steven
3839         Munroe <munroesj@us.ibm.com>.
3840
3841         * exceptions-ppc.c (restore_regs_from_context): Correct operand
3842         order (offset then base reg) for ppc_load_multiple_regs.
3843         (emit_save_saved_regs) Correct operand order for
3844         ppc_store_multiple_regs.
3845         (mono_arch_get_call_filter): Correct operand order for
3846         ppc_load_multiple_regs.
3847
3848         * mini-ppc.c (emit_memcpy): Fix operand order for
3849         ppc_load_reg_update and ppc_store_reg_update.
3850         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
3851         (mono_arch_emit_epilog): Correct operand order for
3852         ppc_load_multiple_regs.
3853
3854         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
3855         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
3856
3857 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3858
3859         * cpu-ppc64.md: Fixed storer4_memindex length.
3860
3861 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
3862
3863         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
3864         line number info.
3865         
3866         * aot-compiler.c (emit_line_number_info): Optimize this.
3867
3868 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
3869
3870         * aot-compiler.c: Disassemble tokens in the IL disassembly.
3871         
3872         * aot-compiler.c: Add debug info for methods without debug info by
3873         emitting an IL file and having the line number info referencing that file.
3874
3875         * aot-compiler.c: Optimize the size of the generated line number info.
3876
3877         * aot-compiler.c: Emit line number info in xdebug mode.
3878
3879         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
3880         million arguments.
3881
3882 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
3883
3884         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
3885
3886         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
3887         is used.
3888
3889 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3890
3891         * basic-calls.cs: Test for the weird crash found on arm.
3892         
3893 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3894
3895         * cpu-arm.md: Increase the size of storer8_membase_reg and
3896         loadr8_membase_reg to 24 bytes to accomodate the extra add.
3897
3898         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
3899         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
3900         reg to LR otherwise we'll be loading/storing from just the offset.
3901
3902 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3903
3904         Question: if we are storing gint32's inside the "*native_offset",
3905         should we change the signature to "gint32 *native_offset" to
3906         ensure that we do not have type definition problems?
3907         
3908         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
3909         an int * as this is what the other function expects, causes
3910         problems with Freescale's compiler that defined int32_t to be a
3911         long and makes int incompatible 
3912
3913 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3914
3915         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
3916         filename conflict with bjam.
3917
3918 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3919
3920         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
3921         as it might use decomposed ops.
3922
3923 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3924
3925         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
3926
3927         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
3928         is defined.
3929
3930         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
3931
3932         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
3933         offsets.
3934
3935         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
3936         way registers are stored in MonoContext on arm.
3937
3938         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
3939         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
3940
3941         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
3942
3943         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
3944
3945         * mini.c (mini_init): Register mono_isfinite.
3946
3947         * jit-icalls.c (mono_isfinite): New jit icall.
3948
3949         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
3950         
3951         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
3952         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
3953         the parent frame.
3954
3955 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3956
3957         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
3958         separate frame and stack pointers, so we must use FP to find the register
3959         spill area.
3960         The FP reg is retrieved from the MonoContext::regs array.
3961
3962 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3963
3964         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
3965         as FPA requires it.
3966
3967 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3968
3969         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
3970         return R4 and R8 when not running under softfloat.
3971
3972         Fixes basic-calls.exe
3973
3974 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3975
3976         * mini-arm.c: Implement some overflow opcodes.
3977
3978 2009-01-29  Miguel de Icaza  <miguel@novell.com>
3979
3980         * ssa.c: handle another alloca.h
3981
3982         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
3983         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
3984         MONO_ARCH_USE_SIGACTION. 
3985
3986         * aot-runtime.c, mini-exceptions.c: Replace platform define with
3987         capability defines.
3988
3989         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
3990
3991         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
3992         PPC targets as sigaction does not exist on all platforms, define
3993         this on a per-platform basis.
3994
3995         Instead of erroring out if the platform is not defined, include
3996         mini-ppc-os.h, and expect that the OS specific setting provides
3997         the required information.   
3998
3999 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4000
4001         * aot-compiler.c: Fix --enable-minimal=aot.
4002
4003 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4004
4005         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
4006         previous change.
4007
4008 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4009
4010         * exceptions-arm.c: Fix warnings.
4011
4012         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
4013         ARM.
4014
4015         * mini-x86.c: Fix --enable-minimal=jit build.
4016
4017         * mini.c: Really fix --enable-minimal=jit build.
4018         
4019         * mini.c (construct_object_context_for_method): Move this outside
4020         the DISABLE_JIT block to fix the --enable-minimal=jit build.
4021
4022         "Backported" of r124984 from 2.0 branch.
4023         
4024         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
4025
4026         "Backport" of r124977 + r124978 from 2.0 branch.
4027         
4028         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
4029         to avoid calling mono_exception_from_token () from the throw trampoline.
4030         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
4031         for throwing corlib exceptions, this fixes full-aot support for corlib
4032         exceptions.
4033
4034         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
4035
4036 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4037
4038         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
4039         part of the changes to split the code in mini into operating
4040         system specific files.
4041
4042         This patch was done by copying mini.c to the respective files to
4043         preserve SVN history.
4044
4045 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4046
4047         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
4048
4049 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
4050
4051         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
4052         remoting-invoke-with-check wrappers of shared methods.
4053
4054         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
4055
4056 2009-01-27  Mark Probst  <mark.probst@gmail.com>
4057
4058         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
4059         optimization if the top of stack is the last instruction in the
4060         bblock.  Otherwise it might have been used after its definition.
4061         Fixes #469742.
4062
4063 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
4064
4065         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
4066         method as well when get_vcall_slot () fails to match a code sequence.
4067
4068         * mini-arm.c: Fix the android build, which doesn't have
4069         __aeabi_read_tp.
4070
4071 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4072
4073         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
4074         the s390x build.
4075
4076 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
4077
4078         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
4079
4080 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4081
4082         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
4083         and put its id into jinfo->used_regs. This is only used on amd64,
4084         which is currently the only platform generating unwind info.
4085
4086         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
4087         the dwarf unwinder. This is required to correctly handle async exceptions
4088         like thread abort and stack overflows, which can happen while a method
4089         is in the middle of its prolog or epilog.
4090         
4091         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
4092         the unwind info belonging to an AOTed method.
4093
4094         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
4095         into cfg->unwind_ops.
4096         
4097         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
4098
4099         * mini.c (mini_init): Call mono_unwind_init ().
4100         (mini_cleanup): Call mono_unwind_cleanup ().
4101
4102         * unwind.c: Add functions for managing a set of unwind info entries, allowing
4103         unwind info to be shared between methods.
4104
4105         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
4106         saved in the LMF.
4107
4108         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
4109         get_throw_pending_exception () to avoid initialization races.
4110
4111         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
4112         mono_arch_exceptions_init () function.
4113
4114         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
4115
4116 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
4117
4118         * mini.c (mono_get_domain_intrinsic): New helper function.
4119         (mono_get_thread_intrinsic): Ditto.
4120
4121         * mini-arm.c mini-ia64.c: Use the new helper functions.
4122         
4123         * method-to-ir.c (mono_method_to_ir): Fix the comment for
4124         the last constrained_call change, since it is needed in the non-AOT
4125         case as well.
4126
4127         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
4128         
4129         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
4130         mono_get_lmf_addr () on arm eabi linux.
4131
4132 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
4133
4134         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
4135         code sequence which matches a non-virtual call.
4136
4137 2009-01-23  Mark Probst  <mark.probst@gmail.com>
4138
4139         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
4140         stack pointer (r1).
4141
4142 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
4143
4144         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
4145         runtime-invoke wrappers, since they are also shared based on signature.
4146
4147 2009-01-22  Mark Probst  <mark.probst@gmail.com>
4148
4149         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
4150         info from the (correct) context.
4151
4152 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
4153
4154         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
4155         
4156         * unwind.c (mono_unwind_frame): New function to unwind through a frame
4157         using dwarf unwinding info. Not yet used.
4158
4159         * mini.c (mini_init): When using xdebug, disable freeing of domains.
4160
4161 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4162
4163         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
4164         descriptors.
4165
4166         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
4167         special case and handle mono_arch_delegate_invoke_impl() returning
4168         function descriptors.
4169
4170         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
4171         trampolines return function descriptors, too.
4172
4173 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4174
4175         * method-to-ir.c (handle_alloc): Avoid generic instances in the
4176         out_of_line optimization.
4177
4178 2009-01-21  Martin Baulig  <martin@ximian.com>
4179
4180         * mini.h
4181         (MonoCompile): Added `disable_deadce_vars' to disable removing
4182         unused variables.
4183
4184         * mini.c
4185         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
4186         inside the debugger.
4187
4188         * liveness.c (mono_analyze_liveness): Don't remove any unused
4189         variables if `cfg->disable_deadce_vars' is set.
4190
4191 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4192
4193         * method-to-ir.c: Only apply exception constructor optimization if
4194         the the method actually belongs to an exception class.  Fixes
4195         #467456.
4196
4197 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4198
4199         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
4200         change inside a #ifdef __mono_ppc64__.
4201
4202         * aot-compiler.c (compile_method): Remove the previous limitation.
4203
4204         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
4205         on type variables in AOTed code.
4206         
4207         * aot-compiler.c (compile_method): Skip generic methods having type 
4208         constraints on their generic parameters.
4209
4210         * aot-compiler.c (compile_method): Check for methods which cannot be
4211         encoded inside RGCTX_FETCH patches as well.
4212
4213         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
4214         build.
4215
4216 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4217
4218         * method-to-ir.c: Force the vtable variable in shared generic code
4219         for the case that they might show up on a stack trace where they
4220         are needed.
4221
4222         * mini-exceptions.c: Save and use generic sharing info as well as
4223         IP in stack traces to resolve shared generic instantiations.
4224
4225 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
4226
4227         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
4228         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
4229
4230 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4231
4232         * method-to-ir.c: Do generic sharing for array constructors.
4233
4234 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
4235
4236         * mini-exceptions.c (mono_print_thread_dump): Add information
4237         about the thread state using wapi_current_thread_desc.
4238
4239 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4240
4241         * basic-simd.cs: Tests for the new constructors. 
4242
4243 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4244
4245         * mini-ops.h: Added OP_EXPAND_*
4246
4247         * cpu-x86.md: Same.
4248
4249         * mini-x86.c (mono_arch_output_basic_block): Same.
4250         
4251         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
4252
4253 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
4254
4255         * iltests.il.in: Add a test for #467385.
4256
4257 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4258
4259         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
4260         thread been cleaned up is not the same currently in execution.
4261
4262         Fixes appdomain-unload crashes on windows, osx and linux variants
4263         without the __thread keyword.
4264
4265 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
4266
4267         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
4268         (koush@koushikdutta.com). Implement this for android.
4269
4270         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
4271         begins with a digit.
4272
4273         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
4274         mono_marshal_get_write_barrier ().
4275
4276 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
4277
4278         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
4279         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
4280         that pass them on a register pair.
4281
4282         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
4283         test was crashing due to that.
4284
4285 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
4286
4287         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
4288         trampoline code. Include ucontext.h only if available.
4289
4290 2009-01-15  Mark Probst  <mark.probst@gmail.com>
4291
4292         * mini.c: mono_domain_lookup_shared_generic() takes an open method
4293         and doesn't check whether it's sharable, like it was before
4294         removing the shared generics hash.  This brings IronPython
4295         performance back to what it was before that change.
4296
4297 2009-01-14  Mark Probst  <mark.probst@gmail.com>
4298
4299         * method-to-ir.c: Handle delegate invocation optimization earlier,
4300         otherwise it would be handled (much more slowly) by the
4301         final/sealed optimization.
4302
4303 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
4304
4305         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
4306         domain is not set. Fixes #465864.
4307
4308 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4309
4310         * method-to-ir.c: Don't stop sharing of generic methods with catch
4311         clauses - we already handle those.
4312
4313 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4314
4315         * mini.c, mini.h: lookup_generic_method() is now
4316         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
4317         making the shared_generics_hash obsolete.
4318
4319 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4320
4321         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
4322         use the red zone.  Make room on the stack first and then use it,
4323         not the other way around.
4324
4325 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
4326
4327         * mini.c (mini_init): Call mono_xdebug_init ().
4328
4329         * aot-compiler.c (mono_xdebug_init): Make this non-static.
4330
4331 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
4332
4333         * TestDriver.cs: Add an --iter argument to run tests multiple times.
4334
4335         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
4336         trampolines.
4337
4338         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
4339         debug+unwind info for trampolines.
4340
4341         * mini.c (mono_create_unwind_op): New helper function.
4342
4343         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
4344
4345 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
4346
4347         * aot-compiler.c: Fix the build.
4348
4349 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
4350
4351         * Makefile.am: Update dtrace-prelink.sh location.
4352
4353 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
4354
4355         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
4356         optimization. Fixes #464520.
4357
4358 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
4359
4360         * mini-amd64.c : Adding code to save/restore non-volatile registers
4361            on Winx64.
4362
4363         * exceptions-amd64.c : Adding code to save/restore non-volatile 
4364           registers on Winx64.
4365
4366         Contributed under MIT/X11 license.
4367
4368 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
4369
4370         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
4371         __GNUC_MINOR__ which can break when the major version changes.
4372
4373 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
4374
4375         * basic-simd.cs: Add tests for usage of the sizeof opcode.
4376
4377 2009-01-07  Geoff Norton  <gnorton@novell.com>
4378
4379         * helpers.c:  Allow mono -v -v -v to work on darwin.
4380
4381 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
4382
4383         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
4384           pattern. 
4385
4386         Contributed under MIT/X11 license.
4387
4388 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
4389
4390         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
4391         instead of directly accessing type->data.klass. Fixes #462016.
4392         (mono_allocate_stack_slots_full): Ditto.
4393
4394         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
4395         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
4396
4397         * aot-compiler.c (emit_plt): Fix ARM build.
4398
4399 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
4400
4401         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
4402         
4403         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
4404         change.
4405
4406         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
4407         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
4408         #463357.
4409
4410         * iltests.il.in: Add a regression test.
4411
4412 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4413
4414         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
4415
4416 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4417
4418         * basic-simd.cs: Add a regression test for #462457.
4419
4420 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4421
4422         * mini-ops.h: Add a definition of XPHI.
4423
4424         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
4425
4426         * ssa.c (op_phi_to_move): Handle XPHI.
4427
4428         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
4429
4430         Fixes #462457
4431
4432 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4433
4434         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
4435
4436 2008-12-31  Geoff Norton  <gnorton@novell.com>
4437
4438         * mini-ppc.c: The prolog size allocated can be too small for darwin
4439         ppc32 under certain circumstances.  Also fix a small logic bug.
4440
4441 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
4442
4443         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
4444         while loading AOT methods.
4445
4446         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
4447         since only the former is nulled out after a successful cast. This prevents
4448         crashes with rethrown exceptions when using --debug=casts.
4449
4450 2008-12-24  Mark Probst  <mark.probst@gmail.com>
4451
4452         * mini.h: New macro for checking whether a method is final,
4453         i.e. whether the method or its class is marked final.
4454
4455         * method-to-ir.c: Use the new macro for all final-checks
4456         consistently.  Fixes the crash in the System.ServiceModel tests.
4457
4458 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4459
4460         * mini-exceptions.c (get_exception_catch_class): Corrected another
4461         overly strict assertion.
4462
4463 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4464
4465         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
4466         Clobbering it is not allowed because the caller might use it as
4467         the vtable register in the interface call.
4468
4469 2008-12-19  Mark Probst  <mark.probst@gmail.com>
4470
4471         * mini-exceptions.c (get_exception_catch_class): Corrected an
4472         overly strict assertion.
4473
4474 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
4475         
4476         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
4477
4478         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
4479
4480         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
4481
4482         * cpu-mips.md: correct lengths for certain long_ opcodes.
4483
4484         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
4485
4486         * 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().
4487         
4488 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4489
4490         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
4491         
4492 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4493         
4494         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
4495         
4496 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
4497
4498         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
4499         next basic block.
4500         
4501 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
4502
4503         * 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
4504
4505         * 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)
4506         
4507 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
4508         
4509         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
4510         
4511 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
4512
4513         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
4514         gshared code. Fixes #458947.
4515
4516         * generics.cs: Add a test.
4517
4518 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4519         
4520         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4521         
4522         * mini-mips.c: first pass n32 code generation.
4523
4524         * mini-mips.h: datatypes and defines for n32 support.
4525
4526         * exceptions-mips.c: first pass n32 code generation.
4527         
4528         * tramp-mips.c: first pass n32 code generation.
4529         
4530         * cpu-mips.md: add long_ opcodes.
4531         
4532 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4533
4534         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4535
4536         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4537         
4538         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4539         
4540         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4541
4542         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4543
4544         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4545
4546         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4547
4548         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4549
4550         * helpers.c: for mips/n32, don't pass -mips32 to objdump
4551
4552 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
4553
4554         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
4555
4556 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
4557
4558         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
4559
4560 2008-12-12  Mark Probst  <mark.probst@gmail.com>
4561
4562         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
4563         descriptors for helper functions directly in front of the code.
4564
4565 2008-12-11  Mark Probst  <mark.probst@gmail.com>
4566
4567         * method-to-ir.c: Removed an unnecessary assertion.
4568
4569 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4570
4571         * method-to-ir.c: Merge SGEN changes from the old JIT.
4572
4573 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4574
4575         * driver.c (compile_all_methods_thread_main): Handle failure of
4576         mono_get_method ().
4577
4578 2008-12-10  Mark Probst  <mark.probst@gmail.com>
4579
4580         * mini-ppc.c: Merged with mini-ppc64.c.
4581
4582         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
4583
4584         * Makefile.am: Use the same sources for PPC and PPC64.
4585
4586         * mini-ppc64.c: Removed.
4587
4588 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4589
4590         * branch-opts.c (remove_block_if_useless): Extract fall through detection
4591         code to mono_bb_is_fall_through.
4592         
4593         * branch-opts.c (mono_remove_critical_edges): Same.
4594
4595 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4596
4597         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
4598         expect that an OP_BR_REG will be there.
4599
4600 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4601
4602         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
4603         for the many branch ops. The original check miss OP_BR_REG.
4604
4605         Fixes #457574.
4606         
4607 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4608
4609         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
4610
4611 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4612
4613         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
4614         while holding the aot lock.
4615
4616 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4617
4618         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
4619         
4620 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4621
4622         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
4623           to release all runtime callable wrappers held by the runtime.
4624
4625         Contributed under MIT/X11 license.
4626
4627 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4628
4629         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
4630           for Winx64.
4631
4632         Contributed under MIT/X11 license.
4633
4634 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4635
4636         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
4637         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
4638
4639 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4640
4641         * cpu-mips.md: fix ckfinite length
4642
4643         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
4644         (mono_arch_lowering_pass): cleanup, rearrange for clarity
4645         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
4646         
4647 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
4648
4649         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
4650         
4651 2008-12-08  Geoff Norton  <gnorton@novell.com>
4652
4653         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
4654         size by 8 bytes as well.
4655
4656 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4657
4658         * basic-simd.cs: Fix method names for Vector16b.
4659         
4660 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4661
4662         * basic-simd.cs: Fix method names for Vector16sb.
4663
4664 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4665
4666         * basic-simd.cs: Fix method names for Vector8us.
4667         
4668 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4669
4670         * basic-simd.cs: Fix method names for Vector8s.
4671         
4672 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4673
4674         * basic-simd.cs: Fix method names for Vector4ui.
4675
4676 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4677
4678         * basic-simd.cs: Fix method names for Vector2l.
4679
4680 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4681
4682         * basic-simd.cs: Fix method names for Vector2d.
4683
4684 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4685
4686         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
4687         that are extension methods.
4688
4689 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4690
4691         * basic-simd.cs: Fix method names for Vector4f.
4692
4693 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
4694
4695         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
4696         as such. Fixes #456669.
4697
4698 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4699
4700         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
4701         
4702 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4703
4704         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
4705         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
4706         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
4707         (mips_adjust_stackframe): handle FP spills
4708                 
4709         * mini-ops.h: add mips_mtc1_s2
4710         
4711         * cpu-mips.md: add mips_mtc1_s2
4712         
4713 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
4714
4715         * unwind.c: New file, move the unwind info encoding functions here from
4716         aot-compiler.c, so they could be used at runtime too.
4717
4718 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4719
4720         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
4721         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
4722         
4723 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4724
4725         * mini-mips.c: cleanup warnings
4726         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
4727         (mips_adjust_stackframe): handle case of taking the address of stack locals
4728         
4729 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4730
4731         * aot-compiler.c: Implement a few functions missing from the asm writer.
4732         (emit_method_code): Only write symbols for methods when using the bin
4733         writer, since the assembler can't deal with the characters in our method
4734         names.
4735
4736         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
4737
4738         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
4739         call.
4740
4741         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
4742         a bit to also restore %rax.
4743
4744 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4745
4746         * mini-ppc.c: Some simple merges from mini-ppc64.c.
4747
4748 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4749
4750         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
4751         arguments.
4752
4753 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4754
4755         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
4756
4757         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
4758         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
4759
4760         * exceptions-ppc64.c: Removed.
4761
4762         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
4763
4764 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4765
4766         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
4767         tramp-ppc64.c.
4768
4769         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
4770
4771         * tramp-ppc64.c: Removed.
4772
4773 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4774
4775         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
4776         the TYPESPEC table.
4777
4778 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4779
4780         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
4781
4782         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
4783         mini-ppc.h instead of mini-ppc64.h.
4784
4785         * mini-ppc64.h: Removed.
4786
4787 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4788
4789         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
4790         
4791         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
4792         
4793 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4794
4795         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
4796         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
4797         code easier.
4798
4799 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4800
4801         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
4802
4803 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4804
4805         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
4806
4807 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4808
4809         * basic-simd.cs: Tests for operator == and != on Vector4f.
4810
4811 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4812
4813         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
4814
4815         * simd-intrinsics.c: Kill useless enum.
4816
4817 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4818
4819         * cpu-mips.md: add long_conv_to_ovf_i4_2
4820         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
4821
4822 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4823
4824         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
4825         
4826         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
4827
4828 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4829
4830         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
4831         
4832 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4833
4834         * basic-simd.cs: Add tests for new methods.
4835
4836 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4837
4838         * simd-intrinsics.c: Add support for operator == and !=
4839         on Vector4(u)i.
4840
4841         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
4842
4843 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4844
4845         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
4846
4847 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
4848
4849         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
4850
4851         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
4852         MONO_PATCH_INFO_ICALL_ADDR.
4853
4854         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
4855
4856         * aot-compiler.c: Resurrect full-aot support.
4857
4858 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4859
4860         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
4861         
4862 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4863
4864         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
4865         
4866 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
4867
4868         * basic-simd.cs: Fix tests to work under ppc.
4869         Remove tests for methods that will be removed.
4870
4871 2008-12-03  Mark Probst  <mark.probst@gmail.com>
4872
4873         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
4874         generic type (via a typedef or typeref) correctly.
4875
4876 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
4877
4878         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
4879         diagnose an assertion failure.
4880
4881 2008-12-02  Mark Probst  <mark.probst@gmail.com>
4882
4883         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
4884         Fix trampoline size.
4885
4886         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
4887         conversion opcodes are implemented natively instead via emulation.
4888
4889 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4890
4891         * cpu-mips.md: remove mips_xori
4892
4893         * mini-ops.h:  remove mips_xori
4894
4895         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
4896
4897         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
4898         
4899         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
4900         
4901 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4902
4903         * cpu-mips.md: fix instruction lengths.
4904
4905         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
4906
4907         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
4908
4909         * mini-ops.h: fix slti / sltiu op profiles.
4910         
4911 2008-12-02  Martin Baulig  <martin@ximian.com>
4912
4913         * method-to-ir.c (mono_method_to_ir): Disable debugging
4914         information for the init locals block to make the debugger stop
4915         after all locals have been initalized.
4916
4917 2008-12-02  Martin Baulig  <martin@ximian.com>
4918
4919         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
4920         running inside the debugger.
4921
4922 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
4923
4924         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
4925         is enabled.
4926
4927         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
4928         alu->alu imm optimization which only shows if deadce is disabled.
4929
4930         * aot-compiler.c: Rename the function names for the binary and asm writers
4931         so they can coexist in the same process. Rework the xdebug code to use the
4932         asm writer. This avoids the need to call into the runtime to dump the
4933         debugging info. Add more debugging info for types.
4934
4935         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
4936
4937         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
4938         cpu description tables, they can't occur in cpu-<ARCH>.md.
4939
4940         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
4941         the stack in CEE_LDFLDA. Fixes #450542.
4942
4943         * generics.cs: Add a new test.
4944
4945 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4946
4947         * mini-ops.h: updated MIPS opcodes
4948         * mini-mips.c: decompose long opts
4949         * mini-mips.h: decompose long opts
4950         
4951 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
4952
4953         * cpu-mips.md: fix length on int_rem_un
4954         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
4955         
4956 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
4957
4958         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
4959
4960         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
4961
4962 2008-11-29  Martin Baulig  <martin@ximian.com>
4963
4964         * mini-exceptions.c (mono_handle_native_sigsegv): Check
4965         mono_debug_using_mono_debugger() in addition to the
4966         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
4967
4968 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4969
4970         * mini-ops.h: updated more MIPS opcodes
4971         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
4972         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
4973         
4974 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4975
4976         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
4977
4978 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4979
4980         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
4981         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
4982         * mini-ops.h: correct selected mips opcode entries
4983         
4984 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4985
4986         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
4987         make them work.
4988
4989 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4990
4991         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
4992
4993 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4994
4995         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
4996         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
4997         * mini-mips.h: disable IMT
4998         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
4999         
5000 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5001
5002         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
5003
5004 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5005
5006         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
5007
5008 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
5009
5010         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
5011         consistency.
5012
5013 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5014
5015         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5016         for Set/GetVector aligned versions.
5017
5018 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5019
5020         * basic-simd.cs: Add tests for Get/SetVector.
5021
5022 2008-11-27  Mark Probst  <mark.probst@gmail.com>
5023
5024         * mini.c: Removed g_slist_append_mempool().  Now in
5025         metadata/mempool.c.
5026
5027 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5028
5029         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
5030         size properly and make the bounds check optional.
5031
5032         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5033         for SetVector and IsAligned.
5034
5035 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
5036
5037         * mini.c: Remove unused mono_normalize_opcodes () function.
5038
5039 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5040
5041         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
5042         using the new atomic add ops now.
5043
5044         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
5045         add.
5046
5047 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5048
5049         * mini-ppc64.c: Several fixes.
5050
5051 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5052
5053         * cpu-mips.md: added jump_table
5054         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
5055
5056 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5057
5058         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
5059
5060 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5061
5062         * mini-ops.h: corrected a handful of MIPS opcodes.
5063
5064 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5065
5066         * aot-compiler.c: MIPS to use ELF writer
5067
5068 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5069
5070         * mini-codegen.c: remove MIPS specific assert.
5071
5072 2008-11-25  Mark Probst  <mark.probst@gmail.com>
5073
5074         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
5075         fixes.  PPC64 now passes most of the runtime regressions.
5076
5077 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
5078
5079         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
5080         volatile intervals a bit.
5081
5082 2008-11-24  Mark Probst  <mark.probst@gmail.com>
5083
5084         * basic-long.cs: New test case.
5085
5086 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5087
5088         * mini.c (mini_method_compile): Disable globalra for large methods for 
5089         now.
5090
5091         * regalloc2.c (order_moves): Add fp support.
5092
5093         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
5094         source bblock ends with an OP_BR_REG.
5095
5096         * ratests.cs: Add a new test.
5097
5098 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5099
5100         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
5101         sharing.  PPC64 now passes generics.exe.
5102
5103 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5104
5105         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
5106
5107 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5108
5109         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
5110         memory when mono_jit_info_table_find () can't find the method in the
5111         LMF case.
5112
5113         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
5114         AOTed code too.
5115         
5116         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
5117         writer too.
5118
5119 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5120
5121         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
5122         Several fixes.  PPC64 now runs exceptions.exe and
5123         devirtualization.exe.
5124
5125 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5126
5127         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
5128         arrays.exe and basic-math.exe.
5129
5130 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5131
5132         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
5133         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
5134
5135 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5136
5137         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
5138
5139 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5140
5141         * method-to-ir.c: Move bounds checking macros to ir-emit.h
5142
5143         * ir-emit.h: Move macros from method-to-ir.c to here.
5144
5145 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5146
5147         * mini-ops.h: Correct the long simd ops to use LREG.
5148
5149 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
5150
5151         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
5152         
5153         * mini-ops.h: Correct the dreg type of a few long opcodes.
5154
5155         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
5156         Add netbsd support.
5157
5158 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
5159
5160         * mini-ppc.c: remove negative stack references in epilog
5161         for platforms that don't support the red zone.
5162
5163 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5164
5165         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
5166         point regs.  Now PPC64 passes basic-calls.exe.
5167
5168 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5169
5170         * basic-simd.cs: Add tests for accessors of Vector2l.
5171
5172 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5173
5174         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
5175
5176         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
5177         
5178         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
5179
5180 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5181
5182         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
5183         PPC64 passes basic-long.exe.
5184
5185 2008-11-20  Mark Probst  <mark.probst@gmail.com>
5186
5187         * decompose.c: Decompose carry and overflow add on PPC64 like on
5188         other 64 bit archs.  Don't decompose sub at all on PPC64.
5189
5190         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
5191         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
5192         basic-long.exe.
5193
5194 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5195
5196         * basic-simd.cs: Add tests for accessors of Vector2d.
5197
5198 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5199
5200         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
5201
5202         * cpu-x86.md: Same.
5203
5204         * mini-x86.c (mono_arch_output_basic_block): Same.
5205         
5206         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
5207
5208 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5209
5210         * basic-simd.cs: Add tests for accessors of Vector4f.
5211
5212 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5213
5214         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
5215
5216         * cpu-x86.md: Same.
5217
5218         * mini-x86.c (mono_arch_output_basic_block): Same.
5219         
5220         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
5221
5222 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5223
5224         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
5225
5226 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5227
5228         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
5229
5230         * cpu-x86.md: Same.
5231
5232         * mini-x86.c (mono_arch_output_basic_block): Same.
5233         
5234         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
5235
5236 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5237
5238         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
5239
5240 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5241
5242         * simd-intrinsics.c: Enable setters for Vector16sb.
5243
5244 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5245
5246         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
5247
5248         * cpu-x86.md: Same.
5249
5250         * mini-x86.c (mono_arch_output_basic_block): Same.
5251         
5252         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
5253
5254 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
5255
5256         * simd-intrinsics.c: Implement setter for Vector8us.
5257
5258 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5259
5260         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
5261         for dead variables.
5262
5263 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
5264
5265         * mini-ppc.c: remove references to the red zone in the prolog
5266         (for systems that don't support it).
5267
5268 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5269
5270         * cpu-ppc64.md: Fixed a few instruction lengths.
5271
5272         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
5273         now.
5274
5275 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5276
5277         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
5278         basic.exe now.
5279
5280 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5281
5282         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
5283
5284 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
5285
5286         * mini-ops.h: Added OP_INSERT_I2.
5287
5288         * cpu-x86.md: Same.
5289
5290         * mini-x86.c (mono_arch_output_basic_block): Same.
5291         
5292         * simd-intrinsics.c: Implement setter for Vector8s.
5293
5294         * simd-methods.h: Add the names of get setters of Vector8s.
5295
5296 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5297
5298         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
5299         
5300         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
5301         parameters.
5302
5303         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5304
5305 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5306
5307         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
5308         for PPC64.  An empty program runs now.
5309
5310 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5311
5312         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5313
5314         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
5315         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
5316         info for JITted code is emitted into a shared library, loadable into gdb.
5317
5318 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5319
5320         * Makefile.am: Changes to build PPC64.
5321
5322         * mini-arch.h: Include mini-ppc64.h on PPC64.
5323
5324 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5325
5326         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
5327         in PPC code up to r119147.
5328
5329 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5330
5331         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5332         cpu-ppc64.md: Changes for PPC64.
5333
5334         Based on code submitted by andreas.faerber@web.de at
5335         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
5336         X11/MIT license.
5337
5338 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5339
5340         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5341         cpu-ppc64.md: Copied from the corresponding PPC files from
5342         r118846.
5343
5344 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
5345
5346         * mini-ops.h: Added OP_ROUND.
5347
5348         * cpu-x86.md: Added round.
5349
5350         * mini-x86.c: Added support for intrinsicing Math.Round (double).
5351
5352         * basic-math.cs: Added test_0_round to test rounding.
5353
5354         Contributed under MIT/X11 license.
5355
5356 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
5357
5358         * aot-compiler.c : Fix the Winx64 build.
5359
5360         Contributed under MIT/X11 license.
5361
5362 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5363
5364         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
5365         in OP_EXTRACT_R8 to avoid possible stack corruption.
5366
5367 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5368
5369         * mini-ops.h: Added OP_EXTRACT_R8/I8.
5370
5371         * cpu-x86.md: Added extract_r8.
5372
5373         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
5374         
5375         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
5376         a couple of OP_EXTRACT_I4.
5377
5378         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
5379
5380         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
5381
5382 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5383
5384         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
5385         and not 4.1. 
5386
5387 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5388
5389         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
5390         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
5391
5392         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
5393         are not needed any more.
5394
5395         * mini.h: Remove the unused INS_LIST macros.
5396
5397         * mini.c (mini_method_compile): Remove a disable globalra case which is no
5398         longer needed.
5399
5400         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
5401         ir-emit.h.
5402
5403         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
5404         mono_alloc_ireg () instead.
5405
5406         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
5407         macros.
5408
5409         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
5410         on amd64.
5411
5412         * aot-runtime.c (load_aot_module): Disable AOT when running under
5413         CAS.
5414
5415         * mini-amd64.h: Change the monitor fastpath defines to check for
5416         !PLATFORM_WIN32 so they work on *bsd too.
5417
5418         * mini.h mini.c mini-hhpa.c: Remove more unused code.
5419
5420         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
5421
5422         * mini.h (MonoCompile): Remove new_ir flag.
5423
5424         * regalloc.h regalloc.c: Remove unused code.
5425
5426         * cpu-*.md: Remove more unused opcodes.
5427
5428         * simple-cee-ops.h simple-mini-ops.h: Removed.
5429
5430         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
5431         
5432 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5433
5434         * aliasing.h: Removed.
5435
5436         * *.c: Remove references to aliasing.h and inssel.h.
5437
5438         * mini.c: Remove additional unused functions.
5439
5440         * mini-ops.h cpu-*.md: Remove unused opcodes.
5441
5442 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5443
5444         Remove the old JIT code.
5445
5446         * inssel*.brg: Removed.
5447
5448         * ssa.c abcremoval.c aliasing.c: Removed.
5449
5450         * ssa2.c: Renamed to ssa.c.
5451
5452         * abcremoval2.c: Renamed to abcremoval.c.
5453
5454         * *.c: Removed all !cfg->new_ir code.
5455
5456         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
5457         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
5458
5459         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
5460         
5461 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5462
5463         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
5464         to simplify the code and cut back on the number of global symbols in the AOT
5465         file.
5466         
5467         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
5468
5469 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
5470
5471         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
5472         with the got/got_info tables.
5473
5474         * mini.h: Bump AOT file format version.
5475         
5476         * unwind.h: New file, contains definitions for stack unwinding.
5477
5478         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
5479         to cfg->unwind_ops.
5480         
5481         * aot-compiler.c: Generalize the emitting of unwind information to use the
5482         information in cfg->unwind_ops.
5483
5484         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
5485
5486         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
5487         AOT method frames. Enable writing symbols for methods by default.
5488
5489 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
5490
5491         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
5492         and make it work with vectors of element sizes 1, 2 and 4.
5493
5494         * simd-intrinsics.c: Enable getter for all vectors with element size
5495         1, 2 or 4.
5496
5497         * simd-methods.h: Add the names of other getters.
5498
5499         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
5500
5501         * cpu-x86.md: Same.
5502
5503         * mini-x86.c: Same.
5504
5505 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
5506
5507         * mini-ppc.h: portability fix.
5508
5509 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5510
5511         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
5512         buggy and will overwrite it.
5513
5514 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5515
5516         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
5517         Use it to emit local symbols for all methods so AOTed methods show up with
5518         their full name in gdb/valgrind output.
5519
5520 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5521
5522         * mini-ppc.c: portability fixes.
5523
5524 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5525
5526         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
5527         entries out of the if (!generic_shared...) code so it is always done.
5528         (mono_class_init_trampoline): Do the patching when running under valgrind
5529         too, newer versions of valgrind have no problems with it.
5530
5531 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5532
5533         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
5534         further sections.
5535
5536 2008-11-13  Mark Probst  <mark.probst@gmail.com>
5537
5538         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
5539         filters.
5540
5541 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5542
5543         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
5544
5545 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5546
5547         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
5548
5549         * cpu-x86.md: Same.
5550
5551         * mini-x86.c: Same.
5552
5553         * simd-intrinsics.c: Same.
5554
5555 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5556
5557         * simd-intrinsics.c: Enable constructor intrinsics for all types.
5558
5559 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5560
5561         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
5562         to work with more Vector types.
5563
5564 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5565
5566         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
5567         store the elemens directly instead of using and intermediate.
5568
5569 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5570
5571         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
5572
5573         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
5574         to preserve %eax for aot plt trampolines.
5575
5576         * aot-compiler.c (compile_method): Don't skip synchronized methods.
5577         (encode_method_ref): Flag synchronized methods so they won't go through
5578         the AOT trampoline.
5579
5580         * aot-compiler.c: Additional work to support AOTing synchronized methods/
5581         wrappers.
5582
5583         * cpu-ia64.md (jmp): Increase max length.
5584
5585 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5586
5587         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
5588         open generic classes.
5589
5590         * aot-compiler.c: Enable the ELF writer on ELF platforms.
5591
5592         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
5593         box+brtrue optimization since it causes test failures on x86.
5594
5595 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5596
5597         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
5598
5599         * cpu-x86.md: Same.
5600
5601         * mini-x86.c: Same.
5602
5603         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
5604         for simd ctor values. 
5605
5606         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
5607         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
5608
5609 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5610
5611         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
5612         LogicalRightShift.
5613
5614         * simd-instrincs.c: Same.
5615
5616         * basic-simd.cs: Same.
5617
5618 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5619
5620         * ratests.cs: Add more tests.
5621
5622         * regalloc2.c (add_spill_code): Handle more corner cases.
5623
5624 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5625
5626         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
5627         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
5628         both the source an destination of an instruction.
5629
5630 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5631
5632         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
5633         wapihandles.c: more portability changes.
5634
5635 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
5636
5637         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
5638         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
5639         safe to execute in a signal handler and the kernel provides better
5640         the info in /proc/self/smaps. Avoid the assert on sigaction during
5641         cleanup.
5642
5643 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5644
5645         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
5646         do the bblock linking hack if it is actually needed.
5647
5648         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
5649         up linking.
5650
5651         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
5652         crash problem is fixed.
5653
5654         * branch-opts.c (mono_remove_critical_edges): Link up newly added
5655         bblocks.
5656
5657         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
5658         for catch clauses.
5659         (mini_method_compile): Set the starting value of next_vreg to 
5660         MAX_IREGS + MAX_FREGS when using globalra.
5661
5662         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
5663         filter clauses with BB_EXCEPTION_HANDLER.
5664
5665         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
5666
5667 2008-11-10  Mark Probst  <mark.probst@gmail.com>
5668
5669         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
5670         space for stdcall.  Fixes regressions on Win32.
5671
5672 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
5673
5674         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
5675         bblocks.
5676         (linear_scan): Remove an assert which doesn't seem to be needed.
5677
5678         * local-propagation.c (mono_local_deadce): Avoid a call to
5679         MONO_DELETE_INS which would screw up the instruction linking.
5680
5681         * mini.c (mono_decompose_op_imm): Make this work with globalra.
5682
5683         * regalloc2.c: Upgrade to work the current JIT code.
5684
5685 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
5686
5687         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
5688         case.
5689
5690         * aot-runtime.c: Remove some dead code.
5691
5692         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
5693         consistency.
5694         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
5695
5696         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
5697         trampolines using sscanf since atoi doesn't work on large unsigned values.
5698
5699         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
5700         Initialize code_size.
5701
5702 2008-11-08  Mark Probst  <mark.probst@gmail.com>
5703
5704         * method-to-ir.c (mini_emit_inst_for_method): Make
5705         Interlocked.CompareExchange work for Int arguments on 32 bit
5706         archs, as well.
5707
5708 2008-11-07  Mark Probst  <mark.probst@gmail.com>
5709
5710         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
5711
5712 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
5713
5714         * main.c Fix MSVC build.
5715
5716         Contributed under MIT/X11 license.
5717
5718 2008-11-06  Mark Probst  <mark.probst@gmail.com>
5719
5720         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
5721         alignment larger than 8 bytes are aligned correctly, too.
5722
5723         * mini.c: Honor the min_align field of MonoClass when laying out
5724         the stack.
5725
5726 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
5727
5728         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
5729
5730         * aot-compiler.c (emit_plt): Fix a warning.
5731         
5732         * aot-compiler.c: Implement ARM support in the binary writer.
5733
5734 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5735
5736         * basic-simd.cs: Add test for getter with byref arg.
5737         Fix the naming of a few tests.
5738         Add missing checks to a test.
5739
5740 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5741
5742         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
5743
5744         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
5745         most of the full-aot support for monitor enter/exit trampolines.
5746
5747         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
5748         enter/exit trampoline creation functions.
5749
5750         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
5751         make dist.
5752
5753 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
5754
5755         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
5756         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
5757         implement the needed functionality without adding crap to the runtime.
5758
5759 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5760
5761         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
5762         non-x86 builds.
5763
5764         * mini.c (mono_build_date): New global version holding the build date in
5765         string format.
5766         
5767         * Makefile.am (buildver.c): Generate a file containing the build date.
5768
5769         * main.c: Set the build date from the generated file.
5770
5771         * mini.c (mono_get_runtime_build_info): New helper function returning build
5772         information in a string format.
5773         
5774         * driver.c (mono_main): Print the build date in --version.
5775
5776         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
5777         file when the bind-to-runtime-version option is used.
5778
5779 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5780
5781         * simd-intrinsics.c: Fix bug when using getters and byref args. 
5782
5783 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5784
5785         * simd-methods.h: Rename prefetch methods.
5786
5787         * simd-intrinsics.c: Same.      
5788
5789 2008-11-05  Mark Probst  <mark.probst@gmail.com>
5790
5791         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
5792         sizes.
5793
5794 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5795
5796         * aot-compiler.c: Use the bundled elf header files instead of depending on
5797         the system one.
5798         
5799         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
5800         mempool.
5801
5802         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
5803         on every call.
5804
5805 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
5806
5807         * cpu-x86.md: Add store nta ops.
5808
5809         * mini-ops.h: Same.
5810
5811         * mini-x86.c: Same.
5812
5813         * mini.h: Add an enum for simd prefetch modes.
5814
5815         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
5816         of store. Use the changed code to support store nta.
5817
5818         * simd-intrinsics.c: Add prefetch ops for all vector types.
5819
5820 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5821
5822         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
5823         threads.
5824         
5825         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
5826         names.
5827
5828         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
5829         trampolines.
5830
5831 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5832
5833         * mini-x86.c: Fixed commit.
5834
5835 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5836
5837         * aot-compiler.c (emit_plt): Align the plt section only on x86.
5838
5839 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5840
5841         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
5842         and MONITOR_EXIT, for the ASM fastpaths.
5843
5844         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
5845         available.
5846
5847         * mini.c, patch-info.h: Signature and patch infos for
5848         Monitor.Enter/Exit trampolines.
5849
5850         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
5851
5852         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
5853         Monitor.Enter/Exit ASM fastpath for Linux.
5854
5855 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5856
5857         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
5858
5859         * objects.cs: Add a new test.
5860         
5861         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
5862
5863         * aot-runtime.c (load_method): Run class initialization in the PLT case even
5864         if MONO_LOG_LEVEL is set.
5865
5866         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
5867
5868         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
5869
5870         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
5871         
5872         * aot-compiler.c: Change the relocation code to use virtual addresses instead
5873         of file offsets. Align the sections belonging to the data segment to 
5874         PAGESIZE.
5875
5876 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5877
5878         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
5879         elf.h. Port it to amd64.
5880
5881 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5882
5883         * driver.c: Enable SIMD by default.
5884
5885 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5886
5887         * cpu-x86.md: Add prefetch op.
5888
5889         * mini-ops.h: Same.
5890
5891         * mini-x86.c: Same.
5892
5893         * mini.h: Add an enum for simd prefetch modes.
5894
5895         * simd-methods.h: Add prefetch function names.
5896
5897         * simd-intrinsics.c: Add prefetch ops for all vector types.
5898
5899 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5900
5901         * aot-compiler.c (emit_bytes): Speed this up a little.
5902
5903 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
5904
5905         * aot-compiler.c: Add JIT time etc. statistics.
5906         
5907         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
5908
5909         * mini.h (MonoCompile): Add 'got_offset' field.
5910
5911         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
5912         method_got_offsets array.
5913
5914         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
5915         wrappers.
5916
5917         * aot-compiler.c (compile_method): Add generic method instances referenced
5918         by the method to the list of methods to be compiled, this is required so if
5919         A<T> references B<T>, and another assembly references A<int>, then it will
5920         also get a copy of B<int>.
5921
5922         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
5923         when checking for monitor enter/exit.
5924
5925 2008-10-30  Mark Probst  <mark.probst@gmail.com>
5926
5927         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
5928         for Monitor.Enter and Monitor.Exit if enabled.
5929
5930         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
5931         Solaris.
5932
5933 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
5934
5935         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
5936         of an OP_MOVE. Fixes #440046.
5937
5938         * basic-long.cs: Add a new test.
5939
5940 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5941
5942         * mini.h: Add synchronization note for the managed counter-part.
5943
5944         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
5945         returns the simd caps of the current cpu.
5946
5947 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5948
5949         * basic-simd.cs: Remove Console.WriteLine.
5950
5951 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5952
5953         * basic-simd.cs: New tests for Vector2ul.
5954
5955 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5956
5957         * simd-intrinsics.c: Add new vector type Vector2ul.
5958
5959 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5960
5961         * basic-simd.cs: New tests for Vector2l.
5962
5963 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5964
5965         * cpu-x86.md: Add long version of most packed int ops.
5966
5967         * mini-ops.h: Same.
5968
5969         * mini-x86.h: Same.
5970
5971         * simd-intrinsics.c: Add new vector type Vector2l.
5972
5973 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5974
5975         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
5976
5977         * simd-methods.h: Remove SN_op_BitwiseXor.
5978
5979 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
5980
5981         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
5982         alignment.
5983
5984 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5985
5986         * basic-simd.cs: Test for Vector2d.
5987
5988         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
5989         value.
5990
5991 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5992
5993         * cpu-x86.md: Add double version of all packed float ops.
5994
5995         * mini-ops.h: Same.
5996
5997         * mini-x86.h: Same.
5998
5999         * simd-intrinsics.c: Add new vector type Vector2d.
6000
6001         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
6002
6003         * simd-methods.h: Add Duplicate.
6004
6005 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6006
6007         * basic-simd.cs: Test for packing with signed saturation.
6008
6009 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6010
6011         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
6012         found in the TYPESPEC table.
6013
6014 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
6015
6016         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
6017         too.
6018
6019         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6020
6021         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
6022         instead of the RVA, since the RVA can be changed by tools like the cil 
6023         stripper.
6024
6025         * method-to-ir.c (mono_method_to_ir2): Ditto.
6026
6027         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
6028         (deserialize_variable): Ditto.
6029
6030 2008-10-25  Martin Baulig  <martin@ximian.com>
6031
6032         * debug-mini.c (write_variable): Use
6033         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
6034
6035 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6036
6037         * cpu-x86.md: Add unsigned variants of packd and packw.
6038
6039         * mini-ops.h: Same.
6040
6041         * mini-x86.h: Emit the right instruction for packd and packw.
6042         Add unsigned variants of packd and packw.
6043
6044         * simd-intrinsics.c: Packd and packw were used in place of their
6045         unsigned variants. Change that.
6046         Add intrinsics for (Signed)PackWithSignedSaturation.
6047
6048         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
6049
6050 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6051
6052         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
6053
6054 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6055
6056         * mini-ops.h: Remove dword packed add/sub with saturation ops.
6057
6058         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
6059
6060         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
6061         sse instructions.
6062
6063         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
6064
6065 2008-10-24  Mark Probst  <mark.probst@gmail.com>
6066
6067         * method-to-ir.c, mini.c: Special casing for the synchronized
6068         wrapper for the ldtoken+GetTypeFromHandle case.
6069
6070 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6071
6072         * mini.c (mono_replace_ins): Move this to branch-opts.c.
6073
6074         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
6075         created/split bblocks.
6076
6077 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6078
6079         * mini-ops.h: Add packed signed mul high.
6080         
6081         * cpu-x86.md: Same.
6082
6083         * mini-x86.c (mono_arch_output_basic_block): Same.
6084
6085         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
6086
6087         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
6088
6089 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6090
6091         * basic-simd.cs: Tests for Vector16sb.
6092
6093 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6094
6095         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
6096
6097 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6098
6099         * mini-ops.h: Add packed signed min, max and compare greater.
6100         
6101         * cpu-x86.md: Same.
6102
6103         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
6104         saturation.
6105
6106         * simd-methods.h: Add CompareGreaterThan.
6107
6108         * simd-methods.h: Remove CompareEquals.
6109
6110         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
6111
6112         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
6113
6114         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
6115         CompareEqual.
6116
6117 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6118
6119         * basic-simd.cs: Fix tests due to change in the API.
6120
6121 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6122
6123         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
6124
6125 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6126
6127         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
6128
6129         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
6130         inst_offset as this has invalid values for LDADDR.
6131
6132 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6133
6134         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6135
6136         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
6137
6138 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6139
6140         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
6141         for accessing field->data.
6142
6143 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6144
6145         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6146
6147 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6148
6149         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
6150
6151         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
6152
6153 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6154
6155         * dominators.c (mono_compute_natural_loops): Allocate GList enties
6156         from the cfg mempool.
6157
6158 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6159
6160         * basic-simd.cs: Tests for new methods in Vector8us.
6161
6162 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6163
6164         * mini-ops.h: Add multiply and store high.
6165         
6166         * cpu-x86.md: Same.
6167
6168         * mini-x86.c (mono_arch_output_basic_block): Same.
6169
6170         * simd-methods.h: Same.
6171
6172         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
6173         and CompareEqual.
6174
6175 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6176
6177         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
6178         mono_class_setup_vtable ().
6179
6180         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
6181         mono_class_get_vtable_entry () for accessing klass->vtable.
6182
6183         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
6184
6185         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
6186         found.
6187
6188         * method-to-ir.c (mono_save_token_info): Don't save references made from
6189         wrappers.
6190
6191         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
6192         of generic instances.
6193
6194         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
6195
6196 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6197
6198         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
6199         OP_JMP depends on the method signature.  Calculate it properly.
6200
6201 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6202         
6203         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
6204         called directly.
6205
6206         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
6207         instances.
6208         (emit_extra_methods): Add another table mapping method indexes to 
6209         offsets in the extra_method_info table.
6210
6211         * mini.h: Bump AOT file format version.
6212         
6213         * aot-runtime.c: Merge most of the code from mono_aot_get_method
6214         and mono_aot_get_method_from_token () into one function.
6215
6216 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6217
6218         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
6219         separate counter.
6220
6221 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
6222
6223         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
6224         methods.
6225
6226         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
6227         disable_aot.
6228
6229         * mini.c (mono_patch_info_equal): Compare the generic context as well.
6230
6231         * mini.h: Bump aot file format version.
6232
6233         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
6234         AOT file can contain native code for methods which are not in the METHOD
6235         table. Generate code for non-sharable generic instances of generic methods
6236         found in the METHODSPEC table.
6237         
6238         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
6239         encoding generic type handles.
6240
6241         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
6242         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
6243
6244         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
6245         macros + MONO_ADD_INS.
6246
6247         * mini.c (mono_jump_info_token_new2): New function which takes a generic
6248         context as well.
6249
6250         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
6251
6252         * mini.h: Bump aot file format version.
6253
6254         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
6255
6256 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6257
6258         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
6259         platforms, with definable stack alignment value.  Set to 16 now
6260         for all platforms.
6261
6262         * mini.c, mini.h, driver.c: Command line option for disabling
6263         stack alignment.
6264
6265 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6266
6267         * basic-simd.cs: Tests for new methods in Vector4ui.
6268
6269 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6270
6271         * mini-ops.h: Add packed int shuffle.
6272         
6273         * cpu-x86.md: Same.
6274
6275         * mini-x86.c (mono_arch_output_basic_block): Same.
6276
6277         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
6278         extract mask, max, min, shuffle.
6279
6280         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
6281
6282 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6283
6284         * basic-simd.cs: Tests for new methods in Vector8us.
6285
6286 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6287
6288         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
6289         RuntimeTypeHandle, not a TypedReference.
6290
6291 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
6292
6293         * simd-intrinsics.c: remove relocations.
6294
6295 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
6296
6297         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
6298         optimizations from the x86 backend.
6299
6300 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
6301
6302         * simd-methods.h, simd-intrinsics.c: debloat method names and
6303         prepare for no relocations.
6304
6305 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6306
6307         * mini-ops.h: Add packed min/equal and sum of absolute differences.
6308         
6309         * cpu-x86.md: Same.
6310
6311         * mini-x86.c (mono_arch_output_basic_block): Same.
6312
6313         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
6314         extract mask, max, min and sum of absolute differences.
6315
6316         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
6317         method name.
6318
6319 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6320
6321         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
6322         Renamed one test for consistency.
6323
6324 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6325
6326         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
6327         fix to the code that deal with other blocks.
6328
6329 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6330
6331         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
6332
6333 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6334
6335         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
6336         that deals with vreg interference. Explicitly check for OP_LDADDR to be
6337         able to process the source reg.
6338
6339 2008-10-16  Martin Baulig  <martin@ximian.com>
6340
6341         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
6342
6343         * inssel.brg: Add `OP_HARD_NOP'.
6344
6345         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
6346
6347         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
6348         `OP_HARD_NOP' instruction when running inside the debugger.
6349
6350         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
6351         `OP_HARD_NOP' instruction when running inside the debugger.
6352
6353 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6354
6355         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
6356         now works. The issue with the regalloc tripping up no longer
6357         happens.
6358
6359         * simd-intrinsics.c (load_simd_vreg): Same.
6360
6361 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6362         
6363         * basic-simd.cs: Tests for new Vector8ui methods.
6364
6365 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6366
6367         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
6368         only for type. This fixes crashes where MonoInst::klass is checked
6369         for ops of type != VTYPE or OBJ.
6370
6371         * simd-intrinsics.c (load_simd_vreg): Same.
6372
6373 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6374
6375         * mini-ops.h: Add ops for packed shuffle/max/avg and
6376         extract mask.
6377         
6378         * cpu-x86.md: Same.
6379
6380         * mini-x86.c (mono_arch_output_basic_block): Same.
6381
6382         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
6383         extract mask.
6384
6385         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
6386         to emit extract mask op.
6387
6388         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
6389         to emit word shuffles.
6390
6391 2008-10-15  Mark Probst  <mark.probst@gmail.com>
6392
6393         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
6394         the largest alignment needed by a variable, but at least
6395         sizeof(gpointer).
6396
6397 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6398
6399         * basic-simd.cs: Tests for the fixes in the last commit.
6400
6401 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6402
6403         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
6404         no longer handles STACK_PTR input.
6405
6406         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
6407
6408         * simd-intrinsics.c (load_simd_vreg): New function that works like 
6409         get_simd_vreg   but handles STACK_PTR input.
6410
6411         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
6412         as the input can be an arbitrary pointer.
6413
6414         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
6415         LDADDR local optimization directly otherwise use a store op.
6416
6417 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6418
6419         * basic-simd.cs: Tests for dup low and dup high.
6420
6421 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6422
6423         * mini-ops.h: Add dup low and dup high ops.
6424         
6425         * cpu-x86.md: Same.
6426
6427         * mini-x86.c (mono_arch_output_basic_block): Same.
6428
6429         * simd-intrinsics.c (vector4f_intrinsics): Same.
6430
6431 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6432
6433         * basic-simd.cs: Tests for recently added functionality.
6434
6435 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6436
6437         * mini-ops.h: Add remaining sse1 fp ops.
6438         
6439         * cpu-x86.md: Add remaining sse1 fp ops.
6440
6441         * mini-x86.c (mono_arch_output_basic_block): Same.
6442
6443         * mini.h: Add enum for simd FP compare conditions.
6444
6445         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
6446
6447         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
6448         so the backed can generate the appropriate op.
6449
6450 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6451         This patch squeese one more byte from the SimdIntrinsc struct.
6452
6453         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
6454         a a shift amount intead of simply or'ing it.
6455
6456         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
6457
6458         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
6459         byte so we can have an aditional flags field without increasing struct size.
6460
6461         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
6462         against the simd_supported_versions bitmask.
6463
6464         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
6465
6466 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
6467
6468         * mini.c: remove rawbuffer code (the only use here is unsafe because
6469         it takes locks during signal handling and the kernel now provides much
6470         better info in proc/pid/smaps these days).
6471
6472 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
6473
6474         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
6475         OP_X86_PUSH_OBJ. Fixes #434620.
6476
6477         * objects.cs: Add a test.
6478         
6479 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
6480
6481         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
6482         that the packuswb/packusdw don't work with unsigned numbers for what
6483         would be negative numbers in signed format.
6484
6485         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
6486         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
6487
6488         * mini-ops.h: Add doubleword forms of many ops and packing ones.
6489
6490         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
6491
6492         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
6493
6494         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
6495
6496         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
6497         add more ops.
6498
6499         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
6500         version as the enum in mini.h.
6501
6502         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
6503         for sse3 ops, check the simd_version field if present. This way the code
6504         works with all versions of sse.
6505
6506 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6507
6508         * simd-intrinsics.c: Fixed intrinsic name typo.
6509
6510         * mini.h: Added missing simd exported function.
6511
6512         * basic-simd.cs: Added tests for Vector4ui.
6513         Fixed broken test for Vector16b.
6514
6515 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
6516
6517         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
6518         the max length to 64.
6519
6520 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6521
6522         * method-to-ir.c: Only do the fast virtual generic method call for
6523         non-wrapper methods.
6524
6525         * mini.h, mini-trampolines.c: The new generic virtual remoting
6526         trampoline handles virtual method calls via the vtable (as done by
6527         the fast virtual generic method calls) to remoting proxies.
6528
6529         * mini.c (mono_jit_create_remoting_trampoline): For generic
6530         methods reate a generic virtual remoting trampoline.
6531
6532         * mini-amd64.h: Enable fast virtual generic method calls again.
6533
6534 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6535
6536         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
6537         restore registers when doing tail calls.
6538
6539 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6540
6541         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
6542         Vector4ui.
6543
6544 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6545
6546         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
6547
6548 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6549
6550         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
6551
6552 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6553
6554         * basic-simd.cs: Retrofit for API changes.
6555
6556 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6557
6558         * mini-ppc.c: Handle integer stack arguments for tail calls.
6559
6560 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6561
6562         * optflags-def.h: Removed sse3 optimization.
6563
6564         * driver.c: Same.
6565
6566         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
6567         sse3.
6568
6569         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
6570
6571         * mini.h: Added enumeration with simd versions.
6572
6573         * simd-intrinsics.c (emit_intrinsics): Use the new static var
6574         for detecting SSE3.
6575
6576         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
6577
6578         * mini.c (mini_init): Call mono_simd_intrinsics_init.
6579
6580 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6581
6582         * basic-simd.cs: Added tests for Vector8u and Vector16u.
6583
6584         * basic-simd.cs: Fixed test naming.
6585
6586 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6587
6588         * mini-ops.h: Added ops for packed and saturated math, shifts
6589         and packing/unpacking.
6590
6591         * cpu-x86.md: Added descriptors for the above ops.
6592
6593         * mini-x86.c: Added code to emmit the above ops.
6594
6595         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
6596
6597 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
6598
6599         * aot-compiler.c (compile_method): Enable AOT for generic code.
6600
6601         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
6602
6603 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
6604
6605         * mini.c: add a workaround for a common screwup that ends up blamed
6606         to mono (other processes blocking signal delivery).
6607
6608 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6609
6610         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
6611         in the LDFLD/STFLD opcodes. Fixes #432673.
6612
6613         * iltests.il.in: Add a new test.
6614
6615 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
6616
6617         * mini-arm.c: attach the thread in unmanaged->managed transitions
6618         using delegates (bug #433148).
6619
6620 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6621
6622        * basic-simd.cs: Use new ShuffleSel constants.
6623
6624 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6625
6626         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
6627
6628         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
6629         only disable simd intrinsics if no sse2 is detected.
6630
6631         * optflags-def.h: Added sse3.
6632
6633         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
6634         is disabled.
6635
6636 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6637
6638         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
6639         when adding delegate-invoke wrappers.
6640
6641 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6642
6643         * Makefile.am: Reenable the simd tests.
6644
6645 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6646
6647         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
6648           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
6649           other vreg is allocated to that hreg.
6650
6651         Contributed under MIT/X11 license.
6652
6653 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6654
6655         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
6656         yet checked in.
6657
6658 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6659
6660         * basic-simd.cs: New test suite for SIMD intrinsics.
6661
6662         * Makefile.am: Added new tests.
6663
6664 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6665
6666         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
6667
6668         * mini-ops.h: Same.
6669
6670         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
6671
6672         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
6673         using SSE2 aware opcodes.
6674
6675         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
6676         is enabled, this code path is only reachable if conversion ops are emmited after
6677         mono_method_to_ir.
6678
6679         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
6680
6681         This optimization saves 6 bytes per conversion against the old version.
6682
6683 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6684
6685         * aot-compiler.c (compile_method): Don't skip methods referencing 
6686         generic methods without a corresponding entry in token_info_hash, since
6687         encode_method_ref () can handle all generic methods now.
6688
6689         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
6690         generic context is set.
6691         
6692         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
6693         generic sharing of LDTOKEN.
6694
6695 2008-10-06  Mark Probst  <mark.probst@gmail.com>
6696
6697         * mini-amd64.h: Temporarily disabled fast virtual generic method
6698         calls because it breaks the System.Runtime.Remoting tests.
6699
6700 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6701
6702         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
6703
6704         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
6705         so inlining actually works.
6706         (check_inline_caller_method_name_limit): Ditto.
6707
6708 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
6709
6710         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
6711         64 bit safety (from Olaf Hering and Andreas Farber).
6712
6713 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6714         
6715         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
6716         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
6717         unused virtual call support code.
6718
6719         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
6720         
6721         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
6722         which can't use aot trampolines.
6723         (decode_patch): Don't create aot trampolines for methods which can't use
6724         them.
6725
6726         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
6727         use aot trampolines.
6728
6729         * mini.h: Bump AOT image format version.
6730         
6731 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
6732
6733         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
6734         to save_token_info () since cmethod is inflated for constrained calls.
6735
6736         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
6737
6738 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
6739
6740         * Makefile.am: Add build rules for ppc64.
6741         This avoids the build failing at pedump with unresolved symbols
6742         due to lack of arch_sources. Instead it will now fail earlier
6743         due to lack of cpu-ppc64.md.
6744
6745         Contributed under MIT/X11 license.
6746
6747 2008-10-04  Mark Probst  <mark.probst@gmail.com>
6748
6749         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
6750         tail calls.
6751
6752         * iltests.il.in: Add test case for tail call with many arguments.
6753
6754 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6755
6756         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
6757         to the fast virtual generic method code until the aot case is fixed.
6758
6759 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6760
6761         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
6762
6763 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6764
6765         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
6766         thunks.
6767
6768 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6769         
6770         * simd-intrinsics.c: Forgot to add this one.
6771
6772         * mini-codegen.c: Fix macro in case SIMD is not supported.
6773
6774 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6775         
6776         This patch land initial JIT support for simd intrinsics.
6777
6778         * mini-x86.h: Added new define to make --enable_minimal work on x86.
6779
6780         * Makefile.am: Added simd-intrinsics.c
6781
6782         * simd-intrinsics.c: New file with simd instrinsic related
6783         code.
6784
6785         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
6786
6787         * cpu-x86.md: Add simd related instructions.
6788
6789         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
6790
6791         * driver.c: Added two new --regression variants.
6792
6793         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
6794
6795         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
6796
6797         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
6798         extract some complicated logic to helper functions.
6799
6800         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
6801
6802         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
6803
6804         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
6805         the specialized simplification pass.
6806
6807         * method-to-ir.c (mono_spill_global_vars): Use new macro.
6808
6809         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
6810
6811         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
6812         table.
6813
6814         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
6815         if MONO_ARCH_NEED_SIMD_BANK is defined.
6816
6817         * mini-ops.h: Added the new simd ops.
6818
6819         * mini-x86.c: Added mono_arch_xregname.
6820
6821         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
6822
6823         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
6824
6825         * mini-x86.h: Define simd related MONO_ARCH macros.
6826
6827         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
6828
6829         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
6830
6831         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
6832         MONO_CLASS_IS_SIMD to deal with simd related IR.
6833
6834         * mini.h (MonoInst): Added spill_var to the backend union.
6835
6836         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
6837
6838         * mini.h: Added forward declarations of the new simd fuctions.
6839
6840         * optflags-def.h: Added new optimization names SIMD.
6841
6842         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
6843
6844         * regalloc.h: Added support for working with 3 register banks.
6845
6846         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
6847
6848         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
6849
6850 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
6851
6852         * mini-exceptions.c: remove 64 bit related ifdef clutter.
6853
6854 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6855
6856         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
6857         instead of one on 64 bit systems.
6858
6859         * method-to-ir.c: Remove unused includes.
6860
6861 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
6862
6863         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
6864         cfg->used_int_regs, since the two are different on arm.
6865
6866 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6867
6868         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
6869         mono_method_get_vtable_index() to get the vtable index.
6870
6871 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6872
6873         * method-to-ir.c (mono_method_to_ir2): Don't create native
6874         wrappers for array methods, because they're never called (and if
6875         they were called they wouldn't work).
6876
6877 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6878
6879         * method-to-ir.c (mono_method_to_ir2): Array methods are
6880         special-cased and must not be invoked indirectly via the (M)RGCTX
6881         when generic sharing is turned on.  Fixes #431413.
6882
6883 2008-10-01  Mark Probst  <mark.probst@gmail.com>
6884
6885         * method-to-ir.c: When generic sharing is active, call
6886         non-interface virtual generic methods via the standard trampoline.
6887
6888         * mini-trampolines.c: Handle virtual generic shared methods.
6889
6890         * mini.h, mini-x86.c, mini-x86.h: New argument for
6891         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
6892         method thunks and which is the trampoline to call if the lookup
6893         fails.  Enable the virtual generic method thunk for x86.
6894
6895         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
6896         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
6897         argument but assert that it's NULL, because these archs don't yet
6898         implement the virtual generic method thunk.  Changes in the IMT
6899         thunk data structures.
6900
6901 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * aot-compiler.c (emit_globals): Avoid invalid characters in
6904         the static linking symbol.
6905
6906         * objects.cs: Add a test for the range check optimization. Fix warnings.
6907
6908         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
6909         optimization from the current JIT.
6910
6911         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
6912         later in decompose_array_access_opts () to allow more optimizations.
6913
6914         * method-to-ir.c (mono_handle_soft_float): Rename this to 
6915         mono_decompose_soft_float () for consistency.
6916
6917         * mini-ops.h: Fix arguments of OP_STRLEN.
6918
6919         * method-to-ir.c (save_cast_details): Extract the cast details saving code
6920         into a separate function.
6921         (reset_cast_details): Ditto.
6922         (handle_unbox): Save cast details. Fixes #431254.
6923
6924         * method-to-ir.c: Remove some obsolete FIXMEs.
6925
6926 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6927
6928         * ir-emit.h (alloc_dreg): Write a warning before crashing.
6929
6930 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6931
6932         * mini-codegen.c: More work on macros to make them
6933         ready for multiple regbanks.
6934
6935 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6936
6937         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
6938
6939         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
6940
6941 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6942
6943         * mini-codegen.c (mono_spillvar_offset): Proper support for
6944         multiple regbanks.
6945
6946 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6947
6948         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
6949         the stack overflow changes.
6950
6951 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6952
6953         * mini-codegen.c: Make all bank macros depend on reg_bank.
6954
6955         * mini-codegen.c (mono_local_regalloc): Make free mask
6956         initialization regbank aware.
6957
6958 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6959
6960         * mini-codegen.c (mono_local_regalloc): Extract callee
6961         mask selection to a function and make it regbank aware.
6962
6963 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6964
6965         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
6966         code to deal with many regbanks.
6967
6968 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6969
6970         * mini-codegen.c: More fp->regbank changes.
6971
6972 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6973
6974         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
6975         of a hardcoded constant.
6976
6977 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6978
6979         * method-to-ir.c (type_from_stack_type): Fix typo.
6980
6981 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
6982
6983         * mini-ia64.c (emit_move_return_value): Convert float return values to
6984         double.
6985
6986         * objects.cs: Add a new test.
6987         
6988         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
6989         VARARG methods to fix an assert later.
6990
6991         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
6992         end so it at least compiles.
6993
6994 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
6995
6996         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
6997
6998 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
6999
7000         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
7001         optimization to a new function (emit_optimized_ldloca_ir) and enable
7002         it for both ldloca and ldloca_s.
7003
7004 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7005
7006         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
7007         gshared CASTCLASS code.
7008
7009         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
7010         amd64, where the libc stack unwinder encounters stack frames referring to
7011         native code in unmapped memory.
7012
7013         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
7014         sharing.
7015
7016         * generics.cs: Add new test.
7017
7018 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
7019
7020         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
7021         add a check that one of the ARM_FPU_ constants is defined.
7022
7023         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
7024         
7025         * mini-exceptions.c: Fix build on non-altstack platforms.
7026
7027         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
7028         sharing of vtypes.
7029
7030         * ir-emit.h: Add a comment to NEW_PCONST.
7031
7032         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
7033
7034         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
7035
7036         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
7037         after the changes to MonoJitDomainInfo.
7038
7039 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7040
7041         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
7042
7043 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7044
7045         * mini-ppc.c: Compiler warning fixes.
7046
7047 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7048
7049         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
7050         for pinvokes.
7051
7052 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7053
7054         * exceptions-ppc.c, mini-ppc.h: Compile
7055         mono_arch_handle_altstack_exception() on Darwin, too.
7056
7057 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7058
7059         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
7060         work on archs which don't have generic sharing implemented, only
7061         without the vtable_arg.
7062
7063 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7064
7065         * mini.c: Added comment explaining why delegate ctor icall
7066         wrappers are compiled.
7067
7068 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7069
7070         * mini.c: Don't produce trampolines to delegate ctor icall
7071         wrappers but compile them upfront.
7072
7073 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
7074
7075         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
7076         runtime-set function when going back to managed code. Currently this
7077         is used to set back the protection on the soft ovf pages and/or to
7078         throw the stack overflow exception that happened in unmanaged code.
7079
7080 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
7081
7082         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
7083         runtime-set function when going back to managed code. Currently this
7084         is used to set back the protection on the soft ovf pages and/or to
7085         throw the stack overflow exception that happened in unmanaged code.
7086
7087 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7088
7089         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
7090         the support code for restoring stack protection after stack overflows
7091         that happen in unmanaged code. Don't set the exec permission on the
7092         soft overflow area.
7093
7094 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
7095
7096         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
7097         delegate->method_ptr is set. Fixes #428054.
7098
7099 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7100
7101         * tests.cs: Rename to ratests.cs.
7102
7103         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
7104         emit_get_rgctx_... functions.
7105
7106 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7107
7108         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
7109
7110 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7111
7112         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
7113         before asserting that method is sharable.
7114
7115 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7116
7117         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
7118         whether method needs a static RGCTX wrapper used instead of
7119         complex conditions.
7120
7121         * generic-sharing.c, mini.h: A few functions moved to
7122         metadata/generic-sharing.c.
7123
7124 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7125
7126         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
7127         Generic code sharing for value types, which essentially means
7128         treating value type methods like static methods.  The RGCTX is
7129         passed in the same way.
7130
7131 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7132
7133         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
7134         opcode when creating multi-dimensional arrays of open types.
7135
7136         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
7137         open generic types.
7138
7139         * generics.cs: Add a test.
7140
7141         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
7142
7143 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7144
7145         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
7146
7147         * mini.c (mini_method_compile): Set it when running under the debugger. 
7148
7149         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
7150         vreg optimization if the flag is set.
7151
7152         * driver.c (mono_main): Add --attach= option to pass options to
7153         the attach agent.
7154
7155         * mini.c (sigquit_signal_handler): Start the attach agent.
7156
7157         * ssapre.c: Disable this to save space since it is not yet ported to
7158         linear IR.
7159
7160         * regalloc2.c: Disable this to save space.
7161
7162         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
7163
7164 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
7165
7166         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
7167         the -v option useful again.
7168
7169 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7170
7171         * mini-amd64.c (mono_arch_output_basic_block): Add support for
7172         --break-at-bb.
7173
7174         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
7175         arrays of arrays. Fixes #428406.
7176
7177         * method-to-ir.c (mini_emit_castclass): Ditto.
7178
7179         * objects.cs: Add new test.
7180         
7181 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
7182
7183         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
7184         was wrong at it choked against target_type_is_incompatible for byref types.
7185
7186 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7187
7188         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
7189         places.
7190
7191 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
7192
7193         * mini-exceptions.c: update a few more exceptions-related counters.
7194
7195 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
7196
7197         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
7198         new functions to allocate from persistent mempools.
7199
7200 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7201
7202         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
7203         multiple register banks in the future.
7204
7205         * mini-codegen.c (mono_local_regalloc): Fix a warning.
7206
7207 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
7208
7209         * mini.c (type_to_eval_stack_type): Remove duplicated function.
7210
7211         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
7212
7213         * mini.h: Export type_to_eval_stack_type.
7214
7215         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
7216         is only ins->klass of byref types.
7217
7218 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
7219
7220         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
7221         (mini_emit_memcpy2): Ditto.
7222
7223         * mini-amd64.c: Fix a warning.
7224
7225 2008-09-21  Mark Probst  <mark.probst@gmail.com>
7226
7227         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
7228         linking.
7229
7230 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
7231
7232         * method-to-ir.c: Extract stloc micro-optimization to a
7233         function and apply it to all cases.
7234
7235 2008-09-19  Mark Probst  <mark.probst@gmail.com>
7236
7237         * method-to-ir.c: Don't fail generic code sharing in cases we
7238         already support.
7239
7240 2008-09-18  Mark Probst  <mark.probst@gmail.com>
7241
7242         * mini-ppc.c: Handle structs in tailcalls on Darwin.
7243
7244 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
7245
7246         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
7247         implementation.
7248
7249 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
7250
7251         * trace.c: make tracing more useful and correct, with per-thread
7252         id and indent info.
7253
7254 2008-09-15  Mark Probst  <mark.probst@gmail.com>
7255
7256         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
7257         doing a method call and the argument is an R4.
7258
7259 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
7260
7261         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
7262         generic methods.
7263
7264 2008-09-13  Mark Probst  <mark.probst@gmail.com>
7265
7266         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
7267
7268 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
7269
7270         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
7271         (MONO_JUMP_TABLE_FROM_INS): Ditto.
7272
7273 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7274
7275         * driver.c: Add a --agent argument (not supported yet) to load managed
7276         agent assemblies before loading the main assembly, similarly to how the
7277         Java VM handles agents.
7278
7279 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7280
7281         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
7282         function to do stack layout of local variables.
7283
7284 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7285
7286         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
7287         calculation.
7288
7289 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7290
7291         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
7292         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
7293         JIT if DISABLE_JIT is defined.
7294
7295         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
7296         defined.
7297
7298 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7299
7300         * iltests.il.in: Disable the fconv test on PPC (the result is
7301         undefined according to ECMA).
7302
7303 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7304
7305         * iltests.il.in: Enable tail call tests for PPC.
7306
7307         * mini.h: Add variable for storing incoming valuetype argument
7308         addresses for tail calls.
7309
7310         * mini-ppc.c: Implement valuetype arguments and return values for
7311         tailcalls on Linux.
7312
7313 2008-09-09  Mark Probst  <mark.probst@gmail.com>
7314
7315         * mini-ppc.c: Partially implement tail calls (struct arguments and
7316         return values not supported).
7317
7318         * method-to-ir.c: Enable tail calls on PPC.
7319
7320 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
7321
7322         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
7323         runtime-invoke wrappers to work around the problem of them getting
7324         assigned to a random class.
7325
7326         * aot-runtime.c (mono_aot_get_method): Ditto.
7327         
7328 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
7329
7330         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
7331         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
7332
7333 2008-09-07  Mark Probst  <mark.probst@gmail.com>
7334
7335         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
7336         until they're implemented properly.
7337
7338         * exceptions-ppc.c: Use arch-independent exception-handling code
7339         instead of custom one.
7340
7341         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
7342         for Linear IR.
7343
7344         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
7345
7346         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
7347         applies when __powerpc__ is defined.
7348
7349 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
7350
7351         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
7352         methods to their code to avoid computing the full name of wrappers and
7353         doing a lookup in a string hash table.
7354
7355 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7356
7357         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
7358         we identify bblocks before method_to_ir () is ran.
7359
7360         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
7361         Also avoid optimizing branches pointing to themselves.
7362
7363         * mini.c (mini_method_compile): Ditto. Fixes #422947.
7364
7365 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
7366
7367         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
7368
7369 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7370
7371         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
7372         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
7373         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
7374         'buf'.
7375
7376         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
7377         jumped to the same entry in plt_jump_table.
7378
7379 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
7380
7381         * method-to-ir.c (initialize_array_data): Handle field with RVA from
7382         dynamic images.
7383
7384 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
7385
7386         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
7387         other assignment can be if converted. Saves 1.5% on corlib size and fixes
7388         #421807.
7389
7390 2008-08-29  Geoff Norton  <gnorton@novell.com>
7391
7392         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
7393         segment, and doesn't properly handle .space as .text.  Fixes
7394         AOT Mach/ARM
7395
7396 2008-08-29  Geoff Norton  <gnorton@novell.com>
7397
7398         * mini.c: Disable the mach exception handler when running on 
7399         ARM
7400
7401 2008-08-29  Geoff Norton  <gnorton@novell.com>
7402
7403         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
7404         globals on Darwin/ARM
7405
7406 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
7407
7408         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
7409         since too many things depend on it. Instead, call 
7410         mono_runtime_set_no_exec ().
7411         
7412         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
7413         the new JIT.
7414
7415         * aot-compiler.c: Add an 'asm-only' AOT option.
7416
7417         * mini.c: Avoid initializing the runtime when doing AOT compilation.
7418                 
7419         * aot-compiler.c (compile_method): Disable gshared support for now as it
7420         doesn't yet work.
7421
7422 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7423
7424         * mini-amd64.h : Fix a compiler warning.
7425
7426         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
7427           Changed to use a callback function to retrieve the unwind info.
7428           This avoids problems observed when code blocks were removed by
7429           unloading an app domain.
7430
7431         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
7432           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
7433           to work properly.
7434
7435         Contributed under MIT/X11 license.
7436
7437 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7438
7439         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
7440           case to keep the stack aligned to 8.
7441
7442         Contributed under MIT/X11 license.
7443
7444 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
7445
7446         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
7447         avoid repeated linear searches.
7448
7449 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
7450
7451         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
7452         methods it can't handle.
7453         
7454         * aot-compiler.c (add_method): Avoid adding a method twice.
7455         (add_wrappers): Add runtime invoke wrappers for all methods.
7456
7457         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
7458         function to create an aot-compatible version of this trampoline.
7459
7460         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
7461
7462 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
7463
7464         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
7465
7466         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
7467         with a generic sharing failure.
7468
7469         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
7470
7471         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
7472         CEE_RETHROW. Fixes #419634.
7473
7474         * mini.c (mono_method_to_ir): Ditto.
7475
7476         * exceptions.cs: Add a new test.
7477         
7478         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
7479         to mono_type_stack_size_internal () since some callers might not pass in
7480         an rgctx.
7481
7482         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
7483         instrument_prolog. Fixes #419878.
7484
7485         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
7486         doubles in soft float mode volatile.
7487
7488 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
7489
7490         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
7491
7492         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
7493         to handle soft float correctly.
7494
7495         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
7496         the fast path.
7497
7498         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
7499
7500         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
7501         to sp, since the generics catch code requires it.
7502
7503         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
7504         copying.
7505
7506         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
7507         mono_arch_emit_imt_argument ().
7508
7509         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
7510
7511         * mini-arm.c tramp-arm.c: Generic sharing updates.
7512
7513 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
7514
7515         * mini-arm.c: Fix the arm build.
7516
7517         * generic-sharing.c (mini_type_get_underlying_type): New helper function
7518         handling enums, generic instances and generic sharing.
7519         (mini_type_stack_size_full): Ditto.
7520
7521         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
7522         
7523         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
7524
7525         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
7526
7527         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
7528         trampolines.
7529
7530         * mini-arm.c: Various small generic sharing changes.
7531
7532         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
7533         this for x86.
7534         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
7535         custom code.
7536
7537         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
7538         helper function to return a generic class init trampoline.
7539
7540         * method-to-ir.c mini.c: Use it.
7541         
7542         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
7543         arch-specfic function to return a generic class init trampoline.
7544
7545         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
7546         the GENERIC_CLASS_INIT custom code.
7547
7548         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
7549         a fatal error, not a sharing failure.
7550
7551         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
7552         needed.
7553
7554         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
7555         trampoline argument from MONO_ARCH_VTABLE_REG.
7556
7557         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7558         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7559         argument, and pass the vtable in VTABLE_REG.
7560
7561         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7562         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7563         argument, and pass the vtable in VTABLE_REG.
7564         (mono_arch_create_trampoline_code_full): Remove some special casing for
7565         the rgctx fetch trampoline.
7566
7567         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
7568         Fixes #419273.
7569
7570         * iltests.il: Add a test for it.
7571
7572 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
7573
7574         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
7575
7576         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
7577         no longer needed.
7578
7579         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
7580         use mono_jit_info_table_find () to avoid recursion.
7581         (mono_delegate_trampoline): Add a sync wrapper here.
7582
7583         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
7584         here.
7585
7586         * mini.c (mono_method_to_ir): Ditto.
7587         
7588         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
7589         add_sync_wrapper argument. Don't add a sync wrapper here.
7590         (mono_create_jump_trampoline): Don't add a sync wrapper here.
7591
7592         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
7593         
7594 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7595
7596         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
7597           of nonvolatile registers back from MonoContext to CONTEXT.
7598
7599         Contributed under MIT/X11 license.
7600
7601 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7602
7603         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
7604           arguments on Winx64 there are only 4 argument registers.  For this
7605           logic to work the last argument must be pulled from the stack.  
7606
7607         Contributed under MIT/X11 license.
7608
7609 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
7610
7611         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7612
7613         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
7614         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
7615         encode/decode_method_ref ().
7616
7617         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
7618
7619         * aot-runtime.c (decode_patch): Ditto.  
7620
7621         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
7622         MONO_PATCH_INFO_METHOD.
7623
7624         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
7625         MonoGenericJitInfo.
7626
7627         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
7628         MonoGenericJitInfo.
7629
7630         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
7631
7632         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
7633         one from the caller.
7634
7635         * aot-runtime.c (decode_generic_inst): New function to decode and
7636         return a interned generic inst.
7637         (decode_klass_ref): Use it.
7638         (decode_method_ref): Ditto.
7639
7640         * aot-compiler.c (emit_exception_debug_info): Save 
7641         jinfo->has_generic_jit_info too.
7642
7643 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7644
7645         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
7646
7647         * iltests.il.in: Add a test for fconv_to_i.
7648
7649         * liveness.c: Disable the liveness2 pass for now to save space.
7650
7651         * regalloc2.c: Include mempool-internals.h to fix warnings.
7652
7653         * aot-compiler.c (encode_method_ref): Encode the context of generic
7654         instance methods.
7655
7656         * aot-runtime.c (decode_method_ref): Inflate generic methods using
7657         the context saved in the aot file.
7658
7659         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7660
7661         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
7662
7663         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
7664         volatile so they won't be optimized away.
7665
7666 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
7667
7668         * ssa.c:
7669         * ssa2.c:
7670         * mini.c:
7671         * regalloc2.c:
7672         * dominators.c: Remove duplicated functions that now are in
7673         mempool-internals.h.
7674
7675 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7676
7677         * aot-compiler.c: Fix warnings.
7678
7679         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
7680
7681         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
7682
7683         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
7684         as the patch type.
7685
7686         * mini.c (mono_resolve_patch_target): Ditto.
7687         
7688         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
7689         (encode_klass_ref): Add support for encoding VARs/MVARs.
7690
7691         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
7692
7693         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
7694         the handling of the got entries into a separate 'decode_got_entry' function.
7695         Add support for RGCTX_FETCH.
7696
7697         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
7698         clobbered by the trampoline code.
7699
7700         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
7701         not clobbered by the indirect calling code.
7702
7703 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7704
7705         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
7706         to fix the build.
7707
7708 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
7709
7710         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
7711         signature using the compilation mempool otherwise we would leak it.
7712
7713 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7714
7715         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
7716         mono_emit_abs_call ().
7717
7718         * patch-info.h: Add GENERIC_CLASS_INIT.
7719
7720         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
7721
7722         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
7723         as their target as a near call.
7724
7725         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
7726         ABS handling code.
7727         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
7728
7729         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
7730         call to a runtime function described by a patch.
7731
7732         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
7733         mono_emit_abs_call, this has the advantage that the ABS handling code in
7734         mono_codegen () can handle them both, and can handle other stuff in the
7735         future without additional code.
7736
7737         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
7738         entry.
7739         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
7740         abs addresses.
7741
7742         * mini.h: Add missing bblock related prototypes.
7743
7744         * mini.h (MonoCompile): Remove unused reverse_inst_list and
7745         reverse_inst_list_len fields.
7746
7747         * mini.c: Refactor this file a bit by moving branch optimizations to 
7748         branch-opts.c.
7749
7750         * method-to-ir.c: Merge generic sharing changes missed earlier.
7751
7752         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
7753
7754         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
7755         shared patches. Process METHODCONST as a shared patch.
7756
7757         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
7758         as it crashes on the 2.0 mscorlib.
7759
7760         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
7761         to cause crashes.
7762         
7763         * aot-compiler.c: Use is_plt_patch () in a few additional places.
7764         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
7765         by IMT.
7766
7767         * aot-compiler.c: Reorganize the got handling code to be a bit more
7768         understandable.
7769
7770 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7771
7772         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
7773         mono_patch_info_equals/hash, and use it to massively simplify
7774         get_plt_index ().
7775
7776         * mini.c (mono_patch_info_hash): Simplify this and add support for
7777         more patch types.
7778
7779         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
7780
7781         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
7782         handling code, since an offset is not enough to identify a trampoline.
7783
7784         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
7785
7786 2008-08-17  Mark Probst  <mark.probst@gmail.com>
7787
7788         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
7789
7790         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
7791
7792         * mini-ops.h: Argument and result types for OVF_CARRY ops.
7793
7794         * decompose.c: PPC decompositions for various ops.
7795
7796         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
7797
7798 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7799
7800         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
7801         call the generic trampoline code using a call, instead of a jump, to
7802         remove some special casing from the generic trampoline code.
7803
7804         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
7805         (mono_codegen): Ditto.
7806
7807         * aot-compiler.c aot-runtime.c: Ditto.
7808
7809         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
7810
7811         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
7812         helper function to find the offset corresponding to a lazy fetch trampoline.
7813
7814         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
7815         when doing generic sharing.
7816
7817         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
7818         places.
7819         
7820         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
7821         mini-trampolines.c to be with the other trampoline creation functions.
7822
7823         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
7824         as it is equal to method->signature in most cases, add a 
7825         mono_emit_method_call_full variant which takes a signature and an imt
7826         argument as well.
7827
7828 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
7829
7830         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
7831         to this function, since it could be computed easily from the method 
7832         argument.
7833         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
7834         more.
7835
7836         * method-to-ir.c mini.c: Remove references to 
7837         compile_generic_method_wo_context.
7838
7839         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
7840         generic method calls.
7841         
7842         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
7843         dimensional non-szarrays.
7844
7845         * mini.c (mini_init): Register mono_array_new_1.
7846
7847         * jit-icalls.c (mono_array_new_1): New jit icall.
7848
7849         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
7850         pointing to the method.
7851
7852         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
7853         method addresses belonging to METHOD_JUMP patches in the 
7854         jump_target_got_slot_hash.
7855         (mono_aot_load_method): Ditto.
7856
7857         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
7858         METHOD_JUMP patches.
7859
7860         * mini.c (mini_create_jit_domain_info): New helper function which 
7861         initializes/frees domain->runtime_info.
7862         (mini_free_jit_domain_info): Ditto.
7863         (mini_init): Install the domain hook functions with the runtime.
7864
7865         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
7866         information maintained by the JIT.
7867
7868         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
7869         insertion into jump_table_hash into mono_codegen (), also implement proper
7870         locking.
7871
7872         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
7873         tail calls, it is already done by the aot code.
7874         
7875         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
7876         mechanism on amd64.
7877
7878         * iltests.il.in: Make the jmp test a bit more complex.
7879
7880         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
7881         generic instances which doesn't have a token.
7882
7883         * aot-runtime.c (decode_method_ref): Ditto.
7884         
7885         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
7886         can handle this case now.
7887         (handle_box): Ditto.
7888
7889 2008-08-15  Geoff Norton  <gnorton@novell.com>
7890
7891         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
7892         debugging check.
7893
7894 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
7895
7896         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
7897         calling generic methods.
7898
7899         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
7900
7901         * aot-runtime.c (decode_patch_info): Ditto.
7902
7903         * mini.c (mono_resolve_patch_target): Ditto.
7904         
7905         * patch-info.h: Add METHOD_RGCTX.
7906
7907         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
7908
7909 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
7910
7911         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
7912         arguments in registers.
7913
7914         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
7915         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
7916
7917         * mini.c (mini_method_compile): Abort aot compilation for generic
7918         methods if generic sharing is disabled.
7919         
7920         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
7921         an mrgctx.
7922
7923         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
7924         requiring an mrgctx.
7925
7926         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
7927         store instructions when converting a vcall to a normal call.
7928
7929         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
7930         mono_arch_find_jit_info.
7931
7932 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
7933
7934         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
7935         avoid calling mono_method_full_name () for every method even if the
7936         env var is not set.
7937         (check_inline_caller_method_name_limit): Ditto.
7938
7939 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7940
7941         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
7942         assemblies in one run.
7943
7944         * aot-compiler.c (mono_compile_assembly): Only print out a count of
7945         skipped methods if it is not 0.
7946
7947         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
7948
7949 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7950
7951         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
7952           MONO_ARCH_HAVE_UNWIND_TABLE.
7953
7954         Contributed under MIT/X11 license.
7955
7956 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7957
7958         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
7959           from default optimizaton list on Winx64.
7960
7961         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
7962
7963         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
7964           the LMF from the MonoJitTlsData structure.
7965
7966         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
7967
7968         Contributed under MIT/X11 license.
7969
7970 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7971
7972         * mini.c (sigsegv_signal_handler): Fix the build.
7973
7974         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
7975         assembly->aot_module.
7976
7977         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
7978         hash table. This simplifies and speeds up a lot of code, and fixes support
7979         for .netmodules.
7980
7981         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
7982         with the runtime.
7983
7984         * mini-exceptions.c: Ditto.
7985         
7986         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
7987         'native_offset' argument, since these are computed in the 
7988         mono_find_jit_info () function.
7989
7990         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
7991         is used by exceptions-ppc.c.
7992
7993         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
7994         mono_arch_find_jit_info ().
7995         
7996         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
7997         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
7998         generic code in mini-exceptions.c.
7999
8000 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
8001
8002         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
8003
8004         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
8005         
8006         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
8007         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
8008         called while holding the loader lock. Fixes #415608.
8009         (mono_aot_get_method_from_token_inner): Ditto.
8010
8011 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8012
8013         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
8014         to reduce differences between this and the generic implementation in
8015         mini-exceptions.c.
8016         (ves_icall_get_frame_info): Ditto.
8017
8018         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
8019
8020         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
8021         longer neccesarry.
8022
8023         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
8024         mono_arch_get_call_filter () and make it non-static, for consistency with the
8025         other architectures.
8026
8027 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
8028
8029         * mini.c:
8030         * local-propagation.c:
8031         * mini-x86.c: Correct the name of arch defines.
8032
8033 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8034
8035         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
8036         NO_EMULATE_LONG_SHIFT_OPS define.
8037
8038 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
8039
8040         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
8041         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
8042
8043         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
8044         MACH fixes. Merged from the 2.0 branch.
8045
8046         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
8047
8048         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
8049         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
8050
8051         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
8052
8053         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
8054         mono_marshal_get_native_wrapper () signature changes.
8055
8056 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
8057
8058         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
8059         conversion bug under arm.
8060
8061 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
8062
8063         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
8064
8065         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
8066         with overflow checking.
8067
8068 2008-08-05  Marek Habersack  <mhabersack@novell.com>
8069
8070         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
8071         to the genmdesc.pl file
8072
8073 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
8074
8075         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
8076         arg_array in the soft-float versions of the LOAD/STORE macros.
8077
8078         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
8079         implementation.
8080
8081         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
8082
8083 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8084
8085         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
8086         a float HFA. Fixes #413621.
8087
8088 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
8089
8090         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
8091         frame_size to args_size. Fixes build.
8092
8093 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8094
8095         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
8096         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
8097
8098         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
8099         the stack are not unaligned. Fixes #413247.
8100         
8101 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
8102
8103         * mini.c: update jitted methods performance counters.
8104
8105 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8106
8107         * mini-exceptions.c: increase the exceptions thrown performance
8108         counter in mono_handle_exception ().
8109
8110 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
8111
8112         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
8113         can work with netmodules.
8114
8115 2008-07-28  Geoff Norton  <gnorton@novell.com>
8116
8117         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
8118         regression tests.
8119
8120 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8121
8122         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
8123         correct place.
8124
8125 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
8126
8127         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8128           The float param registers and other param registers must be the 
8129           same index on Windows x64.
8130
8131         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
8132           ArgValuetypeAddrInIReg argument case.  Setting the argument
8133           op to OP_VTARG_ADDR (OP_REGOFFSET)).
8134
8135         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
8136           variable computed above as the copy length for arguments of storage
8137           type ArgValuetypeAddrInIReg.
8138
8139         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
8140           ArgValuetypeAddrInIReg argument case.  This case will rely on
8141           mono_arch_emit_outarg_vt to emit the correct code later in the process.
8142
8143         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
8144           a 32 byte stack allocation for all calls.  We will omit the adjustment for
8145           jump and tail call instructoins as they do not follow the typical call behavior.
8146
8147         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
8148           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8149           local variable and pass the local variable by reference to the called method.
8150
8151         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
8152           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
8153           of a struct is passed in a register it must be saved with the other
8154           volatile argument on the stack.
8155
8156         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
8157           frame pointer the stack adjustment value must be saved to the unwind 
8158           info structure.
8159
8160         Contributed under MIT/X11 license.
8161
8162 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8163
8164         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
8165         which got lost in the merge.
8166
8167 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8168
8169         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
8170         build.
8171
8172         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
8173         
8174         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
8175         icalls, since they won't be patched.
8176
8177         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
8178         different code sequence when running under valgrind to prevent some valgrind
8179         errors.
8180
8181         * iltests.il.in: Add new regression test.
8182
8183         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
8184         end with a throw.
8185
8186         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
8187         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
8188
8189         * iltests.il.in: Add new test.
8190
8191         * aot-compiler.c: Fix some warnings.
8192
8193         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
8194         Fixes #412494.
8195
8196 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8197
8198         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
8199         (mini_usage_jitdeveloper): Add a missing --wapi option.
8200
8201 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8202
8203         * mini-codegen.c: Simplify the is_fp macros.
8204         (free_up_ireg): Remove, use free_up_reg instead.
8205         (free_up_reg): Fix the fp case.
8206
8207 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8208
8209         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
8210         lowered earlier.
8211
8212         * exceptions-x86.c: Merge some changes which seemed to have got lost
8213         in the linear-ir merge.
8214
8215         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
8216
8217         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
8218         long vreg volatile even if the variable was already created.
8219
8220         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
8221         volatile variables.
8222
8223 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8224
8225         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
8226
8227         * mini.c (mono_jit_compile_method_inner): Add support for 
8228         MONO_EXCEPTION_BAD_IMAGE.
8229
8230         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
8231         mini_method_get_context () returns NULL. Fixes #356531.
8232
8233         * mini.c (mono_method_to_ir): Ditto.
8234         
8235         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
8236         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
8237
8238 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8239
8240         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
8241         in the LDFTN implementation.
8242
8243 2008-07-25  Mark Probst  <mark.probst@gmail.com>
8244
8245         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
8246         code, patch calls to icalls, too, even if they're not in the
8247         shared generic code hash.  Fixes #411962.
8248
8249 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8250
8251         * cpu-x86.md: Increase the length of the fcall opcodes.
8252
8253         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
8254         calls returning floats.
8255
8256         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
8257         on NEWARR.
8258         
8259         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
8260         missed earlier.
8261
8262         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
8263         into the domain->method_code_hash.
8264
8265         * aot-compiler.c: Fix win32 build.
8266
8267         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
8268         
8269         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
8270         gshared NEWARR implementation.
8271
8272         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
8273
8274         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
8275         can be used outside of method_to_ir.
8276
8277         * mini.h (MonoCompile): Add arg_types field.
8278
8279         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
8280         
8281         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
8282         the values of the local arg_array and param_types array.
8283
8284 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8285
8286         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
8287         got accesses might only get generated later when NEWOBJ is decomposed.
8288         
8289         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
8290         looking up the native code of the target method when a delegate is called
8291         for the first time.
8292
8293         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
8294         optimization.
8295
8296         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
8297
8298         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
8299         AOT work on platforms without a working dlsym implementation.
8300
8301         * mini.h: Bump AOT image format version.
8302         
8303 2008-07-24  Mark Probst  <mark.probst@gmail.com>
8304
8305         * mini-exceptions.c: Free a MonoType with
8306         mono_metadata_free_type() instead of g_free().
8307
8308         * aot-runtime.c: Free a MonoType.
8309
8310 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8311
8312         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
8313         optimization.
8314
8315         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
8316         fp stack on x86.
8317
8318 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
8319         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
8320         profiler hook.
8321
8322 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8323
8324         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
8325         NEWOBJ calls on valuetypes.
8326
8327         * iltests.il.in: Add new test.
8328
8329         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
8330
8331 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8332
8333         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
8334         is no longer needed.
8335
8336         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
8337         non register sized integer arguments.
8338         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
8339         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
8340         emit_memcpy2 ().
8341
8342         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
8343         CEE_MONO_RETOBJ.
8344         
8345         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
8346         two a binop with different sized arguments is emitted.
8347
8348         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
8349         instruction in the ins==NULL case.
8350
8351 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8352
8353         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
8354
8355         * mini-x86.c: Fix osx build.
8356
8357         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
8358         opcodes as well.
8359
8360         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
8361         instruction for non int sized variables.
8362
8363         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
8364         implementation.
8365
8366 2008-07-23  Robert Jordan  <robertj@gmx.net>
8367
8368         * method-to-ir.c: Fix MSVC build.
8369
8370 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8371
8372         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
8373         a non int sized type, widen it to an int since newer versions of gcc seem to
8374         generate code which needs this.
8375
8376         * ssa2.c abcremoval2.c: Fix warnings.
8377
8378         * *: Merge the Linear IR branch.
8379
8380         The original branch is at trunk/branches/vargaz/mini-linear-il, and
8381         the ChangeLog file there describes all the changes done over the years. 
8382         Further documentation can be found at www.mono-project.com/Linear_IL.
8383
8384 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8385
8386         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8387           The float param registers and other param registers must be the 
8388           same index on Windows x64.
8389
8390         Contributed under MIT/X11 license.
8391
8392 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
8393
8394         * mini.c: Make the previous fix GC safe.
8395
8396 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
8397
8398         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
8399
8400 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8401
8402         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
8403           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
8404           ArgValuetypeAddrInIReg instead.
8405
8406         Contributed under MIT/X11 license.
8407
8408 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
8409
8410         * mini-codegen.c (get_register_spilling): Fix a warning.
8411
8412 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
8413
8414         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
8415         for types which the initialization fails. Raises the provided exception
8416         at the right stop after cleanup.
8417
8418 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
8419
8420         * aot-compiler.c: Free most of the memory allocated during compilation.
8421
8422         * mini.c (mini_parse_debug_options): Fix a leak.
8423         
8424         * mini.c (mini_method_compile): Don't add the method to the jit info tables
8425         during aot compilation.
8426
8427 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
8428
8429         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
8430         it has too much register pressure.
8431
8432 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
8433
8434         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
8435
8436 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8437
8438         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8439         on x86.
8440
8441         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8442         on amd64 similar to the way it is done on arm.
8443
8444         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8445
8446         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
8447         consistency, normalize error messages, avoid loading aot-only modules in
8448         normal mode.
8449
8450         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
8451         for consistency.
8452
8453         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
8454
8455 2008-07-11  Martin Baulig  <martin@ximian.com>
8456
8457         * debug-debugger.h
8458         (MonoDebuggerInfo): Add `interruption_request'.
8459
8460 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8461
8462         * aot-compiler.c (emit_plt): Remove some dead code.
8463
8464         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
8465
8466         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
8467         return the plt info offset belonging to a given plt entry.
8468
8469         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
8470         mono_aot_get_plt_info_offset.
8471         
8472         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
8473         similar to the amd64 code by makeing jumps through a separate jump table 
8474         instead of embedding the jump addresses into the code.
8475
8476 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
8477
8478         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
8479         method.
8480
8481 2008-07-10  Martin Baulig  <martin@ximian.com>
8482
8483         * mini.c (mini_method_compile): Disable generics sharing when
8484         running in the debugger.
8485
8486 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8487
8488         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
8489
8490         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
8491         the local register allocator from running out of registers on x86 when 
8492         using aot.
8493
8494 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
8495
8496         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
8497         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
8498         C4146.
8499
8500         Contributed under MIT/X11 license.
8501
8502 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8503
8504         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
8505         speed up the assembler.
8506
8507 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8508
8509         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
8510         support.
8511
8512         * mini.c: Move the soft float handling macros a bit earlier, add 
8513         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
8514         place.
8515
8516         * mini.h: Add prototype for mono_arch_fixup_jinfo.
8517
8518         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
8519         read-only to help catch code allocation requests.
8520         
8521         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
8522         and turn it off when using --aot-only or when compiling with --aot=full.
8523
8524         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
8525         jump table for switches from the normal domain mempool, not the code
8526         manager.
8527
8528         * mini-trampolines.c (get_unbox_trampoline): New function to return an
8529         unbox trampoline which handles aot-only mode too.
8530
8531         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
8532         an AOTed unbox trampoline.
8533
8534         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
8535
8536 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8537
8538         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
8539         ""
8540
8541         Contributed under MIT/X11 license.
8542
8543 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8544
8545         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
8546           the unwind information for the method at the end of the allocated block.
8547           
8548         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
8549           MonoCompileArch to hold the unwind info for SEH on Winx64
8550         
8551         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
8552           frame pointer info for the method being compiled.
8553           
8554         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
8555           the call to mono_exception_from_token.
8556           
8557         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
8558           storing the method prolog information in a format that the Winx64 SEH can understand.  This
8559           information is stored a the end of the method block because it is all 32-bit offset based.
8560
8561         Contributed under MIT/X11 license.
8562
8563 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8564
8565         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
8566
8567         * wapihandles.c: Fix warnings.
8568
8569         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
8570         mode.
8571
8572         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
8573         mono_jit_compile_method in aot-only mode since that calls the type 
8574         initializer.
8575         
8576         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
8577         get_delegate_invoke_impl in aot-only mode.
8578
8579         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
8580
8581 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
8582
8583         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
8584
8585         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
8586         is on by default.
8587
8588         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
8589
8590         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
8591         init trampoline from the AOT file as well.
8592
8593         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
8594         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
8595         code.
8596
8597         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
8598         mono_init.
8599
8600         * exceptions-amd64.c: Add _full variants for the remaining exception code
8601         creation functions as well, allow emission of relocatable code, remove
8602         caching since that is now done by the caller.
8603
8604         * mini-exceptions.c: Add _full variants for the remaining exception code
8605         creation functions as well, add aot-only support.
8606
8607         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
8608         if we can determine a proper token for them.
8609         (add_wrappers): Add a few more wrappers.
8610         (emit_method_code): Remove some dead code.
8611         (emit_trampolines): Emit exception code too.
8612
8613         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
8614
8615         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
8616         mono_array_new_va which avoids varargs.
8617
8618         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
8619
8620         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
8621         mono_arch_create_specific_trampoline () in all places.
8622
8623         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
8624         a bit so it can be used for other things as well.
8625         
8626         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
8627         on demand as well.
8628
8629         * exceptions-amd64.c: Rename the caching from the exception code creation
8630         functions, it is done by the caller instead.
8631         
8632         * exceptions-amd64.c: Change the signature of the exception code creation 
8633         functions to allow the creation of relocatable code later.
8634
8635         * mini-exceptions.c: Add a set of functions to query the various 
8636         runtime-generated exception functions.
8637
8638         * mini.c mini-exceptions.c: Use the newly added functions instead of the
8639         mono_arch_.. () functions.
8640         
8641 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8642
8643         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
8644
8645         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
8646
8647         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
8648         (mini_get_vtable_trampoline): Ditto.
8649
8650         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
8651         code in the AOT case by returning the code size and a list of relocations to
8652         the caller.
8653
8654         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
8655
8656 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
8657
8658         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
8659           clean the stack.
8660
8661         Contributed under MIT/X11 license.
8662
8663 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8664
8665         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
8666         so the buffer size can be computed correctly. Fixes #404735.
8667
8668         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
8669         normally as cfg->debug_info is already freed.
8670
8671 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
8672
8673         * mini-amd64.c: For calls returning vtypes in registers, don't store
8674         the return address on the stack, instead allocate a separate local for
8675         it. Fixes #404729.
8676
8677 2008-07-05  Mark Probst  <mark.probst@gmail.com>
8678
8679         * mini-trampolines.c, mini.h: Add an argument to
8680         mono_create_jit_trampoline_in_domain() for turning off the adding
8681         of the sync wrapper.
8682
8683         * mini.c: Use the JIT trampoline without sync instead of
8684         ldftn_nosync in static RGCTX invoke wrappers so that the call can
8685         be patched.
8686
8687 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8688
8689         * driver.c: Turn on GSHARED optimization by default.
8690
8691 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
8692
8693         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
8694         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
8695
8696         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
8697         create a variant of the generic trampoline code callable from AOTed trampolines.
8698
8699         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
8700         trampoline code callable from AOTed trampolines.
8701
8702         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
8703
8704 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8705
8706         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
8707         pass-through manner.
8708
8709         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
8710         and don't fail sharing for them anymore.
8711
8712         * mini-exceptions.c: Handle exceptions in shared generic methods.
8713
8714         * generic-sharing.c: When checking the context of a generic
8715         method, also check its class's context.  Don't treat wrappers as
8716         sharable.
8717
8718         * mini-trampolines.c: Some code factored out to
8719         metadata/generic-sharing.c.  Handle the MRGCTX case.
8720
8721         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
8722         we must deal with the method being of another instantiation of the
8723         class.  Add static rgctx invoke wrappers to generic methods.
8724
8725 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8726
8727         * mini.c: Provide all jit infos of generic shared methods with a
8728         generic jit info.
8729
8730         * mini-exceptions.c: Handle the new situation that a generic info
8731         might be available, but not info about the this/vtable/mrgctx
8732         variable.
8733
8734 2008-07-03  Mark Probst  <mark.probst@gmail.com>
8735
8736         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
8737         generic methods.
8738
8739 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
8740
8741         * dominators.c (check_dominance_frontier): Fix a warning.
8742
8743         * mini.h: Add some missing prototypes.
8744
8745         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
8746
8747         * driver.c (mono_jit_init_version): Correct the comments since the first
8748         argument should be the name of the root domain, not a filename.
8749
8750         * aot-runtime.c (make_writable): Error out if this is called while running
8751         with --aot-only.
8752         (load_aot_module): Ditto.
8753
8754         * aot-compiler.c: Really fix the computation of method indexes.
8755
8756         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
8757         optimizations as this is no longer called frequently.
8758
8759         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
8760         method and the invoke impl code and pass it to the delegate trampoline instead of
8761         just the delegate class.
8762
8763 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
8764
8765         * aot-compiler.c: Fixup the computation of method indexes.
8766         (add_wrappers): Create the base methods of the runtime invoke wrappers using
8767         the method builder infrastructure.
8768
8769         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
8770         has no header.
8771
8772         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
8773         mode, load the method right away instead of creating a trampoline.
8774
8775         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
8776
8777         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
8778         some checks a bit.
8779
8780 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
8781
8782         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
8783         (mono_aot_load_method): Use method_index instead of method->token.
8784
8785         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
8786         can handle icalls etc. properly.
8787
8788         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8789
8790         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
8791
8792         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
8793         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
8794         JIT_ICALL_ADDR patch type.
8795
8796         * patch-info.h: Add JIT_ICALL_ADDR patch type.
8797
8798         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
8799         request flag.
8800         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
8801
8802         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
8803
8804 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
8805
8806         * mini.c: Use domain->jit_code_hash_lock for controlling access to
8807         domain->jit_code_hash.
8808
8809 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
8810
8811         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
8812
8813 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
8814
8815         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
8816         get_this_arg_from_call, let it compute it when needed.
8817
8818         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
8819         gsctx from code only when needed.
8820
8821         * mini-trampolines.c (get_generic_context): Rename this to 
8822         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
8823         it can be called by the arch backends.
8824
8825         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
8826
8827 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
8828
8829         * driver.c (mono_main): Add experimental --aot-only command line option.
8830
8831         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
8832         set.
8833
8834 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
8835
8836         * driver.c (DllMain): Remove mono_module_handle.
8837
8838         Contributed under MIT/X11 license.
8839
8840 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
8841
8842         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
8843         for emitting methods which are not in the source assembly. Detect and report
8844         failure of assembling+linking.
8845         
8846         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
8847
8848         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
8849
8850 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
8851
8852         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
8853
8854 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
8855
8856         * mini.h: Remove some obsolete prototypes.
8857
8858         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
8859
8860 2008-06-24  Mark Probst  <mark.probst@gmail.com>
8861
8862         * mini.c (get_object_generic_inst): Variable-sized arrays are not
8863         supported by Visual Studio, so use alloca().
8864
8865 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
8866
8867         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
8868         Fixes #402585.
8869
8870 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8871
8872         * mini.c: Fail sharing of a generic method if it contains an open
8873         catch clause (because we don't pass MRGCTXs yet).
8874
8875 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8876
8877         * mini.c: When compiling a method with generic sharing, insert the
8878         method instantiated with an all-Object generic context into the
8879         jit info table, instead of the context of the first instantiation
8880         of the method we happen to compile.
8881
8882 2008-06-18  Martin Baulig  <martin@ximian.com>
8883
8884         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
8885         `major_version' and `minor_version'.
8886
8887 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8888
8889         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
8890         mono_method_is_generic_sharable_impl() takes an additional
8891         argument specifying whether to treat type variables as reference
8892         types.
8893
8894 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8895
8896         * mini.h: Removed obsolete prototypes.
8897
8898 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8899
8900         * mini.c: Don't fail generic sharing for initobj and sizeof - we
8901         already handle them.
8902
8903 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8904
8905         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
8906         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
8907         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
8908         tramp-x86.c: Added a MonoGenericContext* argument to
8909         mono_arch_get_unbox_trampoline() so that it can call other
8910         functions which require it.
8911
8912 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8913
8914         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
8915         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
8916         mono_arch_get_this_arg_from_call() takes a
8917         MonoGenericSharingContext* as well.
8918
8919 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8920
8921         * mini.c: Factor out code for emitting unbox into emit_unbox() and
8922         implement generic sharing of unbox.
8923
8924 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8925
8926         * mini.c: Don't compute the vtable to determine whether a field is
8927         special static, because it might not work for open types.
8928
8929 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8930
8931         * mini.c: Removed the unused token_type and token_source arguments
8932         from get_runtime_generic_context_ptr().
8933
8934 2008-06-17  Marek Habersack  <mhabersack@novell.com>
8935
8936         * mini.c (ADD_BINOP): fix the build
8937
8938 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
8939
8940         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
8941         a widening op.
8942
8943 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8944
8945         * mini.h: Removed class relations enum that's not used anymore.
8946
8947 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8948
8949         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
8950
8951         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
8952         the lazy fetch trampoline access code.
8953
8954 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
8955
8956         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
8957
8958 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
8959
8960         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
8961
8962         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
8963
8964         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
8965
8966 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8967
8968         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
8969         intrinsics.
8970
8971         * mini-ops.h: Add MIN/MAX_UN opcodes.
8972
8973         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
8974         intrinsics.
8975
8976         * basic-math.cs: Add more min/max tests.
8977
8978         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
8979
8980 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8981
8982         * mini.c: Small fix in the prologue of emit_castclass.
8983
8984 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8985
8986         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
8987
8988         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
8989         do not work even for unsigned types. Fixes #400014.
8990
8991         * basic-math.cs: Add regression tests for unsigned Min/Max.
8992
8993 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8994
8995         * mini.c: Added additional context_used argument to several
8996         functions, which will be needed for sharing generic methods.  Use
8997         GET_RGCTX macro wherever appropriate.  Declare only one
8998         context_used in mono_method_to_ir().
8999
9000 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9001
9002         * mini.c, generic-sharing.c: Removed generic class relations.
9003
9004         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
9005         functions due to MRGCTX changes.
9006
9007 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9008
9009         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
9010         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
9011         with calculated IMT.
9012
9013         * mini.c: Generic sharing of calls via generic interfaces.
9014
9015         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
9016         generic method with non-constant MonoGenericContext*.  Instead,
9017         the context is taken out of the method itself.
9018
9019 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9020
9021         * mini.c: Generic sharing of ldvirtftn.
9022
9023 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9024
9025         * mini.c: Generic sharing of ldftn.
9026
9027 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9028
9029         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
9030
9031 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9032
9033         * mini.c: Generic sharing of the special case of ldtoken followed
9034         by a call to GetTypeFromHandle.
9035
9036 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9037
9038         * mini.c: Generic sharing of box for nullable types.
9039
9040 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9041
9042         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
9043         are passed on the stack. Fixes #324807.
9044
9045 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
9046
9047         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
9048         for the ArgValuetypeAddrInIReg case.
9049
9050         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
9051         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
9052
9053         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
9054         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9055         local variable and pass the local variable by reference to the called method.
9056           
9057         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
9058         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
9059
9060         Contributed under MIT/X11 license.
9061
9062 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
9063
9064         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
9065
9066         * debug-mini.c (mono_debug_print_vars): Release memory after printing
9067         everything.
9068
9069 2008-06-10  Martin Baulig  <martin@ximian.com>
9070
9071         * debug-mini.c
9072         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
9073
9074 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
9075
9076         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
9077         possible error when no arguments are passed.
9078
9079         Contributed under MIT/X11 license.
9080
9081 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
9082
9083         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
9084         where the file name is NULL.
9085
9086 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
9087
9088         * mini.c: Fix s390 build.
9089
9090 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
9091
9092         * trace.c (mono_trace_parse_options): Fix warnings.
9093
9094         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
9095
9096 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
9097
9098         * mini.c (remove_block_if_useless): Avoid printing the method name.
9099         
9100         * mini.c: Remove needless setting of ins->cil_code which is now done by 
9101         MONO_INST_NEW.
9102
9103         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
9104         LMF. Not yet used.
9105
9106         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
9107         translated code after it has been patched.
9108
9109 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
9110
9111         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
9112         avoid problems during code patching on SMP systems.
9113         (emit_call): Avoid adding a patch info which is already added by 
9114         emit_call_body.
9115         (mono_arch_emit_exceptions): Ditto.
9116
9117 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
9118
9119         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
9120         MONO_TYPE_ISSTRUCT already checks for it.
9121
9122 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
9123
9124         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
9125           structs with floats on Winx64 the float registers are not used.  
9126           The integer registers are always used..
9127         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
9128           only one register will be used and only if the size of the struct 
9129           is 1,2,4, or 8 bytes.
9130
9131         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
9132           to work for Winx64.
9133
9134         Contributed under MIT/X11 license.
9135
9136 2008-06-05  Martin Baulig  <martin@ximian.com>
9137
9138         * debug-debugger.c (debugger_lookup_class): Also call
9139         mono_class_setup_methods() here; we're only called from RTI.
9140
9141 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
9142
9143         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
9144         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
9145         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
9146         Post-process object files and add dtrace-generated object, if necessary.
9147
9148         Contributed under MIT/X11 license.
9149
9150 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9151
9152         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
9153         element class.
9154
9155         * mini.c: Generic sharing for unbox.any and castclass.
9156
9157 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9158
9159         * mini.c: Ignore tailcall prefix in shared generic code and when
9160         doing calls which require a vtable/rgctx argument.
9161
9162 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9163
9164         * mini.c: Don't free the JIT info.
9165
9166         * driver.c: Changes in the JIT info table testing code.
9167
9168 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
9169
9170         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
9171         interruption. Fix some warnings.
9172
9173         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
9174         interruption_checkpoint.
9175
9176 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
9177
9178         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
9179         from embedding applications.
9180
9181 2008-06-02  William Holmes  <billholmes54@gmail.com>
9182
9183         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
9184           reserving 32 bytes on the stack when making calls. 
9185
9186         Contributed under MIT/X11 license.
9187
9188 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
9189
9190         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
9191         the linear IL branch.
9192
9193         * driver.c: Print out more information for --version on arm.
9194
9195 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
9196
9197         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
9198         bb_exit instead, since out of line bblocks might not actually be emitted
9199         out-of-line.
9200         
9201         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
9202         maximum epilog size for out of line bblocks if tracing is enabled.
9203
9204         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
9205
9206 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
9207
9208         * arrays.cs: Regression tests for allocating arrays with negative sizes.
9209
9210 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
9211
9212         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
9213         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
9214         opcodes.
9215
9216 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
9217
9218         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
9219         the 'value' to store is a constant.
9220
9221         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
9222
9223         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
9224         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
9225
9226 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
9227
9228         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
9229         for accessing method->generic_container.
9230
9231 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
9232
9233         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
9234         
9235         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
9236
9237         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
9238
9239         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
9240         fails.
9241
9242 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
9243
9244         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
9245
9246         * mini.c: Handle the case when mono_class_vtable () fails.
9247
9248 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
9249         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
9250         the stat profiler.
9251
9252 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9253
9254         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
9255         together with domain sharing.
9256
9257 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9258
9259         * mini.c: Treat callvirts to final methods like non-virtual calls
9260         when doing generic sharing, i.e. look them up in the runtime
9261         generic context.
9262
9263 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9264
9265         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
9266         with computed types (for generic sharing).
9267
9268         * mini.c: Generic sharing for mkrefany and refanyval.
9269
9270 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
9271
9272         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
9273         possible.
9274
9275         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
9276         the generic sharing code.
9277         
9278         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
9279         when needed.
9280
9281 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9282
9283         * mini.h: Remove the declaration of mono_aot_init_vtable ().
9284
9285 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
9286
9287         * driver.c: updated copyright date
9288
9289 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9290
9291         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
9292         needed.
9293
9294 2008-05-19  Martin Baulig  <martin@ximian.com>
9295
9296         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
9297         pointing to the new `_mono_debug_using_mono_debugger' variable.
9298
9299         * driver.c
9300         (mono_main): Check mono_debug_using_mono_debugger() rather than
9301         the `MONO_INSIDE_MDB' environment variable to check whether we're
9302         inside the debugger.
9303
9304 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
9305
9306         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
9307         argument.
9308
9309 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
9310
9311         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
9312
9313         * mini.c: Added mini_assembly_can_skip_verification. This
9314         function checks if the assembly requested to skip verification. 
9315         Fixes part of #387274.
9316
9317 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
9318
9319         * mini.c (mini_get_method): Disable the check for open generic classes when
9320         using generic sharing.
9321
9322         * generics.cs: Add a test for #387034.
9323
9324         * mini.c (mini_get_method): Check whenever the method class is an open generic
9325         type, and return NULL in that case, causing a verification error. Fixes
9326         #384123.
9327
9328 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9329
9330         * driver.c (mono_main): Revert r102623. The right
9331         thing to do is to enable the verifier under verifiable
9332         unless a --security flag was passed.
9333
9334         We need this non-trivial behavior for --verify-all otherwise
9335         mcs-compileall won't be able to use it. As it needs everything to
9336         be verified under validil.
9337
9338 2008-05-06  Martin Baulig  <martin@ximian.com>
9339
9340         Fix #383749.
9341
9342         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
9343         (mono_debugger_thread_cleanup): Likewise.
9344         (mono_debugger_extended_notification): Likewise.
9345
9346 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9347
9348         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
9349         against both inflated and non-inflated methods. We need to check against the
9350         generic definition for cases where the instantiated method is not visible.
9351         We need to check against the inflated types for cases where the instantiation
9352         changes any super type. This fixes #382986.
9353
9354         Note that this doesn't need to be applied to other parts of mono_method_to_ir
9355         that check for visibiliy as generic params only appears as the type subject
9356         of tokens on call opcodes. Field manipulation and ldftn must always
9357         target an exact type.
9358
9359 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9360
9361         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
9362         if no related --security flag is passed.
9363
9364 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9365
9366         * mini-arch.h: Prepare support for ppc64.
9367
9368         Contributed under MIT/X11 license.
9369
9370 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9371
9372         * aot-runtime.c: Prepare support for ppc64.
9373
9374         Contributed under MIT/X11 license.
9375
9376 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9377
9378         * mini-ops.h: Prepare support for ppc64.
9379
9380         Contributed under MIT/X11 license.
9381
9382 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
9383
9384         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
9385
9386         Contributed under MIT/X11 license.
9387
9388 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
9389
9390         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
9391         assemblies, since aot_name is not a full path, causing us to load MS.NET 
9392         assemblies on windows.
9393
9394 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
9395
9396         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
9397         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
9398         * main.c: Use UTF-8 encoded command line instead of Windows default code
9399         page on Windows to support Unicode.
9400         * driver.c (DllMain): New function for mixed-mode assembly support.
9401         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
9402         export __stdcall functions without decoration.
9403
9404         Contributed under MIT/X11 license.
9405
9406 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9407
9408         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
9409         saving it very early.
9410
9411 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9412
9413         * mini.h, mini.c: Lots of code for accessing the old RGCTX
9414         deleted.  The only way to access the new RGCTX is via the
9415         trampline.
9416
9417         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
9418         vtable instead of the RGCTX to static methods.
9419
9420         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
9421         accessing the new RGCTX.
9422
9423         * generic-sharing.c: There is no separation between self, type
9424         arguments and other types in the RGCTX anymore.
9425
9426 2008-04-25  Jonathan Chambers <joncham@gmail.com>
9427
9428         * mini-amd64.c (add_general): Remove previous stack adjustment.
9429         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
9430         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
9431         for 32 bytes of stack space reserved for all calls.
9432         
9433         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
9434         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
9435         adjustment.
9436         
9437         Code contributed under MIT/X11 license.
9438
9439 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
9440
9441         * mini.c (mini_method_verify): Only verify non-inflated methods, check
9442         against the root definition, peeling out method and type instantiations.
9443         Cache verify success results, code that fails verification is still
9444         checked multiple times.
9445
9446 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
9447
9448         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
9449
9450 2008-04-23  Jonathan Chambers <joncham@gmail.com>
9451
9452         * mini-amd64.c (add_general): Always increment stack on Win64.
9453         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
9454         on Win64.
9455         
9456         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
9457         stack based argument handling on Win64.
9458         
9459         Code contributed under MIT/X11 license.
9460
9461 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
9462
9463         * Makefile.am (version.h): Add support for git-svn.
9464
9465 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
9466
9467         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
9468         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
9469         avoiding allocations and libc functions which might deadlock.
9470         
9471         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
9472         'no-gdb-backtrace' option is set.
9473
9474         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
9475
9476         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
9477
9478 2008-04-21  Martin Baulig  <martin@ximian.com>
9479
9480         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
9481         and `get_lmf_addr'; `notification_address' is no longer a pointer.
9482
9483 2008-04-21  Martin Baulig  <martin@ximian.com>
9484
9485         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
9486         `thread_vtable', `event_handler_ptr' and `event_handler'.
9487
9488 2008-04-21  Martin Baulig  <martin@ximian.com>
9489
9490         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
9491         allows delayed initialization of the `executable_code_buffer' when
9492         attaching.
9493
9494 2008-04-21  Martin Baulig  <martin@ximian.com>
9495
9496         * mini.h (mono_debugger_create_notification_function): Removed.
9497         * tramp-*.c (mono_debugger_create_notification_function): Removed.
9498
9499         * mdb-debug-info64.s
9500         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9501
9502         * mdb-debug-info32.s
9503         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9504
9505         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
9506         currently only works on x86 and x86_64, so don't create it on ppc.
9507
9508 2008-04-21  Martin Baulig  <martin@ximian.com>
9509
9510         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
9511
9512         * mini.c
9513         (mini_method_compile): In the fp elimination check, check
9514         `debug_options.mdb_optimizations' in addition to
9515         mono_debug_using_mono_debugger().       
9516
9517         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
9518         disable some JIT optimizations which are only disabled when
9519         running inside the debugger.
9520         Added `--help-debug' option to describe the debugging options.
9521         (parse_debug_options): New static function to parse the `--debug'
9522         options, so we can easily add more stuff in future.
9523
9524 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
9525
9526         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
9527         the method has no body.
9528
9529 2008-04-19  Jonathan Chambers <joncham@gmail.com>
9530
9531         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
9532         assembly is not allowed in MSVC 64-bit compiler. 
9533         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
9534         as we get floating point exceptions everywhere.
9535         
9536         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
9537         correctly align arguments for call to throw_exception.
9538         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
9539         
9540         Code contributed under MIT/X11 license.
9541
9542 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
9543
9544         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
9545
9546 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
9547
9548         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
9549
9550         * mini-amd64.c (NEW_INS): Set cil_code.
9551
9552         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
9553         from mini-amd64.c so all debugger related logic is in one place.
9554
9555         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
9556         later won't have a random ip assigned to them.
9557
9558 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
9559
9560         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
9561         the arch specific function initializes code_size.
9562         (mono_create_delegate_trampoline): Ditto.
9563
9564         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
9565         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
9566         platforms.
9567
9568         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
9569         running under the debugger.
9570
9571         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
9572         debugger.
9573
9574         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
9575         debugger. Also move the disabling of optimizations here from driver.c.
9576         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
9577         debugger.
9578
9579         * mini.h (MonoCompile): Add a few new flags.
9580
9581 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
9582
9583         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
9584         so the cil_code field of created MonoInst's is properly set.
9585         (mini_select_instructions): Ditto.
9586
9587         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
9588         (MONO_INST_NEW_CALL): Ditto.
9589
9590         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
9591         in many places so the ins->cil_code field is properly initialized.
9592
9593         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
9594         place.
9595
9596 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
9597
9598         * mini.c (mini_method_compile): Print a different message when compiling a 
9599         shared method.
9600         
9601         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
9602         > 1.
9603
9604 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9605
9606         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
9607         SSE2 instructions.
9608
9609         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
9610         
9611 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9612
9613         * mini.c (handle_stack_args): Make this return void since its return value was
9614         never used. Also set cfg->unverifiable for invalid IL instead of calling
9615         G_BREAKPOINT ().
9616
9617 2008-04-10  Mark Probst  <mark.probst@gmail.com>
9618
9619         * mini.c: Make sure "this" is live in catch clauses with type
9620         variables in shared generic code.
9621
9622 2008-04-08  Mark Probst  <mark.probst@gmail.com>
9623
9624         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
9625         generic_class_is_reference_type() to ensure the proper behaviour
9626         when sharing generic code and the type in question is a type
9627         argument.
9628
9629 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9630
9631         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
9632         race conditions when printing thread dumps. Fixes #377738.
9633
9634 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
9635         
9636         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
9637         shows up when both MonoInst arguments can cause aliasig.
9638         There is likely no way in the current JIT to trigger this problem, but
9639         it showed up in the development of generics sharing, when in a new
9640         opcode both args of an OP_GROUP can be aliases (addresses of a local).
9641         When the generics sharing code will be committed, its tests will be
9642         valid also for this bug.
9643
9644 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9645
9646         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
9647         PATCH_INFO_METHOD.
9648
9649         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
9650         NULL.
9651
9652 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
9653
9654         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
9655         use a more detailed exception message for InvalidCastException.
9656
9657         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
9658
9659         * driver.c (mono_main): Add --debug=casts option to turn on better 
9660         InvalidCastException message details.
9661
9662         * mini.c (mini_get_debug_options): New helper function to return the address of
9663         the debug_options variable.
9664
9665         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
9666         the jit_tls TLS variable.
9667
9668         * mini.c (mono_jit_tls): New TLS variable.
9669
9670         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
9671         option is used.
9672
9673 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
9674
9675         * mini.h: Removed verifer related stuff. This code was moved to verify.c
9676
9677         * mini.c: Removed verifer related stuff, code moved to verify.c.
9678
9679         * driver.c: Using code from verify.c instead of mini.c.
9680
9681 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
9682
9683         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
9684         longer valid.
9685
9686 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
9687
9688         * mini.c (check_for_method_verify): Enabling verification of
9689         corlib if mono_verify_all is set. Bugs in the verifier preventing that
9690         have been fixed.
9691
9692 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
9693
9694         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
9695         caller saved registers as well.
9696         
9697         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
9698         saved registers as well.
9699
9700 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
9701
9702         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
9703
9704         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
9705         code.
9706
9707 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
9708
9709         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
9710         to get_call_info.
9711         (get_call_info): Take a gsctx argument instead of 'cfg'.
9712
9713 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
9714
9715         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
9716         mono_verify_all is set.
9717
9718         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
9719
9720         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
9721
9722 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
9723
9724         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
9725         an exception.
9726
9727         * driver.c mini.c mini.h: Add a --verify-all development option to test the
9728         verifier and the code generated by the compiler.
9729
9730 2008-03-25  Mark Probst  <mark.probst@gmail.com>
9731
9732         * mini.c: Generic sharing of the non-nullable case of the box
9733         instruction.
9734
9735 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
9736
9737         * inssel.brg: Fix the build.
9738
9739         * iltests.il.in: Add a test for lconv.ovf.u8.un.
9740
9741 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
9742
9743         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
9744         Array:Address. Fixes #372410.
9745
9746         * iltests.il.in: New tests for readonly prefix.
9747
9748 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
9749
9750         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
9751         mini-trampolines.c.
9752
9753         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
9754         mini-exceptions.c.
9755
9756         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
9757         
9758         * mini.c (mono_decompose_op_imm): New helper function.
9759
9760         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
9761         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9762         return value.
9763
9764         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9765         mono_arch_output_basic_block. Fix warnings.
9766
9767         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
9768         for now.
9769
9770 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
9771
9772         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
9773         since the extra frame is now detected automatically inside the loop.
9774
9775         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
9776         opts which are now in mono_peephole_ins ().
9777         
9778         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
9779
9780         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
9781         frames and skip duplicate managed-to-native frames. Fixes #367665.
9782
9783         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9784         opts which are now in mono_peephole_ins ().
9785         (mono_arch_peephole_pass_2): Ditto.
9786
9787         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
9788
9789         * mini-codegen.c (mono_peephole_ins): New helper function containing the
9790         arch independent peephole optimizations.
9791
9792         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9793         opts which are now in mono_peephole_ins ().
9794
9795         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
9796         
9797         * mini-s390.c (mono_arch_output_basic_block): Fix build.
9798
9799         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
9800         pattern.
9801
9802         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
9803         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
9804         opcode. 
9805
9806 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
9807
9808         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
9809         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9810         return value.
9811
9812         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9813         mono_arch_output_basic_block. Fix warnings.
9814
9815 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9816
9817         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9818         conv.ovf.u.un.
9819
9820 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9821
9822         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9823         conv.ovf.u.un.
9824
9825         * iltests.il: Add new tests.
9826
9827 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
9828
9829         * mini.c: Removed Windows version macros.
9830
9831 2008-03-20  Mark Probst  <mark.probst@gmail.com>
9832
9833         * generic-sharing.c: Put reflection types in the extensible part
9834         of the runtime generic context.
9835
9836         * mini.c: Generic sharing of the GetTypeHandle special case of the
9837         ldtoken instruction.
9838
9839 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9840
9841         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
9842
9843         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
9844         
9845         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
9846         consistency with the other version on the linear IR branch.
9847
9848         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
9849
9850         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
9851
9852         * iltests.il.in: Add new tests.
9853
9854 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
9855
9856         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
9857
9858         * iltests.il.in: Add new tests.
9859
9860 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9861
9862         * mini.c: Two variables with the same name were declared in
9863         nesting contexts and one wasn't initialized.  Fixed.
9864
9865 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9866
9867         * mini.c: Generic sharing of the initobj instruction.
9868
9869 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
9870
9871         * mini.c: make the test to optimize ldtoken from typeof() more
9872         precise.
9873
9874 2008-03-18  Mark Probst  <mark.probst@gmail.com>
9875
9876         * mini.c: Generic sharing of the initobj instruction for reference
9877         types.
9878
9879 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
9880
9881         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
9882         the mono_breakpoint_clean_code() code to perform bound checks.
9883
9884 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
9885
9886         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
9887         mono_arch_patch_callsite() to include the start of the managed method
9888         to be able to perform bound checks.
9889
9890 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9891
9892         * mini.c: Generic sharing for the isinst instruction.
9893
9894 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9895
9896         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9897         inssel-long32-mips.brg: Added opcodes for doing indirect calls
9898         with the runtime generic context argument.
9899
9900         * mini.c: Share calls to several types of unsharable methods by
9901         putting the address of the method code in the runtime generic
9902         context and doing an indirect call.
9903
9904         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9905         to switches.
9906
9907 2008-03-16  Mark Probst  <mark.probst@gmail.com>
9908
9909         * generic-sharing.c: Change due to a change in the runtime genric
9910         context API.
9911
9912 2008-03-15  Martin Baulig  <martin@ximian.com>
9913
9914         * tramp-x86.c
9915         (mono_arch_nullify_class_init_trampoline): Add call to
9916         mono_breakpoint_clean_code() to make things work when running
9917         inside the debugger.
9918
9919         * tramp-amd64.c
9920         (mono_arch_nullify_class_init_trampoline): Add call to
9921         mono_breakpoint_clean_code() to make things work when running
9922         inside the debugger.
9923
9924 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9925
9926         * inssel-long.brg (reg): Fix 64 bit build.
9927
9928 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9929
9930         * mini.c, mini.h: Share static generic code by passing it an
9931         implicit argument pointing to the runtime generic context.
9932
9933         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9934         inssel-long32-mips.brg: New opcodes for calling shared static,
9935         which need to be passed the runtime generic context.
9936
9937         * mini-amd64.c, mini-x86.c: Save the runtime generic context
9938         argument on the stack in the prologue if needed.  New function for
9939         finding the runtime generic context argument from the registers
9940         saved by the trampoline.
9941
9942         * mini-amd64.h, mini-x86.h: Specify which register to use for the
9943         runtime generic context argument.
9944
9945         * tramp-amd64.c: Also restore the register used for the runtime
9946         generic context argument.
9947
9948         * mini-trampoline.c: Resolve shared static calls by consulting the
9949         runtime generic context via the new argument.
9950
9951         * generic-sharing.c: Add an argument to sharability-checking
9952         functions that specifies whether type variables should be treated
9953         as sharable type arguments.
9954
9955         * inssel-x86.brg: Removed a superfluous, buggy rule.
9956
9957         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9958         to switches.
9959
9960 2008-03-14  Martin Baulig  <martin@ximian.com>
9961
9962         * debug-debugger.c (main_thread_handler): Call
9963         mono_runtime_run_main() without sending any notifications.
9964
9965         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
9966
9967 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9968
9969         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
9970
9971 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9972
9973         * tramp-x86.c: Fixed register restore offsets in the trampoline
9974         code for ECX and EDX.
9975
9976 2008-03-12  Geoff Norton  <gnorton@novell.com>
9977
9978         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
9979         different ucontext_t implementations.
9980         * exceptions-arm.c: Use the above defines to get exceptions working on 
9981         iPhone (based on a patch by Luke Howard lukeh@padl.com)
9982         * mini-arm.c: Implement iPhone icache support (based on a patch by
9983         Luke Howard lukeh@padl.com)
9984
9985 2008-03-12  Mark Probst  <mark.probst@gmail.com>
9986
9987         * mini.c: Enable generic sharing of calls to non-static
9988         non-interface non-generic non-value-type methods.
9989
9990         * mini-trampolines.c: Resolve calls from shared generic code.
9991
9992 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
9993
9994         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
9995
9996         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
9997
9998 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
9999
10000         * mini.c: some fixes for the AOT compiler.
10001
10002 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10003
10004         * cpu-amd64.md: Add clob:1 to some float opcodes.
10005
10006 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
10007
10008         * mini.h: Added MiniVerifierMode enumeration.
10009
10010         * mini.c: Added mini_verifier_set_mode to control
10011         the usage of the new verifier.
10012
10013         * mini.c (mono_method): Integrated the new verifier.
10014
10015         * driver.c: Extended --security option with validil and
10016         verifiable options to activate the new verifier.
10017
10018 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10019
10020         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
10021         optimization to ctors taking 0 or 2 arguments too.
10022
10023         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
10024         a bit.
10025
10026         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
10027
10028         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
10029
10030 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
10031
10032         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
10033         non-aot case as well.
10034
10035         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
10036
10037         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
10038         changes.
10039
10040         * aot-compiler.c (encode_patch): Ditto.
10041
10042         * mini.h (G_MININT32): Fix the definition of this.
10043
10044 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
10045
10046         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
10047
10048         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
10049
10050 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10051
10052         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
10053         methods returning vtypes in registers.
10054         (mono_arch_allocate_vars): Ditto.
10055
10056         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
10057
10058         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
10059
10060         * generics.cs: Add a test from the linear IR branch.
10061
10062         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
10063
10064         * mini.c (inline_method): Cache failed inline attempts.
10065
10066 2008-03-04  Mark Probst  <mark.probst@gmail.com>
10067
10068         * mini.c: For shared methods of generic classes put the location
10069         of "this" into the MonoGenericJitInfo.
10070
10071         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
10072         register out of a MonoContext by register number.  Add the generic
10073         sharing context as an argument to mono_arch_find_this_argument().
10074
10075         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
10076         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
10077         for new arch function.
10078
10079         * mini-exception.c: Handle open exception clauses in shared
10080         generic code.
10081
10082         * mini-trampolines.c: Supply additional argument to
10083         mono_arch_find_this_argument().
10084
10085 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10086
10087         * Makefile.am (regtests): Run the bench.exe tests last.
10088
10089 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
10090
10091         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
10092         a bit.
10093
10094 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
10095
10096         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
10097         with MS.
10098
10099         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
10100         
10101         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
10102
10103         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
10104         whose class has no cctor.
10105
10106         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
10107
10108 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
10109
10110         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
10111         unverified.
10112
10113 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
10114
10115         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
10116         to be in sync with the code on the linear IR branch.
10117
10118         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
10119
10120         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
10121
10122 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
10123
10124         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
10125
10126         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
10127
10128         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
10129
10130         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
10131
10132         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
10133         
10134         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
10135         body.
10136
10137 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
10138
10139         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
10140         OP_LOADR4_MEMBASE emission.
10141
10142         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
10143         (mono_spillvar_offset_float): Ditto.
10144
10145         * mini-mips.c (mono_arch_emit_prolog): Ditto.
10146
10147         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
10148         emission.
10149
10150         * basic-long.cs: Add regression tests for them.
10151
10152         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
10153         use.
10154         (mono_arch_allocate_vars): Fix representation of single-precision float
10155         argument.
10156         (mono_arch_output_basic_block): Ditto.
10157
10158         * inssel-mips.brg: Ditto, remove duplicate items.
10159
10160         * mini-mips.c (emit_load_volatile_arguments): New function to handle
10161         arguments of tail calls as on other platforms.
10162         (mono_arch_output_basic_block): Handle tail calls.
10163
10164         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
10165         register.
10166
10167         * objects.cs (test_5_pass_static_struct): Add test for it.
10168
10169         Contributed under MIT/X11 license.
10170
10171 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
10172
10173         * Makefile.am: Use gmcs for compiling the regression tests.
10174
10175         * *.2.cs *.2.il: Rename to *.cs and *.il.
10176
10177 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
10178
10179         * regalloc.h: Make the vassign array smaller.
10180
10181         * mini.c (mini_method_compile): Remove an unused field in cfg.
10182
10183         * mini-codegen.c: Add a bunch of micro optimizations.
10184
10185 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
10186
10187         * regalloc.h: Remove some unused fields.
10188
10189 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
10190
10191         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
10192
10193         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
10194
10195 2008-02-22  Mark Probst  <mark.probst@gmail.com>
10196
10197         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
10198
10199         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
10200         trampoline: Fetch an entry from the runtime generic context.  If
10201         it's NULL, jump to the actual trampoline to fill the runtime
10202         generic context.  Otherwise, return it.
10203
10204         * mini.c: Call the lazy fetch trampoline to get entries out of the
10205         runtime generic context.
10206
10207         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
10208         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
10209         tramp-sparc.c: Stubs for the lazy fetch trampoline.
10210
10211 2008-02-21  Mark Probst  <mark.probst@gmail.com>
10212
10213         * mini.c: Fetch data out of the extensible part of the runtime
10214         generic context instead of calling a helper function.
10215
10216         * generic-sharing.c: Some functions moved into
10217         metadata/generic-sharing.c.  Helper function for fetching other
10218         types now checks and asserts against extensible rgctx (just for
10219         debugging purposes - the helper function isn't called anymore
10220         unless for debugging).
10221
10222 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10223
10224         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
10225         for tail calls up to the point that the tests in iltests.exe run. Also add a
10226         dummy CKFINITE implementation.
10227         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
10228         needed for trampoline LMF frames.
10229
10230         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
10231         trampoline LMF frames.
10232
10233 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
10234
10235         * mini.c (inline_method): clean any pending loader error when inlining fail.
10236         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
10237
10238 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10239
10240         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
10241
10242         * aot-runtime.c (decode_patch_info): Ditto.
10243
10244         * mini.c (mono_resolve_patch_target): Ditto.
10245         
10246         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
10247         icall wrappers.
10248
10249         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
10250         
10251         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
10252         if it references an icall address.
10253
10254 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
10255
10256         * cpu-s390x.md: Remove some more unused opcodes.
10257         
10258         * cpu-s390x.md: Remove some unused opcodes.
10259
10260         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
10261         mono_op_imm_to_op ().
10262
10263         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
10264         instead of a switch statement.
10265         
10266         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
10267         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
10268
10269         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
10270         
10271         * mini-codegen.c: Remove unused mono_regstate2_... functions.
10272
10273         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
10274         -1.
10275
10276 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
10277
10278         * driver.c (mono_main): Improve error reporting when an assembly cannot be
10279         opened. Fixes #362607.
10280
10281         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
10282
10283         * iltests.il.in: Add a test for static methods in interfaces.
10284
10285 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
10286
10287         * genmdesc.c (build_table): Fix a crash on older glib versions.
10288
10289         * cpu-sparc.md: Remove some unused opcodes.
10290         
10291         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
10292         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
10293
10294         * cpu-amd64.md: Remove some unused opcodes.
10295
10296         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
10297         like the other opcodes.
10298
10299 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
10300
10301         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
10302
10303         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
10304
10305         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
10306         variables 'cfg' instead of 'm' for consistency.
10307
10308         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
10309
10310         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
10311         argument holding the vtype return address, to avoid the ambigious use of
10312         cfg->ret for this purpose.
10313
10314         * mini.c (NEW_RETLOADA): Use vret_addr if set.
10315
10316         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
10317         
10318         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
10319         new mono_print_ins () function which only takes one argument.
10320
10321 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
10322
10323         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
10324         macro arguments.
10325
10326 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
10327
10328         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
10329
10330         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
10331
10332         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
10333         opcodes and other small changes.
10334
10335         * mini-ops.h: Add some new opcodes from the linear IR branch.
10336
10337         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
10338
10339         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
10340         opcodes, use the REG_MEMBASE opcodes instead.
10341         
10342         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
10343         opcodes, use the REG_MEMBASE opcodes instead.
10344         
10345         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
10346         linear IR branch.
10347
10348         * mini.c (mono_op_imm_to_op): New helper function.
10349
10350         * mini-ops.h: Add some opcodes from linear IR branch.
10351
10352 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
10353
10354         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
10355         <tsv@solvo.ru>.
10356
10357 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
10358
10359         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
10360         OP_ICONV_TO_R4/R8.
10361
10362         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
10363
10364 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
10365
10366         * aot-compiler.c (emit_method_code): Add an assert.
10367
10368         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
10369         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
10370         methods.
10371
10372 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
10373
10374         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
10375         some load/store opcodes so they are consistent. 
10376         (mono_arch_emit_prolog): Simplify some code.
10377
10378         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
10379
10380         * objects.cs: Add tests for large argument offsets on ARM.
10381
10382         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
10383         stack offsets. Fixes #359651.
10384
10385         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
10386
10387         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
10388
10389         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
10390
10391         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
10392
10393         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
10394
10395         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
10396         rid of CEE_CONV_R_UN.
10397
10398         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
10399
10400 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
10401
10402         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
10403
10404         * mini.c (mono_normalize_opcodes): Add some more opcodes.
10405
10406         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
10407
10408         * cpu-amd64.md: Remove some unused opcodes.
10409
10410         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
10411
10412         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
10413
10414         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
10415         arch specific functions for its parts. Call the peephole pass after local
10416         regalloc so the prolog can compute a more accurate max_offset.
10417         
10418         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
10419         the corresponding OP_I/OP_L opcodes.
10420
10421         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
10422
10423         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
10424
10425 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10426
10427         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
10428         as they are handled in mini.c.
10429
10430         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
10431         
10432         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
10433         case since it is handled in mini.c.
10434
10435         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
10436
10437         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
10438
10439         * *.c: Use the new opcodes in the IR and back end code.
10440
10441         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
10442
10443         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
10444
10445 2008-02-06  Mark Probst  <mark.probst@gmail.com>
10446
10447         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
10448         an assert because it has a race condition.
10449
10450 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10451
10452         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
10453
10454         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
10455
10456         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
10457
10458         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
10459         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
10460
10461 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
10462
10463         * cpu-amd64.md (move): Correct the maximum size of move.
10464
10465 2008-02-05  Mark Probst  <mark.probst@gmail.com>
10466
10467         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
10468         the generic class init trampoline to return quickly if the class
10469         is already inited.
10470
10471 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
10472
10473         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
10474         issues where an 32 bit callsite cannot be patched by a 64 bit address.
10475
10476 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
10477
10478         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
10479         branch.
10480
10481 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
10482
10483         * objects.cs: Add some soft-float tests.
10484
10485         * mini.c: Fix a couple more soft-float issues.
10486
10487         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
10488
10489         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
10490         avoid a REX prefix.
10491
10492 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
10493
10494         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
10495         exception happens while compiling a virtual method.
10496
10497 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
10498
10499         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
10500         
10501         * mini-sparc.c: Fix build.
10502
10503         * mini-sparc.c (get_call_info): Add support for generic sharing.
10504
10505         * mini-exceptions.c: Add a FIXME.
10506
10507 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
10508
10509         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
10510         altstack handling code.
10511
10512         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
10513         
10514         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
10515
10516         * mini-s390.c: Add support for generic sharing.
10517
10518         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10519         Fix CAS on s390.
10520         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10521
10522         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
10523
10524         * mini-s390x.c: Add support for generic sharing.
10525         
10526         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10527         Fix CAS on ia64.
10528         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10529
10530         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
10531         can be used since it takes a 16 bit signed immediate.
10532
10533         * inssel-s390x.brg: Fix OP_SETRET.
10534
10535         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
10536
10537         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
10538
10539         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
10540
10541         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
10542
10543         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
10544         in one place.
10545
10546         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
10547         stuff.
10548
10549         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
10550         of the unused mono_arch_patch_delegate_trampoline stuff.
10551
10552 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
10553
10554         * basic-long.cs: Move the fp related tests to basic-float.cs.
10555
10556         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
10557
10558         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
10559
10560         * basic-calls.cs: Add a test for proper float argument passing.
10561
10562         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
10563         if the context corresponds to an exception received through a signal.
10564
10565         * exceptions.cs: Add a test for nullref handling at the start of a try
10566         clause.
10567
10568         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
10569
10570         * jit-icalls.c (mono_break): New JIT icall.
10571
10572         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
10573
10574         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
10575
10576 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
10577
10578         * cpu-*.md: Get rid of unused opcodes.
10579
10580         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
10581
10582         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
10583         by all platforms.
10584
10585         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
10586         define.
10587
10588         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
10589         the arch independent trampoline code in mini-trampolines.c.
10590
10591         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
10592
10593         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
10594
10595         * mini-s390.h: Remove an unused define.
10596         
10597         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
10598         the arch independent trampoline code in mini-trampolines.c.
10599
10600         * mini-arm.c (mono_arch_emit_prolog): Fix build.
10601
10602 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
10603
10604         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
10605
10606         * mini-s390.c (mono_arch_emit_prolog): Fix build.
10607
10608         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
10609
10610         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
10611
10612         * cpu-amd64.md: Use smaller sizes for int opcodes.
10613
10614         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
10615
10616         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
10617         objects.cs.
10618
10619         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
10620         debugging.
10621
10622         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
10623         instead of though a pointer to save an indirection when accessing elements of
10624         the array.
10625
10626         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
10627         some typos.
10628         (NOT_IMPLEMENTED): New helper macro.
10629         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
10630         of a bb.
10631
10632         * *.c: Use the new helper macro.
10633
10634 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
10635
10636         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
10637
10638 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
10639
10640         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
10641         stack slots.
10642
10643 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
10644
10645         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
10646         profiling is enabled.
10647         
10648         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
10649         the end.
10650         (mono_arch_emit_prolog): Add more first bblock optimizations.
10651
10652         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
10653         in order if possible.
10654         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
10655         bblock, since the arguments are still in their original registers.
10656
10657         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
10658
10659 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
10660
10661         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
10662         as well.
10663
10664         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
10665         offset 0.
10666
10667         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
10668
10669         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
10670         process async exceptions received while in unmanaged code.
10671
10672         * mini.c (mini_init): Install a callback with the runtime which will be called
10673         when a thread receives an async exception while in unmanaged code.
10674
10675         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
10676
10677         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
10678
10679 2008-01-16  Wade Berrier  <wberrier@novell.com>
10680
10681         * cpu-g4.md:
10682         * cpu-arm.md:
10683         * cpu-s390x.md:
10684         fix build
10685
10686 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
10687
10688         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
10689         compilation with sun cc.
10690
10691         * cpu-*.md: Fix the build.
10692
10693         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
10694
10695         * mini-amd64.h: Add some comments to the MonoLMF structure.
10696
10697         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
10698         
10699         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
10700         in the LMF structure if possible. This saves two instructions in the
10701         managed->native wrappers.
10702
10703         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
10704
10705 2008-01-16  Mark Probst  <mark.probst@gmail.com>
10706
10707         * generic-sharing.c: New type argument lookup code which uses the
10708         runtime generic context template.
10709
10710 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
10711
10712         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
10713
10714         * mini-arm.c (add_general): Fix arm eabi parameter passing.
10715         (mono_arch_output_basic_block): Fix localloc implementation.
10716
10717         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
10718
10719         * mini-ia64.c (peephole_pass): Fix ia64 build.
10720
10721         * mini-amd64.c (peephole_pass): Fix a warning.
10722         
10723         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
10724         at a constant offset from sp/fp.
10725
10726         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
10727         instead of obtaining it from *lmf in the managed method case.
10728
10729 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
10730
10731         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
10732
10733 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
10734
10735         * mini.h (MonoInstList): New type.
10736         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
10737         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
10738         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
10739         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
10740         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
10741         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
10742         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
10743         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
10744         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
10745         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
10746         MONO_INST_LIST_FOR_EACH_ENTRY,
10747         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
10748         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
10749         mono_inst_list_first, mono_inst_list_last,
10750         mono_inst_list_next, mono_inst_list_prev): New instruction
10751         list handling interfaces.
10752         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
10753         list head 'ins_list'.
10754         (MonoInst): Replace next pointer with list head 'node'.
10755         (MonoCallInst): Make 'out_args' a MonoInstList.
10756         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
10757         (MonoCompile): Delete reverse_inst_list and
10758         reverse_inst_list_len.
10759         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
10760         mono_arch_lowering_pass, mono_arch_local_regalloc,
10761         mono_arch_output_basic_block, mono_arch_emit_prolog):
10762         Convert to new instruction lists.
10763         (insert_after_ins): Delete.
10764         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
10765         instruction lists.
10766         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
10767         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
10768         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
10769         mono_emulate_opcode, mono_emit_load_got_addr,
10770         inline_method, mono_method_to_ir, mono_print_bb_code,
10771         print_dfn, decompose_pass, nullify_basic_block,
10772         replace_out_block_in_code, remove_block_if_useless,
10773         merge_basic_blocks, move_basic_block_to_end,
10774         try_unsigned_compare, optimize_branches, mono_print_code,
10775         mini_select_instructions, remove_critical_edges): Likewise.
10776         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
10777         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
10778         mono_arch_output_basic_block, mono_arch_emit_prolog):
10779         Likewise.
10780         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
10781         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10782         mono_arch_output_basic_block): Likewise.
10783         (inst_list_prepend, insert_after_ins): Delete.
10784         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
10785         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
10786         instruction lists.
10787         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
10788         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
10789         mono_arch_emit_prolog): Likewise.
10790         * cfold.c (mono_constant_fold): Likewise.
10791         * liveness.c (visit_bb, mono_analyze_liveness,
10792         optimize_initlocals): Likewise.
10793         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
10794         * graph.c (mono_draw_code_cfg): Likewise.
10795         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
10796         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
10797         mono_ssa_cprop): Likewise.
10798         * abcremoval (get_relations_from_previous_bb, process_block):
10799         Likewise.
10800         * local-propagation (mono_cprop_invalidate_values,
10801         mono_local_cprop_bb): Likewise.
10802         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
10803         peephole_pass, mono_arch_output_basic_block,
10804         mono_arch_emit_prolog): Likewise.
10805         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
10806         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10807         mono_arch_emit_prolog): Likewise.
10808         (insert_after_ins): Delete.
10809         * aliasing.c (print_code_with_aliasing_information,
10810         mono_build_aliasing_information, mono_aliasing_deadce):
10811         Convert to new instruction lists.
10812         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
10813         peephole_pass, NEW_INS, mono_arch_lowering_pass,
10814         mono_arch_local_regalloc, mono_arch_output_basic_block):
10815         Likewise.
10816         (insert_after_ins): Delete.
10817         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
10818         peephole_pass, mono_arch_output_basic_block): Convert to
10819         new instruction lists.
10820         * mini-codegen (InstList, inst_list_prepend,
10821         insert_after_ins): Delete.
10822         (insert_before_ins, get_register_force_spilling,
10823         get_register_spilling, free_up_ireg, free_up_reg,
10824         create_copy_ins, create_spilled_store, alloc_int_reg,
10825         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
10826         to new instruction lists.
10827         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
10828         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10829         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
10830         (insert_after_ins): Delete.
10831         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
10832         mono_arch_local_regalloc, mono_arch_output_basic_block,
10833         mono_arch_call_opcode): Convert to new instruction lists.
10834         (insert_after_ins): Delete.
10835         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
10836         peephole_pass, mono_arch_output_basic_block,
10837         mono_arch_emit_prolog): Convert to new instruction lists.
10838
10839 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
10840
10841         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
10842
10843         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
10844         Fixes #353182.
10845
10846         * Makefile.am (version.h): Make this work with non-bash shells.
10847
10848 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
10849
10850         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
10851
10852 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
10853
10854         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
10855         the InitializeArray optimization.
10856
10857 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
10858
10859         * mini.c driver.c: Don't include os/gc_wrapper.h.
10860
10861 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
10862
10863         * mini.c (print_jit_stats): Print GC statistics if available.
10864
10865 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
10866
10867         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
10868
10869 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
10870
10871         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
10872
10873 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
10874
10875         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
10876         
10877         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
10878
10879         * driver.c (mono_main): Ditto.
10880
10881 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
10882
10883         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
10884
10885         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
10886         in the vtable can't be encoded.
10887         (compile_method): Ditto.
10888
10889 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
10890
10891         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
10892         defined.
10893
10894         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
10895         lmf->rbp.
10896
10897         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
10898         the top LMF entry belongs to the current method.
10899
10900         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
10901
10902 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
10903
10904         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
10905         
10906         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
10907
10908         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
10909
10910         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
10911
10912         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
10913
10914         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
10915         implementation.
10916
10917         * basic-float.cs: Add an ulong->double cast test.
10918
10919 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
10920
10921         * mini.c (mono_method_to_ir): Fix a warning.
10922
10923 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
10924
10925         * mini-ops.h: Add OP_SWITCH.
10926
10927         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
10928         CEE_SWITCH in back-end code, use OP_SWITCH instead.
10929
10930 2007-12-11  Geoff Norton  <gnorton@novell.com>
10931
10932         * mini-s390x.c: Minor change to the MAX() define to allow
10933         it to compile with other gcc versions.
10934
10935 2007-12-11  Geoff Norton  <gnorton@novell.com>
10936
10937         * cpu-s390x.md:
10938         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
10939
10940 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10941
10942         exceptions-arm.c (mono_arch_get_restore_context): Restore
10943         the frame pointer.
10944
10945         exceptions-arm.c (throw_exception): Save the frame pointer.
10946         This is a partial fix for #323747. Only the client side is
10947         fixed.
10948
10949 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10950
10951         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
10952         was using an unrelated variable to log the class which
10953         needed the cctor to be called. This was crashing on arm.
10954
10955 2007-12-09  Robert Jordan  <robertj@gmx.net>
10956
10957         * mini-x86.c (mono_arch_emit_epilog):
10958         Consider all kinds of 64-bit types. Fixes #323114.
10959
10960 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
10961
10962         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
10963
10964 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10965
10966         * mini-amd64.c (peephole_pass): Add a missing instruction check.
10967
10968 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10969
10970         * mini.c: run type ctor before allocating an object, not only
10971         when running it's constructor method (fixes at least part of bug #342507).
10972
10973 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10974         
10975         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
10976         
10977         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
10978         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
10979         function.
10980
10981         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
10982         mono_generic_class_init_trampoline () the same as it is done with the other
10983         trampolines.
10984
10985         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
10986         aot-runtime.c aot-compiler.c: Implement AOT support.    
10987
10988 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10989
10990         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
10991         build for archs which don't have the vtable trampoline defined
10992         yet.
10993
10994 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10995
10996         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
10997
10998         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
10999
11000         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
11001
11002         * tramp-<ARCH>.c: Use the new helper function.
11003
11004 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11005
11006         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
11007         trampoline call, which takes a vtable argument.
11008
11009         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
11010         OP_TRAMPCALL_VTABLEs like other calls.
11011
11012         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
11013         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
11014         call.  Implemented a support function which fetches the vtable
11015         from a register set.
11016
11017         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
11018         Implemented a generic class init trampoline, using the
11019         OP_TRAMPCALL_VTABLE opcode.
11020
11021         * mini.c: Implemented static field access when sharing generic
11022         code.  This implies initing the class using the new
11023         OP_TRAMPCALL_VTABLE call.
11024
11025 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11026
11027         * mini.c: Don't compile methods with sharing enabled if their
11028         classes are disabled for sharing.
11029
11030 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11031
11032         * inssel.brg: Add a missing sign extension to the GETCHR and array access
11033         opcodes. Fixes #346563.
11034
11035         * objects.cs: Add a new test.
11036
11037         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
11038
11039         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
11040         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
11041
11042 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11043
11044         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
11045
11046 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
11047
11048         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
11049         code stream.
11050
11051 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
11052
11053         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
11054
11055         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
11056         optimization in the AOT case.
11057         
11058 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
11059
11060         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
11061         
11062         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
11063
11064         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
11065
11066         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
11067
11068         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
11069         is created by the inlined delegate ctor.
11070
11071         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
11072
11073         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
11074
11075 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
11076
11077         * cpu-x86.md: Fix the length of ckfinite.
11078
11079 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
11080
11081         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
11082         
11083         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
11084         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
11085
11086         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
11087
11088         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
11089         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
11090
11091 2007-11-28  Martin Baulig  <martin@ximian.com>
11092
11093         * mini-x86.c
11094         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
11095         after creating the trampoline.
11096
11097 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
11098
11099         * aot-runtime.c (load_aot_module): Check runtime version if needed.
11100
11101         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
11102         the same version.
11103
11104         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
11105         instead of the calling method to help AOT.
11106
11107         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
11108
11109 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
11110
11111         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
11112         is defined.
11113
11114 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
11115
11116         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
11117         
11118         * aot-compiler.c (compile_method): Correct check for generic method definitions.
11119         (encode_method_ref): No need to handle generic method definitions specially.
11120
11121         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
11122
11123         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
11124         decode_klass_info.
11125
11126         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
11127         encode_klass_info.
11128         (compile_method): Enable generic sharing.
11129
11130 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
11131
11132         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
11133         (mini_method_compile): Add preliminary support for AOTing shared generic code.
11134
11135         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
11136         generic code.
11137
11138         * mini-trampolines.c: Fix a warning.
11139
11140         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
11141         NEW_PCONST.
11142         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
11143         (generic_class_is_reference_type): Remove unused function.
11144
11145         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
11146         in the generic vtable trampoline case.
11147
11148         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
11149         
11150         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
11151         return an AOT method based on a vtable slot.
11152
11153         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
11154
11155         * mini.c (mini_get_vtable_trampoline): Export this.
11156
11157 2007-11-22  Martin Baulig  <martin@ximian.com>
11158
11159         * debug-debugger.h
11160         (MonoDebuggerInfo): Move `debugger_version' up.
11161
11162 2007-11-22  Martin Baulig  <martin@ximian.com>
11163
11164         * mini-amd64.c
11165         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
11166
11167         * mini-trampolines.c
11168         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
11169         after compiling the method.
11170
11171 2007-11-20  Martin Baulig  <martin@ximian.com>
11172
11173         * debug-mini.c
11174         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
11175         (mono_debugger_remove_breakpoint): Likewise.
11176         (mono_debugger_check_breakpoints): Likewise.
11177
11178         * debug-debugger.c: Implement the new breakpoint interface here.
11179
11180 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
11181
11182         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
11183         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
11184
11185         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
11186
11187 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
11188
11189         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
11190
11191         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
11192         mini.c.
11193
11194         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
11195         mini.c.
11196
11197         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
11198         returning a vtype in a register.
11199
11200         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
11201         here from the arch specific code.
11202
11203         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
11204         mini.c.
11205
11206         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
11207         (mono_arch_emit_prolog): Increment maximum prolog size.
11208
11209         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
11210         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
11211
11212         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
11213         MonoGenericSharingContext.
11214
11215         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
11216         MonoGenericSharingContext. Allocate memory from the cfg mempool.
11217
11218 2007-11-15  Mark Probst  <mark.probst@gmail.com>
11219
11220         * mini.c, mini.h, generic-sharing.c: Functions for producing code
11221         which extract fields out of the runtime generic context.  Full
11222         sharing of the NEWARR opcode.
11223
11224 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11225
11226         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
11227         --enable-minimal=ssa.
11228
11229 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
11230
11231         * mini-trampolines.c (mono_delegate_trampoline): Update after 
11232         mono_marshal_get_delegate_invoke () signature change.
11233
11234 2007-11-13  Mark Probst  <mark.probst@gmail.com>
11235
11236         * mini.c: Removed the shared context in favor of the generic
11237         sharing context.  Allocate the MonoJitInfo structure with room for
11238         the generic sharing context if it's needed.
11239
11240         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
11241         domain-internals.h now.
11242
11243         * mini-x86.c: Pass the generic sharing context to get_call_info ().
11244
11245         * generic-sharing.c: Several changes for working without a shared
11246         context and instead operating on open types instead.
11247
11248 2007-11-12  David S. Miller  <davem@davemloft.net>
11249
11250        * inssel-sparc.brg: Fix double instruction emit.
11251
11252 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
11253
11254         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
11255         Get/Set/Address methods.
11256         
11257         * mini.c debug-debugger.c mini-trampolines.c: Update after 
11258         mono_marshal_get_delegate_invoke signature change.
11259
11260 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11261
11262         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
11263         This can happens with dynamic methods. Fixes the other bug in #322722.
11264
11265 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11266
11267         * tramp-arm.c (mono_arch_patch_callsite): Support patching
11268         BX call sequence.
11269
11270         * mini-arm.c (arm_patch): Implement patching of BX call
11271         sequence. Fixes one of the bugs in #322722.
11272
11273 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
11274
11275        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
11276        under Linux.  We only need to flush every 32-byte cache line.    
11277
11278 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
11279
11280         * mini.c:
11281         move_basic_block_to_end: Add branches when needed, eventually creating
11282         a new BB.
11283         optimize_branches: added a parameter that tells if it's ok to create
11284         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
11285         and avoid calling move_basic_block_to_end when it's not ok.
11286         Fixes bug 318677.
11287
11288 2007-11-07  Mark Probst  <mark.probst@gmail.com>
11289
11290         * mini.c: Abort inlining call to InitializeArray if something
11291         looks wrong.  Let the icall handle it, which now has proper safety
11292         checks.
11293
11294 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
11295
11296         * mini.c (mono_spill_call): add support for soft-float.
11297
11298         * mini.c (mono_method_to_ir): add support for soft-float
11299         to inlined functions that return float.
11300
11301         * mini.c (mono_method_to_ir): add support for soft-float
11302         to cee_stsfld opcode on float fields.
11303
11304 2007-11-05  Geoff Norton  <gnorton@novell.com>
11305
11306         * mini-x86.h: Fix the structure access for X86 Leopard.
11307
11308
11309 2007-11-05  Martin Baulig  <martin@ximian.com>
11310
11311         * mini-trampolines.c
11312         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
11313         after compiling the method to notify the debugger.
11314
11315 2007-11-05  Martin Baulig  <martin@ximian.com>
11316
11317         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
11318
11319 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
11320
11321         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
11322         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
11323
11324 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
11325
11326         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
11327         native-to-managed wrappers.
11328         
11329 2007-11-01  Geoff Norton  <gnorton@novell.com>
11330
11331         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
11332         members.
11333
11334 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11335
11336         * mini.c, mini-x86.c: when getting back from unmanaged code
11337         to managed via a marshaled delegate we also need to set the
11338         right domain.
11339
11340 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11341
11342         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
11343         for amd64.
11344
11345 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11346
11347         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
11348         let the debugger or other external agents to tell the JIT when
11349         a sw breakpoint has been inserted in the code that the JIT needs
11350         to be able to inspect.
11351
11352 2007-10-31  Martin Baulig  <martin@ximian.com>
11353
11354         * debug-debugger.h
11355         (MonoDebuggerInfo): Remove `runtime_class_init'.
11356
11357 2007-10-30  Martin Baulig  <martin@ximian.com>
11358
11359         * debug-mini.h
11360         (mono_debugger_thread_created): Added `MonoThread *' argument.
11361         (mono_debugger_extended_notification): New public method.
11362         (mono_debugger_trampoline_compiled): New public method.
11363
11364         * debug-mini.c
11365         (MonoDebuggerThreadInfo): Added `thread' and
11366         `extended_notifications' fields.
11367
11368         * debug-debugger.c
11369         (debugger_executable_code_buffer): New static variable.
11370
11371         * debug-debugger.h
11372         (MonoDebuggerInfo): Added `executable_code_buffer',
11373         `executable_code_buffer_size', `breakpoint_info_area',
11374         `breakpoint_table' and `breakpoint_table_size'.
11375
11376 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
11377
11378         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
11379         that IP  either is an unused value or the vtable pointer. IMT 
11380         calls use vtable + offset now. Reduced by almost half the size
11381         of IMT entries.
11382
11383 2007-10-26  Jonathan Chambers <joncham@gmail.com>
11384
11385         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
11386         defines to access param registers. Replace long usage with
11387         gsize as sizeof(long) != sizeof(void*) on Win64.
11388
11389         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
11390         on Win64. Fix intrinsic, use _AddressOfReturnAddress
11391         instead of non-existant _GetAddressOfReturnAddress.
11392
11393         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
11394         param registers. Save/restore %rdi and %rsi in MonoLMF.
11395
11396         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
11397         param registers. Modify (throw_exception) signature to take 
11398         %rdi and %rsi on Win64. 
11399
11400         Code is contributed under MIT/X11 license.
11401
11402 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11403
11404         * helpers.c: unlink debugging output files.
11405
11406 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
11407
11408         * mini.c: Move mono_create_ftnptr () to object.c.
11409
11410 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
11411
11412         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
11413         optional. This function can now be used to disassemble code generated
11414         outside the JIT such as trampolines and IMT thunks.
11415
11416         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
11417
11418         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
11419         vtable pointer from a ldr instruction.
11420
11421         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
11422         new IMT call sequence.
11423
11424         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
11425         call sequence for interface invocations.
11426
11427         * mini-arm.c (mono_arch_emit_imt_argument): added, required
11428         for imt support. This function is empty since IMT on ARM requires no
11429         special handling on the IR side.
11430
11431         * mini-arm.c (mono_arch_find_imt_method): added, required for
11432         imt support.
11433
11434         * mini-arm.c (mono_arch_find_this_argument): added, required
11435         for imt support.
11436
11437         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
11438         a ldr instruction to load a value stored in the code stream.
11439
11440         * mini-arm.c (mono_arch_build_imt_thunk):added, required
11441         for imt support.
11442
11443
11444 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
11445
11446         * mini.c (mini_init): Install the jump trampoline callback.
11447
11448 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11449
11450         * mini-trampolines.c: handle synchronized methods with the common
11451         vtable trampoline (bug #335601).
11452
11453 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
11454
11455         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
11456
11457         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
11458         64 bit platforms.
11459
11460         * mini-ia64.h mini-ia64.c: Add support for IMT.
11461
11462         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
11463         prolog. Fixes #331958.
11464
11465 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
11466
11467         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
11468
11469 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11470
11471         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
11472         trampoline.
11473
11474 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11475
11476         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
11477         trampoline.
11478
11479 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
11480
11481         * mini-x86.c, mini-x86.h: x86 support for the common vtable
11482         trampoline.
11483
11484 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
11485
11486         * mini-trampolines.c: changed the magic rampoline to understand
11487         the common vtable trampoline method: the method to invoke is
11488         determined by the vtable displacement of the call.
11489
11490 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11491
11492         * mini.c, mini.h: register the common vtable trampoline if the
11493         architecture supports it.
11494
11495 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11496
11497         * cpu-amd64.md: use the correct max length for tls_get.
11498
11499 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
11500
11501         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
11502         CEE_STELEM_ANY. Fixes #333696.
11503
11504 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
11505
11506         * exceptions-x86.c: provide more graceful handling of the case where
11507         we followed a bogus function pointer from managed code (bug #332866).
11508
11509 2007-10-11  Mark Probst  <mark.probst@gmail.com>
11510
11511         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
11512         replaces the generic_shared flag and will carry more information
11513         in the future.
11514
11515         * generic-sharing.c: Added mini_type_stack_size() which allows
11516         allows open types if given a generic sharing context.
11517         mini_get_basic_type_from_generic() takes a
11518         MonoGenericSharingContext* instead of a MonoCompile* now.
11519
11520         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
11521         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
11522         mini-sparc.c, mini-x86.c: Trivial changes required by the two
11523         changes above.  Just passing arguments through to the right
11524         places.
11525
11526 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11527
11528         * mini-arm.c: unify the call emission to emit_code_seq().
11529
11530 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
11531
11532         * tramp-arm.c: reduced the trampoline size.
11533
11534 2007-10-10  Mark Probst  <mark.probst@gmail.com>
11535
11536         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
11537         variable handling out of arch-specific code.
11538
11539 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
11540
11541         * mini-arm.c: implemented fast delegate dispatch.
11542
11543 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11544
11545         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
11546         that fp elimination is turned off if the space required by locals is too
11547         big. Fixes #331958.
11548
11549 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11550
11551         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
11552         ARM to the new style trampoline.
11553
11554 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11555
11556         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
11557
11558         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
11559
11560 2007-10-09  Martin Baulig  <martin@ximian.com>
11561
11562         * debug-debugger.h
11563         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
11564         `field_info_offset_offset'.     
11565
11566 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
11567
11568         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
11569         removed more internal usage of the r11 register and made it available
11570         to the register allocator.
11571
11572 2007-10-08  Mark Probst  <mark.probst@gmail.com>
11573
11574         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
11575         when sharing generics and treat type variables as references.
11576
11577 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11578
11579         * mini-ppc.c: started removing the internal uses of register r11
11580         to eventually allow the register allocator to manage it as an
11581         additional available register.
11582
11583 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11584
11585         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
11586
11587 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
11588
11589         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
11590         specific trampolines as they are not performance critical as a jump
11591         target (maybe align as before only for AOT code?). This saves about
11592         200 KB of native code on x86 for monodevelop startup.
11593
11594 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11595
11596         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
11597         monodevelop startup.
11598
11599 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
11600
11601         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
11602
11603         * mini-sparc.h mini-sparc.c: Implement IMT support.
11604
11605         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
11606         its smaller and doesn't clobber sparc_g1.
11607
11608         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
11609
11610 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11611
11612         * mini-ppc.c: optimized the size of the IMT thunks a bit.
11613
11614 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11615
11616         * mini-ppc.c: implemented fast delegate invocation.
11617
11618 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11619
11620         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
11621
11622 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11623
11624         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
11625         code to the new style trampoline in preparation for IMT support.
11626
11627 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
11628
11629         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
11630         systems already. This also reduces the specific trampiline sizes and
11631         prepares for the use of r12 as the IMT identifier register.
11632
11633 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11634
11635         * mini-mips.h: endianess fix (simplified from a patch by
11636         Thomas Kunze <thommy@tabao.de>, bug #323737).
11637
11638 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11639
11640         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
11641         to access ucontext fields and enable netbsd support
11642         (partially from Magnus Henoch <mange@freemail.hu>).
11643
11644 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11645
11646         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
11647         use the preprocessor from the CPP env var if it is set.
11648
11649 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11650
11651         * mini-trampolines.c: fixed an assertion and moved it earlier in the
11652         code, before interface_offset gets used.
11653
11654 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
11655
11656         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
11657         mono_class_setup_vtable () before accessing klass->vtable.
11658
11659 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
11660
11661         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
11662         hackish.
11663
11664 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11665
11666         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
11667         IMT slots (this saves hundreds of KB of memory in programs like
11668         IronPython and Monodevelop).
11669
11670 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11671
11672         * mini.c: print the delegate counter.
11673
11674 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
11675
11676         * mini-x86.c: make it easier to enable the debugging code for IMT
11677         slots.
11678
11679 2007-09-28  Martin Baulig  <martin@ximian.com>
11680
11681         * debug-debugger.h
11682         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
11683         `mono_method_klass_offset' and `mono_method_token_offset'.
11684
11685 2007-09-20  Mark Probst  <mark.probst@gmail.com>
11686
11687         * mini.c: First generics sharing implementation.  Can only share
11688         in very simple cases.  If sharing doesn't work it falls back to
11689         dedicated compilation.
11690
11691         * mini.h: Flag in MonoCompile to specify whether generic
11692         compilation is shared.  Flags enum for marking which generic inst
11693         of a context is used.  Prototypes for helper functions.
11694
11695         * generic-sharing.c: Helper functions for generic method sharing.
11696
11697         * optflags-def.h: Optimization flag (gshared) for enabling generic
11698         method sharing added.
11699
11700         * Makefile.am: generic-sharing.c added.
11701
11702 2007-09-19 Daniel Nauck <dna@mono-project.de>
11703
11704         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
11705
11706 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
11707         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
11708         fixes bug 325507.
11709
11710 2007-09-19  Martin Baulig  <martin@ximian.com>
11711
11712         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
11713         mono_debug_cleanup() is now part of mono_cleanup().
11714
11715 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
11716
11717         * driver.c (mono_main): Fix a warning.
11718
11719 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
11720
11721         * aot-compiler.c: Optimize various parts when processing large assemblies.
11722         Fixes ##325568.
11723
11724         * mini.c (mono_patch_info_hash): Improve hash function.
11725
11726 2007-09-14  Jonathan Chambers <joncham@gmail.com>
11727
11728         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
11729         
11730         Code is contributed under MIT/X11 license.
11731
11732 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11733
11734         * mini.c (mini_init): Fix a leak.
11735
11736         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
11737
11738 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11739
11740         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
11741
11742 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11743
11744         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
11745
11746 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
11747
11748         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
11749         variance tests.
11750
11751         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
11752
11753         * mini.c (handle_alloc): Enable managed allocators in AOT code.
11754
11755         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
11756
11757         * aot-runtime.c (decode_patch_info): Ditto.
11758
11759 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11760
11761         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
11762         static case. Cache delegates in architecture specific code, 
11763         based on number of parameters.
11764         
11765         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
11766         in architecture specific code, based on number of parameters.
11767         
11768         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
11769         caching happen in architecture specific code now.
11770         
11771         Code is contributed under MIT/X11 license.
11772
11773 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11774
11775         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
11776         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
11777         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
11778
11779         Code is contributed under MIT/X11 license.
11780
11781 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11782         * mini.c: (mono_thread_abort) Fixed bug #82416.
11783
11784 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11785
11786         * mini.: hook the new managed GC allocation feature into the JIT.
11787
11788 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11789
11790         * mini.c: implementation for the new runtime tls opcode.
11791
11792 2007-09-11  Martin Baulig  <martin@ximian.com>
11793
11794         * debug-debugger.h
11795         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
11796         `mono_method_inflated_offset'.
11797
11798 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
11799
11800         * driver.c mini.h mini.c: Add a new devel command line option for injecting
11801         async exceptions into a method.
11802
11803         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
11804         purpose of testing whenever the unwinder works at every instruction.
11805
11806 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
11807
11808         * mini.c: check accessibility of method used in ldftn (fixes
11809         bug #82635).
11810
11811 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
11812
11813         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
11814
11815         * inssel.brg: Fix a warning.
11816
11817 2007-09-03  Martin Baulig  <martin@ximian.com>
11818
11819         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
11820         now takes the `main_method' as argument.
11821
11822 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
11823
11824         * cpu-sparc.md (endfilter): Add missing src1:i argument.
11825
11826 2007-08-30  Jonathan Chambers <joncham@gmail.com>
11827
11828         * driver.c: include the cil-coff.h header on Windows.
11829         
11830         Code is contributed under MIT/X11 license.
11831
11832 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11833
11834         * mini.c, driver.c: don't include the cil-coff.h header.
11835
11836 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11837
11838         * mini.c: flag places that needs fixes fo soft-float support.
11839
11840 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
11841
11842         * mini.h, inssel-float.brg: fix soft-float constant loads on big
11843         endian systems (partially from Dean Jenkins, bug #81924).
11844
11845 2007-08-28  Mark Probst  <mark.probst@gmail.com>
11846
11847         * mini.c (check_linkdemand): Remove embedded reference object in
11848         call to LinkDemandSecurityException.
11849         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
11850         with an IntPtr instead of a reference object.
11851
11852 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
11853
11854         * mini.c (handle_initobj): Handle alignment properly.
11855
11856         * inssel.brg (mini_emit_memset): Ditto. 
11857
11858         * inssel.brg (mini_emit_memcpy): Ditto. 
11859
11860         * inssel-sparc.brg: Ditto.              
11861
11862         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
11863
11864 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
11865
11866         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
11867         exceptions raised in unmanaged code. Fixes part of #82594.
11868
11869 2007-08-24  Mark Probst  <mark.probst@gmail.com>
11870
11871         * mini.c (mono_method_to_ir), declsec.c
11872         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
11873
11874 2007-08-22  Martin Baulig  <martin@ximian.com>
11875
11876         * debug-mini.h
11877         (MonoDebuggerThreadInfo): New typedef.
11878         (mono_debugger_thread_table): New global variable.
11879         (mono_debugger_thread_created): New public function.
11880         (mono_debugger_thread_cleanup): New public function.
11881
11882         * debug-debugger.h
11883         (MonoDebuggerInfo):
11884         - removed `get_current_thread' and `lookup_assembly'.
11885         - removed `data_table'.
11886         - added `thread_table'.
11887
11888         * mini.c
11889         (mono_thread_start_cb): Call mono_debugger_thread_created().
11890         (mono_thread_attach_cb): Likewise.
11891         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
11892         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
11893         initial domain.
11894
11895         * driver.c (mono_main): Move mono_debug_init() up, before calling
11896         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
11897
11898 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11899
11900         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
11901         together when passing several arguments of type double (gives a small
11902         speedup and saves a few bytes of generated code).
11903
11904 2007-08-20  Jb Evain  <jbevain@novell.com>
11905
11906         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
11907
11908 2007-08-20  Jb Evain  <jbevain@novell.com>
11909
11910         * mini.c (mono_method_to_ir): throw MethodAccessException
11911         and FieldAccessException instead of InvalidProgramException.
11912
11913 2007-08-20  Mark Probst  <mark.probst@gmail.com>
11914
11915         * mini.c: CoreCLR security checks.
11916
11917         * mini.h: Removed MonoSecurityMode (moved to
11918         metadata/security-manager.h) and mono_security_mode global var
11919         (replaced by set/get functions in security-manager.h).
11920
11921         * driver.c: Added "core-clr-test" security mode for testing.  Used
11922         set-function for setting security mode.
11923
11924 2007-08-17  Mark Probst  <mark.probst@gmail.com>
11925
11926         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
11927         the new jit_info_table.
11928
11929         * driver.c: Test code for the new jit_info_table (enabled by the
11930         define MONO_JIT_INFO_TABLE_TEST).
11931
11932 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
11933
11934         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11935         detection of call <REG> instruction sequence. Fixes build on freebsd.
11936
11937 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
11938
11939         * mini-exceptions.c: Fix a warning.
11940
11941 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
11942
11943         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
11944         stack overflow handling code on amd64 too.
11945
11946         * mini-exceptions.c (mono_setup_altstack): Make this use 
11947         mono_thread_get_stack_bounds ().
11948
11949         * mini-x86.h: Disable sigaltstack on solaris x86.
11950
11951 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
11952
11953         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
11954
11955 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
11956
11957         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
11958
11959 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
11960
11961         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
11962
11963         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
11964
11965 2007-08-03  Neale Ferguson <neale@sinenomine.net>
11966
11967         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
11968         due to alignment.
11969
11970 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11971
11972         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
11973         to be emitted (bug #82281).
11974
11975 2007-08-01  Martin Baulig  <martin@ximian.com>
11976
11977         Merged the `debugger-dublin' branch.
11978
11979         * debug-debugger.h (MonoDebuggerInfo):
11980         Removed the `old_*' compatibility entries.
11981         Added `debugger_version' and `data_table'.
11982         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
11983         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
11984
11985         * debug-mini.c
11986         (MiniDebugMethodBreakpointInfo): Add `address_list'.
11987         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
11988         instead of a `gconstpointer'.
11989         (mono_debugger_insert_method_breakpoint): Return a
11990         `MonoDebugMethodAddressList *'.
11991
11992 2007-06-28  Martin Baulig  <martin@ximian.com>
11993
11994         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
11995
11996 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
11997
11998         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
11999         __builtin_frame_address () since it is broken on older gcc versions.
12000
12001 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12002
12003         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
12004         on the stack overflow handling and made the managed stack overflows
12005         catchable in most cases using soft guard pages.
12006         * exceptions-x86.c: added code to restore the protection in the soft
12007         guard pages at the end of exception handling.
12008
12009 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
12010
12011         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
12012
12013 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12014
12015         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
12016         exception handling.
12017
12018 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12019
12020         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
12021         signal handling support until it has been ported to the new mechanism.
12022         * mini.c: fixed stack overflow detection and use the new
12023         architecture code  to handle signals on the altstack.
12024
12025 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
12026
12027         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
12028         stack overflows on the alt stack.
12029
12030 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
12031
12032         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
12033         stack overflows on the alt stack.
12034
12035 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
12036
12037         * exceptions-ppc.c: cleanup preparing for altstack support.
12038
12039 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12040
12041         * exceptions-arm.c: cleanup preparing for altstack support.
12042
12043 2007-07-27  Mark Probst  <mark.probst@gmail.com>
12044
12045         * mini.c (print_jit_stats): Output hazard pointer stats.
12046
12047 2007-07-26  Mark Probst  <mark.probst@gmail.com>
12048
12049         * driver.c, mini.c: Replaced security mode flags with a single
12050         enum variable.
12051
12052 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12053
12054         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
12055
12056 2007-07-25  Mark Probst  <mark.probst@gmail.com>
12057
12058         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
12059         (which doesn't do anything yet) for activating Core CLR
12060         (Silverlight) security.
12061
12062 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
12063
12064         * mini-codegen.c: work around a possible gcc bug on arm.
12065
12066 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12067
12068         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
12069         message for platforms that don't support AOT compilation.
12070
12071 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12072
12073         * mini.h, mini.c, driver.c: temporary smcs hack.
12074
12075 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
12076
12077         * mini-arm.h, mini-arm.c: arm EABI fixes.
12078
12079 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
12080
12081         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
12082         case.
12083
12084         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
12085         trampolines taking a method argument.
12086
12087         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
12088
12089         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
12090         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
12091
12092         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
12093         JIT compilation throws an exception. Fixes #82050.
12094
12095 2007-07-19  Mark Probst  <mark.probst@gmail.com>
12096
12097         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
12098         with the MONO_EXCEPTION_ defines.
12099
12100 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
12101
12102         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
12103         #82117.
12104         
12105         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
12106         the cause of an assertion.
12107
12108 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
12109
12110         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
12111         removed.
12112
12113 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
12114
12115         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
12116         assert. Should fix #82103.
12117
12118 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
12119
12120         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
12121         here too. Fixes #82095.
12122
12123         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
12124         addresses.
12125
12126         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
12127
12128         * mini-amd64.h: Enable IMT for amd64.
12129         
12130         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
12131
12132 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
12133
12134         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
12135
12136 2007-07-12  Mark Probst  <mark.probst@gmail.com>
12137
12138         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
12139         as soon as check_linkdemand sets an exception_type.
12140
12141 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12142
12143         * mini-x86.c: fixed offsets for IMT call sequence.
12144         * mini-x86.h: enable IMT again.
12145
12146 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12147
12148         * trace.c (mono_trace_enter_method): Decode MonoType too.
12149
12150         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
12151
12152         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
12153
12154         * mini-amd64.c: Add preliminary IMT implementation.
12155         
12156 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12157
12158         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
12159         understand the new IMT-base interface invocation (thanks to
12160         Daniel Nauck for the report and the remote debugging session).
12161
12162 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12163
12164         * mini-x86.c: size and speed optimizations for the IMT bsearch.
12165
12166 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12167
12168         * Makefile.am (aotcheck): Make this actually use the AOTed code.
12169
12170 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
12171
12172         * mini-trampolines.c: implement AOT IMT support.
12173         * mini-x86.h: enable IMT support for wider testing.
12174
12175 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12176
12177         * inssel.brg (emit_imt_argument): Add aot support here.
12178
12179         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
12180
12181 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12182
12183         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
12184         of the IMT implementation, partially from massi, with my
12185         implementation of the bsearch sequence. Disabled by default until
12186         the AOT code is implemented.
12187
12188 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12189
12190         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
12191
12192         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
12193
12194 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12195
12196         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
12197         arch-independent IMT JIT code from Massimiliano
12198         Mantione (massi@ximian.com) with small cleanups from me.
12199
12200 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12201
12202         * Makefile.am: fix svn invocation to get the svn revision to be
12203         independent of the local language (build fix).
12204
12205 2007-07-09  Mark Probst  <mark.probst@gmail.com>
12206
12207         * mini.c (inline_method): Reset cfg->exception_type if the
12208         inlining is aborted.  Fixes: 82049.
12209
12210 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
12211
12212         * mini.c: remove assert from exception handling code when exception_ptr
12213         is not set.
12214
12215 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12216
12217         * mini.c (mono_codegen): Add an assert.
12218
12219         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
12220         enter and leave code.
12221         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
12222
12223 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12224
12225         * mini-ppc.c: fixed memory corruption for localloc(0)
12226         (bug #81852).
12227
12228 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12229         
12230         * mini.c: Fix warnings.
12231
12232 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
12233
12234         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
12235         to emit better double->int conversions.
12236
12237 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12238
12239         * mini.c: the provided Min/Max optimizations are valid for unisgned
12240         ints.
12241
12242 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
12243
12244         * 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
12245
12246 2007-06-28  Miguel de Icaza  <miguel@novell.com>
12247
12248         * mini.c (mono_running_on_valgrind): Add support for reporting the
12249         method and  its boundaries to valgrind.
12250
12251 2007-06-28  Martin Baulig  <martin@ximian.com>
12252
12253         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12254
12255 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
12256
12257         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
12258
12259         * generic.2.cs: Add new test case.
12260
12261 2007-06-25  Martin Baulig  <martin@ximian.com>
12262
12263         Merged the `debugger-dublin' branch.
12264
12265         * debug-mini.c
12266         (mono_debugger_insert_method_breakpoint): New public method.
12267         (mono_debugger_remove_method_breakpoint): Likewise.
12268         (mono_debugger_check_breakpoints): New static method.
12269         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
12270
12271         * debug-debugger.h (MonoDebuggerInfo):
12272         Renamed (to keep backward compatibility in the vtable):
12273         `insert_breakpoint' -> `old_insert_breakpoint'.
12274         `remove_breakpoint' -> `old_remove_breakpoint'.
12275         `create_string' -> `old_create_string'.
12276         `lookup_class' -> `old_lookup_class'.
12277         `lookup_type' -> removed; changed into a dummy field.
12278         `lookup_assembly' -> `old_lookup_assembly'.
12279         Added (same functionality, but different signature):
12280         `create_string', `lookup_class', `lookup_assembly'
12281         Added new:
12282         `get_method_addr_or_bpt', `remove_method_breakpoint',
12283         `runtime_class_init'.
12284
12285         * debug-debugger.c: Merged the `debugger-dublin' branch.
12286
12287 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
12288
12289         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
12290         well.
12291         (peephole_pass): Likewise.
12292
12293 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
12294
12295         * driver.c: hopefully make setaffinity work also for ancient
12296         versions of linux.
12297
12298 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
12299
12300         * driver.c : win32 build fix.
12301
12302 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12303
12304         * driver.c: check for the MONO_NO_SMP env var and bind to a single
12305         processor if it is set.
12306
12307 2007-06-21  Martin Baulig  <martin@ximian.com>
12308
12309         * debug-mini.h: New file.
12310
12311         * debug-mini.c
12312         (mono_debugger_insert_breakpoint_full): Moved here from
12313         ../metadata/mono-debug-debugger.c.
12314         (mono_debugger_remove_breakpoint): Likewise.
12315         (mono_debugger_breakpoint_callback): Likewise.
12316
12317 2007-06-15  Raja R Harinath  <rharinath@novell.com>
12318
12319         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12320         changes in MonoGenericClass.
12321
12322 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
12323
12324         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
12325
12326 2007-06-14  Raja R Harinath  <rharinath@novell.com>
12327
12328         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12329         removal of MonoGenericMethod.
12330
12331 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12332
12333         * mini-exceptions.c: hooks for the exception events profiling API.
12334
12335 2007-06-14  Randolph Chung  <tausq@debian.org>
12336
12337         * Makefile.ma: Add hppa target.
12338         * mini-arch.h: Include mini-hppa.h
12339         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
12340         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
12341         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12342
12343 2007-06-14  Randolph Chung  <tausq@debian.org>
12344
12345         * inssel.brg: Add rules for "chained" compare-branch operations so that
12346         a single compare op can affect multiple branches.  Adjust cost for
12347         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
12348         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
12349         cost for some rules so that they can more easily be overridden by
12350         per-arch rules (with fixes from lupus).
12351         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12352
12353 2007-06-13  Randolph Chung  <tausq@debian.org>
12354
12355         * mini-ops.h: Reorder branch ops so that they match the order of the
12356         corresponding CEE_* ops.  The code expects them this way.
12357         Add new ops for HPPA target.
12358         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12359
12360 2007-06-13  Randolph Chung  <tausq@debian.org>
12361
12362         * mini-exceptions.c: Handle cases where the stack grows towards
12363         larger addresses.
12364         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12365
12366 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12367
12368         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
12369         counter.
12370         * driver.c: explain where a non-matching corlib is found.
12371
12372 2007-06-13  Mark Probst  <mark.probst@gmail.com>
12373
12374         * mini.c (print_jit_stats): Output dynamic code allocation stats.
12375
12376 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
12377
12378         * mini-exceptions.c: Generate a method profile leave event during
12379         an exception to ensure that the profiler gets notified.
12380
12381 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
12382
12383         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
12384         branch.
12385
12386         * cpu-amd64.md: Add long_and/or/xor opcodes.
12387
12388 2007-06-06  Wade Berrier  <wberrier@novell.com>
12389
12390         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
12391         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
12392         length of instruction shr_imm (expected 8, got 10)
12393
12394 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
12395
12396         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
12397
12398 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12399
12400         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12401         MonoInternalHashTable again (fixed bug in the internal hash table
12402         code).
12403
12404 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12405
12406         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
12407         Have to figure out what makes it crash the SWF regression.
12408
12409 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
12410
12411         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
12412
12413 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12414
12415         * mini.c: optimize out the type check when storing null in a
12416         reference array.
12417
12418 2007-06-04  Mark Probst  <mark.probst@gmail.com>
12419
12420         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12421         MonoInternalHashTable.
12422
12423 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
12424
12425         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
12426         signed integer methods.
12427
12428 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12429
12430         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
12431         permanently since the current approach doesn't work.
12432
12433 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12434
12435         * inssel.brg (stmt): Only call delegate->invoke_impl if 
12436         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
12437
12438 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12439
12440         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
12441         the sreg2==rdx case.
12442         
12443         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
12444         account if it contains a rex prefix.
12445         (peephole_pass): Handle OP_FMOVE as well.
12446
12447 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12448
12449         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
12450         as it causes regressions.
12451
12452 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
12453
12454         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
12455         static case as well.
12456
12457         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
12458
12459         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12460         (mono_arch_get_this_arg_from_call): Ditto.
12461
12462         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
12463
12464         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
12465         invoke_impl field.
12466
12467         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12468         (mono_arch_get_this_arg_from_call): Ditto.
12469
12470         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
12471         
12472         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
12473         try to create optimized invoke code and use that for further invocations. 
12474         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
12475
12476         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
12477
12478 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
12479
12480         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
12481         sealed classes or methods.
12482         *devirtualization.cs: tests for the new optimization
12483
12484 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
12485
12486         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
12487         by the update_volatile () function.
12488
12489 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
12490
12491         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
12492         require it.
12493
12494         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
12495
12496 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
12497
12498         * mini.c: Add configure checks for header files.
12499         * mini-x86.c: Add configure checks for header files.
12500         * trace.c: Add configure checks for header files.
12501         * aot-runtime.c: Add configure checks for header files.
12502         * aot-compiler.c: Add configure checks for header files.
12503         * driver.c: Add configure checks for header files.
12504         * mini-codegen.c: Add configure checks for header files.
12505         
12506         Code is contributed under MIT/X11 license.
12507
12508 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
12509
12510         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
12511         icompare_imm -128 + op_iclt. Fixes #81703.
12512
12513 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
12514
12515         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
12516
12517 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12518
12519         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
12520         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
12521         so that all isinst checks now use "interface_bitmap".
12522
12523 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
12524
12525         * cpu-amd64.md (jmp): Fix a warning.
12526
12527         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
12528
12529         * basic.cs: Add new regression test.
12530
12531         * basic.cs: Remove test which is now in basic-long.cs.
12532
12533         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
12534
12535         * basic-long.cs: Add new test.
12536         
12537 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
12538
12539         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
12540
12541 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
12542
12543         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
12544
12545         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
12546         places.
12547         
12548         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
12549         throwing code a bit.
12550
12551         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
12552         the exception throwing code a bit.
12553
12554         * mini-x86.c (get_call_info): Allocate result from a mempool.
12555
12556 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
12557
12558         * aot-compiler.c (find_typespec_for_class): Fix the assert.
12559
12560         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
12561
12562         * mini.h (MonoCompile): Add 'token_info_hash' field.
12563
12564         * mini.c: Save token->method associations during compilation so the AOT 
12565         compiler can use it.
12566         
12567         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
12568         which reference generic classes and methods.
12569
12570 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
12571
12572         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
12573
12574         * aot-compiler.c (compile_method): Fix a typo in a comment.
12575
12576         * aot-runtime.c (decode_cached_class_info): Skip generic types.
12577
12578         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
12579         everything generic.
12580
12581         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
12582
12583 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
12584
12585         * mini.h (MonoCompile): Add 'args' field.
12586
12587         * mini.c (mono_compile_create_vars): Store variables representing the arguments
12588         into cfg->args.
12589
12590         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
12591
12592 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
12593
12594         * mini.c (mono_compile_get_interface_var): Remove this unused function.
12595
12596         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
12597
12598         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
12599         opcodes for some opcodes.
12600
12601         * mini.h *.brg *.c: Use the new opcodes.
12602
12603 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
12604
12605         * mini.h: Bumped aot revision.
12606
12607         * inssel.brg: modified code generation of type checks for interfaces
12608         to use the new "MonoClass.interface_bitmap" instead of the old
12609         "MonoClass.interface_offsets".
12610
12611 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
12612
12613         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
12614
12615 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
12616
12617         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
12618         64 bit platforms.
12619
12620 2007-04-27  Neale Ferguson <neale@sinenomine.net>
12621
12622         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
12623
12624 2007-04-27  Wade Berrier  <wberrier@novell.com>
12625
12626         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
12627         mini.h) to fix build.
12628
12629 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
12630
12631         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
12632         
12633         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
12634         causes the corlib unit tests to fail.
12635
12636 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
12637
12638         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
12639
12640         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
12641
12642         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
12643         opcodes to the comparison relations.
12644
12645         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
12646         opcodes to their types.
12647         
12648         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
12649
12650         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
12651         it in cfg->arch.cinfo.
12652
12653         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
12654
12655         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
12656         cfg->cil_offset_to_bb.
12657
12658 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
12659
12660         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
12661         created becase of initlocals.
12662
12663 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
12664
12665         * mini-alpha.c cpu-alpha.md: More alpha port work from 
12666         Sergey Tikhonov <tsv@solvo.ru>.
12667
12668 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
12669
12670         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
12671
12672 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
12673
12674         * cpu-s390.md (break): Correct the length of break instruction.
12675
12676 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12677
12678         * mini.c: fix a couple of soft-float issues and comments.
12679
12680 2007-04-15  Miguel de Icaza  <miguel@novell.com>
12681
12682         * trace.c (is_filenamechar): - is also a filename char.
12683
12684 2007-04-15  Neale Ferguson <neale@sinenomine.net>
12685
12686         * mini-s390.c: Correct checking for enum type in return value processing.
12687
12688 2007-04-14  Raja R Harinath  <rharinath@novell.com>
12689
12690         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
12691         (version.h): Makefile is in the build directory.
12692
12693 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
12694
12695         * mini-amd64.h: fix for assertion failure on Solaris/amd64
12696
12697 2007-04-11  Martin Baulig  <martin@ximian.com>
12698
12699         * mini.c (can_access_member): Fix handling of generic classes;
12700         fixes #81259.
12701
12702 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
12703
12704         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
12705
12706 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
12707
12708         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
12709
12710 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12711
12712         * mini-codegen.c: make sure the right spill amount is
12713         used for fp or integer registers (fixes the float_sub_spill() on ppc).
12714
12715 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
12716
12717         * mini-ppc.c: fixes for the fp_branch_nan test.
12718
12719 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
12720
12721         * basic.cs: Comment out new test which still fails on ia64.
12722
12723 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12724
12725         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
12726
12727 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12728
12729         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
12730
12731 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
12734         on 64 bit machines. Fixes part of #80738.
12735
12736         * basic.cs: Add regression test.
12737
12738 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12739
12740         * inssel.brg basic.cs: Revert previous change to fix build.
12741
12742         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
12743         platforms.
12744         
12745         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
12746
12747         * basic.cs: Add new regression test.
12748
12749 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12750
12751         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
12752         many arguments.
12753
12754 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12755
12756         * cpu-s390x.md: Correct length of break instruction.
12757
12758 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12759
12760         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
12761         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
12762
12763 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
12764
12765         * *.c: Begin WIN64 port.
12766         * mini.c:  Use correct register in profiler.
12767         * mini-amd64.c: No inline assembly on Win64.
12768         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
12769         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
12770         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
12771         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
12772         mono_arch_ip_from_context for Win64.
12773         
12774         Contributed under MIT/X11 license.
12775
12776 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
12777
12778         * exceptions-amd64.c (seh_handler): Ditto.
12779
12780         * exceptions-x86.c (seh_handler): Fix a memory leak.
12781
12782 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
12783
12784         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
12785         mini-s390x.c: fixed peephole optimizations to deal
12786         correctly with 1 and 2 byte reload avoidance.
12787
12788 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
12789
12790         * cpu-s390.md, cpu-s390x.md: update localloc length.
12791
12792 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12793
12794         * cpu-g4.md: added missing descriptions.
12795
12796 2007-03-14  Miguel de Icaza  <miguel@novell.com>
12797
12798         *  Makefile.am: Add support so the tail tests are not executed on
12799         PowerPC as that is a known limitation of the PowerPC port.
12800
12801 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12802
12803         * runmdesc.bat:  Move to msvc directory.
12804         
12805 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12806
12807         * runmdesc.bat:  Run executable that was produced by the current
12808         target and sent via an argument.
12809         
12810 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
12811
12812         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
12813         #81102.
12814
12815         * generics.2.cs: Add regression test.
12816
12817 2007-03-09  Wade berrier  <wberrier@novell.com>
12818
12819         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
12820
12821 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
12822
12823         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
12824         AOT code depends on this.
12825
12826 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
12827
12828         * mini.c: more precise tracking of types in the eval stack
12829         (part of fix for bug #81044).
12830
12831 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
12832
12833         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
12834
12835         * aot-compiler.c (encode_patch): Remove an obsolete comment.
12836
12837 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
12838
12839         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
12840
12841         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
12842
12843 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
12844
12845         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
12846         a pointer on 64 bit systems. Fixes #80190.
12847
12848         * iltests.il: Add new regression test.
12849
12850 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12851
12852         * mini.c: inline a constant for Environment.IsRunningOnWindows.
12853
12854 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
12855
12856         * trace.c: Remove an erroneous alignemnt check when tracing.
12857           Fixes --trace on OSX86.
12858
12859 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
12860
12861         * mini-$(arch).h: initialize SP in context for all the archs.
12862
12863 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
12864
12865         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
12866         regressions in the thread tests.
12867
12868 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
12869
12870         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
12871         - fixed implementation of LOCALLOC opcode
12872         - implemented non-un compare for floats
12873         - code cleanup
12874         - implementation of FDIV and CKFINITE opcodes
12875         - fixes for latest mono updates
12876         - additional arch opcodes
12877
12878 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12879
12880         * Makefile.am: simplify and merge rules for cross-compilation.
12881
12882 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
12883
12884         * local-propagation.c: Actually *apply* the fix for bug 80591...
12885
12886 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12887
12888         * mini-exceptions.c: backuot part of the last change
12889         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
12890
12891 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
12892         * inssel.brg: Fix bug 59286.
12893
12894
12895 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
12896
12897         * mini-exceptions.c: patch from Zoltan to correctly check for
12898         stack boundaries (using the stack register, not the frame register),
12899         fixes bugs #80724, #79717.
12900
12901 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
12902
12903         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
12904         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
12905
12906         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
12907         presence of frame pointer elimination.
12908
12909 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
12910         
12911         * mini-x86.h: NetBSD UCONTEX_REG defines.
12912
12913 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
12914
12915         * inssel-amd64.brg: Fix amd64 build.
12916
12917 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
12918
12919         * mini.h: remove extern to workaround what looks likes gcc bug 26905
12920         on amd64.
12921
12922 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
12923
12924         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
12925         ends.
12926
12927         * mini-<ARCH>.c: Use mono_is_regsize_var ().
12928
12929 2007-01-30 Mark Mason <mason@broadcom.com>
12930
12931            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
12932            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
12933            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
12934            beginning support for CEE_JMP [not quite working yet]
12935            * tramp-mips.c: LMF handling now works
12936         
12937 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
12938
12939         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
12940
12941         * mini.h (NULLIFY_INS): New macro.
12942
12943 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12944
12945         * mini.c: statistical profiler fix for windows, patch
12946         from Tor Lillqvist (tml@novell.com).
12947
12948 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
12949         * local-propagation.c: Fix bug 80591.
12950
12951 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
12952
12953         * Makefile.am: put back the --export-dynamic option as with
12954         the previous gmodule flags (thanks to Robert Jordan).
12955
12956 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
12957
12958         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
12959
12960         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
12961         simplify and speed up the local register allocator. Also rename some fields
12962         like iassign->vassign.
12963         
12964         * regalloc.c: Remove some functions which are no longer used since their
12965         inlined version is in mini-codegen.c.
12966         
12967         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
12968
12969         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
12970
12971 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
12972
12973         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
12974         narrowing. Fixes #80622.
12975
12976         * iltests.il: Add new regresssion test. 
12977
12978 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12979
12980         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
12981         debug-debugger.c, debug-debugger.h: warning fixes.
12982         * driver.c: updated copyright year and made it fit in one line.
12983
12984 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
12985
12986         * aot-runtime.c: updated to use mono-dl instead of gmodule.
12987
12988 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
12989
12990         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
12991
12992         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
12993
12994         * iltests.il: Add new test for bug #80507.
12995
12996 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12997
12998         * mini-arm.h: use soft-float also on vfp for now.
12999
13000 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13001
13002         * mini.c: fix some more soft-float issues.
13003
13004 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
13005
13006         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
13007
13008 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
13009         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
13010         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
13011         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
13012
13013 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
13014
13015         * mini-arm.c: typo fix.
13016
13017 2007-01-23  Neale Ferguson <neale@sinenomine.net>
13018
13019         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
13020
13021 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
13022
13023         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
13024         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
13025
13026         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
13027
13028         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
13029
13030         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
13031         
13032         * inssel.brg: Fix a warning.
13033
13034         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
13035
13036         * abcremoval.c ssa.c ssapre.c: Update after this change.
13037         
13038         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
13039
13040         * dominators.c (df_set): Use mono_bitset_union_fast.    
13041
13042 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13043
13044         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
13045         mini-codegen.c: reduce relocations and memory usage for the cpu
13046         description.
13047
13048 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
13049
13050         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
13051
13052         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
13053         to reduce their size.
13054
13055 2007-01-19 Mark Mason <mason@broadcom.com>
13056
13057         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
13058         * mini-mips.c: more configuration macros, support long conditional branches, additional
13059         asserts, fix epilog instrumentation.
13060         * mini-mips.h: use standard stack walk
13061         * cpu-mips.md: increase size of div, rem and conditional branches
13062         
13063 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
13064
13065         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
13066         to cpu spec data.
13067
13068 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
13069
13070         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
13071         (compile_method): Ditto.
13072
13073         * aot-runtime.c (decode_klass_info): Ditto.
13074
13075         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
13076         needed by the code generated by inssel.brg. Also fix a warning.
13077
13078 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
13079
13080         * mini.c: deal with enums that become genericinsts by
13081         being nested in a generic class (bug #79956).
13082
13083 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13084
13085         * mini.c: match the generic definition to check for
13086         private access with generic types (bug #78431).
13087
13088 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13089
13090         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
13091         to make life easier for people cross-compiling that insist on not
13092         using scratchbox.
13093
13094 2007-01-17 Mark Mason <mason@broadcom.com>
13095
13096         * inssel-long.brg: patch to deal with mips missing flags
13097         * inssel-long32-mips.brg: implement overflow checks
13098         * insset-mips.brg: implement overflow checks
13099         * mini-mips.h: implement conditional exception handling
13100         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
13101           Remove unused code, minor cleanups.
13102         * exceptions-mips.c: minor cleanups
13103         * mini-ops.h: add mips conditional exception ops
13104         * cpu-mips.md: add mips conditional exception ops
13105
13106         
13107 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13108
13109         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
13110         to deal with mips missing of flags.
13111
13112 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13113
13114         * exceptions-ppc.c: execute fault handlers.
13115
13116 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
13117
13118         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
13119
13120 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13121
13122         * mini.c: handle also floating point values in initialize_array.
13123
13124 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13125
13126         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
13127         array initialization and make it conditional on the intrins option.
13128
13129 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13130
13131         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
13132         relocations and put the patch info names close to the enum definition.
13133
13134 2007-01-15 Mark Mason <mason@broadcom.com>
13135
13136         * basic.cs, exceptions.cs: break up large tests to increase debugability.
13137
13138 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13139
13140         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
13141
13142 2007-01-12  Raja R Harinath  <rharinath@novell.com>
13143
13144         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
13145
13146 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
13147
13148         * Makefile.am: distribute the mips sources.
13149
13150 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13151
13152         * mini-codegen.h: handle bug #80489 here, by excluding ecx
13153         directly.
13154
13155 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
13156
13157         * cpu-x86.md: back out for now as this triggers other regressions.
13158
13159 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13160
13161         * cpu-x86.md: force src1 and dest regpair for long shift instructions
13162         to eax:edx, so ecx can't get allocated to them (bug #80489).
13163
13164 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
13165
13166         * mini.c, mini-exceptions.c: enabled running fault handlers
13167         (bug #80469).
13168
13169 2007-01-03  Miguel de Icaza  <miguel@novell.com>
13170
13171         * driver.c: If nothing fail, do not use the string "failed",
13172         because it makes it very annoying to view test result logs on the
13173         web. 
13174
13175 2006-12-30  Miguel de Icaza  <miguel@novell.com>
13176
13177         * debug-debugger.c (mono_debugger_main): Rename "main" to
13178         "main_method" to prevent a warning.
13179
13180         Remove a warning for unused field.
13181
13182 2006-12-28  Martin Baulig  <martin@ximian.com>
13183
13184         * debug-debugger.c
13185         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
13186
13187 2006-12-22  Martin Baulig  <martin@ximian.com>
13188
13189         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
13190         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
13191         seperate `.mdb_debug_info' section, so we can access it from the
13192         debugger even if the binary is stripped.
13193
13194         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
13195         from the `.mdb_debug_info' here to prevent the linker from
13196         removing that section.
13197
13198         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
13199         mdb-debug-info64.s.
13200
13201 2006-12-19  Robert Jordan  <robertj@gmx.net>
13202
13203         * mini-x86: enable the code to return small structures in
13204         registers for FreeBSD as well. Fixes bug #80278.
13205         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
13206
13207 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13208
13209         * mini-x86.c: align the stack when calling the profiler
13210         function instrumenting the prolog (on OSX).
13211
13212 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
13213
13214         * mini.c: emit a break opcode where Debugger.Break () is called.
13215
13216 2006-12-13  Miguel de Icaza  <miguel@novell.com>
13217
13218         * mini.c (mono_method_to_ir): Provide useful information on this
13219         assert, to prevent others from debugging like I did.
13220
13221 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13222
13223         * mini.c: enable code which was incorrectly commented
13224         (bug #80235).
13225
13226 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13227
13228         * mini-x86.c: enable on OSX, too, the code to return small
13229         structures in registers.
13230
13231 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13232
13233         * mini-x86.c: remove the use of the dynamic code manager here, too.
13234
13235 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13236
13237         * mini.h, debug-debugger.c, tramp-*.c: fixed 
13238         mono_debugger_create_notification_function() to use
13239         mono_global_codeman_reserve () instead of a dynamic code manager.
13240
13241 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
13242
13243         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
13244         ves_array_element_address() jit icall and use a generated
13245         managed method instead (which is about 4 times faster for a rank 3
13246         array access).
13247
13248 2006-11-29  Mark Mason  <mason@broadcom.com>
13249
13250         * basic-calls.cs: additional tests for passing
13251         structures as function arguments.
13252
13253 2006-11-29  Mark Mason  <mason@broadcom.com>
13254
13255         * mini-mips.h: disable custom exception handling
13256         * mini-mips.c: throw/rethrow should use jalr to call
13257         exception stubs.  Fixed bug with passing structures
13258         by value. More support for tracing floating point
13259         functions.
13260
13261 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13262
13263         * mini.c: fixed typo in the soft-float ldind.r4 handling
13264         (bug #80086).
13265
13266 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13267
13268         * mini.c, mini.h, driver.c: added --runtime command line
13269         option to select a different runtime than the autodetected one.
13270         * jit.h: added API for embedders to initialize with a specific
13271         runtime version.
13272
13273 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13274
13275         * mini.c: handle also boxing of r4 values (bug #80024).
13276
13277 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13278
13279         * mini-ppc.c: force indirect calls until we reserve
13280         enough address space for all the generated code.
13281
13282 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
13283
13284         * exceptions-arm.c: workaround bugs in the libc definition
13285         of struct ucontext.
13286
13287 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13288
13289         * inssel.brg: fixes from me and Mark Mason.
13290
13291 2006-11-23  Dick Porter  <dick@ximian.com>
13292
13293         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
13294         semaphore display now we've fixed the initial value
13295
13296 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13297
13298         * inssel.brg: partially revert the last change to fix the build.
13299
13300 2006-11-21  Mark Mason  <mason@broadcom.com>
13301
13302         * inssel.brg: Add and use compare-and-branch macros to support
13303         architectures that do not have condition code registers (ie. MIPS).
13304         * *-mips.{c,brg,md}: Fix copyright statements
13305
13306 2006-11-20  Mark Mason  <mason@broadcom.com>
13307
13308         * Makefile.am: remove mini-codegen.c from list of MIPS sources
13309         * mini.c: Allow GET_CONTEXT to be specified by the arch port
13310         * mini.h: Added declaration for mono_print_ins()
13311         * mini-codegen.c: added ins_spec initializer for MIPS
13312         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
13313         vreg to be virtual and hreg to be non-virtual.
13314         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
13315         is not yet working/implemented correctly.
13316         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
13317         non-static, fixup calls to print_ins() from other parts in the file.
13318
13319 2006-11-20  Mark Mason  <mason@broadcom.com>
13320
13321         * basic-calls.cs: added tests for passing structures as arguments
13322         to calls.
13323
13324 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13325
13326         * inssel-long32.brg: optimize signed division by power of two.
13327
13328 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
13329
13330         * mini-arm.c: added support for interworking with thumb code
13331         (mono must be still be built using the ARM instruction encoding).
13332
13333 2006-11-19  Miguel de Icaza  <miguel@novell.com>
13334
13335         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
13336         verifier has different rules for it.   Fixes a few verifier issues
13337         in the test suite.
13338
13339         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
13340         at the end, so people know what happened.
13341
13342 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13343
13344         * brach-opts.c: in optimize_exception_target() make sure we
13345         are in a catch clause (fixes bug #79871).
13346
13347 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13348
13349         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
13350         more soft-float support fixes.
13351
13352 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
13353
13354         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
13355         that are passed half on the stack and half in registers.
13356
13357 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13358
13359         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
13360         more mips integration work from Mark E Mason 
13361         <mark.e.mason@broadcom.com>.
13362
13363 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13364
13365         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
13366         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
13367         tramp-mips.c: added sources for the mips port, not
13368         integrated in the build yet. Contributed by
13369         Mark E Mason <mark.e.mason@broadcom.com>.
13370
13371 2006-11-14  Neale Ferguson <neale@sinenomine.net>
13372
13373         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
13374
13375 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13376
13377         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
13378         put the soft-float rules in its own file since it seems to
13379         break s390 compilation.
13380
13381 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13382
13383         * mini-arm.c: fixed wrnings.
13384
13385 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
13386
13387         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
13388         inssel-arm.brg: ARM support for soft-float.
13389
13390 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13391
13392         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
13393         loads and stores of 32 bit fp values.
13394
13395 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
13396
13397         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
13398
13399         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
13400         works. Fixes #79852 and #79463.
13401
13402 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13403
13404         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
13405         more soft-float support WIP and fixes.
13406
13407 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
13408
13409         * mini-arm.c: some VFP updates.
13410
13411 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13412
13413         * mini-exceptions.c: 0 is a valid local var offset in some
13414         architectures, don't assert (bug #78508).
13415
13416 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
13417
13418         * exceptions-arm.c: fixed off by one error in stack walk code.
13419
13420 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
13421
13422         * mini.h, mini.c: more precise tracking of type load exceptions.
13423
13424 2006-11-03  Robert Jordan  <robertj@gmx.net>
13425
13426         * Makefile.am: [WIN32] Add monow.exe target.
13427         * driver.c: [WIN32] Don't detach the console when debugging.
13428         Fixes bug #79797.
13429         
13430 2006-10-30  Miguel de Icaza  <miguel@novell.com>
13431
13432         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
13433
13434 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
13435
13436         * aot-compiler.c (emit_method_info): Add a case missed earlier.
13437
13438         * driver.c (mini_regression): Fix --regression with AOT.
13439
13440         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
13441
13442 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
13443
13444         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
13445
13446         * mini-sparc.h: Don't use sigaction on sparc/linux.
13447
13448         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
13449
13450         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
13451
13452         * mini-exceptions.c: Add proper include files for getpid ().
13453
13454 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
13455
13456         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
13457         address instead of a MonoJitInfo* to avoid decoding the exception info for the
13458         method.
13459
13460         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
13461         name cache to reduce its size.
13462
13463         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
13464
13465 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
13466
13467         * mini-x86.c: Save/restore the current LMF structure more efficiently using
13468         the mono_lmf TLS variable.
13469
13470         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
13471         trampoline lmf frames.  
13472
13473         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
13474
13475 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
13476
13477         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
13478         the mono_lmf TLS variable.
13479
13480         * mini-exceptions.c: Access the LMF structure through accessors.
13481
13482         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
13483         variable instead of in jit_tls->lmf.
13484
13485         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
13486         
13487         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
13488         trampoline lmf frames.
13489
13490         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
13491
13492 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
13493
13494        * mini.c trace.c mini-x86.c: Revert these too.
13495         
13496        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
13497        signature change.
13498
13499 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
13500
13501         * genmdesc.c: removed now dead code.
13502
13503 2006-10-09  Robert Jordan <robertj@gmx.net>
13504
13505         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
13506
13507 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
13508
13509         * mini.h: do not leave gaps in the opcode values.
13510
13511 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
13512
13513         * jit-icalls.h: flag functions as internal here, too.
13514
13515 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
13516
13517         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
13518         functions with the internal attribute.
13519
13520 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
13521
13522         * aot-compiler.c: fclose the file descriptor in the profile read loop.
13523
13524 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
13525
13526         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
13527         for soft-float.
13528
13529 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
13530
13531         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
13532         tail calls as on other platforms.
13533
13534         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
13535
13536         * iltests.il: Add a few tailcall tests.
13537
13538 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13539
13540         * driver.c: fix loop for old compilers (bug #79521).
13541
13542 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
13543
13544         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
13545
13546         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
13547
13548         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
13549         metadata without any code.
13550
13551         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
13552         more precise debugging information using gdb.
13553
13554 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
13555
13556         * inssel-ia64.brg: Make the helper methods static.
13557
13558 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13559
13560         * inssel-x86.brg: make the helper methods static.
13561
13562 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
13563
13564         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
13565
13566 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13567
13568         * mini.c: updates for monoburg changes.
13569         * inssel.brg: make a few helper functions static as they should.
13570
13571 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
13572
13573         * Makefile.am: Move mini-codegen.c to common_sources.
13574
13575 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13576
13577         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
13578         instructions.
13579         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
13580         mini-ppc.h: port to use the common local register allocator.
13581
13582 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13583
13584         * mini.h: Remove the comment too then.
13585
13586 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
13587
13588         * mini.h: put back backend.data which is to be used shortly and
13589         doesn't increase the size of MonoInst. If any 64 bit arch aligned
13590         pointers on 4 byte boundaries it'd have much bigger issues running
13591         and you can ifdef it out anyway.
13592
13593 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13594
13595         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
13596         MonoInst size by 4 bytes on 64 bit machines.
13597
13598 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
13599
13600         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
13601         replacement with more meaningful field names. Arch maintainers, please
13602         check the assigned names are good enough for your arch.
13603
13604 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13605
13606         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
13607         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
13608
13609 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13610
13611         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
13612         relocations and memory requirements, put the optimization flags
13613         definitions in their own file.
13614
13615 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
13616
13617         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
13618
13619         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
13620
13621 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
13622
13623         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
13624
13625 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
13626
13627         * inssel.brg: use the correct function to get the size of an item
13628         in an array, given an element class.
13629         * aot-compiler.c: do not access class->class_size directly.
13630
13631 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13632
13633         * mini.h, debug-mini.c: added a debugging function to print
13634         info about local variables and arguments in a jitted method.
13635
13636 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
13637
13638         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13639
13640         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
13641
13642 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13643
13644         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
13645         inner and outer loops when passing vtypes.
13646
13647 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
13648
13649         * mini-ppc.c: take into account the cpu errata for cache flushing
13650         which caused some random errors (bug #79381).
13651
13652 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13653
13654         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
13655         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
13656
13657 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
13658
13659         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
13660         loaded.
13661
13662         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
13663         freebsd ports tree.
13664
13665         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
13666         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
13667
13668         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
13669         displacement.
13670
13671 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
13672
13673         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
13674
13675 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
13676
13677         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
13678         macro does not have to be changed during debugging.
13679
13680         * 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>.
13681
13682         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
13683
13684         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
13685         
13686         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
13687         MONO_ARCH_NO_EMULATE_MUL is defined.
13688
13689         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
13690
13691         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
13692
13693         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
13694
13695         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
13696         
13697 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
13698
13699         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
13700         stuff to mini-exceptions.c where it is used.
13701
13702         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
13703         setup code, the real one is in mini-exceptions.c.
13704
13705         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
13706         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
13707         some changes from the freebsd ports tree.
13708
13709         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
13710         constants.
13711         
13712         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
13713
13714 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
13715
13716         * mini.c: on Linux, check for /proc to be mounted
13717         (bug# 79351, novell bug#201204).
13718
13719 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
13720
13721         * mini.c: handle cases where pthread_attr_getstack() behaves
13722         incorrectly (bug #78096).
13723
13724 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
13725
13726         * mini-arm.c: support larger stack frames (bug #79272).
13727
13728 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
13729
13730         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
13731
13732         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
13733         tokens.
13734
13735         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
13736         mono_class_from_name () to find a class from its name.
13737
13738         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
13739
13740 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
13741
13742         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
13743
13744 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
13745
13746         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
13747
13748 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
13749
13750         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
13751         callinfo->trampoline.
13752
13753         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
13754         fixes #79271.
13755         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
13756         future.
13757
13758 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
13759
13760         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
13761
13762 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
13763
13764         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
13765         stats.method_trampolines, it is already done by the generic trampoline code.
13766
13767         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
13768         
13769 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
13770
13771         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
13772
13773         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
13774
13775         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
13776
13777         * mini.c (print_jit_stats): Print mscorlib mempool size too.
13778         
13779         * mini.c (print_jit_stats): Print new stats.
13780
13781         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13782
13783 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
13784
13785         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
13786         Address on two dimensional arrays. Fixes #78729.
13787
13788         * mini.h (MonoCompile): Add a 'skip_visibility' field.
13789
13790         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
13791         a method.
13792
13793         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
13794
13795         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
13796         #79130.
13797         
13798         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
13799         a race condition.
13800         (mini_get_ldelema_ins): Ditto.
13801
13802 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
13803
13804         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
13805         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
13806         Fixes #79213.
13807
13808 2006-08-29 Neale Ferguson <neale@sinenomine.net>
13809
13810         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
13811         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
13812
13813         * exceptions-s390x.c: Cosmetic change.
13814
13815         * tramp-s390.c: Fix warning.
13816
13817         * cpu-s390.md: Correct length of mul_imm.
13818
13819 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13820
13821         * aot-compiler.c: added binary writer with ELF backend
13822         implementation (only on Linux/x86 for now).
13823
13824 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13825
13826         * Makefile.am: Don't run net 2.0 AOT tests.
13827
13828         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
13829         (mono_compile_assembly): Skip net 2.0 assemblies as well.
13830
13831         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
13832
13833 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13834
13835         * aot-compiler.c: simplified and refactored the asm-writing code
13836         to allow different backends.
13837
13838 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13839
13840         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
13841
13842         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
13843         little. Share patches of type TYPE_FROM_HANDLE as well.
13844
13845         * mini.c (mono_patch_info_equal): New helper function.
13846         (mono_patch_info_hash): Ditto.
13847
13848         * aot-compiler.c (emit_method_code): Fix s390 build.
13849
13850         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
13851         is not handled because it is stored as a flag and not as a type ctor. Fixes
13852         #79016.
13853
13854 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
13855
13856         * aot-compiler.c: Fix computation of GOT slot statistics.
13857         
13858         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
13859         Also remove support for not PIC AOT.
13860
13861         * mini.h: Bump AOT file format version.
13862
13863         * objects.cs: Add a test for #78990.
13864
13865         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
13866         (peter.dettman@iinet.net.au). Fixes #79087.
13867
13868         * basic-long.cs: Add a test for the above.
13869
13870 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
13871
13872         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
13873         
13874         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
13875         code somewhat.
13876
13877 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
13878
13879         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
13880         exceptions.
13881
13882 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
13883
13884         * mini.c: Don't verify COM proxy invoke calls
13885         
13886
13887 2006-08-10  Dick Porter  <dick@ximian.com>
13888
13889         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
13890         which process is holding semaphores locked.
13891
13892 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
13893
13894         * mini-ia64.c mini-amd64.c: Fix #79027.
13895
13896         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
13897
13898         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
13899
13900         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
13901         implicit arguments in a vararg call. Fixes #79027.
13902
13903 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
13904
13905         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
13906         (mono_get_array_new_va_signature): Ditto.
13907
13908 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
13909
13910         * aot-runtime.c: Call init_plt lazily.
13911
13912         * inssel-long.brg: Fix unsigned long->int conversion.
13913
13914         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
13915
13916         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
13917         that most data is now in the .rss/.data section.
13918
13919 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
13920
13921         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
13922
13923         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
13924
13925         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
13926
13927         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
13928
13929         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
13930         virtual call. Fixes #79010.
13931
13932         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
13933         and use the result as the this argument in the real call.
13934
13935         * generics.2.cs: Add a new test for #79010.
13936         
13937 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
13938
13939         * mini-x86.c: Fix a warning.
13940
13941         * aot-compiler.c: Add a bunch of statistics.
13942
13943         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
13944
13945 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
13946
13947         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
13948
13949 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
13950
13951         * 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>.
13952
13953 2006-07-13  Miguel de Icaza  <miguel@novell.com>
13954
13955         * mini.c (mono_method_to_ir): Obtain the original method in the
13956         CIL stream and use this to perform validation.
13957
13958         Fixed: #78816
13959
13960 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
13961
13962         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
13963         (mono_arch_call_opcode): Ditto.
13964
13965         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
13966         #78826.
13967
13968         * mini.c (mono_patch_info_dup_mp): New helper function.
13969         
13970         * aot-compiler.c (compile_method): Fix some of the memory allocated during
13971         compilation. Fixes #78827.
13972
13973 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
13974
13975         * declsec.c: Use original security informations for
13976           MONO_WRAPPER_MANAGED_TO_MANAGED.
13977
13978 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
13979
13980         * mini.c: Allow Com Interop methods/classes and
13981         don't verify COM wrapper calls
13982         
13983
13984 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
13985
13986         * inssel-long32.brg: Fix long->i4 checked conversion.
13987
13988         * exceptions.cs: Add a test for the above.
13989
13990 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
13991
13992         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
13993
13994         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
13995         leaks.
13996
13997         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
13998         #78775.
13999
14000 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
14001
14002         * mini.c: Fix solaris/x86 exception handling.
14003
14004         * Makefile.am: Get rid of $(ICU_LIBS).
14005
14006 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
14007
14008         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
14009         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
14010         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
14011
14012         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
14013
14014         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
14015         this function causes a SIGSEGV.
14016
14017 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
14018
14019         * mini.c: Remove unused solaris/x86 includes.
14020
14021 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
14022
14023         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
14024
14025 2006-06-20  Jb Evain  <jbevain@gmail.com>
14026
14027         * cpu-g4.md: fix max length of start_handler instruction.
14028
14029 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
14030         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
14031
14032 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
14033         * ssa.c: Fixed bug 78653 for SSA based deadce.
14034         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
14035         MonoInst.flags, used in SSA based deadce.
14036         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
14037         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
14038
14039 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
14040
14041         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
14042         it can end up using non executable memory on ppc64 systems
14043         running ppc32 userspace (fix from Johannes Berg).
14044
14045 2006-06-14  Dick Porter  <dick@ximian.com>
14046
14047         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
14048         4.1.1
14049
14050 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
14051         * mini.c: Made so that inline is locally disabled if it would
14052         trigger a .cctor, because too many apps depend on this behavior
14053         (which seems to be also the one of the MS CLR).
14054
14055 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
14056
14057         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
14058         No idea why this worked before.
14059
14060         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
14061         which branch to outer exception clauses since they could skip the
14062         inner finally clauses. Fixes #78633.
14063
14064         * exceptions.cs: Add a test for the above.
14065
14066         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
14067         Fixes #78629.
14068
14069         * iltests.il: Add a test for the above.
14070
14071 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
14072
14073         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
14074         after the end of a try bblock, to prevent asserts in mini_method_compile ().
14075
14076         * iltests.il: Add a test for the above.
14077
14078 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
14079
14080         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
14081         
14082         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
14083         methods as instrinsics.
14084
14085 2006-06-09  Wade Berrier <wberrier@novell.com>
14086
14087         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
14088         (simple-cee-ops.h ssapre-mini-ops.h)
14089
14090 2006-06-09  Neale Ferguson <neale@sinenomine.net>
14091
14092         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
14093         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
14094         instruction).
14095         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
14096         * cpu-s390x.md: Fix max. length values for a couple of instructions.
14097
14098 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
14099
14100         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
14101
14102 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
14103
14104         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
14105         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
14106         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
14107         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
14108         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
14109         of opcodes, so that bug 78549 should not happen again.
14110         * ssapre.c: Updated to use the renamed files.
14111
14112 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
14113
14114         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
14115         in OP_ATOMIC_EXCHANGE_I4.
14116
14117 2006-06-07  Wade Berrier <wberrier@novell.com>
14118
14119         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
14120         in mono_debugger_create_notification_function)
14121
14122 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
14123
14124         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
14125         
14126         * mini.c (type_from_stack_type): Disable some changes which do not
14127         seem to work.
14128
14129         * driver.c: Reenable opts.
14130
14131         * mini.h (MonoStackSlot): New structure to keep track of the verification state
14132         of the evaluation stack.
14133         
14134         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
14135         evaluation stack trace at entry to the bblock.
14136
14137         * mini.c (merge_stacks): New function to perform verification of stack merges.
14138         Turned off by default.
14139
14140         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
14141         STACK_MP.
14142         
14143 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
14144
14145         * local-propagation.c: Fixed bug 78549.
14146
14147 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
14148
14149         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
14150
14151 2006-06-02  Miguel de Icaza  <miguel@novell.com>
14152
14153         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
14154         tramp-arm.c, tramp-ia64.c
14155         (mono_debugger_create_notification_function): Update signature to
14156         new signature and use new protocol for creating the notification
14157         function.  
14158
14159         Should fix the build.
14160
14161 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
14162
14163         * exceptions-ppc.c (mono_jit_walk_stack)
14164         (ves_icall_get_frame_info): Fix the build
14165
14166 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
14167
14168         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
14169
14170 2006-05-31  Raja R Harinath  <rharinath@novell.com>
14171
14172         * il2tests.2.il: New file for generics CIL tests.  Add test for
14173         #78019.
14174         * Makefile.am: Update.
14175
14176         Fix #78019
14177         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
14178         to nullable types.
14179
14180 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
14181
14182         * aliasing.c: Fixed bug 78311.
14183
14184 2006-05-29  Martin Baulig  <martin@ximian.com>
14185
14186         * mini-exceptions.c (mono_find_jit_info): When computing the
14187         native offset, check whether we're actually inside the method's
14188         code; call mono_debug_print_stack_frame() to format the frame.
14189         (ves_icall_System_Exception_get_trace): Call
14190         mono_debug_print_stack_frame() to format the stack frame.
14191         (ves_icall_get_trace): Update to the new debugging API.
14192         (mono_jit_walk_stack_from_ctx): Likewise.
14193         (ves_icall_get_frame_info): Likewise.
14194
14195         * mini.c (get_method_from_ip): Use the new debugging API.
14196         (mono_print_method_from_ip): Likewise.
14197
14198         * exceptions-ppc.c
14199         (mono_jit_walk_stack): Use the new debugging API.
14200         (ves_icall_get_frame_info): Likewise.   
14201
14202 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
14203
14204         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
14205
14206 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
14207
14208         * mini.c: Added "limitator" to inline for debugging.
14209
14210 2006-05-24  Martin Baulig  <martin@ximian.com>
14211
14212         * debug-debugger.c (mono_debugger_init): Create a private,
14213         malloc()-based code manager for the notification function and
14214         intentionally leak it on exit.  This fixes the crash-on-exit race
14215         condition.
14216
14217         * tramp-amd64.c
14218         (mono_debugger_create_notification_function): Added
14219         `MonoCodeManager *' argument.
14220
14221         * tramp-x86.c
14222         (mono_debugger_create_notification_function): Added
14223         `MonoCodeManager *' argument.
14224
14225 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
14226
14227         * aliasing.c: Fixed 64 bit issue.
14228         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14229         default since all known bugs are fixed (one more time!).
14230
14231 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14232
14233         * mini.c: write barrier support.
14234
14235 2006-05-23  Martin Baulig  <martin@ximian.com>
14236
14237         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
14238         check at the top of the file.
14239
14240 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
14241
14242         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
14243         reverting changes without reason and without changelog entries.
14244
14245 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
14246
14247         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
14248         to a few opcodes. Fixes #78439.
14249
14250         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
14251         consistency with other archs.
14252
14253         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
14254
14255 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14256
14257         * debug-debugger.c: fix the build.
14258
14259 2006-05-17  Martin Baulig  <martin@ximian.com>
14260
14261         * debug-debugger.c
14262         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
14263         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
14264         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
14265         (debugger_attach): Call GC_mono_debugger_add_all_threads().
14266
14267 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
14268
14269         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
14270
14271 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
14272
14273         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
14274         MONO_TYPE_GENERICINST.
14275         
14276         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
14277         MONO_TYPE_GENERICINST.
14278
14279 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
14280
14281         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
14282         #78325.
14283
14284 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
14285
14286         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
14287         mempool.
14288         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
14289
14290 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
14291
14292         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
14293         mono_trace_cleanup ().
14294
14295         * iltests.il: Fix problem with the newly added test.
14296
14297         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
14298         due to register constraints, free up the previous hreg. Fixes #78314.
14299
14300         * iltests.il: Add new test for #78314.  
14301
14302         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
14303         Interlocked.Add. Fixes #78312.
14304
14305         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
14306         
14307 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
14308
14309         * inssel.brg (mini_emit_virtual_call): Fix a warning.
14310
14311 2006-05-05  Martin Baulig  <martin@ximian.com>
14312
14313         * debug-mini.c (mono_debug_open_block): New method.
14314
14315         * mini-amd64.c
14316         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14317         the beginning of each basic block.
14318
14319         * mini-x86.c
14320         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14321         the beginning of each basic block.
14322
14323 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14324
14325         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14326         default until I understand why they break the build on amd64.
14327
14328 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
14329
14330         * mini.c (mini_cleanup): Call mono_cleanup ().
14331
14332         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
14333         errors.
14334
14335 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14336
14337         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
14338         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14339         default since all known bugs are fixed, and I cannot reproduce bug
14340         77944... I'm asking Matt Hargett to test again after this commit.
14341
14342 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
14343
14344         * mini-codegen.c: Fixed typo that thrashed inline.
14345
14346 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
14347
14348         * dominators.c (compute_dominators): Avoid using a worklist since
14349         it is not correct in some cases. Instead, iterate over all bblocks as
14350         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
14351
14352 2006-04-28  Miguel de Icaza  <miguel@novell.com>
14353
14354         * mini.c (mono_jit_compile_method_inner): Use
14355         mono_prepare_exception_from_error that resets the value
14356         internally.
14357
14358 2006-04-27  Miguel de Icaza  <miguel@novell.com>
14359
14360         * mini.c: Move the mini_loader_error_to_exception to metadata. 
14361         
14362 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14363
14364         * aliasing.c: Fixed bug 78210.
14365
14366 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14367
14368         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14369         default until all their problems (or the ones they trigger) are fixed.
14370
14371 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
14372
14373         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
14374         
14375         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
14376         as loaded only after resolving patches since that could invoke the same method.
14377
14378         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
14379
14380         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
14381         functions.
14382
14383         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
14384         AOT loader.
14385
14386         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
14387         stack.
14388
14389         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
14390         made from AOT code through the PLT table.
14391
14392         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
14393         holding the plt offset when a call is made to the aot plt trampoline.
14394         
14395 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14396
14397         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
14398         amd64 AOT support.
14399
14400         * Makefile.am (common_sources): Fix build breakage.
14401
14402         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
14403         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
14404         intra-assembly calls if possible.
14405         
14406         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
14407
14408         * mini-trampolines.c: Handle PLT entries.
14409
14410         * mini.c: Avoid creating a GOT var for calls.
14411
14412         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
14413         from mscorlib code.
14414
14415         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
14416         from mscorlib code.
14417
14418         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
14419         AOT code.       
14420
14421         * mini.h: Bump AOT file format version.
14422         
14423         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
14424         covers more cases.
14425
14426 2006-04-25  Martin Baulig  <martin@ximian.com>
14427
14428         * driver.c: Disable copyprop, consprop and inline when running
14429         inside the debugger.
14430
14431 2006-04-25  Martin Baulig  <martin@ximian.com>
14432
14433         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
14434         with `get_current_thread' and added `detach'.
14435         (MonoDebuggerMetadataInfo): Added `thread_size',
14436         `thread_tid_offset', `thread_stack_ptr_offset' and
14437         `thread_end_stack_offset'.
14438
14439 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14440
14441         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
14442         aot-runtime.c.
14443
14444         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
14445         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
14446
14447         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
14448
14449         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
14450
14451         * aot.c: Add support for ADJUSTED_IID.  
14452
14453 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
14454
14455         * aot.c (emit_method_order): Don't align method_order_end.
14456
14457         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
14458         the interface ID changes.
14459
14460 2006-04-21  Dick Porter  <dick@ximian.com>
14461
14462         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
14463         cleaning up a thread.  Fixes the new part of bug 77470.
14464
14465 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
14466
14467         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
14468         to managed wrapper.
14469                      
14470 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
14471
14472         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
14473         
14474         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
14475         SIGSEGV. Fixes #78072.
14476
14477         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
14478         unregister our SIGABRT handler.
14479
14480 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
14481
14482         * mini.c: Disabled inline where it can alter the call stack in a
14483         way visible from managed code.
14484         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
14485         default.
14486
14487 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
14488
14489         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
14490         on other platforms. Fixes #78089.
14491
14492 2006-04-13  Martin Baulig  <martin@ximian.com>
14493
14494         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
14495         determine whether we're inside the debugger.
14496
14497         * debug-debugger.h
14498         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
14499
14500 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
14501
14502         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
14503         handler clauses. Fixes #78024.
14504
14505         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
14506         in the CALL_MEMBASE opcodes. Fixes #78088.
14507         (mono_arch_get_vcall_slot_addr): Ditto.
14508
14509 2006-04-10  Martin Baulig  <martin@ximian.com>
14510
14511         * debug-debugger.c: The thread handling code has now been moved
14512         into ../metadata/threads.c.
14513
14514 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14515
14516         * driver.c (mono_main): Fix --with-gc=none build.
14517
14518         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
14519         (mono_spillvar_offset_float): Ditto.
14520         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
14521         hreg, not when its !global, since on ia64, there is a third category: stacked
14522         registers.      
14523
14524 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
14525
14526         * mini.c: set MonoInst->klass for load field address and a few other
14527         places.
14528
14529 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14530
14531         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
14532
14533 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
14534
14535         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
14536         the branch opt changes.
14537
14538 2006-04-06  Dick Porter  <dick@ximian.com>
14539
14540         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
14541         
14542         * wapihandles.c (mini_wapi_seminfo): 
14543         * driver.c (mono_main): Add semaphore info option
14544
14545 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
14546
14547         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
14548         branch optimization changes. Fixes #78009.
14549
14550 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14551
14552         * mini.c: ignore accessibility of methods in managed->native wrappers.
14553
14554 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
14555
14556         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
14557         
14558         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
14559
14560 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
14561
14562         * mini.c: Modify the branch optimizations to preserve the invariant that
14563         the entries inside the in_bb and out_bb arrays are unique.
14564         (mono_unlink_bblock): Avoid creation of new arrays.
14565
14566 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
14567
14568         * mini.c (mono_unlink_bblock): Fix regression caused by previous
14569         change (#77992).
14570
14571 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
14572
14573         * mini.c (optimize_branches): Remove the "optimizations" in
14574         the cbranch1/cbranch2 -> branch cases which were causing several
14575         problems in the past. Fixes #77986.
14576
14577 2006-03-31  Chris Toshok  <toshok@ximian.com>
14578
14579         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
14580         default optimizations :(
14581
14582 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
14583
14584         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
14585         branch.
14586
14587 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
14588
14589         * local-propagation.c: Added comments to structs and removed
14590         "Mono" prefixes from local tree mover types.
14591
14592 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
14593
14594         * Makefile.am (arch_sources): Define this for each architecture so 
14595         libmono_la_SOURCES is defined in one place.
14596
14597 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
14598
14599         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
14600         from handles/.
14601
14602 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
14603
14604         * driver.c: print the GC name supplied by configure.
14605
14606 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
14607
14608         * local-propagation.c: Added tree mover, and moved here all the
14609         local propagation code from mini.c
14610         * mini.c: Added support for treeprop, and moved all the local
14611         propagation code to local-propagation.c
14612         * mini.h: Added support for treeprop
14613         * driver.c: Added support for treeprop, enabled consprop, copyprop,
14614         treeprop, inline and deadce by default
14615         * Makefile.am: Added local-propagation.c
14616
14617 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
14618
14619         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
14620
14621 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
14622
14623         * debug-debugger.c: make it compile without the Boehm GC.
14624
14625 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14626
14627         * mini.c: fixed issue with mismatch when an icall is registered
14628         with multiple names but same address.
14629
14630 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14631
14632         * declsec.c, mini-exceptions.c: use write barrier to set reference
14633         fields of managed objects.
14634
14635 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14636
14637         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
14638         (can_access_internals): Fix a warning.
14639
14640         * mini.c (print_method_from_ip): Rename this to 
14641         mono_print_method_from_ip so it gets exported.
14642
14643         * trace.c: Deal with strings inside StringBuilder's containing garbage
14644         and fix memory leaks. Fixes #77848.
14645
14646 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14647
14648         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
14649         fixes #77787.
14650
14651 2006-03-16 Neale Ferguson <neale@sinenomine.net>
14652         
14653         * mini-s390.c: Remove OP_X86_TEST_NULL.
14654
14655 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14656
14657         * mini.c: use the correct GetHashCode() for the moving collector.
14658
14659 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
14660
14661         * liveness.c: Regalloc spill cost tuning.
14662
14663 2006-03-15 Neale Ferguson <neale@sinenomine.net>
14664         
14665         * mini-s390x.h: Correct S390_LONG macro.
14666
14667         * mini-s390x.c: Cleanup unused code.
14668
14669 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14670
14671         * jit-icalls.h: New file.
14672
14673         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
14674         icalls and include that instead of including jit-icalls.c.
14675
14676         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
14677         OP_X86 opcodes.
14678
14679 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
14680
14681         * mini.c: when checking for member accessibility, also check for
14682         friend assemblies and for explicit interface implementations.
14683
14684 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14685
14686         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
14687
14688         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
14689
14690         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14691         common cases are done first.    
14692
14693         * mini-ops.h: Only define platform specific opcodes on the given platform.
14694
14695         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
14696         branch.
14697         
14698 2006-03-14  Martin Baulig  <martin@ximian.com>
14699
14700         Revert Paolo's change from r57348:
14701
14702         * mini.h: don't use gboolean for bitfields.
14703         * mini.c: verifier changes for fields and methods accessibility.
14704
14705 2006-03-13  Neale Ferguson <neale@sinenomine.net>
14706
14707         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
14708
14709         * mini-s390x.c: Fix conv_r_un.
14710
14711         * cpu-s390, cpu-s390x.md: Fix lengths.
14712
14713 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
14714
14715         * mini.c: nested types have access to all the nesting
14716         levels, not just the enclosing types.
14717
14718 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14719
14720         * mini.c: added a few more verification checks.
14721
14722 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
14723
14724         * liveness.c: Merge optimizations from the linear-il branch.
14725
14726 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14727
14728         * mini-ia64.c (emit_call): Add a comment.
14729
14730         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
14731
14732         * tramp-ia64.c: Fix some warnings.
14733
14734 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
14735
14736         * mini.h: don't use gboolean for bitfields.
14737         * mini.c: verifier changes for fields and methods accessibility.
14738
14739 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14740
14741         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
14742         lazy icall wrapper changes.
14743
14744         * dominators.c: Replace all the dominator algorithms with faster
14745         ones from the linear-il branch.
14746
14747         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
14748         the mempool.
14749
14750         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14751         common cases are done first.
14752
14753         * mini-amd64.c: Fix some warnings.
14754
14755         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
14756         from the mempool.
14757
14758         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
14759         added code.
14760
14761         * mini.h: Add a missing prototype.
14762
14763 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14764
14765         * mini.c: Compile icall wrappers lazily.
14766
14767         * mini-codegen.c: Use printf instead of g_print since its much faster.
14768
14769         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
14770         function.
14771
14772         * mini.c (optimize_branches): Cache the negative result from 
14773         remove_block_if_useless ().
14774
14775         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
14776         Also fix some bblock linking issues.
14777
14778         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
14779         assembly files.
14780
14781         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
14782
14783         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
14784         accessed fields first, for better cache behavior.
14785         
14786 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14787
14788         * mini.c: speedup IList<T> array accesses.
14789
14790 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14791
14792         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
14793         inline_costs counter. Fixes #77190.
14794
14795 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
14796
14797         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
14798         trace messages. Fixes #77706.
14799
14800 2006-03-04  Martin Baulig  <martin@ximian.com>
14801
14802         * tramp-amd64.c, tramp-x86.c
14803         (mono_debugger_create_notification_function): Use
14804         mono_global_codeman_reserve() to allocate a buffer at runtime and
14805         return it.
14806
14807         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
14808
14809         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
14810         notification function at runtime and then call `initialize' in the
14811         `MONO_DEBUGGER__debugger_info' vtable.
14812
14813 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14814
14815         * iltests.il: Fix a visibility problem.
14816
14817 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14818
14819         * driver.c, mini.c: add hooks for the counters API.
14820
14821 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14822
14823         * driver.c: show disabled options.
14824
14825 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14826
14827         * linear-scan.c: always use cost-driven selection.
14828
14829 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14830
14831         * jit-icalls.c (helper_compile_generic_method): Revert change from
14832         2006-02-24.
14833
14834 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
14835
14836         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
14837
14838 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14839
14840         * inssel.brg: style fixes, mostly to force the updated monoburg
14841         to run for people using svn.
14842
14843 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
14844
14845         * mini.c: match monoburg changes.
14846
14847 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14848
14849         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
14850         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
14851         declaration in the header file.
14852
14853 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14854
14855         * helpers.c: reduce relocations and mem usage.
14856
14857 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14858
14859         * mini.h, mini-codegen.c: disable logging features if
14860         requested by configure.
14861
14862 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
14863
14864         * mini.c: tiny verifier changes.
14865
14866 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14867
14868         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
14869         cpu-pentium.md: stack alignment changes for osx/x86,
14870         partially from Geoff Norton <gnorton@customerdna.com>.
14871
14872 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14873
14874         * jit-icalls.c (helper_compile_generic_method): Update to changes
14875         in metadata/class.c.
14876
14877 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14878         
14879         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
14880         
14881         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
14882         interface calls with large offsets.
14883
14884 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14885
14886         * jit-icalls.c (helper_compile_generic_method): Document the
14887         special-case we depend on so that we can inflate the method twice
14888         with the same context with no bad side-effects.
14889
14890 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
14891
14892         * mini-x86.c, mini-amd64.c: fix for case when xen support
14893         is disabled.
14894
14895 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
14896
14897         * mini-x86.c, mini-amd64.c: generate code to access tls items
14898         in a faster way for Xen systems.
14899
14900 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14901
14902         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
14903         updates and compilation fixes for the OSX/x86 port, mostly from
14904         Geoff Norton <gnorton@customerdna.com>.
14905
14906 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14907
14908         * inssel.brg: faster interface call implementation
14909         to sync with the interface_offsets MonoVTable changes.
14910
14911 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14912
14913         * mini.c: more verification checks.
14914
14915 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
14916
14917         * mini.c: added a few more verification checks.
14918
14919 2006-02-17      Neale Ferguson <neale@sinenomine.net>
14920
14921         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
14922         facility on the processor and use it if available.
14923
14924 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14925
14926         * driver.c, aot.c, mini.c: throw exception if the IL code is
14927         invalid or unverifiable.
14928
14929 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14930
14931         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
14932         m.StructField.
14933
14934 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
14935
14936         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
14937
14938 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14939
14940         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
14941         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
14942         handling of instantiated generic valuetypes.
14943
14944 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14945
14946         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
14947         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
14948         instead.
14949
14950         * generics.2.cs: Revert the nullable reftypes tests.
14951
14952 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
14953
14954         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
14955         using __builtin_frame_address (1) as it doesn't work in the presence
14956         of optimizations. Hopefully fixes #77273.
14957
14958         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
14959         -> generics.cs change as it doesn't work with some automake versions.
14960
14961 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14962
14963         * mini.c: handle systems that sue a different way to
14964         retrieve the stack address of the current thread.
14965
14966 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14967
14968         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
14969         it specially in the makefile.
14970
14971         * generics.2.cs: Add tests for nullable reference types.
14972
14973 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14974
14975         * mini.c: always handle the case when mono_jit_init()
14976         is called in a thread different from the main thread,
14977         confusing libgc (bug #77309).
14978
14979 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
14980
14981         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
14982
14983 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14984
14985         * mini.c: change optimize_branches () to use a single loop
14986         and introduce a new optimization to simplify some range checks.
14987
14988 2006-02-03  Martin Baulig  <martin@ximian.com>
14989
14990         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
14991         and merged with debugger_thread_manager_add_thread().
14992         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
14993         inform the debugger about the main thread.
14994
14995 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
14996
14997         * basic.cs: Add test for div.un/rem.un constant folding.
14998
14999 2006-02-03  Neale Ferguson <neale@sinenomine.net>
15000
15001         * cpu-s390x.md: correct int_xor_imm length
15002
15003 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15004
15005         * generics.2.cs: New test for #77442.
15006
15007         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
15008         #77442.
15009
15010 2006-02-02  Martin Baulig  <martin@ximian.com>
15011
15012         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
15013         <mono/metadata/mono-debug-debugger.h>   
15014
15015         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
15016
15017 2006-02-02  Martin Baulig  <martin@ximian.com>
15018
15019         * debug-debugger.h: New header file for debug-debugger.c.
15020
15021         * debug-debugger.c: Big API cleanup; don't run the managed Main()
15022         function is a separate thread anymore; add support for attaching.
15023
15024 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
15025
15026         * tramp-x86.c: Fix a warning.
15027
15028 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
15029
15030         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
15031         on very large methods.
15032
15033         * aot.c (load_patch_info): Fix a warning.
15034
15035 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
15036
15037         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
15038         mini-ops.h: alu membase optimizations.
15039
15040 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
15041
15042         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
15043         to speedup StringBuilder.
15044
15045 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
15046
15047         * dominators.c (mono_compute_natural_loops): Fix detection of
15048         loop body start blocks.
15049
15050         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
15051
15052 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
15053
15054         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
15055         #75145.
15056
15057 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
15058
15059         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15060
15061 2006-01-25  Martin Baulig  <martin@ximian.com>
15062
15063         * debug-debugger.c: Moved the `MonoDebuggerManager' and
15064         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
15065         started to cleanup this file a little bit.
15066
15067 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
15068
15069         * mini.c: optimize a codepath frequently happening in generics code.
15070
15071 2006-01-23  Martin Baulig  <martin@ximian.com>
15072
15073         * Makefile.am: Only compile debug-debugger.c on supported platforms.
15074
15075         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
15076         functions directly.
15077
15078         * driver.c: debug-debugger.c is only available if
15079         `MONO_DEBUGGER_SUPPORTED' is defined.   
15080
15081 2006-01-23  Martin Baulig  <martin@ximian.com>
15082
15083         * debug-debugger.c: Only enable this on platforms where the Mono
15084         Debugger is working (x86 and x86_64).
15085
15086 2006-01-21  Martin Baulig  <martin@ximian.com>
15087
15088         The Mono Debugger is now using the normal `mono' instead of the
15089         `mono-debugger-mini-wrapper' when executing managed code.
15090
15091         * debug-debugger.c: New file; previously known as
15092         debugger/wrapper/wrapper.c.
15093
15094         * debug-mini.c (mono_init_debugger): Removed.
15095
15096         * driver.c (mono_main): Added new `--inside-mdb' command line
15097         argument which is used when running inside the debugger.
15098
15099 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
15100
15101         * liveness.c (mono_analyze_liveness): Remove some unused data
15102         structures.
15103
15104 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
15105
15106         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
15107
15108 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
15109
15110         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
15111         depends on implementation details of monobitset.
15112
15113         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
15114         Fixes #77271.
15115
15116 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
15117
15118         * liveness.c: Update after monobitset changes.
15119
15120 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
15121
15122         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
15123
15124 2006-01-11 Neale Ferguson <neale@sinenomine.net>
15125
15126         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
15127
15128         * mini-s390x.c: Remove warning messages.
15129
15130 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
15131
15132         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
15133
15134 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
15135
15136         * generics.2.cs: Add ldelem/stelem_any test.
15137
15138 2006-01-10 Neale Ferguson <neale@sinenomine.net>
15139
15140         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
15141
15142 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
15143
15144         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
15145         
15146 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
15147
15148         * generics.2.cs: Reenable vtype tests.
15149
15150         * inssel-x86.brg: Remove an icorrect valuetype rule.
15151
15152 2006-01-06 Neale Ferguson <neale@sinenomine.net>
15153
15154         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
15155         initial support for OP_ABS.
15156
15157 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15158
15159         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
15160
15161 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15162
15163         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
15164         conversion and implement LADD/LSUB.
15165
15166         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
15167         architectures.
15168
15169 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15170
15171         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
15172
15173         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
15174         architectures.
15175
15176 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15177
15178         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
15179         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
15180         (stack walk problem).
15181
15182 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
15183
15184         * aot.c (mono_aot_load_method): Fix a warning.
15185
15186 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15187
15188         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
15189
15190 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15191
15192         * iltests.il: Add test for #77148.
15193
15194         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
15195         #77148.
15196
15197 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15198
15199         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
15200
15201 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15202
15203         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
15204         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
15205
15206         * basic-long.cs: Add lconv-to-r4/r8 tests.
15207
15208 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15209
15210         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
15211
15212         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
15213         here as on other archs.
15214
15215 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15216
15217         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
15218
15219 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15220
15221         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
15222         
15223         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
15224
15225         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
15226         instrument_prolog; Add memory_barrier instruction.
15227
15228 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
15229
15230         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
15231
15232 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
15233
15234         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
15235
15236         * aliasing.c inssel.brg: Fix warnings.
15237
15238         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
15239         could skip initialization of some parts of memory.
15240
15241         * mini.c mini-ia64.c: Fix warnings.
15242
15243         * inssel-sparc.brg: Add an implementation of lneg which actually works.
15244
15245 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
15246
15247         * aliasing.c (mono_build_aliasing_information): Add a workaround for
15248         a crash seen on sparc.
15249
15250         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
15251         
15252         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
15253
15254 2005-12-21 Neale Ferguson <neale@sinenomine.net>
15255
15256         * mini-ops.h: Add s390_backchain instruction
15257
15258         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
15259
15260         * cpu-s390.md: Add s390_backchain instruction
15261
15262         * mini-s390.c: Significant ABI changes
15263
15264         * mini-s390.h: Cater for zero length structures
15265
15266 2005-12-20 Neale Ferguson <neale@sinenomine.net>
15267
15268         * mini-s390.c: ABI fixes
15269
15270         * inssel-s390.brg: Remove debug statements
15271
15272         * cpu-s390.md: Fix length of ATOMIC_xx operations
15273
15274 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
15275
15276         * basic-float.cs: Add float<->long conversion tests.
15277
15278 2005-12-16 Neale Ferguson <neale@sinenomine.net>
15279
15280         * mini-s390.c: Fix LOCALLOC processing.
15281
15282         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
15283
15284 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
15285
15286         * iltests.il: Add tests for some opcodes not covered by the other
15287         tests.
15288
15289 2005-12-15 Neale Ferguson <neale@sinenomine.net>
15290
15291         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
15292         register loading for Tail processing; Correct trace output.
15293
15294         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
15295
15296         * cpu-s390.md: Correct size of jmp instruction. 
15297
15298 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15299
15300         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
15301
15302 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15303
15304         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
15305           Bring s390 up to current level.
15306
15307 2005-12-12  Zltan Varga  <vargaz@gmail.com>
15308
15309         * generics.2.cs: Disable the newly added tests as they do not work yet.
15310         
15311         * generics.2.cs: Add valuetype tests.
15312
15313 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
15314
15315         * basic-long.cs: Add i4->u8 test.
15316
15317         * objects.cs: Add tests for JIT intrinsic.
15318
15319         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
15320         optimizations lost by a mistake.
15321
15322 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
15323
15324         * basic-long.cs: Remove a test moved to objects.cs.
15325
15326         * arrays.cs: Add more array tests.
15327
15328 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
15329
15330         * arrays.cs: Add new tests for multi-dimensional arrays.
15331
15332 2005-12-06  Raja R Harinath  <rharinath@novell.com>
15333
15334         * Makefile.am (test_sources2): Add generics.2.cs.
15335         (EXTRA_DIST): Add test_sources2.
15336
15337 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
15338
15339         Support for boxing and unboxing nullable types as well as the
15340         isinst operation on nullables, per the CLI ammendment.
15341
15342         * inssel.brg (CEE_ISINST): Special case for nullable
15343
15344         * mini.c (handle_unbox_nullable): new method
15345         (handle_box): Special case for nullable types
15346         (mono_method_to_ir): Call handle_unbox_nullable in correct
15347         places.
15348
15349         * generics.2.cs: New test suite
15350
15351         * Makefile.am: Support for regression tests with generics.
15352
15353 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
15354
15355         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
15356         allocated to registers. Fixes #76800.
15357
15358 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
15359
15360         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
15361
15362 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
15363
15364         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
15365         of platforms.
15366
15367 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
15368
15369         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
15370         objects.cs.
15371
15372         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
15373         
15374         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
15375 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
15376
15377         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
15378         single precision before storing to a single precision location.
15379
15380 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15381
15382         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
15383
15384 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
15385
15386         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
15387         correct files.
15388
15389         * basic.cs: Remove test_0_byte_compares test which was moved to
15390         objects.cs a long time ago.
15391
15392 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
15393
15394         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15395
15396 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
15397
15398         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
15399         handlers are called.
15400
15401         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
15402         throwing code.
15403
15404          * mini-ia64.c: Add support for the throw->branch exception 
15405         optimization.   
15406
15407         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
15408
15409 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15410
15411         * mini.c: Enabled "fastpath" deadce :-)
15412         
15413 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15414
15415         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
15416         alias analysis pass to support it.
15417         * mini.h: Likewise.
15418         * ssa.c: Likewise.
15419         * liveness.c: Likewise (liveness computation can use aliasing
15420         information to be more accurate).
15421         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
15422         moreover made so that "--compile-all" uses the given optimization
15423         flags and not the default ones.
15424         * aliasing.c: Alias analysis (new file).
15425         * aliasing.h: Likewise.
15426         * Makefile.am: added "aliasing.c" and "aliasing.h".
15427         
15428 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15429
15430         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
15431         OP_L opcodes.
15432
15433 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
15434
15435         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
15436         fp >= end_of_stack exit condition, as it is not needed, and it might
15437         become true for fp eliminated frames.
15438
15439 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15440
15441         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
15442         coded offsets.
15443
15444 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
15445
15446         * mini-arm.c: fixed alignment of doubles/longs to match
15447         the C ABI (bug #76635).
15448
15449 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
15450
15451         * aot.c: fix compilation with --enable-minimal=aot.
15452
15453 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
15454
15455         * mini-arm.c: fixed compatibility with the new
15456         floating point emulator package for compares.
15457
15458 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
15459
15460         * mini.c : reverted sig->pinvoke changes (r51396-51397).
15461
15462 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
15463
15464         * mini-exceptions.c (print_stack_frame): Output to stderr.
15465         (mono_handle_native_sigsegv): Ditto.
15466
15467 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15468
15469         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
15470         OP_LCONV_TO_OVF_I implementation.
15471
15472         * mini-amd64.c: Add support for the throw->branch exception 
15473         optimization.
15474
15475         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
15476         when the catch clause catches a more general exception, i.e. Object.
15477
15478 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
15479
15480         * cpu-ia64.md: Remove unused opcodes.
15481
15482         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
15483         specific defines for architectures defining USE_SIGACTION.
15484
15485         * mini-ia64.c: Fix some warnings.
15486
15487         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
15488         version seemed to skip a frame.
15489
15490 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15491
15492         * mini.c: Clean up the usage of sig->pinvoke flag. Now
15493         only calls which are made to native code use this flag.
15494
15495 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15496
15497         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
15498         varargs methods as well.
15499         
15500         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
15501         which have save_lmf set. Reorganize methods prologs a bit.
15502
15503         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
15504         debugger to the proper place.
15505
15506 2005-10-29  Martin Baulig  <martin@ximian.com>
15507
15508         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
15509         when running inside the debugger until the debugger has support
15510         for it.
15511
15512 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15513
15514         * mini.h: Fix a warning.
15515
15516 2005-10-24  Miguel de Icaza  <miguel@novell.com>
15517
15518         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
15519         we expose publicly, this returns the string.
15520
15521 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
15522
15523         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
15524         with fp elimination.
15525
15526 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15527
15528         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
15529         native stacktrace using the glibc 'backtrace' function if available.
15530
15531 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
15532
15533         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
15534
15535         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
15536         handle SIGSEGVs received while in native code.
15537
15538         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
15539         code, call mono_handle_native_sigsegv which will abort the runtime
15540         after printing some diagnostics, instead of converting it into a
15541         confusing NullReferenceException.
15542
15543 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15544
15545         * cpu-pentium.md: Remove unused opcodes.
15546
15547 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
15548
15549         * mini-amd64.h (MonoLMF): Add rsp field.
15550
15551         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
15552         the lmf too.
15553
15554 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
15555
15556         * mini-codegen.c (get_register_spilling): Fix some warnings.
15557
15558 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
15559
15560         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
15561         elimination during exception handling. Enable fp elimination by
15562         default.
15563
15564         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
15565         elimination.
15566
15567 2005-10-16  Martin Baulig  <martin@ximian.com>
15568
15569         * mini-exceptions.c
15570         (mono_debugger_run_finally): New public method for the debugger.
15571
15572 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15573
15574         * debug-mini.c (mono_debug_init_method): Fix warning.
15575
15576         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
15577         the 'exname' parameter const to fix some warnings.
15578
15579 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
15580
15581         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
15582         introduced by the previous patch.
15583
15584 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
15585
15586         * basic-float.cs: Add test for precision of float arithmetic.
15587
15588         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
15589         when loading/storing single values from/to memory.
15590
15591         * mini.c (mono_jit_compile_method_with_opt): Create the function
15592         pointers in the correct domain.
15593
15594 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15595
15596         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
15597         introduced by previous patch.
15598         
15599         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
15600         when out_filter_idx is NULL.
15601
15602         * mini-exceptions.c: Don't run filter clauses twice during exception
15603         handling. Fixes #75755.
15604
15605 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15606
15607         * aot.c: Add support for ldflda wrappers.
15608
15609         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
15610         #75902.
15611
15612 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
15613
15614         * mini.c, mini.h: do not consider exception handlers blocks when
15615         setting up interface variables.
15616
15617 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
15618
15619         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
15620
15621 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
15622
15623         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
15624         causes a regression.
15625
15626         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
15627
15628 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
15629
15630         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
15631         of the OP_P definitions.
15632
15633         * TODO: Add a proposal for dealing with the CEE/OP mess.
15634
15635         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
15636         optimizations from the x86 port.
15637
15638         * cpu-amd64.md: Ditto.
15639
15640         * basic.cs basic-long.cs: Add tests.
15641
15642 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
15643
15644         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
15645         Patrik Torstensson's implementation of my exception-handling
15646         optimization idea, when the exception object is not used
15647         (bug #62150).
15648
15649 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
15650
15651         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
15652         of the mul_imm optimizations from the old jit.
15653
15654 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
15655
15656         * mini.c, liveness.c: patch by Patrik Torstensson and
15657         Zoltan Varga to improve performance in methods with
15658         exception clauses.
15659
15660 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15661
15662         * driver.c: Remove 'Globalization' entry from --version.
15663
15664 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
15665
15666         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
15667         there is a profiler interested in JIT events.
15668
15669         * aot.c: Load profile files produced by the AOT profiling module, and
15670         reorder methods based on the profiling info. Add a 'method_order' table
15671         to the AOT file to make mono_aot_find_jit_info work with the reordered
15672         methods.
15673
15674         * mini.h: Bump AOT file version info.
15675
15676 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
15677
15678         * mini-arm.h: work around what looks like a gcc bug when optimizations
15679         are enabled.
15680
15681 2005-09-28  Raja R Harinath  <rharinath@novell.com>
15682
15683         * Makefile.am (AM_CFLAGS): Don't use += to append inside
15684         conditionals.  Use ...
15685         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
15686
15687 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
15688
15689         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
15690         to determine the amount of memory to copy when passing valuetypes.
15691
15692         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
15693         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
15694
15695 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
15696
15697         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
15698         information about aot.
15699
15700 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15701
15702         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15703         macros. This will allow a deadlock debugger to easily be plugged
15704         in.
15705
15706 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
15707
15708         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
15709
15710 2005-09-27  Raja R Harinath  <rharinath@novell.com>
15711
15712         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
15713         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
15714         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
15715         ($(arch_built)) [CROSS_COMPILING]: Error out.
15716
15717 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15718
15719         * aot.c: Add support for the no_special_static flag for classes.
15720
15721 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15722
15723         * Reapply reverted patches.
15724
15725         * *: Revert r50174 as well.
15726
15727         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
15728
15729 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15730
15731         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
15732
15733 2005-09-23  Miguel de Icaza  <miguel@novell.com>
15734
15735         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
15736         part of the SIG_HANDLER_SIGNATURE.  
15737
15738 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15739
15740         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
15741         statistics.
15742
15743         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
15744         introduced by previous patch.
15745
15746 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
15747
15748         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
15749         saved registers too.
15750
15751         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
15752         upon the information returned by get_call_info ().
15753         
15754         * mini-x86.c (add_float): Fix stack size calculation.
15755         (mono_arch_call_opcode): Rewrite this so it works based up the
15756         information returned by get_call_info ().
15757         (mono_arch_get_this_vret_args): Ditto.
15758
15759 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
15760
15761         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
15762         in cinfo to determine the registers which need to be used.
15763
15764 2005-09-20  Miguel de Icaza  <miguel@novell.com>
15765
15766         * driver.c (mono_main): Add --server and --desktop flags. 
15767
15768 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
15769
15770         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
15771         registers as global registers.
15772
15773         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
15774         longer needed with the new register allocator.
15775
15776         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
15777
15778         * cpu-ia64.md: Remove unused opcodes.
15779         
15780         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
15781         
15782 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
15783
15784         * cpu-amd64.md: Remove unused opcodes.
15785
15786         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
15787         needed with the new register allocator.
15788
15789         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
15790         reg-reg moves.
15791
15792 2005-09-16  Raja R Harinath  <rharinath@novell.com>
15793
15794         * Makefile.am (check-local): Don't invoke semdel-wrapper.
15795
15796 2005-09-16  Martin Baulig  <martin@ximian.com>
15797
15798         * exceptions-amd64.c
15799         (throw_exception): Don't call mono_debugger_throw_exception() if
15800         we're a rethrow - see the FIXME in the code.
15801
15802 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
15803
15804         * mini.c (mono_init_exceptions): This only works on some architectures.
15805         
15806 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15807
15808         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
15809         on ia64.
15810
15811         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
15812
15813         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
15814         now in mini-exceptions.c.
15815
15816 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
15817
15818         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
15819         now in mini-exceptions.c.
15820
15821 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15822
15823         * exceptions-x86.c: Applied patch from Patrik Torstensson 
15824         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
15825
15826         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
15827         code into mini-exceptions.c. Add some assertions to it.
15828
15829 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15830
15831         * aot.c (emit_section_change): Applied patch from "The Software Team" 
15832         (<software@solmersa.com>). Fix as errors on windows.
15833
15834 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15835
15836         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
15837         method info into the LMF.
15838
15839 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15840         
15841         * mini-ia64.c: Add proper unwind info for method epilogs.
15842
15843         * exceptions-ia64.c: Add some code to help debugging.
15844         
15845         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
15846
15847         * mini-exceptions.c: Fix warning.
15848
15849 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15850
15851         * mini.c: Really fix build.
15852
15853         * mini-x86.c mini-amd64.c: Fix build.
15854
15855 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15856
15857         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
15858
15859         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
15860         some Interlocked methods as intrinsics.
15861
15862         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
15863         for Thread methods as well.
15864
15865         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
15866
15867         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
15868
15869         * mini-ia64.c mini-x86.c mini-amd64.c 
15870         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
15871         OP_MEMORY_BARRIER.
15872         
15873         * mini.c (mono_init_exceptions): Fix build breakage.
15874
15875 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
15876
15877         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
15878         of instructions. Use the new ia64_unw_op macros for emitting unwind
15879         info.
15880
15881         * mini.c (mono_init_exceptions): Initialize exception handling
15882         related trampolines at startup.
15883
15884 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
15885
15886         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
15887
15888 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15889
15890         * mini.c: Handle type loading errors gracefully during compilation and
15891         throw the appropriate exception.
15892
15893 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
15894
15895         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
15896         for the mono binary.
15897
15898 2005-09-09  Martin Baulig  <martin@ximian.com>
15899
15900         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
15901         the release.
15902
15903 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15904
15905         * mini-arm.h: use emulation for conv.r.un for the release.
15906
15907 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15908
15909         * mini-arm.c, objects.cs: more fixes and tests for them.
15910
15911 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15912
15913         * mini-arm.c: align structures to at least 4 bytes to be able
15914         to keep our current optimized memcpy.
15915
15916 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
15917
15918         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
15919
15920 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15921
15922         * mini.c: ignore SIGPIPE.
15923
15924 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
15925
15926         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
15927
15928         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
15929
15930 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
15931
15932         * mini.h: Add prototype for mono_allocate_stack_slots_full.
15933
15934 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15935
15936         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
15937         exception handling support.
15938         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
15939         patch by Brian Koropoff <briank@marakicorp.com>).
15940
15941 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
15942
15943         * mini.c: revert another 'optimization' which breaks when
15944         items on the eval stack need to be saved at a basic block end
15945         (bug #75940).
15946
15947 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15948
15949         * jit-icalls.c: for arrays, ensure we always provide
15950         lower bounds.
15951
15952 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
15953
15954         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
15955         
15956         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
15957
15958 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15959
15960         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
15961         arguments in their original register.
15962
15963 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
15964
15965         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
15966         memset/memcpy.
15967
15968         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
15969         when ssapre is enabled.
15970
15971         * inssel-long.brg: Fix bug in previous patch.
15972
15973         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
15974         multiplication by a constant.
15975
15976 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
15977
15978         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
15979         icc.
15980
15981         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
15982         saving registers.
15983
15984 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
15985
15986         * inssel-arm.brg: apply changes tested by Brian Koropoff
15987         <briank@marakicorp.com>.
15988
15989 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
15990
15991         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
15992         
15993 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
15994
15995         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
15996         to the same register if dreg is just a base register.
15997         (print_ins): Improve printing of membase opcodes.
15998
15999         * inssel-x86.brg: Add optimized ldind(reg) rules.
16000
16001         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
16002
16003 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
16004
16005         * mini.c: when running under valgrind, set the stack bottom for
16006         the GC at the actual approximate stack for the app (fixes running
16007         mono with valgrind).
16008
16009 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
16010
16011         * mini.c: do no break at the first valuetype to init found
16012         (fixes bug #75791).
16013
16014 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
16015
16016         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
16017
16018 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
16019
16020         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
16021
16022 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
16023
16024         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
16025
16026 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16027
16028         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
16029
16030         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
16031         code.
16032
16033         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
16034         code.
16035
16036         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
16037         methods.
16038
16039 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
16040
16041         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
16042
16043 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16044
16045         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
16046         in the tail recursion optimization.
16047
16048         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
16049         debug info into the assembly file.
16050
16051         * iltests.il: Add test for filter regions.
16052
16053         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
16054         initial stack of filter regions. Fixes #75755.
16055
16056 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
16057
16058         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
16059         stack requirements.
16060
16061 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16062
16063         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
16064         the check for an already compiled method on non-ia64 platforms.
16065         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
16066         proper domain.
16067
16068         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
16069
16070         * inssel-x86.brg: Add some optimized call rules.
16071
16072 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
16073
16074         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
16075         method here.
16076
16077         * mini.h mini-trampolines.c: Pass the trampoline argument to 
16078         mono_arch_patch_delegate_trampoline.
16079
16080         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
16081
16082         * mini-trampolines.c: Fix build.
16083
16084         * mini-amd64.h: Add delegate trampolines.
16085
16086         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
16087
16088         * inssel-amd64.brg: Add optimized call rules.
16089         
16090         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
16091
16092         * inssel-ia64.brg: Add optimized ldind(reg) rules.
16093
16094 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
16095
16096         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
16097         change.
16098
16099         * mini-ia64.c: Remove LMF fixmes.
16100
16101         * mini-ia64.h: Remove most fields from LMF.
16102
16103         * inssel-ia64.brg (stmt): Fix unaligned access errors.
16104
16105         * mini-trampolines.c: Add support for IA64 function descriptors.
16106
16107         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
16108         for IA64 function descriptors.
16109
16110 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
16111
16112         * tramp-arm.c: patch the vtable for virtual calls. Added
16113         support code to register/unregister the LMF.
16114         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
16115         more LMF work.
16116
16117 2005-08-19  Dick Porter  <dick@ximian.com>
16118
16119         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
16120         bit value if needed.
16121
16122 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
16123
16124         * mini.c (mini_get_method): Move handling of wrapper data here.
16125
16126         * mini.c (mono_method_to_ir): Add support for dynamic methods.
16127
16128         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
16129         virtual.
16130
16131         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
16132         bblock->code does not remain empty.
16133
16134 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
16135
16136         * arrays.cs: Add regression test for #75832.
16137
16138         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
16139         rules. Fixes #75832.
16140
16141         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
16142         instruction scheduling.
16143
16144 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
16145
16146         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
16147
16148 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
16149
16150         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
16151
16152         * mini-codegen.c: Fix VC build.
16153
16154         * cpu-pentium.md: Increase length of atomic_exhange_i4.
16155
16156 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16157
16158         * mini.h: fix signature for mono_register_opcode_emulation.
16159
16160 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
16161
16162         * mini.c: Get rid of most of the helper_sig_... constants using
16163         mono_create_icall_signature ().
16164
16165 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
16166
16167         * jit-icalls.c (helper_ldstr): New helper function.
16168
16169         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
16170
16171         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
16172         throw, load the string using a helper call instead of creating a string object.
16173
16174         * aot.c: Update after LDSTR changes.
16175
16176         * mini.h: Bump AOT file version.
16177         
16178         * aot.c: Save class size info into the AOT file. Print more statistics during
16179         compilation.
16180
16181         * mini.h: Bump AOT file version.
16182
16183         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
16184         ordering of disasm cases. Fixes #74957.
16185
16186 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
16187
16188         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
16189         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
16190         the generic code needed for the ARM port.
16191
16192 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
16193
16194         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
16195         inssel-arm.brg: more ARM features and fixes.
16196
16197 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
16198
16199         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
16200         ARM port work in progress.
16201
16202 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
16203
16204         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
16205
16206         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
16207
16208         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
16209
16210         * inssel.brg (mini_emit_memset): Add support for unaligned access.
16211
16212         * *-ia64.*: Ongoing IA64 work.
16213         
16214         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
16215
16216 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16217
16218         * TODO: Remove out-of-data todo stuff.
16219
16220         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
16221         dead code.
16222
16223         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
16224
16225         * mini.h: Bump corlib version.
16226
16227 2005-07-27  Martin Baulig  <martin@ximian.com>
16228
16229         * mini-codegen.c
16230         (create_copy_ins): Added `const unsigned char *ip' argument; set
16231         `copy->cil_code' from it.
16232
16233 2005-07-27  Martin Baulig  <martin@ximian.com>
16234
16235         * mini-exceptions.c (mono_handle_exception): Don't call
16236         mono_debugger_handle_exception() for filters.
16237
16238 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
16239
16240         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
16241         as well.
16242
16243 2005-07-26  Martin Baulig  <martin@ximian.com>
16244
16245         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
16246
16247         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
16248         helper_compile_generic_method() if the method is actually virtual
16249         and non-final.
16250
16251 2005-07-26  Martin Baulig  <martin@ximian.com>
16252
16253         * mini.c
16254         (trampoline_code): Renamed to `mono_trampoline_code' and made it
16255         public; this is now accessed directly by the debugger.
16256         (mono_generic_trampoline_code): Removed.
16257
16258         * debug-mini.c
16259         (mono_debug_init_method): Also add interncalls and wrappers.
16260
16261 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
16262
16263         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
16264
16265 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16266
16267         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
16268
16269 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16270
16271         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
16272
16273 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16274
16275         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
16276         getting TLS offsets on AMD64 too.
16277
16278 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
16279
16280         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
16281
16282 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
16283
16284         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
16285         inssel-arm.brg, mini-arm.h: ARM port work in progress.
16286
16287 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16288
16289         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
16290
16291         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
16292         to mini.c.
16293
16294         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
16295         mono_sparc_is_virtual_call ().
16296         
16297         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
16298
16299         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
16300         trampoline parameters.
16301
16302         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
16303         
16304         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
16305         to mono_arch_get_vcall_slot_addr.
16306
16307         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
16308         trampoline code.
16309
16310         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
16311
16312 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16313
16314         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
16315
16316 2005-07-19  Martin Baulig  <martin@ximian.com>
16317
16318         * exceptions-amd64.c (throw_exception): Call
16319         mono_debugger_throw_exception() here like we're doing it on i386.
16320
16321 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16322
16323         * mini-ia64.c: Add optimized TLS access support.
16324
16325 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
16326
16327         * mini-exceptions.c: Ongoing IA64 work.
16328
16329         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
16330
16331         * mini.c: Use the default optimization set when embedding. Fixes
16332         #75194.
16333
16334 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
16335
16336         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
16337         of trampolines to a separate file.
16338
16339         * mini-trampolines.c: New file.
16340
16341         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
16342         separate file.
16343         
16344         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
16345         amd64/ia64 code.
16346
16347         * mini-codegen.c: Fix cygwin build.
16348
16349 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
16350
16351         * mini.c: Add some minor changes needed by the IA64 port.
16352
16353         * *-ia64.*: Ongoing IA64 work.
16354
16355 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
16356
16357         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
16358         trampolines into arch-independent and arch-dependent parts.
16359
16360         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
16361
16362 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
16363
16364         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
16365
16366         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
16367         the xp-regalloc-branch for amd64.
16368
16369         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
16370         xp-regalloc-branch for x86.
16371
16372 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16373
16374         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
16375
16376 2005-07-06  Martin Baulig  <martin@ximian.com>
16377
16378         * mini.c
16379         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
16380         (mono_jit_runtime_invoke): Likewise.
16381
16382 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16383
16384         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
16385         on x86 too.
16386         
16387         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
16388         without loading their metadata. Reorganize the file format so exception handling+
16389         debug info is kept separate from normal method info. Create MonoJitInfo 
16390         structures for methods lazily.
16391
16392         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
16393         loading metadata.
16394         (x86_class_init_trampoline): Patch AOT class init trampolines too.
16395
16396         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
16397
16398         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
16399         in AOT code.
16400
16401         * mini.h: Bump AOT file version.
16402
16403 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
16404
16405         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16406
16407 2005-07-01  Raja R Harinath  <rharinath@novell.com>
16408
16409         * Makefile.am (check-local): Call semdel-wrapper.
16410
16411 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
16412
16413         * mini-x86.c: Revert the last change as it seems to break the build..
16414
16415 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16416
16417         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16418         
16419         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
16420
16421 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
16422
16423         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
16424         outside of the macro, so strange stuff doesn't happen with gcc4
16425         (NEW_AOTCONST_TOKEN): Likewise.
16426
16427 2005-06-28  Martin Baulig  <martin@ximian.com>
16428
16429         * mini.c (mini_class_is_system_array): New static method; use this
16430         instead of `klass->parent == mono_defaults.array_class' everywhere
16431         since this also works for the new generic array class.
16432
16433 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16434
16435         * inssel.brg: Remove warnings.
16436
16437 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
16438
16439         * mini-ia64.c: Ongoing IA64 work.
16440
16441         * basic-float.cs: Add float->i1 conversion test.
16442
16443         * iltests.il: Add conv.u4 test.
16444
16445 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
16446
16447         * inssel-long.brg: Fix bug caused by last change.
16448
16449 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
16450
16451         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
16452         BSDs.  Allows the x86 JIT to work on OSX86
16453
16454 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
16455
16456         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
16457         u4->i8 conversion.
16458
16459         * mini-ia64.c: Ongoing IA64 work.
16460
16461 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16462
16463         * mini-ia64.c: Ongoing IA64 work.
16464
16465         * driver.c: Clean up jit_code_hash as well when using --regression.
16466
16467         * inssel-long.brg: Fix long->i4/u4 conversion rules.
16468
16469         * basic-long.cs: Add tests for long->u4 conversion.
16470
16471 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
16472
16473         * mini.c: Take mono_get_domainvar out of macros. This makes sure
16474         that we do not depend on undefined C behavior: the order stuff
16475         gets evaluated within an expression. Fixes mono when compiled on
16476         GCC 4.
16477
16478 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
16479
16480         * *-ia64.*: Ongoing IA64 work.
16481
16482         * aot.c: Lower memory usage while loading AOT methods.
16483
16484         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
16485
16486         * mini.h: Bump AOT file format version.
16487
16488 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16489
16490         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
16491
16492 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
16493
16494         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
16495         not on callee assembly). Fixed some comments.
16496
16497 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
16498
16499         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
16500         it gets proper disassembly.
16501         (emit_method_info): Remove some dead code.
16502
16503         * mini.c (mini_method_compile): Allways allocate the GOT var in
16504         mono_method_to_ir for emulating opcodes.
16505
16506 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
16507
16508         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
16509         before freeing the code memory. Fixes #74990.
16510
16511         * objects.cs: Add regression test for #74992.
16512
16513         * liveness.c: Extend live ranges of arguments to the beginning of the
16514         method. Fixes #74992.
16515
16516         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
16517         so it points into the faulting instruction.
16518
16519 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
16520
16521         * jit-icalls.c (mono_imul_ovf): Add exception handling.
16522
16523         * *-ia64.*: Ongoing IA64 work.
16524
16525         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
16526
16527 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
16528
16529         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
16530
16531         * *-ia64.*: Ongoing IA64 work.
16532
16533 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
16534
16535         * basic-long.cs: Add tests for add/sub.ovf.
16536
16537         * basic.cs: Add tests for sub.ovf.
16538
16539         * *-ia64.*: Ongoing IA64 work.
16540
16541 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
16542
16543         * *-ia64.*: Ongoing IA64 work.
16544
16545         * basic.cs: Add conv.ovf.i4.un test.
16546
16547 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
16548
16549         * mini.c: (remove_block_if_useless) Fixed bug 75061.
16550         
16551 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16552
16553         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
16554
16555 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16556
16557         * *-ia64.*: Ongoing IA64 work.
16558
16559 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16560
16561         * trace.[ch]:
16562         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
16563
16564 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
16565
16566         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
16567
16568 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
16569
16570         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
16571
16572         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
16573         of a call is callable by a near call.
16574
16575 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
16576
16577         * mini-ia64.c: Ongoing IA64 work.
16578
16579 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
16580
16581         * genmdesc.c: Make the generated array non-static.
16582
16583         * inssel-long.brg: Fix LSHR_IMM rule.
16584
16585         * *-ia64.*: Ongoing IA64 work.
16586
16587         * *-ia64.*: Ongoing IA64 work.
16588
16589 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16590
16591         * *-ia64.*: Ongoing IA64 work.
16592
16593         * *-ia64.*: Ongoing IA64 work.
16594         
16595         * mini-ia64.c: Ongoing IA64 work.
16596
16597         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
16598
16599 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16600
16601         * objects.cs basic-calls.cs: Move some tests to objects.cs.
16602         
16603         * objects.cs basic-long.cs: Move some tests to objects.cs.
16604
16605 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
16606
16607         * *-ia64.*: Ongoing IA64 work.
16608
16609         * iltests.il: Add a new test.
16610
16611         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
16612         newobj. Fixes #75042.
16613
16614 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
16615
16616         * *-ia64.*: Ongoing IA64 work.
16617         
16618         * *-ia64.*: Ongoing IA64 work.
16619         
16620         * *-ia64.*: Ongoing IA64 work.
16621
16622         * basic.cs objects.cs: Move tests accessing static variables as well.
16623
16624         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
16625
16626 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
16627
16628         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
16629
16630         * driver.c: Always print failed tests.
16631
16632         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
16633         frame pointer.
16634
16635         * *ia64*: Ongoing IA64 work.
16636
16637 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16638
16639         * basic.cs: Add tests for add.ovf. Fix warnings.
16640
16641 2005-05-18  Miguel de Icaza  <miguel@novell.com>
16642
16643         * driver.c (mono_main): Avoid crash if no argument is passed to
16644         --break;  Do not use g_error, but f_printf.   And fix all other
16645         ocurrences of the same crash.
16646
16647 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
16648
16649         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
16650         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
16651         Fixes #74742.
16652
16653 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
16654
16655         * *-ia64.*: Add beginnings of IA64 backend.
16656
16657         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
16658
16659 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
16660
16661         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
16662         Fixes #74925.
16663
16664         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
16665
16666         * mini-amd64.c: Fix a warning.
16667
16668 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
16669
16670         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
16671         in float_neg. Fixes #74897.
16672
16673         * mini-amd64.c (emit_call): Fix another near call bug.
16674
16675 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
16676
16677         * declsec.c: Keep the appdomain information in the structure. Added a 
16678         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
16679         value gets overwritten).
16680         * declsec.h: Set the default MonoArray for the the stack to 6. Added
16681         an MonoAppDomain member to MonoSecurityFrame.
16682         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
16683         used in the stack walk. Now use a MonoArray which grow (double) when
16684         it gets full.
16685
16686 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16687
16688         * mini.c: Re-enabled runtime cleanup, since running threads should
16689         now properly stop when exiting.
16690
16691 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16692
16693         * mini-codegen.c: New file contaning the arch-independent local
16694         register allocator. Not used by any architectures yet.
16695
16696         * mini.h linear-scan.c: Merge some changes from the 
16697         mini-xp-local-regalloc branch.
16698
16699 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16700
16701         * mini-amd64.c (emit_call): Fix calls to native functions when the
16702         runtime is compiled as a shared library. Fixes #74756.
16703
16704         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
16705         on a literal field. Fixes #74751.
16706
16707 2005-04-25  Raja R Harinath  <rharinath@novell.com>
16708
16709         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
16710
16711 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16712
16713         * objects.cs: Add missing null casting test.
16714
16715 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16716
16717         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
16718         in wrapper methods. Also rename 'address' variable to 'offset'.
16719
16720 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16721
16722         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
16723         warnings.
16724         
16725         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
16726
16727         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
16728         work on windows.
16729
16730 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16731
16732         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
16733
16734 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16735
16736         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
16737         just the last bytes.
16738
16739 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16740
16741         * aot.c (mono_compile_assembly): Fix warning.
16742
16743         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
16744         by the _MSC_VER stuff.
16745
16746 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16747
16748         * inssel-long.brg: Fix #74588.
16749
16750         * cpu-amd64.md: Fix #74591.
16751
16752         * iltests.il: Add new regression tests.
16753
16754 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16755
16756         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
16757         valuetype.
16758
16759 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
16760
16761         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
16762
16763         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
16764         from Bill Middleton <flashdict@gmail.com>.
16765
16766 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
16767
16768         * arrays.cs: Add new regression test. Fix warnings.
16769
16770 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
16771
16772         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
16773         and leakage in CKFINITE.
16774
16775         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
16776         this to a null op since it is called on amd64 too.
16777
16778         * exceptions-amd64.c (get_throw_trampoline): Align stack.
16779
16780         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
16781         body since this is not used on amd64.
16782         
16783         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
16784
16785         * mini-amd64.c: Remove obsolete fixmes.
16786
16787         * mini.c (print_method_from_ip): Fix debugging support.
16788
16789 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16790
16791         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
16792         so that expressions that don't give much gain are not reduced.
16793         * ssapre.h: Likewise.
16794
16795 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
16796
16797         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
16798
16799         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
16800
16801         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
16802
16803 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
16804
16805         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
16806
16807         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
16808
16809 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
16810
16811         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
16812         stack touching.
16813
16814         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
16815
16816         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
16817
16818         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
16819
16820         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
16821         MONO_ARCH_USE_SIGACTION. Fixes #74252.
16822
16823         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
16824
16825         * mini-x86.c: Fix up stack overflow handling.   
16826
16827         * exceptions.cs: Add new regression test.
16828
16829 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
16830
16831         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
16832         mono_jit_thread_attach.
16833
16834         * mini.c (mono_method_to_ir): Verify called method is not abstract.
16835
16836 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16837
16838         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
16839         avoid calling constructors using callvirt.
16840
16841         * inssel.brg: Fix #74073.
16842
16843 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
16844
16845         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
16846         compilation with non-GCC compilers.
16847         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
16848         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
16849
16850 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
16851
16852         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
16853         klass->interface_offsets (will likely fix bug#74073).
16854
16855 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16856
16857         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
16858
16859 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
16860
16861         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
16862         to amd64_div_reg_size ().
16863         
16864         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
16865
16866 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
16867
16868         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
16869
16870 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16871
16872         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
16873
16874 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16875
16876         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
16877         
16878         * mini.c (mono_precompile_assembly): Load and precompile referenced
16879         assemblies as well. Fixes #74015.
16880
16881 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
16882
16883         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
16884
16885 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
16886
16887         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
16888         a lot of checks and (anyway) permissions cannot work until corlib is 
16889         loaded.
16890
16891 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
16892
16893         * mini-ppc.c: fixed ABI issue on sysv/ppc.
16894
16895 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
16896
16897         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
16898         calls (fixes bug#72824).
16899
16900 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16901
16902         * mini.c: fix tail recursion elimination (see test in bug#73936).
16903
16904 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
16905
16906         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
16907         some fp functions in sse2 mode.
16908
16909 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
16910
16911         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
16912
16913 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
16914
16915         * mini.h mini.c: Add mono_get_jit_tls_key ().
16916
16917         * mini-x86.c: Enable fast TLS support on windows.
16918
16919 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
16920
16921         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
16922         * mini.c: Check for p/invoke method when generating code. If a
16923         p/invoke method, or it's class, isn't decorated with [Suppress
16924         UnmanagedCodeSecurity] then generate code to call System.Security.
16925         UnmanagedDemand (only if the security manager is active).
16926
16927 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16928
16929         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
16930         last change as it seems to cause strange crashes.
16931         
16932 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16933
16934         * *.c: handle unsafe function pointers where needed.
16935
16936 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16937
16938         * mini.c (mono_jit_free_method): Remove the fixme too.
16939
16940 2005-03-15  Miguel de Icaza  <miguel@novell.com>
16941
16942         * mini.c: As discussed, make the code actually free the delegate
16943         thunk now, to enable the debugging of delegate problems, use
16944         MONO_DEBUG=1 when running Mono. 
16945
16946         This takes also care of parts of the leaks as seen by Joe.
16947
16948 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
16949
16950         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
16951         thread_tls_offset calculation.
16952
16953 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
16954
16955         * declsec.c: Reworked linkdemand checks for icall. The previous code
16956         was using the declaration code (untrusted) and didn't work as expected
16957         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
16958         specific case.
16959
16960 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
16961
16962         * iltests.il: Add new localloc test.
16963
16964         * mini-amd64.c: Handle large stack allocations the same way as on
16965         windows if stack overflow handling is working.
16966         
16967         * mini-amd64.c: Allocate the signal stack using mmap.
16968
16969         * mini.c (sigsegv_signal_handler): Fix reading of context.
16970
16971         * mini-exceptions.c: Fix up stack overflow handling.
16972
16973         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
16974
16975         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
16976
16977         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
16978
16979         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
16980
16981         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
16982         tramp_init functions as they are no longer needed.
16983
16984 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
16985
16986         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
16987         
16988         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
16989
16990         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
16991         
16992         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
16993         support that now.
16994
16995         * mini-ops.h: Add OP_LMUL_IMM.
16996
16997         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
16998         long mul/div opcodes as intrinsic.
16999
17000         * mini-amd64.c (emit_call): Handle the case when the callee might be
17001         an AOT method.
17002
17003 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17004
17005         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
17006         extra safe.
17007         
17008         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
17009
17010         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
17011
17012 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
17013
17014         * mini.c (mono_codegen): Don't leak here, to help people running
17015         monogrind.
17016
17017 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17018
17019         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
17020         conversions in sse2 mode.
17021
17022         * basic-float.cs: Add regression test.
17023         
17024         * mini-amd64.c: Reenable sse2.
17025
17026 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17027
17028         * mini-amd64.c: Disable sse2 until some regressions are fixed.
17029
17030 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
17031
17032         * driver.c: Copyright text should include 2005.
17033         
17034 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17035
17036         * cpu-amd64.md (load_membase): Fix more max lengths.
17037
17038 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
17039
17040         * cpu-amd64.md (load_membase): Fix max length.
17041
17042         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
17043
17044         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
17045
17046         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
17047         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
17048
17049         * basic-float.cs: Add rounding regression test.
17050
17051         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
17052
17053 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
17054
17055         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
17056         structures in registers for pinvoke wrappers.
17057
17058 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17059
17060         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
17061
17062 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17063
17064         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
17065         wrapper to mono_jit_thread_attach.
17066
17067         * mini.c (mini_jit_thread_attach): New jit icall.
17068
17069         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
17070         native->managed wrappers.
17071
17072         * exceptions.cs: Add new regression test.
17073
17074         * mini.c (optimize_branches): Check regions in the cbranch to throw
17075         block case as well. Fixes #73242.
17076
17077 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17078
17079         * mini.c: thread safety fixes.
17080
17081 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
17082
17083         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
17084         patching stuff, since delegates use jump trampolines so there is
17085         no caller.
17086
17087         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
17088         jump trampolines.
17089         
17090         * tramp-amd64.c: Fix build.
17091
17092         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
17093         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
17094
17095         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
17096         Rename this to mono_arch....
17097         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
17098
17099         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
17100
17101         * mini-amd64.c (emit_call): If both the caller and the callee is
17102         guaranteed to have 32 bit addresses, emit a normal call.
17103
17104         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
17105
17106         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
17107         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
17108         method_ptr inside delegates.
17109
17110 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
17111
17112         * mini.c (mono_jit_free_method): Free the method info even if the native code is
17113         invalidated. Fixes #73001.
17114
17115         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
17116
17117         * mini-x86.c: Only use stdcall for pinvokes on windows.
17118
17119 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
17120
17121         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
17122         * mini-x86.c: remove unreliable __thread var offset detection,
17123         use the correct accessors and enable by default.
17124
17125 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17126
17127         * mini.c (mono_jit_free_method): Fix memory leak.
17128
17129 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
17130
17131         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
17132
17133 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
17134
17135         * cpu-amd64.md: Fix lengths of atomic opcodes.
17136
17137 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17138
17139         * driver.c: try to not imply using ICU is any good.
17140
17141 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17142
17143         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
17144         functions as inline ops.
17145
17146         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
17147         some Interlocked functions as inline ops.
17148
17149         * mini.c (move_basic_block_to_end): Fix bug in last patch.
17150
17151         * mini.h (MonoBasicBlock): Reorganize fields a bit.
17152
17153         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
17154
17155         * mini.c: Add support for OP_NOT_TAKEN.
17156
17157         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
17158         structures in registers for pinvoke wrappers.
17159
17160         * mini-amd64.c: Fix warnings.
17161
17162 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
17163
17164         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
17165
17166         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
17167
17168         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
17169         address instead of loading the address from it.
17170
17171         * mini-x86.c: Add support for returning small structs in registers
17172         on Win32. Fixes part of #70864.
17173         
17174 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
17175
17176         * trace.c (get_token): Improve error checking.
17177
17178 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17179
17180         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
17181
17182 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
17183  
17184         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
17185         it can be reused for MonoClass.
17186         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
17187         _LINKDEMAND.
17188
17189 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
17190
17191         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
17192         instead of a MonoReflectionMethod. The method information wasn't used
17193         when displaying SecurityException details (but will be now).
17194
17195 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
17196
17197         * Makefile.am : windows build fix.
17198
17199 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17200
17201         * iltests.il: Add new regression test.
17202
17203         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
17204         #72522.
17205
17206 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
17207  
17208         * mini.c: Moved linkdemand check into helper function check_linkdemand
17209         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
17210         LDFTN, LDVIRTFTN).
17211
17212 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
17213
17214         * declsec.c: Added statistics counter for different kinds of 
17215         LinkDemands.
17216         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
17217         (and commented) declaration.
17218         * mini.c: Added statistics counter for security Demand code 
17219         generation. Added display of security statistics.
17220
17221 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17222
17223         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
17224         Fix compilation errors under gcc-2.95.
17225
17226 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17227
17228         * mini.c, driver.c: Use the new jit trampoline hashtable
17229
17230 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17231
17232         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
17233
17234 2005-02-11  Martin Baulig  <martin@ximian.com>
17235
17236         * debug-mini.c (mono_debug_close_method): Free the line number array.
17237
17238 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17239
17240         * aot.c: Break up large methods into smaller ones. Share GOT slots for
17241         icalls.
17242
17243         * mini.h: Bump AOT file format version. 
17244
17245 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17246
17247         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
17248         APTC and P/Invoke.
17249         * declsec.h: Added macros to get/set lazyly initialized security 
17250         informations about assemblies. Added new enum for different type of
17251         possible LinkDemand violation. Added function to check LinkDemands.
17252         * mini.h: Added a field to MonoCompile to hold any security violation
17253         detected when JITting a method (so it can be thrown later).
17254         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
17255         and CEE_CALLVIRT. Added code to throw exception at the end of
17256         mini_method_compile (note: the exception is unhandled right now).
17257
17258 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
17259
17260         * mini.c, jit-icalls.c: use the managed implementation of
17261         memset for initobj and memset, to avoid managed <-> unmanaged
17262         transitions.
17263
17264 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17265
17266         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
17267         optimization if it would need a GOT var.
17268
17269         * basic.cs: Add tests for constant propagation and switch statements.
17270
17271         * ssa.c: Fix out-of-range constant propagation and switch statements.
17272
17273 2005-02-09    <vargaz@freemail.hu>
17274
17275         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
17276
17277 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
17278
17279         * cpu-amd64.md (load_membase): Fix max length of load_membase.
17280
17281 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17282
17283         * mini.c: update to new signature of mono_class_get_allocation_ftn().
17284
17285 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
17286
17287         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
17288         arithmetic operations.
17289
17290 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
17291
17292         * mini-ppc.c: add a workaround for broken user code that
17293         DllImports vararg functions with non-vararg signatures.
17294
17295 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17296
17297         * mini.c (mono_jit_compile_method_inner): Add detection and a 
17298         meaningfull error message for assemblies written in Managed C++.
17299
17300         * tramp-amd64.c mini-amd64.h: Add support for 
17301         create_trampoline_from_token ().
17302
17303         * aot.c mini-x86.c abcremoval.c: Applied patch from
17304         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17305
17306 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17307
17308         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
17309         which takes a MonoImage/token as parameter instead of a MonoMethod.
17310
17311         * aot.c: Use the new trampoline for initializing vtables.
17312
17313         * aot.c: Add support for ldfld/stfld_remote wrappers.
17314
17315         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
17316         rules for compare <MEM>, IMM.
17317
17318         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
17319
17320         * aot.c: Handle inherited finalizers correctly.
17321
17322 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17323
17324         * inssel.brg (stmt): Add a missing _setup_... ().
17325
17326         * aot.c: Save some parts of the class state to the AOT file and use it
17327         to recompute that state when a class is initialized.
17328
17329         * mini.c: Install AOT hooks into the runtime.
17330
17331         * mini.h: Bump AOT file format version.
17332         
17333         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
17334         Fixes #72148.
17335
17336         * iltests.il: Add new test.
17337
17338 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17339
17340         * mini.c: fix typo.
17341
17342 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
17343
17344         * mini.c: setup the statistical profiler in the thread attach
17345         callback to cope with the new single thread code.
17346
17347 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
17348
17349         * mini-ppc.c: ensure we have enough room for the profiler
17350         calls (fixed bug#72084).
17351
17352 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
17353
17354         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
17355         it.
17356
17357 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17358
17359         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
17360
17361 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17362
17363         * ssapre.c: Fixed an issue with down safety (this allows IronPython
17364         to succesfully execute parrotbench).
17365         * ssapre.h: Likewise.
17366
17367 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17368
17369         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
17370         variable for stores to method arguments (fixes a SSAPRE issue).
17371
17372 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17373
17374         * mini.c: handle value types in dup, fixes gen-112.cs.
17375
17376 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
17377
17378         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
17379         sequence for calls in dynamic methods to avoid thunks.
17380
17381 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17382
17383         * mini.c: correctly remove dynamic methods from the hashtable.
17384
17385 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17386
17387         * driver.c: Disabled SSAPRE until fix the bug that appears
17388         in IronPython's parrotbench.
17389
17390 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
17391
17392         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
17393
17394         * mini.c (mono_method_to_ir): Revert the previous change.
17395         
17396         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
17397         when AOT compiling.
17398
17399         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
17400         mono_jit_info_table_find () etc. when running under valgrind.
17401
17402         * inssel.brg: Fix warnings.
17403
17404         * mini-exceptions.c: Fix warnings.
17405
17406 2005-01-31  Martin Baulig  <martin@ximian.com>
17407
17408         * driver.c (compile_all_methods_thread_main): Don't try to compile
17409         generic methods or anything which has type parameters.
17410
17411 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
17412
17413         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
17414
17415         * TestDriver.cs: Add --verbose flags.
17416
17417         * graph.c ssa.c: Fix 64 bit warnings.
17418         
17419         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
17420         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
17421         Fix 64 bit warnings.
17422
17423         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
17424         variable not spotted by gcc.
17425         
17426         * mini-amd64.c inssel-amd64.brg: Applied patch from  
17427         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
17428         X86_COMPARE_MEMBASE opcodes.
17429
17430         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
17431
17432 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
17433
17434         * *: MonoMethod->signature might be NULL now. You *MUST* use
17435         mono_method_signature.
17436
17437 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17438
17439         * driver.c (compile_all_methods_thread_main): Compile the methods
17440         without invoking cctors.
17441
17442 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17443
17444         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
17445         * basic-calls.cs: test for the above.
17446
17447 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17448
17449         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
17450         MonoJitInfo changes.
17451
17452 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
17453
17454         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
17455         eagerly if it contains dynamic methods.
17456         
17457         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
17458
17459         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
17460         trace, it is now computed by an icall from trace_ips.
17461         
17462         * mini-exceptions.c: Fix a warning.
17463
17464 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17465
17466         * mini-exceptions.c: don't bother getting stack trace info if
17467         it's not going to be used.
17468
17469 2005-01-27  Raja R Harinath  <rharinath@novell.com>
17470
17471         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
17472         ssapre-mini-ops.h.
17473
17474 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
17475
17476         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
17477
17478         * aot.c: Avoid calling mono_method_get_header () if not needed.
17479
17480         * mini.h: Bump AOT file format version.
17481         
17482         * mini.c (mono_emit_native_call): Allocate a GOT var here.
17483
17484         * mini.c (mono_print_tree): Print more info for calls.
17485
17486 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
17487
17488         * declsec.h: Remove warning by adding missing include for marshal.h
17489
17490 2005-01-26  Martin Baulig  <martin@ximian.com>
17491
17492         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
17493         `ip' twice.
17494
17495 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
17496
17497         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
17498         flags.
17499
17500         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
17501
17502         * aot.c (mono_compile_assembly): Fix a warning.
17503
17504 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
17505
17506         * declsec.c: Look for security attributes on the original MonoMethod 
17507         (and not the wrapped one). This fix permissions on icalls.
17508
17509 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17510
17511         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17512
17513         * mini.c (mono_allocate_stack_slots): Add a fixme.
17514
17515         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17516
17517 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17518
17519         * inssel.brg: optimize casts of sealed types (more
17520         optimizations waiting for fixes in remoting).
17521
17522 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17523
17524         * inssel.brg (stmt): Add another dummy rule.
17525
17526         * driver.c: Fix warnings.
17527
17528         * driver.c (mono_main): If running under valgrind, instruct glib to use
17529         the system allocation functions so valgrind can track the memory
17530         allocated by the g_... functions.
17531
17532         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
17533
17534         * mini-ops.h: Add OP_DUMMY_STORE opcode.
17535
17536         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
17537
17538         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
17539         variables in try regions.
17540
17541         * mini.c (mini_method_compile): Don't disable optimizations on large
17542         methods when AOT compiling.
17543
17544         * mini.c (mono_allocate_stack_slots): New arch independent method to 
17545         allocate stack slots. Not yet used.
17546
17547 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
17548
17549         * debug-mini.c (mono_debug_close_method): Plug some leaks.
17550
17551 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
17552
17553         * mini-ppc.c: make the branch info relative as the code
17554         buffer can be reallocated.
17555
17556 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
17557
17558         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
17559         * driver.c: Removed the AOT/security restriction. Now initialize the
17560         security manager (in metadata) if --security is used.
17561         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
17562         rather than the pointer to declarative security, when AOT is used.
17563
17564 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
17565
17566         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
17567         basic blocks, reduced intrinsic exception throwing code size.
17568
17569 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
17570
17571         * driver.c (mini_usage): Reorder the usage screen.
17572
17573 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
17574
17575         * mini.c (mono_resolve_patch_target): Fix warning.
17576
17577 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
17578
17579         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
17580         previous patch.
17581
17582         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17583
17584         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
17585         breaks the amd64 build.
17586
17587         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
17588         register allocation. Fixes #71454.
17589
17590         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17591
17592         * arrays.cs: Add new regression test.   
17593
17594 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17595
17596         * ssapre.c: Turned usage of snprintf to GString.
17597         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
17598         (I left it on by mistake in my previous commit).
17599
17600 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
17601
17602         * mini.c, cfold.c, basic-calls.cs: preserve side effects
17603         on cond branch optimization (fixes bug# 71515).
17604
17605 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17606
17607         * abcremoval.c: Fixed bug 71062.
17608         * abcremoval.h: Likewise.
17609
17610 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17611
17612         * mini.c: Added a new functionality to optimize_branches, the removal
17613         of useless basic blocks, and fixed some problem in the removal of
17614         critical edges; some utility functions added for both purposes.
17615         * ssapre.c: Added complex expression support, and fixed bug 70637.
17616         * ssapre.h: Likewise.
17617         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
17618         enabled in SSAPRE.
17619         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
17620         * driver.c: Re-enabled SSAPRE.
17621
17622 2005-01-19  Martin Baulig  <martin@ximian.com>
17623
17624         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
17625         the result of mono_get_method_constrained().
17626
17627 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
17628
17629         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
17630         manager.
17631
17632 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
17633
17634         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
17635         be detected.  Fixes #59296.
17636
17637 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17638
17639         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
17640         which can happen. Fixes #71361.
17641
17642 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17643
17644         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
17645         manager.
17646
17647 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17648
17649         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
17650         appdomain-unload.exe to fail.
17651         
17652         * mini.c: Fix some memory leaks.
17653
17654 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
17655
17656         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
17657         Fixed bug and sped up some codepaths.
17658
17659 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17660
17661         * mini.c: Fix some memory leaks.
17662
17663         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
17664         conversion.
17665
17666         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
17667
17668         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
17669         #71320.
17670
17671         * iltests.il: Add regression test for #71320.
17672
17673 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
17674
17675         * mini.c (mono_codegen): Fix installation of profiler hooks.
17676
17677         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
17678
17679 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17680
17681         * mini.h, mini.c, cfold.c: optimize access to enum
17682         readonly fields, too. Eval conditional branches if possible
17683         to perform unreachable code removal in more cases.
17684
17685 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
17686
17687         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
17688
17689         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
17690         code manager.
17691
17692         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
17693         WinXP DEP. Fixes #71244.
17694
17695 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
17696
17697         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
17698
17699 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
17700
17701         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
17702
17703 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
17704
17705         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
17706         changes.
17707
17708         * mini.h: Bump AOT version.
17709
17710         * mini.h (MonoCompile): Change exvar to a hash table.
17711
17712         * mini.c: Allocate a separate exvar for each handler block.
17713
17714         * mini.c: Get rid of the computation of filter_lengths, its not needed.
17715
17716         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
17717         ex var with the pending exception and only throw if the two are equal.
17718         Fixes #68552.
17719         
17720         * exceptions.cs: Add tests for rethrow and nested catch clauses.
17721
17722         * mini-x86.c: Fix warnings.
17723
17724         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
17725         used by all the ports now.
17726
17727         * aot.c: Add write-symbols and save-temps options.
17728
17729 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17730
17731         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
17732
17733 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
17734
17735         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
17736         operations.
17737
17738         * tramp-s390.c: Check vtable slot belongs to the domain.
17739
17740         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
17741         as per other platforms.
17742
17743         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
17744
17745 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
17746
17747         * driver.c: we don't run the Main() code in a subthread anymore.
17748
17749 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
17750
17751         * mini.c: added experimental rtc support in the statistical
17752         profiler: if the user has the permission, more accurate statistics
17753         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
17754         The MONO_RTC value must be restricted to what the linux rtc allows:
17755         power of two from 64 to 8192 Hz.
17756
17757 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17758
17759         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
17760
17761 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
17762
17763         * mini-ppc.c: better icache flush for smp.
17764
17765 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
17766
17767         * mini-amd64.c (emit_move_return_value): Fix memory leak.
17768
17769         * mini-x86.c (get_call_info): Add the get_call_info () code from the
17770         amd64 port, not yet used.
17771
17772 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17773
17774         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
17775         a struct type.
17776
17777 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
17778
17779         * driver.c: Added --security option to activate the security manager.
17780         Right now this will allow code generation for declarative demands and
17781         is disabled when AOT is specified.
17782         * mini.c: Add code generation for declarative security demands.
17783         * mini.h: Add mono_use_security_manager as an extern gboolean.
17784
17785 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17786
17787         * aot.c (mono_compile_assembly): Speed up compilation a bit by
17788         emitting more dense assembly code.
17789
17790         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
17791         exception throwing stuff.
17792
17793 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
17794
17795         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
17796         dead code.
17797
17798         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
17799         left in by mistake.
17800
17801         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
17802         fixed.
17803
17804         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
17805
17806         * tramp-*.c: Only patch vtable slots if the object is in the current
17807         domain. Fixes appdomain-unload.exe.
17808
17809         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
17810         
17811         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
17812         x86 branch.
17813
17814 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17815
17816         * mini.c (reverse_branch_op): New helper function.
17817
17818         * mini.c (optimize_branches): Run the new optimization only on 
17819         platforms which support it. Also reverse all kinds of branches.
17820
17821         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
17822
17823         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
17824         a throw statement.
17825
17826         * mini.c (optimize_branches): Reverse not-equals branches if the false
17827         bblock is a throw. This happens a lot of time with argument checking in
17828         corlib.
17829
17830         * mini.c (mono_codegen): Add support for placing basic blocks after
17831         the function epilogue.
17832
17833         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
17834         function epilogue.
17835         
17836 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
17837
17838         * mini.c (setup_stat_profiler): Only set this up if the platform
17839         supports ITIMER_PROF.
17840
17841 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17842
17843         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
17844         previous patch.
17845
17846         * inssel.brg: Fix a warning.
17847
17848 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
17849
17850         * mini.c: added support for statistical profiler 
17851         (run with: --profile=default:stat).
17852
17853 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
17854
17855         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
17856
17857         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
17858
17859         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
17860         related to global registers from the amd64 port.
17861
17862 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
17863
17864         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
17865
17866         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
17867         with global registers.
17868         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
17869
17870         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
17871
17872 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
17873
17874         * debug-mini.c (encode_value): Fix off-by-one.
17875
17876         * aot.c (encode_value): Likewise.
17877
17878         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
17879
17880 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
17881
17882         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
17883         AOT.
17884
17885         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
17886         
17887         * aot.c (emit_method_info): Increase size of temp buffer.
17888
17889         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
17890         the AOT case.
17891
17892 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
17893
17894         * aot.c (emit_method_info): Fix build.
17895         
17896         * aot.c: Further rework of the AOT file format to reduce the size of
17897         the method info data.
17898
17899         * mini.h: Bump AOT file format version.
17900
17901 2004-12-27  Martin Baulig  <martin@ximian.com>
17902
17903         * mini.c (mini_get_method): New static method; call
17904         mono_get_method_full() and mono_get_inflated_method().
17905         (mono_method_to_ir): Use mini_get_method() instead of
17906         mono_get_method_full(). 
17907
17908 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
17909
17910         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
17911
17912 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
17913
17914         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
17915
17916         * inssel-amd64.brg: Add some optimization rules.
17917
17918 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
17919
17920         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
17921         standard not GC'd stuff is fine.
17922
17923 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
17924
17925         * aot.c: Rework the AOT file format to get rid of most of the global
17926         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
17927
17928         * mini.h: Bump AOT file format version.
17929         
17930 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
17931
17932         * mini.h: Bump AOT file format version.
17933
17934         * aot.c (mono_aot_is_got_entry): New function to determine if an 
17935         address is inside a GOT.
17936
17937         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
17938
17939         * cpu-pentium.md: Increase the maximum size of some instructions which
17940         might involve a got access.
17941         
17942         * mini.c (get_method_from_ip): Another debug helper function.
17943
17944         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
17945         when got var accesses are created during the decompose phase.
17946
17947         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
17948
17949         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
17950         argument mini_compile_method and to MonoCompile, and use this to
17951         determine whenever a given method is compiled for AOT. This allows the
17952         other methods compiled during AOT compilation to be free of AOT stuff,
17953         so the backends does not need to add special support for them by
17954         creating a fake GOT etc.
17955
17956         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
17957         longer needed.
17958
17959 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17960
17961         * mini.c (mono_method_to_ir): It turns out that some of the
17962         x-appdomain wrappers are lax with types, so just ignore this for
17963         all wrappers.
17964
17965         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
17966         at the vtable->klass. If it is non-shared code we can just use the
17967         vtable.
17968
17969 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
17970
17971         * mini-ppc.c: access MonoDomain from tls, too.
17972
17973 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
17974
17975         * declsec.c: Removed unused variable (and related warning ;-)
17976
17977 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17978
17979         * iltests.il: New test for LDELEMA on an array of ref types.
17980
17981         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
17982         all ldelema's on reftypes.
17983         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
17984         it was the wrong place to put it.
17985
17986         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
17987         register to pop to make this cleaner, at the request of Paolo.
17988
17989 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
17990
17991         * mini-ops.h (OP_GETHASHCODE): New op.
17992
17993         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
17994
17995         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
17996         operation.
17997
17998         For a microbenchmark, this reduces the cost of Hashtable.get_Item
17999         by 25%.
18000         
18001         * mini-x86.c (mono_arch_output_basic_block): Rather than
18002
18003         add ebp, 4
18004
18005         Emit
18006
18007         pop edx
18008
18009         The first is 3 bytes while the second is 1. This saves 36 kb on
18010         mscorlib, quite a big saving. When bootstraping mcs, I was able to
18011         see a small boost because of icache locality.
18012
18013         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
18014
18015 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
18016
18017         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
18018         started code sharing with the generic code.
18019
18020 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
18021
18022         * mini-ppc.c, cpu-g4.md: added code for direct access to
18023         tls data slots.
18024
18025 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
18026
18027         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
18028          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
18029         to OP_TLS_GET.
18030
18031 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18032
18033         * declsec.c|h: Added functions to cache the declarative stack modifiers
18034         in MonoJitInfo and to create a security frame from a MonoJitInfo 
18035         structure.
18036         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
18037         created. Register internal calls for System.Security.SecurityFrame::
18038         _GetSecurityFrame and _GetSecurityStack.
18039         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
18040         the definitions for the new stack walk/callback mechanism.
18041         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
18042         first security frame for LinkDemands and InheritanceDemands) and
18043         GetSecurityStack for Demands. Both use the new mono_walk_stack code
18044         from lupus.
18045         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
18046         walk initialization (lupus).
18047
18048 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18049
18050         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
18051         idiom.
18052         (handle_loaded_temps): Do not create a temporary variable for
18053         things that we know are temps. They will never be modified.
18054         (mono_spill_call): Set MONO_INST_IS_TEMP
18055         (mono_emulate_opcode): ditto
18056         (emit_tree): ditto
18057         (mono_method_to_ir.CEE_DUP): ditto
18058
18059 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
18060
18061         * mini.c (type_to_eval_stack_type): Make this handle the void type
18062         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
18063         (emit_tree): use ip_in_bb to special case some common idioms
18064         Update all callers to pass in the IP.
18065         (mono_method_to_ir): Make CEE_CALL* do the above as well.
18066
18067         This gives us a nice 2% speedup in mcs bootstrap.
18068
18069         * mini-x86.c (peephole_pass): Peephole pass to make
18070         mov  [foo], eax
18071         push [foo]
18072
18073         into
18074
18075         mov [foo], eax
18076         push eax
18077
18078         * mini.c (ip_in_bb): new method.
18079         (mono_method_to_ir): use this method rather than doing the hash
18080         lookup ourselves.
18081
18082         * linear-scan.c (mono_linear_scan): When expiring actives, you
18083         don't need to keep around variables that expire on this
18084         instruction. This makes it so that:
18085              a = b + 1
18086         will turn into:
18087              store (ebx add (ebx, 1))
18088         which will become
18089              add ebx, 1
18090
18091 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
18092
18093         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
18094         combination to avoid doing two copies. Fix up problems with previous
18095         patch.
18096
18097         * mini.c: Fix 64 bit warnings.
18098
18099         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
18100
18101 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
18102
18103         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
18104         changes from the x86 code.
18105
18106         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
18107
18108 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18109
18110         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
18111         throwing code to reduce its size, unify the AOT and non-aot code and 
18112         get rid of relocations in the AOT case.
18113
18114         * mini-x86.h mini.c exceptions-x86.c 
18115         (mono_arch_get_throw_corlib_exception): New arch specific function to 
18116         raise corlib exceptions which doesn't require relocations in the 
18117         caller.
18118
18119         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
18120
18121 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18122
18123         * mini.c (mono_emit_method_call): Only allocate the got var when it is
18124         needed.
18125
18126         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
18127         in the AOT case.
18128
18129 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18130
18131         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
18132         with add function when used from Inc/dec atomic 
18133         functions. Re-enabled optimization on x86.
18134         * mini-ops.h: renamed atomic_add functions to
18135         allow _add to match the Interlocked::Add and
18136         _add_next to match Interlocked::Inc/Dec.
18137
18138 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
18139
18140         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
18141         linking of BBs to the end BB, and enabled SSAPRE also with
18142         consprop and copyprop (which was prevented by that bug).
18143
18144 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18145
18146         * mini-x86.c: disabling the Interlocked optimizing code. 
18147
18148 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18149
18150         * aot.c (load_aot_module): Move reading of got_addr after the AOT
18151         file version check.
18152         
18153 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18154
18155         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
18156         interlocked optimization due lack of support on x86, rewrote 
18157         exchange to take into account that base may be in eax.
18158         
18159         xsp works again; activated Interlocked optimizing code.
18160         
18161 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18162
18163         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
18164
18165 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
18166
18167         * mini-ops.h: Add new opcodes.
18168
18169         * mini.h: Add new patch types. Add got_var to MonoCompile.
18170
18171         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
18172         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
18173         make it work with all kinds of patchable code.
18174
18175         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
18176         address of the GOT, and referencing entries in the GOT.
18177
18178         * mini.c: Add code to load the GOT address if needed by an opcode.
18179
18180         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
18181         independent AOT code on the x86 using an elf-style Global Offset Table.
18182
18183 2004-12-14  Raja R Harinath  <rharinath@novell.com>
18184
18185         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
18186
18187 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18188
18189         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
18190         when running xsp.
18191
18192 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
18193
18194         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
18195         of Interlocked:Increment/Decrement/Add as inline ops.
18196         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
18197
18198 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
18199
18200         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
18201         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
18202
18203 2004-12-12  Duncan Mak  <duncan@ximian.com>
18204
18205         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
18206         again. `patch_info->table_size' is no longer valid after Zoltan's
18207         commit #37636.
18208
18209 2004-12-12  Martin Baulig  <martin@ximian.com>
18210
18211         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
18212         if we are the "real" method, ie. not an inlined method inside it.
18213
18214 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
18215
18216         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
18217         before we look in the special fields table. This fixes
18218         ../tests/thread-static-init.cs.
18219
18220 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18221
18222         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
18223         for Array get_Rank and get_Length. Fixes bug #70465.
18224
18225 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
18226
18227         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
18228         separate structure to reduce the size of MonoJumpInfo.
18229
18230 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
18231
18232         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
18233
18234 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
18235
18236         * mini.c (mini_get_inst_for_method): Changed to allow ports
18237         to return a MonoInst instead of opcode 
18238         (renamed mini_get_opcode_for_method to better reflect the new functionality)
18239         
18240         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
18241         Allow ports to return a created MonoInst instead of op-code, will enable
18242         new optimizations.
18243         (renamed mini_get_opcode_for_method to better reflected the functionality)
18244
18245 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
18246
18247         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
18248
18249 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18250
18251         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
18252         Fixes #69985.
18253
18254 2004-12-08  Martin Baulig  <martin@ximian.com>
18255
18256         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
18257         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
18258
18259 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18260
18261         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
18262         correctly.
18263
18264         * exceptions.cs: Disable some tests which depend on properties of x86 fp
18265         arithmetic.
18266
18267 2004-12-08  Raja R Harinath  <rharinath@novell.com>
18268
18269         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
18270
18271 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18272
18273         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
18274         bug introduced by the previous patch.
18275
18276 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18277
18278         * mini-ppc.c, objectc.cs: handle large structs passed by value
18279         (fixes bug #69972).
18280
18281 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18282
18283         * mini-ppc.c: OP_ARGLIST implementation from
18284         Geoff Norton  <gnorton@customerdna.com>.
18285
18286 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18287
18288         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
18289         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
18290
18291 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18292
18293         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
18294
18295 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18296
18297         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
18298         support.
18299
18300 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18301
18302         * mini-sparc.c: Zero out localled-ed memory.
18303
18304         * iltests.il: Add tests for zeroing out localloc-ed memory.
18305
18306 2004-12-04  Martin Baulig  <martin@ximian.com>
18307
18308         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
18309         mono_method_get_signature_full().       
18310
18311 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
18312
18313         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
18314         and some utility functions (always for SSAPRE), integrated SSAPRE.
18315         * mini.h: Likewise.
18316         * driver.c: Added ssapre option.
18317         * ssa.c: Small fix on OP_ARG handling.
18318         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
18319         * Makefile.am: Likewise.
18320
18321 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18322
18323         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
18324         now in the xp code.
18325
18326         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
18327         icall.
18328
18329 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18330
18331         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
18332         
18333         * cpu-s390.md : Increase instruction length of oparglist.
18334
18335         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
18336
18337 2004-11-30  Martin Baulig  <martin@ximian.com>
18338
18339         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
18340         virtual generic methods.  We call a special helper_compile_generic_method()
18341         icall to retrieve the method from the vtable, inflate and compile
18342         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
18343
18344         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
18345
18346 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
18347
18348         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
18349
18350 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
18351
18352         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
18353         Fixes #69929.
18354
18355 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
18356
18357         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
18358         platforms with PIC aot.
18359
18360 2004-11-28  Martin Baulig  <martin@ximian.com>
18361
18362         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
18363         Fixes gen-112.cs.
18364
18365 2004-11-28  Martin Baulig  <martin@ximian.com>
18366
18367         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
18368         the result of mono_type_get_underlying_type() to check whether
18369         we're byref.
18370
18371 2004-11-26  Martin Baulig  <martin@ximian.com>
18372
18373         * mini.c
18374         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
18375         in the g_assert().
18376
18377 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
18378
18379         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
18380         the same way as the other arguments so they won't get clobbered.
18381
18382         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
18383         calls through R11 since it is clobbered by the trampoline code.
18384
18385 2004-11-26  Raja R Harinath  <rharinath@novell.com>
18386
18387         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
18388         pick up in-tree mscorlib.dll.
18389
18390 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
18391
18392         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
18393
18394         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
18395         runtime data/code are now stored in a table similar to the GOT in ELF. 
18396         This allows the code itself to be position independent.
18397
18398         * aot.c: Fix loading of referenced assemblies after the lazy assembly
18399         loading changes.
18400
18401         * aot.c: Attach ELF type (object/function) directives to all global
18402         symbols.
18403
18404         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
18405
18406         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
18407
18408         * mini-amd64.h: Turn on PIC AOT code.
18409
18410         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
18411         returning the offset within an OP_AOTCONST instruction where the GOT
18412         offset needs to be added.
18413
18414         * mini.h: Bump AOT file format version.
18415
18416 2004-11-25  Martin Baulig  <martin@ximian.com>
18417
18418         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
18419         uninflated generic methods.
18420
18421 2004-11-25  Martin Baulig  <martin@ximian.com>
18422
18423         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
18424
18425 2004-11-24  Martin Baulig  <martin@ximian.com>
18426
18427         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
18428         original klass (this only applies for generic instances).
18429
18430 2004-11-24  Martin Baulig  <martin@ximian.com>
18431
18432         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
18433         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
18434         that array).
18435
18436 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
18437
18438         * mini.c (mono_method_to_ir): Disable inlining for methods containing
18439         localloc. Fixes #69678.
18440
18441         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
18442         
18443 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
18444
18445         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
18446         used SSE registers on pinvoke calls. Fixes #69774.
18447
18448 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
18449
18450         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
18451         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
18452
18453 2004-11-23  Raja R Harinath  <rharinath@novell.com>
18454
18455         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
18456         Refer directly to the mcs/ tree.
18457
18458 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18459
18460         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
18461         Check if a trampoline for a synchronized method is required. 
18462
18463 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
18464
18465         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
18466         with localloc if needed. Throe arithmetric exception in
18467         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
18468         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
18469
18470 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
18471
18472         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
18473         types before switching on type.  Fixes #69622.
18474
18475 2004-11-19  Raja R Harinath  <rharinath@novell.com>
18476
18477         * Makefile.am (check-local): New.  Integrate into 'make check'.
18478         (MCS,RUNTIME): Define using in-tree mono and mcs.
18479         (ILASM): New.
18480         (%.exe): Use $(ILASM).
18481
18482 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
18483
18484         * mini-ppc.c: adjust initial prolog size (bug #69691).
18485
18486 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
18487
18488         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
18489         #69664.
18490
18491 2004-11-17  Raja R Harinath  <rharinath@novell.com>
18492
18493         * Makefile.am (clean-local): Rename from 'clean'.
18494
18495 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18496
18497         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
18498         to mono_arch_is_int_overflow. 
18499         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
18500         SIGFPE events.
18501
18502 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
18503
18504         * declsec.c|h: New files to support declarative security attributes.
18505         Added function to check if a method has (applicable) security.
18506         * mini.c|h: Add check for declarative security attributes in
18507         mono_method_check_inlining.
18508         * Makefile.am: Added declsec.c and declsec.h to the build.
18509
18510 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18511
18512         * mini.c, mini.h: update to keep dynamic code info per-domain.
18513
18514 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
18515
18516         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
18517         (mini_init): Get rid of it from here too.
18518
18519 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
18520
18521         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
18522         implemented OP_RETHROW (patch by Geoff Norton
18523         <gnorton@customerdna.com>).
18524
18525 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
18526
18527         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
18528         between appdomains.  Fixes appdomain-unload on PPC.
18529
18530 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
18531
18532         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18533         mini-exceptions.c: handle the new wrapper types.
18534         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
18535         token value as a MonoClass* when compiling a wrapper.
18536         mono_jit_create_remoting_trampoline now takes an additional
18537         MonoRemotingTarget parameter.
18538         
18539 2004-11-10  Martin Baulig  <martin@localhost>
18540
18541         * mini.c (mono_method_to_ir): Use `generic_container->context'
18542         rather than creating a new one.
18543
18544 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18545
18546         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
18547
18548         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
18549
18550 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
18551
18552         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
18553         the experimental aot cache stuff.
18554
18555 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18556
18557         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18558         mini-exceptions.c: update to exception clause structure changes.
18559
18560 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18561
18562         * exceptions-x86.c (throw_exception): Fix warnings.
18563
18564         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
18565         for OP_RETHROW.
18566
18567 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18568
18569         * exceptions-sparc.c (get_throw_exception): Really fix this.
18570
18571 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
18572
18573         * tramp-*.c: we no longer support icalls without wrappers, so
18574         a bit of code can be removed here
18575
18576 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
18577
18578         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
18579         patch.
18580
18581         * cpu-sparc.md: Add op_rethrow.
18582
18583         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
18584
18585         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
18586
18587         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
18588         * mini-ops.h: Add OP_RETHROW.
18589
18590         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
18591
18592         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
18593
18594 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
18595         
18596         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
18597         Makes the output much easier to read
18598
18599 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
18600
18601         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
18602         prevents another huge leak when compiling with ssa. Secondly, the
18603         performance of doing this rather than freeing the lists is much
18604         better. GList does a lock every time you allocate a list link,
18605         so that it can use a memory pool. So, it is better to just use
18606         a memory pool of our own.
18607         
18608         * ssa.c, linear-scan.c: replace g_list_remove_link with
18609         g_list_delete.  The remove one does not free the GList, so we were
18610         leaking memory. On -O=all --compile-all with corlib, this cut down
18611         3 MB of allocations.
18612
18613 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
18614
18615         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
18616
18617         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
18618
18619         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
18620         into a new function mono_create_jit_trampoline ().
18621
18622 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
18623
18624         * trace.c (get_spec): Allow tracing of classes without a namespace.
18625
18626 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
18627
18628         * mini.c: Fix pointer overwrite in mini_method_compile.
18629
18630 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
18631
18632         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
18633         The darwin ABI needs some special handling for 1 and 2 byte structs
18634         Lets use lbz/lhz instead of lwz everywhere.
18635         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
18636         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
18637         Use stb/sth for the former, and put the latter always on stack instead of in
18638         argument registers.
18639
18640 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
18641
18642         * trace.c (is_filenamechar): Add '_'.
18643
18644 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
18645
18646         * mini-s390.c: Fix prolog length to allow for large trace requirements.
18647
18648         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
18649
18650 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
18651
18652         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
18653         depends on libmonogc. Fixes #68805.
18654
18655 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
18656
18657         * mini.c (mono_jit_free_method): Provide extra information for
18658         this error.  Currently this leaks, but will be turned into a
18659         developer option in the future.
18660
18661 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
18662
18663         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
18664
18665 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
18666
18667         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
18668         boundary. Fixes reading of PATCH_INFO_R4 and R8.
18669         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
18670
18671 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
18672
18673         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
18674         trampolines for AOT code.
18675
18676 2004-10-22    <vargaz@freemail.hu>
18677
18678         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
18679         constructed types. Fixes #68136.
18680
18681 2004-10-21  Martin Baulig  <martin@ximian.com>
18682
18683         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
18684         if it returns true, unwind the stack to the call instruction.
18685
18686 2004-10-21    <vargaz@freemail.hu>
18687
18688         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
18689
18690         * mini.h: Bump AOT version number.
18691
18692         * objects.cs: Add another test for unbox trampolines.
18693
18694         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
18695         valuetype methods.
18696
18697 2004-10-20    <vargaz@freemail.hu>
18698
18699         * driver.c: Add SHARED to the set of optimizations tested.
18700
18701         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
18702
18703         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
18704         used by CEE_NEWARR.
18705
18706         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
18707
18708 2004-10-20  Martin Baulig  <martin@ximian.com>
18709
18710         * mini-exceptions.c (mono_handle_exception): Call
18711         mono_debugger_handle_exception() to tell the debugger about
18712         catch/finally clauses.
18713
18714 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
18715
18716         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
18717
18718         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
18719         #68447.
18720
18721 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
18722
18723         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
18724         methods as their native size, fixed bug #57543, #57545.
18725         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
18726         This saves a temporary register and mullw call down into 1 (minor perf
18727         increase for cases like sum = sum * 5;  This use to translate into:
18728             li r11,5
18729             mullw r28,r28,r11
18730         It now translates to
18731             mulli r28,r28,5
18732
18733 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
18734
18735         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
18736         #68388.
18737
18738 2004-10-11  Martin Baulig  <martin@ximian.com>
18739
18740         * mini.c (mono_method_to_ir): If we're a generic method, get the
18741         MonoGenericContainer from our MonoMethodNormal and create a
18742         MonoGenericContext from it.
18743
18744 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
18745
18746         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
18747
18748         * basic-long.cs: Add test for checked i8->i2 cast.
18749
18750 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18751
18752         * inssel-ppc.brg: added a couple of speedup rules.
18753
18754 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
18755
18756         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
18757         to speed up rebuilds.
18758
18759 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18760
18761         * mini-s390.c: Minor fix to OP_OR_IMM.
18762
18763 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
18764
18765         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
18766         better. Fixes appdomain-unload.exe on sparc.
18767
18768 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
18769
18770         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
18771         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
18772         see bug 67324.
18773
18774 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
18775
18776         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
18777
18778 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
18779
18780         * mini.c: Always generate a field read/write wrapper for members
18781         of the class MarshalByRefObject since the actual instance could
18782         be a CBO.
18783
18784 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
18785
18786         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
18787
18788 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
18789
18790         * driver.c mini.h trace.c: Move the setting of the main assembly into
18791         a separate function called mono_trace_set_assembly () and call it after
18792         actually loading the main assembly. Fixes #66872.
18793
18794 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
18795
18796         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
18797         using the code manager.
18798
18799 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
18800
18801         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
18802
18803 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
18804
18805         * cpu-amd64.md: Fix bug in previous patch.
18806         
18807         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
18808         #66650.
18809
18810 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
18811
18812         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18813         mini-exceptions.c: updates for changed stack walk interface.
18814
18815 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18816
18817         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
18818
18819 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
18820
18821         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
18822
18823 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
18824
18825         * driver.c (mini_regression_list): Do not call mono_assembly_close 
18826         since assemblies can't be unloaded.
18827         
18828 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18829
18830         * cpu-amd64.md: Fix more instruction lengths.
18831
18832         * cpu-amd64.md: Fix lengths of some instructions.
18833
18834 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
18835
18836         * inssel.brg: Make the array ldelema check aot friendly.
18837
18838 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18839
18840         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
18841
18842         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
18843
18844 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
18845
18846         * mini-x86.c: Fix build.
18847
18848         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
18849         mono_type_get_underlying_type () helper function to simplify code.
18850         
18851 2004-09-09  Martin Baulig  <martin@ximian.com>
18852
18853         * mini-amd64.c: Don't access `type->data.klass' directly, call
18854         mono_class_from_mono_type() instead since the type may be a
18855         generic instance.
18856
18857 2004-09-09  Martin Baulig  <martin@ximian.com>
18858
18859         * mini-amd64.c (get_call_info): Fix support for generic instances.
18860         (add_valuetype): Use mono_class_from_mono_type() to get the class
18861         since we can be a generic instance.
18862
18863 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
18864
18865         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
18866
18867 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18868
18869         * liveness.c: reset spill costs on each scan: bug 62107
18870
18871 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
18872
18873         * exceptions-sparc.c (mono_arch_find_jit_info): remove
18874         unnecessary line that doesn't compile
18875
18876 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
18877
18878         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
18879         trampolines, make them call an error function so people can fix their
18880         code.
18881
18882 2004-09-06  Martin Baulig  <martin@ximian.com>
18883
18884         * mini.c (mono_method_to_ir): When initializing locals, handle a
18885         generic instances like a valuetype if it's a valuetype and like a
18886         class if it's a class.
18887
18888 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18889
18890         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
18891         stack. Fixes #64674.
18892
18893         * exceptions.cs: Add test for unwinding of call arguments.
18894
18895 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
18896
18897         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
18898         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
18899         set the carry/borrow flag). The sparc and s390 implementations
18900         can now use optimized versions (and simplify the code). ppc bugfixes.
18901
18902 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18903
18904         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
18905
18906 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
18907
18908         * inssel-amd64.brg: Remove leftover 32 bit rule.
18909
18910         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
18911
18912 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
18913
18914         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
18915         mono_arch_find_jit_info functions into a new function. Fix a memory
18916         leak.
18917
18918         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
18919         refactored code.
18920         
18921 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18922
18923         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
18924         as well.
18925         
18926         * exceptions.cs: Add array size tests.
18927
18928         * mini.c: Allocate a separate icall wrapper for each arity of 
18929         mono_array_new_va. Fixes #59509.
18930
18931         * exceptions.cs: Add testcase for 64578.
18932
18933         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
18934
18935         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
18936         
18937 2004-09-02  Martin Baulig  <martin@ximian.com>
18938
18939         * mini.c (mono_method_to_ir): When initializing the locals, call
18940         handle_initobj() on the generic instance itself, not its
18941         underlying type.
18942
18943 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18944
18945         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
18946         MonoJitInfo for dynamic methods.
18947
18948         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
18949
18950         * mini.c: Add support for freeing JIT data for dynamic methods.
18951         
18952 2004-09-01  Martin Baulig  <martin@ximian.com>
18953
18954         * mini-x86.c (is_regsize_var): Added support for generic
18955         instances.
18956         (mono_arch_emit_prolog): Make this compile again, use
18957         `x86_push_imm_template (code)'.
18958
18959 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
18960
18961         * mini-x86.c: make all push_imm instructions that get
18962         patched always emit the long form
18963
18964 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
18965
18966         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
18967         in a per-domain hash.
18968
18969         * mini-amd64.c (merge_argument_class_from_type): Handle generic
18970         types.
18971
18972 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
18973
18974         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
18975         work.
18976         
18977         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
18978         work.
18979
18980         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
18981         Beginnings of SSE2 support.
18982
18983         * exceptions.cs: Add more tests for checked int<->uint casts.
18984
18985 2004-08-28  Martin Baulig  <martin@ximian.com>
18986
18987         * mini-x86.c (mono_arch_instrument_epilog): Added support for
18988         generic instances.
18989
18990         * mini.c
18991         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
18992         Handle generic instances recursively.
18993
18994 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18995
18996         * iltests.il: test for conv.u8 on a constant
18997
18998 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
18999
19000         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
19001         LCONV_x4 (shrun_32 (membase)).
19002
19003 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19004
19005         * inssel-x86.brg: c&p rules for push/setret of long
19006
19007 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19008
19009         * inssel-x86.brg: c&p rules for compare (base, regvar) and
19010         compare (regvar, base)
19011
19012         * inssel-x86.brg: more burg love
19013
19014         * inssel.brg: more cleanup
19015
19016         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
19017
19018 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19019
19020         * basic-long.cs, basic-calls.cs: new tests for optimization.
19021
19022 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
19023
19024         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
19025         patch.
19026
19027 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19028
19029         * mini-amd64.c (read_tls_offset_from_method): Add another case.
19030         
19031 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
19032
19033         * inssel.brg (mini_emit_memcpy): use 
19034         NO_UNALIGNED_ACCESS to disable memcpy optimization
19035
19036 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19037
19038         * mini-amd64.c: Handle generic types in various places.
19039
19040         * mini.c (mono_method_to_ir): Handle generic types in init locals.
19041
19042 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
19043
19044         * mini.c (handle_box): Fix warning.
19045
19046         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
19047
19048         * mini-amd64.h: Enable the emit_state optimization.
19049
19050         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
19051
19052         * mini-amd64.c: Add some new 64 bit peephole opts.
19053
19054         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
19055
19056         * cpu-amd64.md: sreg1 of div instructions must be %rax.
19057
19058         * mini-amd64.c: Register allocator fixes.
19059
19060         * mini.c: Add an optimization to emit_state to avoid allocation of new
19061         registers on some platforms.
19062
19063 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
19064
19065         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
19066
19067         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
19068         allocation. Fixes #63085.
19069
19070         * basic-long.cs: Add new regression test.
19071
19072         * mini-amd64.c: Register allocator improvements.
19073
19074 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
19075
19076         * mini-amd64.c (read_tls_offset_from_method): Add another code
19077         sequence.
19078
19079         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
19080         instruction sequence for nullifying class init trampolines.
19081
19082         * objects.cs: Add new regalloc test.
19083
19084         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
19085
19086 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19087
19088         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
19089         
19090         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
19091         arguments.
19092
19093         * driver.c: Fix profiling after TLS changes.
19094         
19095         * driver.c (mono_main): Set mono_stats.enabled if needed.
19096
19097         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
19098         CEE_BOX.
19099
19100 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
19101
19102         * mini-x86.c: use a 1 op rather than a 2 op tls access
19103         instruction -> faster.
19104
19105 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19106
19107         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
19108         x86 backend.
19109
19110 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
19111
19112         * exceptions-sparc.c (throw_exception): fix typo
19113
19114 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19115
19116         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
19117         set tree->dreg correctly with tls. Allow any
19118         register to be used.
19119
19120         * mini-x86.c (read_tls_offset_from_method): add new code
19121         generation pattern seen with GCC.
19122
19123
19124 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19125
19126         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
19127         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19128         exceptions-sparc.c: fix some performance issues in exception
19129         handling and setting of the stack trace for exceptions that were
19130         already thrown.
19131
19132 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19133
19134         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
19135         x86 backend.
19136         
19137         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
19138         registers.
19139
19140 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19141
19142         This patch inlines tls access, when possible.
19143         
19144         * mini.h: new arch functions for TLS intrinsics.
19145         All platforms updated with a stub.
19146
19147         * mini.c: use the new intrinsics
19148
19149         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
19150         arch specific intrinsic for tls variables
19151
19152 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19153
19154         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
19155         under windows.
19156
19157 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19158
19159         * mini.c: thread local allocation
19160
19161 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
19162
19163         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
19164
19165         * Makefile.am: Link against the static version of libmonogc.
19166         
19167         * Makefile.am: Link the static versions of the convenience libraries
19168         into the mono executable.
19169
19170         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
19171
19172 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
19173
19174         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
19175         on integer overflow.
19176
19177         * mini-amd64.c: Reorganize function call code.
19178
19179         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
19180
19181 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19182
19183         * inssel-x86.brg: use xor eax,eax.
19184         
19185         * basic.cs: new tests
19186
19187 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19188
19189         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
19190         in exception throwing code.
19191         
19192 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19193
19194         * inssel-x86.brg: use xor esi,esi.
19195
19196 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19197
19198         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
19199         can trace methods compiled during mini_init () too.
19200
19201         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
19202         CEE_CONV_U4.
19203
19204 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19205
19206         * Makefile.am: static link on x86 (r=zoltan)
19207
19208 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19209
19210         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
19211         code since it causes some programs to fail.
19212
19213 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
19214
19215         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
19216
19217 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19218
19219         * mini.c: ovfops_op_map - add STACK_OBJ case for
19220         CONV_I 
19221         * basic.cs: add test_0_pin_string as test
19222         case for above.
19223
19224 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19225
19226         * Makefile.am: build C# if srcdir != builddir
19227
19228 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19229
19230         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
19231         fall-through blocks.
19232
19233 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19234
19235         * driver.c: enable loop by default again and include abcrem in -O=all.
19236
19237 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
19238
19239         * iltests.il: Add some localloc tests.
19240
19241         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
19242
19243         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
19244         Fixes #62574.
19245
19246         * inssel-amd64.brg: Add some optimizations.
19247
19248         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
19249         for gcc-3.4.
19250
19251         * Makefile.am: Statically link mono against libmono on AMD64.
19252         
19253         * mini-amd64.c inssel-amd64.brg: Optimizations.
19254
19255 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
19256
19257         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
19258
19259         * tramp-amd64.c: Patch calling code in trampolines.
19260
19261 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
19262
19263         * mini-amd64.c: pinvoke struct passing fixes.
19264
19265 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
19266
19267         * mini-sparc.c: redo change, make mono_arch_cpu_init call
19268         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
19269
19270 2004-08-05  Duncan Mak  <duncan@ximian.com>
19271
19272         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
19273         CEE_LDELEM_ANY.
19274
19275 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19276
19277         * mini-amd64.c (emit_move_return_value): Move return value for normal
19278         calls too.
19279
19280 2004-08-05  Martin Baulig  <martin@ximian.com>
19281
19282         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
19283         `type->type'; just modify `type' itself when dealing with enums
19284         and generic instances.
19285         (check_call_signature): Make `simple_type' a `MonoType *'.
19286
19287 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19288
19289         * mini.c: Use OP_PADD to add offsets to addresses.
19290
19291         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
19292
19293 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
19294
19295         * mini-sparc.c (mono_arch_emit_epilog): fix check
19296         for folding last op into restore instruction
19297
19298 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19299
19300         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
19301         helper methods using the code manager.
19302         
19303         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
19304
19305         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
19306
19307 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19308         
19309         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
19310           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
19311
19312         * mini-s390.c: fix tail processing
19313
19314 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
19315
19316         * mini-ppc.c: mul.ovf.un exception name fix.
19317
19318 2004-08-03  Martin Baulig  <martin@ximian.com>
19319
19320         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
19321         instances; before jumping to `handle_enum', also modify `ptype'.
19322
19323 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
19324
19325         * cpu-sparc.md: fcall maximal length too small.
19326
19327 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
19328
19329         * mini-amd64.c mini.h: Add initial support for passing/returning 
19330         structures to/from pinvoked methods.
19331
19332 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
19333
19334         * mini-ppc.c: reg allocator fix.
19335
19336 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
19337
19338         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
19339
19340         * inssel.brg: Optimize memset on 64 bit machines.
19341
19342         * mini-amd64.c: Fix some vararg cases.
19343
19344 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19345
19346         * mini-s390.c: Corrected macro in emit_float_to_int
19347
19348         * s390-abi.cs: Tests to exercise the s390 ABI
19349
19350 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19351
19352         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
19353         caller saved regs.
19354
19355         * basic.cs: Add a test for add.ovf.un.
19356
19357 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
19358
19359         * mini-sparc.c: add case for OP_IDIV_UN
19360
19361 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19362
19363         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
19364         
19365         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
19366
19367 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
19368
19369         * basic.cs: regression tests.
19370
19371         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
19372         regressions.
19373
19374 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19375
19376         * basic.cs: Add a new test.
19377
19378         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
19379         and AOT. Various fixes and optimizations.
19380
19381         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
19382
19383 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
19384
19385         * mini-ppc.c: make sure temp regs are not used for global reg
19386         allocation.
19387
19388 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
19389
19390         * cpu-sparc.md: conv_i8 fix for 64bits
19391
19392         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
19393
19394 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
19395         
19396         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
19397         add opcode for cmp BYTE PTR [eax], imm.
19398
19399         * inssel.brg: Make memcpy and memset takes bases.
19400
19401 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19402
19403         * *-amd64.*: More AMD64 work.
19404         
19405 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19406
19407         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
19408         add a compare-not-equal opcode.
19409         
19410 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
19411
19412         * mini.c: Use mono_init_from_assembly instead of mono_init.
19413         
19414 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19415
19416         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
19417
19418         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
19419
19420         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
19421
19422         * inssel.brg: 64 bit fixes.
19423
19424         * mini.h (MonoCallInst): Add some AMD64 specific data.
19425
19426         * mini.h: Add some OP_P opcodes.
19427
19428 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19429
19430         * basic.cs: tests for 61797 and 61740
19431
19432 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
19433
19434         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
19435         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
19436
19437 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
19438
19439         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
19440
19441         * *-amd64*.*: Ongoing AMD64 work.
19442
19443 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
19444
19445         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
19446
19447         * *-amd64*: Ongoing AMD64 work.
19448
19449         * mini-arch.h: Add AMD64 support.
19450
19451         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
19452
19453         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
19454
19455         * mini-ops.h: Add new opcodes.
19456
19457         * Makefile.am: Add AMD64 support.
19458
19459         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
19460         rules into the inssel-long*.brg files.
19461
19462         * *-amd64.*: Add beginnings of AMD64 backend.
19463
19464 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
19465
19466         * mini.c (print_dfn): commenting out the code that prints
19467         the cil. With -O=deadce, this makes -v -v crash.
19468         
19469         * cpu-pentium.md: make checkthis have a length of 2
19470
19471 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
19472
19473         * mini-sparc.h: fix implementations of __builtin
19474         functions for Sun compiler for V9.
19475
19476 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
19477
19478         * mini.c: use the new stelem.ref wrapper
19479         * exceptions.cs, arrays.cs: new stelem.ref tests
19480
19481 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19482
19483         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
19484         new XSP should work with these changes).
19485
19486 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
19487         
19488         * inssel-{long32,x86,}.brg: trivial optimizations.
19489         
19490 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
19491
19492         * mini.c: load value when emitting box operation in
19493         constrained calls.
19494
19495 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
19496
19497         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
19498         is one byte shorter than cmp DWORD PTR [eax], 0.
19499
19500 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
19501
19502         * inssel-ppc.brg: arguments on the stack are always
19503         relative to the stack pointer (spotted by Neale Ferguson).
19504
19505 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19506
19507         * exceptions-x86.c: delay appending the method name to the trace until
19508         after mono_jit_info_table_find is called, as this gets the real
19509         MonoMethod.
19510
19511 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
19512
19513         * aot.c: register roots
19514
19515 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19516
19517         * aot.c : I could just use PLATFORM_WIN32 flag.
19518
19519 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19520
19521         * aot.c : Reverting the previous fix. This time it broke linux build.
19522
19523 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19524
19525         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
19526
19527 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
19528
19529         * mini.c (handle_stack_args): Remove some more debugging code.
19530         
19531         * mini.c (handle_stack_args): Remove debug output left in by mistake.
19532
19533         * driver.c mini.h aot.c: Allow additional options to be specified with
19534         --aot and pass them to mono_compile_assembly.
19535
19536         * aot.c: Add experimental code to AOT compile all loaded assemblies
19537         on demand and save the code into a cache in the filesystem.
19538
19539         * aot.c: Add support for more wrapper methods.
19540         
19541         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
19542         58863.
19543
19544         * cpu-*.md: Remove removed opcodes.
19545
19546         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
19547         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
19548         related icalls to marshal.c.
19549
19550 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
19551
19552         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
19553
19554         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
19555
19556         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
19557
19558 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
19559         * liveness.c: If liveness is recomputated we need to reset the information
19560         for each variable. This way, if the liveness range has been narrowed
19561         by optimizations that happened after the last computation, we can return
19562         a smaller range.
19563         
19564         For example, if you have
19565         
19566         {
19567                 int i = 0;
19568                 
19569                 // Tons of code that does not affect i
19570                 
19571                 i = foo ();
19572                 ...
19573         }
19574         
19575         i = 0 is dead code and will be removed by SSA. However, when
19576         linear scan gets to the code, i will still appear to be live
19577         throughout the entire block. This prevents good register allocation.
19578
19579 2004-07-06  Martin Baulig  <martin@ximian.com>
19580
19581         * debug-mini.c (mono_debug_init_method): Allow
19582         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
19583         (mono_debug_add_icall_wrapper): New method.
19584
19585         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
19586
19587 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
19588
19589         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
19590         optimization.
19591
19592 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
19593
19594         * aot.c (mono_aot_load_method): Fix loading of debug info.
19595
19596 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19597
19598         * aot.c: Add logging support.
19599
19600 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19601
19602         * mini.h: Add prototype for mono_print_method_from_ip.
19603
19604         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
19605
19606         * inssel.brg: 64 bit fixes.
19607
19608         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
19609         inssel-long32.brg.
19610
19611         * Makefile.am: Add SPARC64 support.
19612
19613 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19614
19615         * aot.c: Fix alignment problems on 32 bit platforms.
19616
19617 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19618
19619         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
19620         SPARC64.
19621
19622         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
19623         problems.
19624
19625         * mini.h: Bump AOT file version. Some 64 bit fixes.
19626
19627 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19628
19629         * inssel-sparc.brg: Add new rule to avoid register moves.
19630
19631         * inssel.brg: Add ldind_to_load_membase helper function.
19632
19633 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
19634
19635         * mini.c: OffsetToStringData intrinsic.
19636         
19637 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19638
19639         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
19640
19641         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
19642         regression tests.
19643
19644         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
19645 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19646
19647         * mini.c: reinstated mono_compile_get_interface_var()
19648         on x86, too, since the change breaks the Gtk# build there as well.
19649
19650 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19651
19652         * driver.c: remove loop from the default optimizations: it seems to
19653         interact badly with some of the other options (see bug #60613).
19654
19655 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
19656
19657         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
19658         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
19659
19660 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
19661
19662         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
19663         vararg-using methods.
19664
19665 2004-06-21  Martin Baulig  <martin@ximian.com>
19666
19667         * mini/mini-exceptions.c
19668         (mono_handle_exception): Added `gpointer original_ip' argument.
19669         After calling mono_unhandled_exception(), call
19670         mono_debugger_unhandled_exception() and if that returns true,
19671         restore the context and return.
19672
19673 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19674
19675         * mini-ppc.c: prefer the use of relative branches so
19676         they won't need to be patched in aot code (patch from Patrick Beard).
19677
19678 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19679
19680         * aot.c: patch from Patrick Beard to make the output assembly
19681         more correct for the MacOSX assembler. Small tweak to
19682         generate sane images on Linux/PPC, too.
19683
19684 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19685
19686         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
19687         case until bug #59509 is fixed (shows up in #60332).
19688
19689 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19690
19691         * mini.c: make sure the needed wrappers are compiled, too, with
19692         precomp.
19693
19694 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
19695
19696         * driver.c: remove NPTL reference in --version output.
19697
19698 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19699
19700         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
19701         generate valid assembly for the Mach-O assembler.
19702
19703 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19704
19705         * driver.c: don't include abcrem in the all optimization specifier
19706         since it slows down jit compilation too much for now.
19707
19708 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
19709
19710         * mini.c: use BIGMUL only if both operands have the same signage.
19711         * iltests.il: Test for bug 60056. (errors related to signage in
19712         BIGMUL).
19713
19714         r=lupus.
19715
19716 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
19717
19718         * mini.c, aot.c: memory leak fixes.
19719
19720 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19721
19722         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
19723
19724 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
19725
19726         * Makefile.am: remove the -static hack completely, it links in
19727         statically glib as well.
19728
19729 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
19730
19731         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
19732         * exceptions.cs: make it compile with new mcs/csc.
19733
19734 2004-06-03 Massimiliano Mantione <massi@ximian.com>
19735         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
19736         and added relevant test case.
19737
19738 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19739
19740         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
19741         regressions in gtk-sharp.
19742
19743 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
19744
19745         * exceptions.cs: New regression tests.
19746
19747         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
19748
19749 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
19750
19751         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
19752
19753 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
19756
19757         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
19758
19759 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
19760
19761         * mini.c (mono_jit_runtime_invoke): Init class in this
19762         method instead of trusting mono_jit_compile_method to
19763         do the work (because wrappers can be in object class)
19764
19765 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
19766
19767         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
19768
19769         * basic-long.cs: New regression test.
19770
19771 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
19772
19773         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
19774         and div/rem checks.
19775
19776 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
19777
19778         * Makefile.am: fix miguel's change to build mono statically against
19779         libmono (track build dependencies).
19780
19781 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19782
19783         * cfold.c: Some glib versions do not have G_MININT32.
19784
19785 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
19786
19787         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
19788         with precision of tan, atan, sin and cos, and implemented related
19789         regressions tests (fixes bug 54467, but one new problem appeared and
19790         is not fixed yet).
19791
19792 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19793
19794         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
19795
19796         * exceptions.cs: Add test for constant folding && division by zero.
19797
19798         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
19799         since driver.c is in libmono too, so the optimization was useless.
19800
19801         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
19802         variable to driver.c so the compiler can emit more efficient code to
19803         access them.
19804
19805 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19806
19807         * Makefile.am: don't distribute generated inssel.[ch] files.
19808
19809 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
19810
19811         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
19812         into the default appdomain. Fixes #58707.
19813
19814         * jit-icalls.c: Remove the broken approximation for truncl, doing
19815         no conversion is better.
19816
19817         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
19818         Fixes #58863.
19819
19820 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19821
19822         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
19823         of the mcrxr instruction which is not available on some processors
19824         even if it's documented to be. Implement add and sub overflow correctly
19825         (still not complete for long unsigned). Speed up icalls a bit.
19826
19827 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
19828
19829         * mini.c (mono_jit_compile_method_with_opt): Make sure that
19830         we run .cctor in the current domain instead of target_domain.
19831         
19832         Fixes bug #58558, .cctor not being called in -O=shared.
19833
19834 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19835
19836         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
19837
19838 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
19839
19840         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
19841         which can be done with an imm8, do it that way.
19842         (mono_arch_output_basic_block): ditto for a jmp
19843         (mono_arch_emit_prolog): Computate maximum offset of a label.
19844
19845 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
19846
19847         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
19848         now tries to allocate prefered physical reg's for virtual
19849         regs. This reduces the number of emited spills/loads with
19850         20-30% on our core assemblies.
19851
19852 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19853
19854         * jit-icalls.c: truncl() is not needed and trunc() is
19855         the correct thing to do anyway (bug #58287).
19856
19857 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
19858
19859         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
19860         if available.
19861
19862 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
19863
19864         * driver.c: enable loop optimizations by default.
19865
19866 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19867
19868         * mini-x86.c: fix calc of max loop size when aligning loops start.
19869
19870 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
19871
19872         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
19873         the stack.
19874
19875 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
19876
19877         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
19878         should set carry.
19879
19880         * basic-long.cs: Add tests for add/subtract of immediates with carry.
19881
19882         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
19883         
19884         * mini.c (inline_method): Allways inline some wrappers even if the cost
19885         is too large. Fixes #58785.
19886
19887         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
19888         
19889 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
19890
19891         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
19892         (crichton@gimp.org). Beginning of support for sparc/linux.
19893
19894         * mini-sparc.c: Optimize retrieval of LMF address.
19895
19896 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
19897
19898         * exceptions-ppc.c:  handle alloca in methods with clauses.
19899
19900 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
19901
19902         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
19903
19904 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
19905
19906         * mini.c: Delegate most of the abort signal work to 
19907           mono_thread_request_interruption, which also handles Stop and Suspend
19908           states.
19909
19910 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
19911
19912         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
19913         supports the save/restore lmf opcodes.
19914
19915 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
19916
19917         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
19918         by gcc-3.4 as well.
19919
19920         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
19921
19922 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19923
19924         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
19925         methods which contain array accesses.
19926
19927         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
19928         boundaries. Fixes #58537.
19929
19930         * iltests.il: Add regression test for #58537.
19931
19932 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19933
19934         * mini-x86.c (mono_arch_local_regalloc): Last part of
19935         fix for bug #58633 (releasing register to early).
19936
19937 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
19938
19939         * basic-long.cs: Add new regression test.
19940
19941 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19942
19943         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
19944         register too early on the chain.
19945
19946 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19947
19948         * mini.c (create_helper_signature): Use a helper function to reduce
19949         the code which needs to be written. Also set the calling convention of
19950         icalls on windows. Fixes #57840.
19951
19952 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19953
19954         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
19955         exceptions-ppc.c: added helper function to get the instruction address
19956         from a signal handler context.
19957
19958 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19959
19960         * helpers.c: use g_get_tmp_dir. Invokes happyness 
19961         from gonzalo.
19962
19963 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19964
19965         * helpers.c: Add new env variable to pass args to objdump.
19966         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
19967
19968 2004-05-17  Radek Doulik  <rodo@ximian.com>
19969
19970         * Makefile.am (common_sources): added abcremoval.h so it get
19971         disted and daily mono packages on go-mono.com will build again
19972
19973 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
19974
19975         * abcremoval.c: Fixed coding style, added copyright header.
19976
19977         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
19978
19979         * mini.h: Added prototype for abc removal main function.
19980
19981         * build_relations_propagation_table.pl: Added copyright header.
19982
19983 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
19984
19985         * basic-long.cs: reg test for complex ceq_long bug.
19986
19987 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
19988
19989         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
19990         reg in long and clob case (bug #58343). Fixed/added comments.
19991
19992 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
19993
19994         * mini.c (mono_jit_runtime_invoke): Follow new convention
19995         of calling the invoke method with an function pointer.
19996
19997 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
19998
19999         * ChangeLog: Fix author of memory leak patch.
20000
20001 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
20002
20003         * Makefile.am: fix make dist as well...
20004
20005
20006 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
20007
20008         * cfold.c: Made so that conversions from pointer to int4 are no-ops
20009         on archs where pointers are 4 bytes long.
20010
20011         * Makefile.am: Added abcremoval.c source file.
20012
20013         * abcremoval.c: Added abcremoval.c.
20014
20015         * abcremoval.h: Added abcremoval.h.
20016
20017         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
20018
20019         * inssel.brg: Enabled bounds check removal.
20020
20021         * mini.c: Added support for abcrem optimization.
20022
20023         * mini.h: Added abcrem optimization label.
20024
20025         * driver.c: Added support for abcrem optimization.
20026
20027         * propagated_relations_table.def: Added propagated_relations_table.def.
20028
20029 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
20030
20031         * mini.c, cfold.c: fix style.
20032
20033 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20034
20035         * mini.c: handle issue with the low-level implementation of
20036         some long opcodes (bug #54209).
20037
20038 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
20039
20040         * basic.cs: test for my new cmov stuff.
20041
20042 2004-05-13      Patrik Torstensson
20043
20044         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
20045         opt and added peephole documentation.
20046
20047 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
20048
20049         * tramp-ppc.c: rewrote the generic trampoline code.
20050
20051 2004-05-11      Patrik Torstensson
20052
20053         * mini-x86.c: optimize long shl/shr asm code (one less branch)
20054
20055 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
20056
20057         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
20058
20059         * mini.h mini.c dominators.c: Applied patch from Derek Woo
20060         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
20061
20062         * mini.c: Add new icalls for AsAny marshalling.
20063
20064 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20065
20066         * tramp-ppc.c, mini-ppc.c: more cleanups.
20067
20068 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20069
20070         * mini.c: no warnings.
20071
20072 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20073
20074         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
20075
20076 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
20077
20078         * mini.c: In the thread abort signal handler, if the thread is in the
20079         process of being stoped, don't throw the Abort exception, just stop the
20080         thread.
20081
20082 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
20083
20084         * tramp-ppc.c: removed old code.
20085
20086 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20087
20088         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
20089         do some simple speed optimizations on ppc.
20090
20091 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20092
20093         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
20094         and large offsets in load/store.
20095
20096 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20097
20098         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
20099         it causes regressions.
20100
20101 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20102
20103         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
20104         support.
20105
20106 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20107
20108         * jit-icalls.c: remove warnings.
20109         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
20110         speedups for unsafe code.
20111
20112 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20113
20114         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
20115
20116 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
20117
20118         * basic-calls.cs: Add new regression test.
20119
20120         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
20121         more portable.
20122
20123         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
20124
20125         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
20126         is no longer used.
20127
20128 2004-05-06      Patrik Torstensson
20129
20130         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
20131         long reg allocation in any reg (not only eax:edx) and implemented 
20132         long shl/shr ops in asm instead of helpers.
20133
20134 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
20135
20136         * mini-sparc.h: Fix warnings.
20137
20138         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
20139         stack.
20140
20141         * mini-exceptions.c (mono_handle_exception): Call the filter in a
20142         separate statement for clarity.
20143
20144         * mini-sparc.c: Update status.
20145
20146 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
20147
20148         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
20149         here.
20150
20151 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20152
20153         * inssel-ppc.brg: another small pre-release workaround:
20154         we don't do overflow detection for long_sub_un.
20155
20156 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20157
20158         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
20159         (also works around a weird ppc bug: 57957).
20160
20161 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
20162
20163         * tramp-ppc.c: trampoline fixes.
20164
20165 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
20166
20167         * mini-ppc.c: fixed typos.
20168
20169 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20170
20171         * mini-ppc.c, exceptions-ppc.c: more code saves registers
20172         at the top of the stack. Fixed typos. Use a frame registers
20173         for all the methods with exception clauses.
20174
20175 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20176
20177         * exceptions-ppc.c: restore fp registers.
20178
20179 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20180
20181         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
20182         order from the stack top (moved the stack room to save the
20183         return value for trace after the param area). Fixed corruption
20184         in restoring registers on unwind.
20185
20186 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20187
20188         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
20189
20190 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20191
20192         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
20193         and prolog/epilog for methods that use it. Allow
20194         enough param area room for varargs methods. Fix miguel's
20195         breakage in exception handling.
20196
20197 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20198
20199         * Makefile.am: run genmdesc only on current arch.
20200
20201 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20202
20203         * exceptions-x86.c:
20204         * mini-x86.h: fix the build on windows.
20205
20206 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
20207
20208         * 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.
20209
20210         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
20211
20212         * mini-exceptions.c: New file.
20213         
20214         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
20215         Move some parts of the x86 exception handling code to an 
20216         arch-independent file so it can be shared with other ports.
20217
20218 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
20219
20220         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
20221
20222 2004-04-26  David Waite  <mass@akuma.org>
20223
20224         * driver.c: remove comma from end of enumeration declaration
20225
20226 2004-04-26  Jackson Harper  <jackson@ximian.com>
20227
20228         * driver.c: parse config file before loading first assembly. This
20229         allows the user gac to be enabled/disabled. 
20230         
20231 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
20232
20233         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
20234         simpler mechanism: we do not care what is encoded initially
20235         (branch absolute or relative), we care about the code and its
20236         target.  I kept the old code for reference for now.
20237
20238         The new code tries first to determine if the jump is anywhere in
20239         the -/+32 absolute meg range, if it succeeds, it encodes using the
20240         absolute branch;  If not, it tried to find something in the
20241         relative range, if not, it uses the handle_thunk code. 
20242
20243 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
20244
20245         * exceptions-ppc.c: use the correct ip register on macosx.
20246
20247 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
20248
20249         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
20250
20251 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
20252
20253         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
20254         Raise exception on integer divide by zero by hand since the hw
20255         doesn't support it. Handle NaNs in FP compares.
20256
20257 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20258
20259         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
20260         code reducing duplication between the platforms and enabled
20261         signal exception handling (on linux for now).
20262
20263 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
20264
20265         * exceptions-ppc.c: more macosx support.
20266
20267 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20268
20269         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
20270
20271 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20272
20273         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
20274
20275 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20276
20277         * iltests.il: more tests.
20278
20279 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20280
20281         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
20282         vars as well.
20283
20284 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20285
20286         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
20287
20288 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20289
20290         * liveness.c: Mark variables as volatile in all basic blocks reachable
20291         from exception clauses.
20292
20293 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
20294
20295         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
20296         inlining.
20297
20298 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20299
20300         * iltests.il, basic.cs: more tests for regalloc.
20301
20302 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20303
20304         * iltests.il: Some tests for register allocation modifications
20305         I have locally.
20306
20307 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
20308
20309         * exceptions.cs: Add regression test for bug #56782.
20310
20311         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
20312         original stack trace if an exception is rethrown. Fixes #56782. Oh,
20313         the beauty of fixing the same thing in 5 different files...
20314
20315 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
20316
20317         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
20318         methods.
20319
20320 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
20321
20322         * mini.c: Add support for STRWLPARRAY marshalling convention.
20323
20324 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20325
20326         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
20327         to init the context to setup the regs pointer).
20328
20329 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20330
20331         * exceptions-ppc.c: more exceptions work.
20332
20333 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20334
20335         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
20336         not allowed.
20337
20338 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20339
20340         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
20341         can use the memory directly.
20342
20343         * cpu-pentium.md: Update documentation from a post from Zoltan. 
20344
20345         add x86_add_membase, x86_sub_membase, x86_mul_membase
20346
20347 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20348
20349         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
20350         GENERAL_REGS they were also hardcoded for all PPC ports.
20351
20352         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
20353
20354         Remove hard-coded limit for floating point registers, use
20355         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
20356
20357         Notice that in MacOS X calling conventions you can fit a lot more
20358         floating point values in registers, so I should update the PInvoke
20359         test to excercise the passing of floating point values on the
20360         stack (currently broken).
20361         
20362 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
20363
20364         * tramp-ppc.c (create_trampoline_code): Added
20365         JUMP_TRAMPOLINE_SIZE. 
20366         (ppc_magic_trampoline): Follow the pattern from
20367         x86_magic_trampoline: if code is set to zero, return. 
20368         (create_trampoline_code): Always pass MonoMethod to the jump
20369         trampoline, before it was passing a null.
20370         (mono_arch_create_jump_trampoline): Implement the jump stub, could
20371         share the code with mono_arch_create_jit_trampoline. 
20372
20373         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
20374         implemented.
20375         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
20376         implemented.  
20377
20378         * cpu-g4.md: Added length for jmp instruction, the worst case
20379         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
20380         for save_lmf).
20381
20382 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
20383
20384         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
20385
20386 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
20387
20388         * mini.c: Only set bblock->real_offset when adding a new bblock, and
20389         before each IL instruction.
20390
20391         * mini.c (CEE_BOX): Fix warnings.
20392
20393 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20394
20395         * mini.c: removed a few unused vars and extra whitespace.
20396
20397 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
20398
20399         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
20400         checks.
20401         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
20402         index.
20403         (OP_GETCHR): use the above
20404         (CEE_LDELEMA): use the above.
20405
20406         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
20407         version of the generic impl.
20408         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
20409         (CEE_LDELEMA): use the above.
20410
20411 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20412
20413         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
20414         Fixes #56317.
20415
20416         * iltests.il: Added new regression test for #56317.
20417
20418 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20419
20420         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
20421         under NetBSD. Fixes #56450.
20422
20423         * liveness.c (update_gen_kill_set): Fix previous patch.
20424
20425 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20426
20427         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
20428
20429 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
20430
20431         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
20432         ldsfld and ldsflda.
20433
20434         * inssel-sparc.brg: Add more optimizations.
20435
20436         * mini-sparc.c: Replace multiply/divide with shifts if possible.
20437
20438 2004-04-01  Martin Baulig  <martin@ximian.com>
20439
20440         * mini.c (handle_box): New static function; moved the
20441         implementation of CEE_BOX here.
20442         (mono_method_to_ir): Added `constrained_call' variable.
20443         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
20444         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
20445         mono_method_get_constrained() to get the method.
20446
20447 2004-04-01  Martin Baulig  <martin@ximian.com>
20448
20449         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
20450         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
20451         (mono_method_to_ir): We don't need these macros anymore since
20452         mono_class_get_full() already takes care of it. 
20453
20454 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20455
20456         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
20457         use @function (as doesn't accept #function here) and check the return
20458         value of system and stop if fails.
20459
20460 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20461
20462         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
20463
20464 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
20465
20466         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
20467
20468         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
20469
20470         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
20471         #56223.
20472
20473         * basic-long.cs: Add test for negation of Int64.MinValue.
20474
20475 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
20476
20477         * mini-sparc.c: Update status.
20478
20479         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
20480
20481         * exceptions-sparc.c: Fix return value in filters.
20482
20483         * inssel-sparc.brg: Fix register allocation in some rules.
20484
20485 2004-03-28  Martin Baulig  <martin@ximian.com>
20486
20487         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
20488         if neccessary.  
20489
20490 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
20491
20492         * mini-x86.c (mono_arch_patch_code): Fix warnings.
20493         
20494         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
20495         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
20496         remove unused conv_u4 opcode.
20497
20498         * mini-x86.c: Remove valgrind workaround since it slows down things
20499         even when mono is not run under valgrind.
20500
20501 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
20502
20503         * mini-sparc.c: Update status.
20504
20505         * inssel-sparc.brg: Add some optimizations.
20506
20507         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
20508         future delay slot filling. Add support for varargs, tail calls and JMP.
20509
20510         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
20511         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
20512
20513         * inssel.brg: Fix register allocation in OP_ARGLIST.
20514
20515         * inssel.brg: Fix warnings.
20516
20517 2004-03-25  Martin Baulig  <martin@ximian.com>
20518
20519         * mini.c (inflate_generic_field): Removed.
20520         (mini_get_method): Removed, use mono_get_method_full(),
20521         (mini_get_class): Removed, use mono_class_get_full().
20522         (mono_method_to_ir): Pass our generic context to
20523         mono_field_from_token().        
20524
20525 2004-03-25  Martin Baulig  <martin@ximian.com>
20526
20527         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
20528         of a `MonoMethod *'.
20529         (mini_get_method): Take a `MonoGenericContext *' instead
20530         of a `MonoMethod *'.
20531         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
20532         a new local variable called `generic_context' which holds the
20533         current `MonoGenericContext *'; use it to lookup things.
20534
20535 2004-03-24  Martin Baulig  <martin@ximian.com>
20536
20537         * mini.c (mini_get_class): New static method; if we're inside a
20538         generic instance, inflate the class if neccessary.
20539         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
20540
20541 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
20542
20543         * iltests.il: New regression test for #55976.
20544
20545         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
20546         #55976.
20547
20548 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20549
20550         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
20551         output.
20552
20553 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20554
20555         * liveness.c: Consider SSA stores as well as loads when making vars
20556         volatile.
20557
20558         * exceptions.cs: New regression tests for register allocation.
20559         
20560 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
20561
20562         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
20563         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
20564           domain lock only to protect puntual access to data structures.
20565           Added access lock for sighash, jit_icall_hash_name, 
20566           jit_icall_hash_addr and domain->code_mp.
20567
20568 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
20569
20570         * driver.c: Print SIGSEGV handling method.
20571
20572         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
20573
20574         * mini.c (setup_jit_tls_data): Handle case when this is called
20575         multiple times for a thread.
20576
20577         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
20578         is different from fbxx_un. Fixes #54303. Also use constants instead of
20579         magic numbers in a lot of places.
20580
20581 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
20582
20583         * exceptions.cs: Fix cctor test when --regression is used.
20584
20585 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
20586
20587         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
20588         for Linux/ppc.
20589
20590 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20591
20592         * inssel-ppc.brg: fixed register assignments for some rules.
20593
20594 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20595
20596         * exceptions.cs: Add test for exceptions in static constructors.
20597
20598         * mini.c (mono_jit_compile_method_with_out): Move the calling of
20599         static constructors outside the domain lock. Fixes #55720.
20600
20601 2004-03-17  Martin Baulig  <martin@ximian.com>
20602
20603         * mini.c (get_generic_field_inst): Removed, this'll never happen.
20604         (inflate_generic_field): Take the `MonoMethod *' instead of the
20605         `MonoClass *' and added support for generic method.
20606         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
20607         have a `field->parent->gen_params', only inflate the field if it's
20608         an open constructed type.
20609
20610 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20611
20612         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
20613         exception object instead of the preconstructed ones.
20614
20615 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20616
20617         * mini.c: reverted changed to sigsegv_signal_handler commited
20618         accidentally in the previous patch.
20619
20620 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20621
20622         * mini.c:
20623         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
20624         running --aot with an old assembly.
20625
20626 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
20627
20628         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
20629         point values.
20630
20631         * mini-sparc.c: Add support for v9 branches with prediction.
20632
20633 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
20634
20635         * mini.c (mini_init): #warning is GNUC only
20636
20637         * mini-sparc.h: implement __builtin_frame_address
20638         and __builtin_return_address for Sun C compiler
20639
20640 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
20641
20642         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
20643
20644 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
20645
20646         * basic-calls.cs: Add test for unaligned byref long argument passing.
20647
20648         * mini-ops.h: Add sparcv9 compare and branch instructions.
20649
20650         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
20651         v9 instructions if we have a v9 cpu.
20652
20653         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
20654         registers for global allocation.
20655
20656         * exceptions-sparc.c: Fixes.
20657         
20658 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
20659
20660         * liveness.c (mono_analyze_liveness): Optimized version.
20661
20662         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
20663
20664         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
20665         sparc work.
20666
20667         * basic-float.cs basic-calls.cs: New regression tests.
20668
20669 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
20670
20671         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
20672         sigaltstack implementation.
20673
20674         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
20675         
20676         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
20677         stuff if SIGSEGV_ON_ALTSTACK is not defined.
20678
20679 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
20680
20681         * mini.c: Fix warnings.
20682         
20683         * mini.c (mono_resolve_patch_target): New function which contains the
20684         arch independent part of the patching process.
20685
20686         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
20687         patching code to a separate function.
20688
20689 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
20690
20691         * mini.c (add_signal_handler): ifdef out on Windows
20692
20693 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
20694
20695         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
20696         cpu-sparc.md: Add exception handling support + other fixes.
20697
20698         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
20699         typed GC detection in --version.
20700
20701         * basic.cs exceptions.cs: New regression tests.
20702
20703         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
20704         the arch specific code can store data during a compilation.
20705
20706         * mini-ops.h: Add OP_SETFRET.
20707
20708         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
20709         function, register a separate icall for each arity, so the icalls can
20710         get a wrapper.
20711         
20712         * mini.c (mono_print_tree): Print negative offsets in a more readable
20713         form.
20714         
20715         * mini.c: Make signal handling work on sparc.
20716         
20717         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
20718
20719         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
20720
20721         * jit-icalls.c: Emulate truncl by aintl on solaris.
20722
20723         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
20724
20725 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
20726
20727         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
20728
20729 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
20730
20731         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
20732         a MarshalByRef type, inline a method that performs the check, taking into
20733         account that the object can be a proxy. Also implemented tow new opcodes:
20734         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20735         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
20736         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20737
20738 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
20739
20740         * mini-ppc.c: if a relative branch displacement is too big
20741         but it points to and area reachable with an absolute branch, 
20742         avoid the thunks.
20743
20744 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
20745
20746         * mini.c: optimize small copies in cpblk.
20747
20748 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
20749
20750         * basic-calls.cs basic-float.cs: New regression tests.
20751
20752         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
20753         negative offsets from %fp. Implement localloc. Fix local register 
20754         allocation. Fix the case when the this argument needs to be saved to
20755         the stack. Implement some missing opcodes.
20756
20757 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
20758
20759         * mini.c (mini_method_compile): Reenable global regalloc in methods
20760         with exception handlers.
20761
20762         * linear-scan.c (mono_varlist_sort): Fix warning.
20763
20764         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
20765
20766         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
20767         regalloc costs.
20768
20769         * liveness.c: Make all variables uses in exception clauses volatile, to
20770         prevent them from being allocated to registers. Fixes #42136.
20771
20772 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
20773
20774         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
20775         causes regressions.
20776
20777         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
20778         argument to mono_arch_regalloc_cost.
20779
20780         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
20781         precisely.
20782
20783 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
20784
20785         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
20786         Make the cost of allocating a variable to a register arch dependent.
20787
20788         * basic-calls.cs: Fix compilation of tests.
20789         
20790         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
20791         helper function to cut back on the number of #ifdefs needed.
20792
20793         * mini-ppc.c: Fix compilation.
20794
20795         * basic-calls.cs: New regression tests.
20796
20797         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
20798
20799         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
20800         of l0 since that is callee saved.
20801
20802         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
20803         to virtual calls.
20804
20805         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
20806         of delay instruction.
20807
20808         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
20809
20810         * mini.h (MonoCallInst): Add 'virtual' flag.
20811
20812         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
20813
20814 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
20815
20816         * *.cs: New regression tests.
20817
20818         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
20819         work.
20820
20821         * mini.c (mono_runtime_install_handlers): Fix build.
20822
20823         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
20824         'signal_stack_size' members.
20825
20826         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
20827         alternate signal stack.
20828
20829         * exceptions-x86.c: Add stack overflow handling.
20830
20831         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
20832         functions to arch independent code.
20833
20834         * mini.c (mono_print_tree): Print more detailed info for load_membase
20835         opcodes.
20836         
20837 2004-02-23  Martin Baulig  <martin@ximian.com>
20838
20839         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
20840
20841 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20842
20843         * mini-x86.c: fixed reg allocation for div/rem.
20844
20845 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
20846
20847         * driver.c (mono_main): Report some configuratio options on --version.
20848
20849 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
20850
20851         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
20852         low in the address space. Correctly flush memory in thunks where we
20853         output native code.
20854
20855 2004-02-20  Martin Baulig  <martin@ximian.com>
20856
20857         * mini.c (mini_get_method): New static method; inflate all generic
20858         methods and methods in open generic instances.
20859         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
20860         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
20861
20862 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20863
20864         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
20865
20866         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
20867
20868 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
20869
20870         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
20871
20872         * mini-sparc.c (flushi mono_arch_output_basic_block): make
20873         it compile using Sun's compiler.
20874
20875 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20876
20877         * 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.
20878
20879         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
20880
20881 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20882
20883         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
20884         code.
20885         * mini-ppc.c: handle calls outside of the allowed range with thunks
20886         allocated using the code manager.
20887         * tramp-ppc.c: use the code manager to hold generated native code.
20888         Fixed the magic trampoline to just patch vtable entries.
20889
20890 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
20891
20892         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
20893         independent file.
20894
20895 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
20896
20897         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
20898         PPC.
20899
20900         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
20901         if we have a working __thread implementation.
20902
20903         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
20904         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
20905
20906 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
20907
20908         * mini-x86.c: Fix compilation under gcc 2.
20909         
20910 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
20911
20912         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
20913         contains a call to the wrapped function.
20914
20915         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
20916         OP_<CALL>_IMM opcodes, and use them under X86.
20917         
20918         * mini.c (mono_jit_find_compiled_method): Fix warning.
20919
20920         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
20921
20922         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
20923
20924         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
20925         functionality to mini.c.
20926
20927         * mini.c (mono_create_jump_trampoline): New function to create a jump
20928         trampoline. Return a compiled method instead of a trampoline if it
20929         exists. Add a cache for jump trampolines.
20930
20931         * mini.c (mono_jit_find_compiled_method): New function to return a
20932         compiled method if it exists.
20933
20934         * mini-x86.c: Call mono_create_jump_trampoline instead of 
20935         mono_arch_create_jit_trampoline.
20936
20937         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
20938         a jump trampoline. Fixes #52092.
20939         
20940 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
20941
20942         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
20943         which is not up-to-date. Add check_corlib_version () instead.
20944
20945         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
20946         have to call it.
20947         
20948         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
20949         since newer valgrind versions do not need it.
20950
20951         * mini.c (mono_jit_compile_method_with_opt): New helper function to
20952         compile a method with a given set of optimizations.
20953
20954         * mini.c: Compile icall wrappers on-demand instead of at startup.
20955
20956         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
20957         wrapper for an icall.
20958
20959 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
20960
20961         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
20962         #54063.
20963
20964         * iltests.il: Add test for non-empty stack before switch instruction.
20965
20966 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
20967
20968         * mini.c: Add support for new stringbuilder marshalling conventions.
20969
20970         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
20971
20972 2004-02-01  Martin Baulig  <martin@ximian.com>
20973
20974         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
20975         in `ginst->mtype_argv'.
20976
20977 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
20978
20979         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
20980         facilitate grepping.
20981
20982 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
20983
20984         * mini.c: fixed buglet in initobj generic implementation for references.
20985
20986 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
20987
20988         * Makefile.am: make the version script conditional.
20989         * jit-icalls.c: handle missing truncl().
20990
20991 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
20992
20993         * exceptions.cs: Add more tests for double->int conversion.
20994
20995         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
20996         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
20997
20998 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
20999
21000         * driver.c: make --verbose --version emit an error
21001         if the loaded corlib doesn't match the runtime version.
21002
21003 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
21004
21005         * mini-ppc.h: export ppc_patch().
21006         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
21007         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
21008         on par or better than on MacOSX.
21009
21010 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
21011
21012         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
21013         mono_lookup_pinvoke_call.
21014
21015         * mini-x86.c: Under windows, the default pinvoke calling convention is
21016         stdcall. Fixes #52834.
21017
21018         * mini.c (optimize_branches): Add an upper bound to the number of
21019         iterations to prevent infinite loops on strange loops. Fixes #53003.
21020
21021 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21022
21023         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
21024         and ISINST. Fixes #52093.
21025
21026         * objects.cs (test_0_vector_array_cast): New tests.
21027         
21028 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
21029
21030         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
21031         checking in Array.Set ().
21032
21033         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
21034         #52590.
21035
21036         * object.cs (test_0_multi_array_cast): New regression test.
21037
21038 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
21039
21040         * exceptions-ppc.c: fix build on Linux/PPC.
21041
21042 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
21043
21044         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
21045         running under valgrind.
21046         (x86_magic_trampoline): Fix build bustage.
21047
21048         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
21049         negative values as well. This is needed for the encoding of the line number
21050         info, since sometimes the line numbers are not in increasing order.
21051
21052 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
21053
21054         * cpu-pentium.md (localloc): Increase the size of the localloc 
21055         instruction since it is a loop under Win32.
21056
21057         * debug-mini.c (record_line_number): Get rid of unneccesary memory
21058         allocation.
21059
21060 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
21061
21062         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
21063         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
21064         Max Horn (max@quendi.de). Fix file names in comments.
21065
21066 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
21067
21068         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
21069         avoid stack overflow.
21070         (replace_usage): Avoid uninitialized variable warnings.
21071
21072         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
21073         and taking the address of valuetype variables.
21074
21075 2004-01-03  Patrik Torstensson
21076
21077         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
21078         for other purposes than FP later on.
21079
21080 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
21081
21082         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
21083         of tail calls.
21084
21085 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21086
21087         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
21088
21089 2003-12-30  Patrik Torstensson <p@rxc.se>
21090
21091         * mini-x86.h: Decreased number of availiable fp regs.
21092         Solves corner cases with FP spilling.
21093
21094 2003-12-23  Patrik Torstensson <p@rxc.se>
21095
21096         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
21097         for floating point stack tracking / spilling on x86. 
21098         Fixes bug #49012.
21099         
21100         * basic-float.cs: added float mul overflow test.
21101
21102 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
21103
21104         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
21105
21106 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21107
21108         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
21109         supports for cond branches that overflow the immediate
21110         overflow offset. mcs can compile simple programs.
21111
21112 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21113
21114         * exceptions-ppc.c: exception handling support wip:
21115         finally handlers get run on exception.
21116
21117 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
21118
21119         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
21120         profiling.
21121
21122 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21123
21124         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
21125         initial support for stack walking and unwinding.
21126
21127 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
21128
21129         * driver.c (mono_main): Make corlib-out-of-sync message more 
21130         descriptive. Also remove verify_corlib call.
21131
21132 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21133
21134         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
21135         not overlap with other call's arguments, too.
21136
21137 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
21138
21139         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
21140         move to arch-specific code the choice of arch-specific
21141         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
21142         * mini.c: ensure emulation calls will not interleave
21143         with other calls.
21144
21145 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
21146
21147         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
21148         the magic trampoline stack frame is dropped before executing
21149         the new method.
21150
21151 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21152
21153         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
21154         and integer to fp conversions. Added support for overflowing
21155         arguments on the stack. Reserve a couple more registers as temps.
21156         Added support for aot compilation (as output still needs to be
21157         tweaked, though).
21158
21159 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21160
21161         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
21162         Don't overwrite return register in some corner cases.
21163
21164 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
21165
21166         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
21167         static constructors when AOT compiling.
21168
21169         * driver.c (mono_main): Call mono_check_corlib_version.
21170
21171 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21172
21173         * cpu-g4.md, basic.cs: fixed div target register.
21174
21175 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
21176
21177         * mini-ppc.c, basic.cs: shl_imm fix with test.
21178
21179 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21180
21181         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
21182         structures by value. Misc fixes.
21183         * objects.cs: more tests.
21184
21185 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
21186
21187         * mini-ppc.c: lconv.ovf.i implemented.
21188
21189 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21190
21191         * mini.c:
21192         (mini_init): don't error out if someone already called g_thread_init.
21193
21194 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21195
21196         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
21197         to be any type per the spec. Fix abnormal memory usage when
21198         the same object is repeatedly thrown.
21199
21200 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
21201
21202         * mini.c: check for overruns in IL code.
21203
21204 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
21205
21206         * TODO: Add/remove some todo entries.
21207
21208 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
21209
21210         * driver.c (mono_main): Call mono_verify_corlib.
21211
21212 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
21213
21214         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
21215         This has been moved to mini.c
21216         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
21217         type being casted is marshalbyref it could be a proxy, so instead of
21218         emitting the type check code, emit a call to a runtime method that will
21219         perform the check by calling CanCastTo if needed.
21220
21221 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
21222
21223         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
21224         methods with large stack frames under Win32.
21225
21226 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
21227
21228         * Makefile.am: Distribute regression tests.
21229
21230         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
21231         at the end instead of inserting each variable into the sorted list.
21232
21233         * linear-scan.c (mono_varlist_sort): New helper function.
21234         
21235 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21236
21237         * mini.c: ensure arguments and locals are within bounds.
21238
21239 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21240
21241         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
21242         related fixes.
21243
21244 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21245
21246         * mini.c (mono_cprop_copy_values): Fix crash.
21247
21248         * aot.c: Set verbosity back to 0.
21249         
21250 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21251
21252         * regalloc.c: complete memory leak fix by Laurent Morichetti
21253         (l_m@pacbell.net).
21254
21255 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21256
21257         * driver.c (main_thread_handler): Revert the previous patch.
21258
21259         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
21260         under valgrind.
21261
21262         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
21263         memory from the memory pool.
21264
21265         * driver.c (main_thread_handler): Turn on all optimizations when
21266         --aot is used.
21267
21268         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
21269         an array for better performance.
21270
21271         * regalloc.c (mono_regstate_assign): Fix memory leak.
21272
21273         * debug-mini.c (mono_debug_serialize_debug_info): New function to
21274         serialize the debug info.
21275
21276         * debug-mini.c (mono_debug_add_aot_method): New function to load the
21277         debug info from the serialized representation.
21278
21279         * aot.c: Save debug info into the generated file and load it when 
21280         loading a method.
21281
21282         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21283
21284 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21285
21286         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
21287         More FP-related fixes.
21288
21289 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
21290
21291         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
21292         and register allocation buglet. Hello world now runs.
21293
21294 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21295
21296         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
21297         * tramp-ppc.c: fixed class init trampoline.
21298         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
21299
21300 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21301
21302         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
21303         mini.c: more ppc changes/fixes.
21304
21305 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21306
21307         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
21308         Also optimize the case when the arguments are the same in the caller 
21309         and in the callee.
21310
21311         * iltests.il: Add tests for tail calls with valuetype arguments.
21312
21313 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21314
21315         * mini-ppc.c: fixes for struct return type.
21316
21317 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
21318
21319         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
21320         mono_spillvar_offset() to arch-specific code.
21321
21322 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
21323
21324         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
21325
21326 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21327
21328         * exceptions-x86.c: Fix stack space leaks.
21329         
21330         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
21331         registers from the lmf if the method has save_lmf set.
21332
21333 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
21334
21335         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
21336         of icall wrappers into InvokeInDomain, since these are now per-domain.
21337
21338 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
21339
21340         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
21341         make some opcode emulation and intrinsic ops enabled/disabled 
21342         according to the architecture. More fixes.
21343
21344 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
21345
21346         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
21347
21348 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21349
21350         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
21351         arch-specific handling for 'this' and struct return type to
21352         arch-specific code.
21353
21354 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21355
21356         * aot.c: prevent divide by zero error when reporting (it happened with
21357         Accessibility.dll).
21358
21359 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
21360
21361         * mini.h (inst_switch): Remove unused macro.
21362
21363 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21364
21365         * aot.c:
21366         (load_aot_module): free 'info->methods' and 'info' properly. No more
21367         "free(): invalid pointer blah" messages when you have an old aot
21368         compiled assembly.
21369
21370 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
21371
21372         * jit-icalls.c, mini.c: Added support for context static fields.
21373
21374 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21375
21376         * mini.c (mono_method_blittable): Methods which set LastError are not 
21377         blittable either. Fixes #51108.
21378         
21379 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21380
21381         * mini.c: flush icache.
21382         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
21383
21384 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21385
21386         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
21387
21388 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
21389
21390         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
21391         safe on IA32.
21392
21393         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
21394         vararg calls.
21395
21396         * inssel.brg (CEE_MKREFANY): Fix AOT case.
21397
21398 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
21399
21400         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
21401         instruction when the result is discarded.
21402
21403         * iltests.il (test_0_div_regalloc): New regression test.
21404
21405         * arrays.cs: Fix compilation error.
21406
21407 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
21408
21409         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
21410         float rules to inssel-x86.brg: sane architectures with FP registers
21411         don't need to implement these rules.
21412
21413 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21414
21415         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
21416
21417 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21418
21419         * mini.h, inssel-long32.brg: fixed endianess issues in int64
21420         implementation of 32 bit systems.
21421
21422 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21423
21424         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
21425         (Jeroen Zwartepoorte).
21426
21427 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21428
21429         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
21430         the caller and the callee matches.
21431         
21432         * mini.c (mono_method_to_ir): Add comment.
21433
21434         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
21435         signbit is missing on some platforms.
21436
21437 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
21438
21439         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
21440
21441         * mini.c (setup_jit_tls_data): Call the new function.
21442         
21443         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
21444
21445         * mini-x86.c: Add experimental support for fast access to the lmf
21446         structure under NPTL/Linux 2.6.x.
21447
21448 2003-11-06  Martin Baulig  <martin@ximian.com>
21449
21450         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
21451         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
21452         the debugger.
21453
21454 2003-11-02  Martin Baulig  <martin@ximian.com>
21455
21456         * mini.c (inflate_generic_field): New static method.
21457         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
21458         generic instance and the field is declared in a generic type, call
21459         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
21460
21461 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
21462
21463         * mini.h mini.c (mono_method_same_domain): New function to return
21464         whenever the caller and the callee are in the same domain.
21465
21466         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
21467
21468 2003-10-30  Martin Baulig  <martin@ximian.com>
21469
21470         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
21471         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
21472         method parameters.
21473         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
21474         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
21475
21476 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
21477
21478         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
21479         propagation.
21480
21481         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
21482         object here, so it is in the correct appdomain etc.
21483
21484 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
21485
21486         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
21487         already done.
21488         (mono_method_to_ir): Avoid freeing the type created returned from
21489         mono_type_create_from_typespec, since it is put into an internal cache
21490         by the function. Fixes pointer.exe.
21491
21492         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
21493         trampolines for icalls and pinvokes as well. Fixes #33569.
21494
21495 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
21496
21497         * mini.c: Update after appdomain changes.
21498
21499         * mini.c (mono_jit_compile_method_inner): Allways compile native
21500         method wrappers in the root domain, since there can only be one
21501         instance of them, whose address is stored in method->info.
21502
21503 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
21504
21505         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
21506         environment variable. Instead detect automatically whenever running
21507         under valgrind using the magic macro RUNNING_ON_VALGRIND from
21508         valgrind.h.
21509
21510 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
21511
21512         * trace.c, trace.h: New files that implement the new trace option
21513         parsing. 
21514
21515         * driver.c: Document new --trace options.
21516
21517         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
21518         mini-x86.c: Apply:
21519
21520         -       if (mono_jit_trace_calls)
21521         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
21522
21523         * mini.h: prototypes.
21524         
21525 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
21526
21527         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
21528
21529         * mini.c inssel.brg: Implement typedefbyref opcodes.
21530
21531         * mini.c (mono_jit_compile_method): Remove unused local variable.
21532
21533         * mini.c (mono_jit_compile_method_inner): Ditto.
21534         
21535 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
21536
21537         * tramp-x86.c (x86_class_init_trampoline): Fix build.
21538         
21539         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
21540
21541 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
21542
21543         * mini.c (mono_no_aot): Remove unused global variable.
21544
21545         * mini.c: Thread safety fixes.
21546
21547 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
21548
21549         * mini.c (mono_create_class_init_trampoline): Add a lock around
21550         class_init_hash_addr.
21551
21552         * arrays.cs (test_0_newarr_emulation): Add new regression test for
21553         #30073.
21554
21555         * mini.c: Decompose the NEWARR instruction before decomposing its
21556         arguments. Fixes #30073.
21557
21558 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
21559
21560         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
21561         convention.
21562
21563 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
21564
21565         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
21566
21567         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
21568
21569         * driver.c: Add support for compiling icall wrappers to --compile.
21570
21571 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
21572
21573         * inssel.brg: The empty value in class->interface_offsets is -1, not
21574         0. Fixes #49287.
21575
21576 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
21577
21578         * objects.cs: New test for 'is' operator on an array of interfaces.
21579
21580 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21581
21582         * tramp-ppc.c: update trampoline code to support jumps
21583         and class initialization.
21584
21585 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
21586
21587         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
21588
21589         * inssel.brg (OP_UNBOXCAST): Fix #46027.
21590
21591         * inssel.brg (OP_UNBOX): Remove unused rule.
21592
21593         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
21594         region instead of one for each method. Fixes #47813.
21595
21596 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
21597
21598         * exceptions.cs (test_0_nested_finally): New regression test for
21599         nested exception handlers.
21600
21601         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
21602
21603         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
21604
21605         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
21606         inlining.
21607
21608         * mini.c (mono_method_check_inlining): Make the inlining limit 
21609         configurable by an environment variable.
21610         
21611         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
21612
21613         * mini.h: Bump AOT file version.
21614
21615         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
21616         token, store the image along with the token, since the token might not 
21617         refer to the same image as the method containing the relocation, 
21618         because of inlining.
21619
21620 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
21621
21622         * mini.c (mono_precompile_assemblies): New function to compile
21623         all methods in all loaded assemblies.
21624
21625         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
21626
21627         * regalloc.h regalloc.c (MonoRegState): Change the type of 
21628         iassign and fassign to int*, since they can contain large negative
21629         values if the register is spilled. Also added some comments. Fixes
21630         #45817.
21631
21632         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
21633         under Win32. Fixes #42964.
21634
21635 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
21636
21637         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
21638
21639         * aot.c: Added support for AOT compiling methods which contain calls
21640         to wrappers. Currently, only remoting-invoke-with-check wrappers are
21641         handled.
21642         
21643         * driver.c (compile_all_methods): Run the compilation in a thread
21644         managed by mono. Fixes #44023.
21645
21646         * mini.c (mono_codegen): Print full method name in verbose output.
21647
21648         * mini-x86.c (mono_arch_patch_code): Fix warning.
21649         
21650         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
21651         jumps, since the method we are jumping to might be domain-specific.
21652
21653         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
21654
21655 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21656
21657         * inssel.brg: string chars are unsigned.
21658
21659 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
21660
21661         * TODO: New todo item.
21662
21663         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
21664         which calls mono_runtime_class_init and patches the call site to
21665         avoid further calls.
21666         (mono_arch_create_class_init_trampoline): New arch specific function 
21667         to create a class init trampoline.
21668         (create_trampoline_code): Generalized so it can create
21669         class init trampolines as well.
21670
21671         * mini.c (helper_sig_class_init_trampoline): New helper variable.
21672         (mono_create_class_init_trampoline): New function to create and cache
21673         class init trampolines.
21674         (mono_find_class_init_trampoline_by_addr): New function to lookup the
21675         vtable given the address of a class init trampoline. Used by the
21676         patching process.
21677         (mono_codegen): Generate a call to a trampoline instead of
21678         mono_runtime_class_init in LDSFLD[A].
21679         (mono_codegen): Add relocations for the new trampoline.
21680         
21681         * mini.h mini-x86.c aot.c: Added a new relocation type: 
21682         MONO_PATCH_INFO_CLASS_INIT.
21683
21684         * mini.h: Bump AOT version number.
21685
21686         * aot.c: Create a copy of the loaded code instead of using the original
21687         so methods which call each other will be close in memory, improving
21688         cache behaviour.
21689         
21690         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
21691         patch since it breaks the regression tests.
21692         
21693         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
21694         for the register saving instruction sequence since the 
21695         frame_state_for function in glibc 2.3.2 don't seem to detect it.
21696
21697 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
21698
21699         * TODO: Fix todo item && remove another.
21700
21701 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
21702
21703         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
21704         previous checkin.
21705
21706         * aot.c: Moved the check for MONO_LASTAOT into the initialization
21707         function of the module.
21708
21709         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
21710         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
21711         --no-aot command line option.
21712
21713 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
21714
21715         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
21716         by Bernie Solomon (bernard@ugsolutions.com).
21717
21718         * inssel.brg: Refactor the interface offset table related code into
21719         its separate functions and add support for the AOT case.
21720
21721 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
21722
21723         * aot.c (mono_aot_get_method_inner): Fix memory leak.
21724         
21725         * aot.c: Added mono_aot_verbose variable and made all debugging
21726         output depend on the value of this variable.
21727
21728         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
21729         method_label and info_label.
21730
21731         * mini.h mini-x86.c aot.c: Added a new relocation type 
21732         MONO_PATCH_INFO_IID for klass->interface_id.
21733
21734         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
21735         the MonoJitInfo structure.
21736
21737         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
21738         a non-root appdomain in shared mode.
21739
21740 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21741
21742         * aot.c: make aot loader less verbose. Remove free of unused variable.
21743
21744 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
21745
21746         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
21747
21748         * .cvsignore: Added *.dll.
21749
21750         * mini.c (mono_print_tree_nl): New function callable while debugging.
21751
21752         * mini.c (mono_print_code): Export this.
21753
21754         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
21755         patched code.
21756
21757 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
21758
21759         * mini.h (MonoCompile): Added 'jit_info' field.
21760
21761         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
21762         the cfg structure, since it is needed by the AOT compiler.
21763
21764         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21765
21766         * aot.c: A major rewrite. Changes include:
21767         - save exception tables for methods which have them.
21768         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
21769         to g_module_symbol.
21770         - reworked the file format so it is now much smaller and needs
21771         fewer relocation entries.
21772         
21773 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21774
21775         * aot.c (load_aot_module): Fix build bustage on platforms without
21776         Boehm GC.
21777
21778 2003-09-04  Martin Baulig  <martin@ximian.com>
21779
21780         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
21781
21782 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21783
21784         * TODO: Some new optimization ideas.
21785
21786         * aot.c: Move AOT module loading logic here from mono_assembly_open.
21787
21788         * aot.c: Save the optimization flags used to compile the code into
21789         the AOT module.
21790
21791         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
21792         support emitting domain specific code.
21793         
21794         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
21795         no longer domain neutral. It can be made domain neutral by compiling 
21796         with --optimize=shared.
21797
21798         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
21799         between appdomains.
21800
21801         * driver.c mini.h mini.c: New --no-aot debugging option which disables
21802         loading of AOT code.
21803
21804         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
21805         
21806         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
21807         if there is no domain neutrality information.
21808
21809 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
21810
21811         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
21812         format version into the generated library.
21813
21814         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
21815         callee method into the caller since one of them could be shared.
21816
21817         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
21818         system exceptions from AOT code now works.
21819
21820         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
21821         method if it is domain neutral and the callee is not.
21822
21823         * graph.c (cfg_emit_one_loop_level): Fix warning.
21824
21825 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
21826
21827         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
21828         last checkin.
21829
21830 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
21831
21832         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
21833         is needed  by code which is executed before mono_runtime_init ().
21834         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
21835         
21836         * mini.c (mono_thread_abort): Fix warning.
21837         (mono_jit_compile_method): Call static constructor in the AOT case too.
21838
21839         * aot.c (mono_compile_assembly): Fix warning.
21840
21841 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21842
21843         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
21844
21845 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
21846
21847         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
21848
21849         * cpu-pentium.md: Fix the length of call opcodes so they include the
21850         ESP restoring instruction. Fixes #47968.
21851
21852 2003-08-28  Martin Baulig  <martin@ximian.com>
21853
21854         * mini-x86.c (mono_arch_call_opcode): Added support for
21855         MONO_TYPE_GENERICINST.
21856
21857         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
21858
21859 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
21860
21861         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
21862         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
21863
21864         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
21865         metadata_section.
21866
21867 2003-08-26  Martin Baulig  <martin@ximian.com>
21868
21869         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
21870         when reporting an error, set this to the actual error location.
21871         (mono_method_to_ir): Report the correct error location if
21872         get_basic_blocks() returned an error.
21873
21874 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
21875
21876         * mini.c (mono_type_blittable): OBJECT is not blittable.
21877         (mono_method_blittable): Methods which have marshalling descriptors
21878         are not blittable either. Fixes #47842.
21879
21880 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
21881
21882         * driver.c mini.c: Use an environment variable instead of a global 
21883         variable. Also fix the build.
21884
21885         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
21886         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
21887         reporting this. 
21888
21889         * driver.c mini.c: Added --with-valgrind option to turn off some
21890         code which prevents mono from running under valgrind.
21891
21892         * mini.c (mono_emit_call_args): Fixed warning.
21893
21894         * mini.c (mono_emulate_opcode): Fixed warning.
21895
21896 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21897
21898         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
21899         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
21900         regalloc.c, regalloc.h: specify available registers in arch-specific
21901         code and support floats in the regallocator (patch by Laurent Morichetti 
21902         <l_m@pacbell.net>)
21903
21904 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21905
21906         * mini.c: mono_thread_current() can be called only after
21907         mono_runtime_init(): rearrange code to not call it early on.
21908
21909 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21910
21911         * mini.c: allocate jump tables in the code mempools.
21912
21913 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21914
21915         * mini.c, mini.h: make sure per-thread data allocated by the jit is
21916         freed.
21917
21918 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
21919
21920         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
21921         12 to 16.  This fixes bug #47453.
21922
21923
21924 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21925
21926         * mini-ppc.c: fixed indexed load and unsigned compares.
21927
21928 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
21929
21930         * mini.c: reenabled installation of handler for
21931           thread abort signal.
21932
21933 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21934
21935         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
21936         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
21937         until it's fixed and actually useful.
21938
21939 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21940
21941         * inssel-long32.brg: couple more opcodes implemented.
21942
21943 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21944         
21945         * mini-sparc.c: Even more opcodes implemeted.
21946
21947 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
21948
21949         * mini-sparc.c: More opcodes implemented.
21950
21951 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
21952
21953         * mini-sparc.c: More opcodes implemented.
21954
21955 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21956
21957         * inssel-sparc.brg: Add some needed rules.  Direct
21958         copy from PPC.
21959         * Makefile.am: Use inssel-sparc.brg
21960         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
21961         an assert happy for now.
21962
21963 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
21964
21965         * mini-sparc.c: Fixed compile errors.
21966         * exceptions-sparc.c: Same.  We now produce a mono binary 
21967         on sparc-linux.  Yea.
21968
21969 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
21970
21971         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
21972         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
21973         They compile, but do not work.
21974
21975 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21976
21977         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
21978         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
21979         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
21980         (ct@gentoo.org).
21981
21982 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21983
21984         * mini.c: more opcodes implemented and better support for generics.
21985
21986 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
21987
21988         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
21989         * mini.c, mini.h: first cut at generics support: some new instructions 
21990         added and changed the behaviour of some of the existing ones.
21991
21992 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
21993
21994         * mini.c: Removed definition of metadata_shared mutex here.
21995
21996 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
21997
21998         * mini-x86.c: make vararg calls work for instance methods.
21999
22000 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22001
22002         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
22003         returns the arguments in a separte list, now.
22004
22005 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22006
22007         * aot.c, mini.c: updates for array type representation changes.
22008
22009 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
22010
22011         * mini.c: register function to perform jit shutdown.
22012
22013 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22014
22015         * mini.c: use a faster allocator if possible.
22016
22017 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22018
22019         * aot.c: some cleanups and portability changes.
22020
22021 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22022
22023         * mini.c: use faster allocation for CEE_BOX if possible.
22024
22025 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22026
22027         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
22028         Moved inlined mempcy code to its own function so that is can be
22029         reused. Added an inline memset function as well (optimized initobj).
22030         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
22031
22032 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22033
22034         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
22035
22036 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22037
22038         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
22039         arch code can setup the cpu for CLR execution, if needed.
22040         We use it on x86 to set the precision of FP operations.
22041
22042 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22043
22044         * mini.c: disable some optimizations if we can guess they'll cost too
22045         much for a given method.
22046
22047 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22048
22049         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
22050         
22051 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22052         * mini.h mini.c mini-x86.c: Added instruction level coverage 
22053         info collection support.
22054
22055 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22056
22057         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
22058         is now implemented in the profiling API. Get rid of a couple of
22059         unnecessary global variables.
22060
22061 2003-06-15  Nick Drochak <ndrochak@gol.com>
22062
22063         * basic-long.cs: tests for negative values for bigmul, and unsigned.
22064         * cpu-g4.md: add op_bigmul and op_bigmul_un
22065         * cpu_pentium.md: add op_bigmul_un
22066         * inssel-long32.brg: add rule for unsigned bigmul
22067         * mini-ops.h: define OP_BIGMUL_UN
22068         * mini-x86.c: THE BUG: handle (un)signed properly
22069         * mini.c: choose unsigned opcode if needed.
22070         This set of patches fixes bug #44291
22071
22072 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
22073
22074         * mini.c (optimize_branches): improved to handle all kinds of
22075         conditional branches.
22076
22077 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22078
22079         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
22080         don't raise exceptions.
22081
22082 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22083
22084         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
22085         to arch-specific files.
22086
22087 2003-06-09  Martin Baulig  <martin@ximian.com>
22088
22089         * Makefile.am (libs): Added $(LIBGC_LIBS).
22090
22091 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
22092
22093         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
22094         and OP_ATAN (fixes bug#44293).
22095
22096 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
22097
22098         * Makefile.am, mini-x86.c: rename cpu description array to
22099         pentium_desc, since some compilers define the 'pentium' preprocessor
22100         symbol.
22101
22102 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
22103
22104         * mini.c (mini_select_instructions): add explicit branch if the
22105         following block is not the false target of a conditional branch -
22106         we need this with any optimization that reorder or remove bblocks
22107
22108         * mini.c (optimize_branches): bug fixes
22109
22110 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
22111
22112         * mini.c (mono_method_to_ir): inline static readonly fields
22113
22114         * ssa.c (fold_tree): start cfold support for long (very simple
22115         cases only)
22116
22117         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
22118
22119 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22120
22121         * inssel.brg: fixed memcpy (bug #44219).
22122
22123 2003-06-05  Dick Porter  <dick@ximian.com>
22124
22125         * driver.c: Set the glib log levels to not abort if g_message
22126         recurses.
22127
22128         g_set_prgname() has to happen before mini_init() so that the
22129         process handle gets the info.
22130         
22131 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22132
22133         * driver.c: add intrins to the default optimizations to get wider
22134         exposure.
22135
22136 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22137
22138         * mini.h: some large basic blocks will overflow a 16-bit
22139         integers for symbolic registers.
22140
22141 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22142
22143         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
22144         (mono_arch_output_basic_block): fix bug 43499 
22145
22146 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22147
22148         * mini.c: kill duplicated definition of mono_debug_format.
22149
22150 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22151
22152         * mini-x86.c, arrays.cs: fixed register allocation bug.
22153
22154 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22155
22156         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
22157
22158         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
22159
22160 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22161
22162         * mini.c:
22163         (print_method_from_ip): also print source location information if
22164         available.
22165
22166 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
22167
22168         * mini.c (mono_find_block_region): bug fix in region code
22169         (mini_method_compile): enable removing unreachable code again, but
22170         only in methods without exception clauses.
22171
22172 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22173
22174         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
22175         Implemented arglist opcode and handling of TypedReference type.
22176         Fixed x86 call convention when a structure is returned.
22177         Minimal support for calling static vararg methods.
22178
22179 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
22180
22181         * mini.c (mini_method_compile):  always remove unreachable code,
22182         because the code in them may be inconsistent  (access to dead
22183         variables for example).
22184
22185 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22186
22187         * driver.c, debug-mini.c: warning fixes.
22188
22189 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
22190
22191         * Makefile.am, jit.h, mini.h: install header for embedding mono.
22192
22193 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
22194
22195         * mini.c: thread-static fields are registered in mono_class_vtable(),
22196         so ensure the function is called before checking for them.
22197
22198 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
22199
22200         * mini.c (optimize_branches): fix for bug 43586
22201
22202         * jit-icalls.c (mono_llmult_ovf): added an additional check for
22203         overflow (fixes Bug #43639)
22204
22205 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22206
22207         * mini.c, objects.cs: allow the use of stobj for primitive types.
22208
22209 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22210
22211         * mini.c: be less strict about argument checking until we support
22212         running the verifier.
22213
22214 2003-05-27  Nick Drochak <ndrochak@gol.com>
22215
22216         * basic-long.cs: tests for (ulong)int * (ulong)int also
22217         * mini.c: use the same trick for (ulong)int * (ulong)int
22218
22219 2003-05-27  Nick Drochak <ndrochak@gol.com>
22220
22221         * basic-long.cs: add regression test for (long)int * (long)int
22222         * cpu-pentium.md: add op_bigmul specification
22223         * inssel-long32.brg: add OP_BIGMUL rule
22224         * mini-ops.h: add OP_BIGMUL
22225         * mini-x86.c: register allocator: handle case where src1 needs to be
22226         in EAX.
22227         * mini.c: substitute special BIGMUL opcode in the tree for 
22228         (long)int * (long)int
22229
22230 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
22231
22232         * jit-icalls.c: call the type ctor on field access if needed.
22233
22234 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22235
22236         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
22237         to a method (including results of ldelema, bug#43207).
22238
22239 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
22240
22241         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
22242         colors to show exception handler blocks.
22243
22244         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
22245         (fix for pinvoke7.cs).
22246
22247 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22248
22249         * mini.h, mini.c: ensure correct initialization order for types that
22250         require it. Prepare for lazy compilation of jit icall wrappers.
22251         Provide a name for opcode emulation to reduce unneeded mallocing.
22252
22253 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
22254
22255         * mini-x86.c: better register restoring code and profiling
22256         support for tail calls.
22257
22258 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22259
22260         * mini.h, driver.c: prepare for leaf methods optimization.
22261
22262 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22263
22264         * mini.c: get targets of branches before converting a method.
22265
22266 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
22267
22268         * mini.c (optimize_branches): added some experimental code (disbaled) 
22269
22270 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
22271
22272         * mini.c (optimize_branches): fix branch to branch optimization 
22273
22274         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
22275
22276         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
22277
22278         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
22279
22280         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
22281         if needed.
22282
22283 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
22284
22285         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
22286         enable use of interface variables again.
22287
22288         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
22289         I1 to registers because there is no simply way to sign extend 8bit
22290         quantities in caller saved registers on x86.
22291
22292         * inssel-float.brg: set costs of some rules to 2 so
22293         that monobure always select the arch. specific ones if supplied,
22294         regardless of the order we pass the files to monoburg.
22295
22296 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22297
22298         * mini.c, mini-x86.c: since the magic trampoline for jumps
22299         can't patch the code directly, we do it as soon as the
22300         method gets compiled.
22301
22302 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22303
22304         * mini-x86.c, mini.h: introduce a new patching method
22305         to support CEE_JMP and tail calls.
22306         * mini.c: obey tail.call. Don't precompile methods target
22307         of CEE_JMP.
22308         * tramp-x86.c: new trampoline code to handle methods
22309         reached through a jump.
22310
22311 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
22312
22313         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
22314         bit values to registers
22315
22316 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
22317
22318         * mini.c (mono_compile_get_interface_var): share interface
22319         variables if possible.
22320
22321 2003-05-16  Martin Baulig  <martin@ximian.com>
22322
22323         * debug-mini.c (mono_init_debugger): New function to initialize
22324         the debugger.  This is not in the debugger since it needs to
22325         access some of mini's internals.
22326
22327 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22328
22329         * mini.c (mono_method_to_ir): inlining fixes/cleanups
22330
22331 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
22332
22333         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
22334         for value type handling.
22335
22336 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22337
22338         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
22339         (mono_method_check_inlining): enable inlining of all kinds of wrappers
22340
22341 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
22342
22343         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
22344           the constructor through a proxy.
22345
22346 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22347
22348         * jit-icalls.c, inssel.brg: fixes to array element address
22349         calculations.
22350
22351 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
22352
22353         * mini-x86.c (is_regsize_var): allocate pointer to registers
22354
22355 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22356
22357         * driver.c: fixed typo, added intrins to the set of optimizations
22358         tested with regressions.
22359
22360 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
22361
22362         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
22363         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
22364         test case.
22365
22366 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
22367
22368         * inssel.brg: remove some common pop instructions without side effects
22369
22370 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22371
22372         * inssel-x86.brg: fixed thinko in int to double conversions.
22373
22374 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
22375
22376         * mini.c, jit-icalls.c: added runtime thread-static variable support.
22377
22378 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22379
22380         * inssel-long32.brg: two more missing instructions.
22381
22382 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
22383
22384         * mini.c (mono_emit_call_args): set the cil_code for all arguments
22385         if not already set.
22386
22387 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
22388
22389         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
22390         correctly.
22391
22392         * basic-float.cs: Added tests for negative zero.
22393
22394 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22395
22396         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
22397         a couple of missing operations for long casts, with test cases.
22398
22399 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22400
22401         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
22402
22403 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
22404
22405         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
22406         code size estimation.
22407
22408 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
22409
22410         * mini.c (mono_jit_create_remoting_trampoline): make it work with
22411         abstract methods (fix bug 42542)
22412
22413         * aot.c: add ability to handle array types
22414         
22415 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
22416
22417         * mini.c: Call the _specific versions of the object allocation
22418         functions if possible.
22419
22420 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22421
22422         * driver.c: call setlocale ().
22423
22424 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22425
22426         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
22427         windows build.
22428
22429 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
22430
22431         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
22432
22433         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
22434         wrappers (fix bug 42122)
22435
22436 2003-05-04  Martin Baulig  <martin@ximian.com>
22437
22438         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
22439
22440         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
22441         s/mini_set_defaults/mono_set_defaults/g.
22442
22443 2003-05-04  Martin Baulig  <martin@ximian.com>
22444
22445         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
22446
22447 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22448
22449         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
22450         (reported by Don Roberts).
22451
22452 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22453
22454         * mini.c: temporarily work around two bugs for this release.
22455
22456 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22457
22458         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
22459         that contains -export-dynamic and it makes using the ld script
22460         useless.
22461         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
22462
22463 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22464
22465         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
22466         specific cpu.
22467
22468 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22469
22470         * mini.c: make sure leave calls all the needed finally blocks,
22471         even when the target jumps out of multiple exception clauses.
22472
22473 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22474
22475         * ldscript, Makefile.am: add linker script to reduce the number of
22476         exported symbols (should also fix the issues with libwine defining
22477         some of the same symbols in io-layer).
22478
22479 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
22480
22481         * driver.c (mini_main): Avoid assertion when no file name is given on 
22482         the command line.
22483
22484 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
22485
22486         * driver.c: added --version/-V command line option.
22487         Added the inline optimization in the regression tests.
22488
22489 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22490
22491         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
22492         to the type in the method signature (fixes bug#42134).
22493
22494 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
22495
22496         * mini.c: when inlining, check this is not null only when needed (bug #42135).
22497
22498 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
22499
22500         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
22501
22502 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22503
22504         * driver.c: fixed bug #42100.
22505
22506 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
22507
22508         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
22509
22510 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22511
22512         * mini.c: moved most of the code required to do inlining to its own
22513         function so it can be reused. Inline also ctors if appropriate.
22514
22515 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
22516
22517         * Makefile.am: Link with -export-dynamic so shared libs loaded by
22518         the runtime can call mono API functions.
22519
22520 2003-04-27  Martin Baulig  <martin@ximian.com>
22521
22522         * debug-mini.c (mono_debug_init_method): Added
22523         `guint32 breakpoint_id' argument; if the method has a breakpoint,
22524         send a notification to the debugger.
22525
22526         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
22527         running in the Mono Debugger, just pass the breakpoint number to
22528         mono_debug_init_method().
22529
22530         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
22531
22532 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
22533
22534         * mini.c: allow some more unsafe compares.
22535
22536 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22537
22538         * mini-x86.c, Makefile.am: make distcheck works (partially from
22539         a patch by Richard Lee <r.h.lee@attbi.com>).
22540         * regset.c, regset.h: removed, they are unused.
22541
22542 2003-04-25  Dick Porter  <dick@ximian.com>
22543
22544         * driver.c: Usage reports the name as 'mono' not 'mini'
22545         * exceptions-x86.c: Build and run on freebsd
22546
22547 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
22548
22549         * Makefile.am: install the program with the 'mono' name and
22550         the library as libmono instead of mini and libmini.
22551
22552 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22553
22554         * driver.c: provide the APIs for the embedding interface of the old jit.
22555
22556 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
22557
22558         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
22559
22560 2003-04-23  Martin Baulig  <martin@ximian.com>
22561
22562         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
22563
22564         * driver.c: Added `--debug' command line argument to enable
22565         debugging support.
22566
22567 2003-04-23  Martin Baulig  <martin@ximian.com>
22568
22569         * debug.[ch]: Removed.  The code is now in
22570         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
22571
22572         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
22573         last six months.
22574
22575 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
22576
22577         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
22578
22579 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22580
22581         * mini.c:
22582         (mini_cleanup): moved mono_runtime_cleanup call after the call to
22583         mono_domain_finalize.
22584         (mini_method_compile): use mono_method_profile* if the the option is
22585         enabled.
22586
22587 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22588
22589         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22590         methods with their wrapper.
22591
22592         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22593         methods with their wrapper.
22594
22595         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
22596         their wrapper.
22597
22598         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
22599         wrapper.
22600
22601         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
22602         methods.
22603
22604 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
22605
22606         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
22607
22608 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
22609
22610         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
22611         of the mempool. This is slightly faster and uses less memory
22612
22613 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22614
22615         * mini.c: avoid O(n) allocation for variables.
22616
22617 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22618
22619         * mini.c: handle items on the stack after inlining methods.
22620
22621 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22622
22623         * mini.c: make the method->opcode optimization dependent
22624         on MONO_OPT_INSTRINS and do it lazily.
22625
22626 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22627
22628         * driver.c: print overall results at the end of regression run.
22629
22630 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
22631
22632         * inssel.brg: don't overwrite symbolic registers.
22633
22634 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22635
22636         * inssel-x86.brg: fix conversion from long to float.
22637
22638 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
22639
22640         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
22641
22642 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22643
22644         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
22645
22646         * driver.c: Added --print-vtable option as in the old JIT.
22647
22648 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22649
22650         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
22651
22652 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
22653
22654         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
22655
22656 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22657
22658         * mini.c regalloc.c regalloc.h: Fix memory leak.
22659
22660 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
22661
22662         * aot.c (mono_aot_get_method): register all used strings
22663
22664 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22665
22666         * mini.c: always intern strings references with ldstr at compile time.
22667
22668 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22669
22670         * Makefile.am: add BUILT_SOURCES.
22671
22672 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22673
22674         * driver.c: give a better error message when the assembly to execute
22675         doesn't have an entry point.
22676
22677 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
22678
22679         * Makefile.am: added hack for automake
22680
22681         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
22682         correct sematics.
22683
22684         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
22685
22686 22003-04-07  Martin Baulig  <martin@ximian.com>
22687
22688         * Makefile.am: Added Makefile.am.
22689
22690         * debugger-main.c: Removed, this is now in the debugger where it
22691         belongs.
22692
22693         * mini.pc.in: Call this package `mini' for the moment.
22694
22695
22696
22697
22698
22699
22700
22701
22702
22703
22704
22705
22706
22707
22708