2009-11-13 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2
3         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
4
5         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
6         interface calls in LLVM AOT code.
7
8         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
9         is found.
10
11         * mini-llvm.c: Add support for OP_VPHI.
12
13         * objects.cs: Add a test.
14
15 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
16
17         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
18         this is called on the debugger thread.
19
20 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
21
22         * mini-llvm.c: Add soft-float support.
23
24         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
25         FCALL which returns an R4.
26
27         * driver.c (mono_main): Add a missing '\n'.
28
29         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
30         platforms which doesn't support the LLVM IMT trampoline.
31
32 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
33
34         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
35
36         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
37
38         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
39         virtual calls.
40
41         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
42
43 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
44
45         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
46         Instead of emitting a method_order table, sort the contents of the code_offsets
47         table and do a binary search in the sorted table. The previous approach doesn't
48         work with LLVM which emits methods in a arbitrary order.
49
50         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
51         in the .eh_frame section in ELF files.
52
53         * mini.h: Bump corlib file format version.
54
55         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
56
57         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
58         LDMIA->LDM macro name change.
59
60 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
61
62         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
63         x86.
64
65         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
66         SVN.
67
68         * aot-compiler.c: Ditto.
69
70         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
71         &align to mini_type_stack_size_full ().
72
73         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
74
75         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
76
77 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
78
79         * mini-arm.c: Compute the stack space used by arguments using
80         mini_type_stack_size_full ().
81
82 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
83
84         * optflags-def.h: Remove dead TREEPROP optimization.
85
86 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
87
88         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
89
90         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
91
92 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
93
94         * driver.c (mono_jit_parse_options): New public API function to parse options
95         as done by the runtime executable.
96
97         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
98         when handling named arguments.
99
100 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
101
102         * mini-arm.c: Implement support for returning vtypes in registers, fix support
103         for passing small vtypes in registers, make the CallInfo structures more
104         similar to the code on the other platforms.
105
106         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
107         the code in the prolog requires it.
108
109 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
110
111         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
112         (koush@koushikdutta.com).
113
114         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
115         where the thunk memory should be allocated from. Fixes appdomain unloading
116         on arm.
117
118 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
119
120         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
121         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
122
123 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
124
125         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
126         AOT, as it is not implemented yet.
127
128         * mini-x86.c (mono_arch_output_basic_block): Ditto.
129
130 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
131
132         * debugger-agent.c: Fix windows build.
133
134 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
135
136         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
137         after the client connects/disconnects.
138
139         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
140         when an exception of a given type is thrown.
141
142         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
143         only on an uncaught exception.
144
145         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
146
147         * debugger-agent.c: Add a 'launch' option.
148
149 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
150
151         * debugger-agent.c: Add a 'timeout' option.
152
153 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
154
155         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
156         the JDWP agent.
157
158 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
159
160         * debugger-agent.c (set_breakpoint): Emit a log message.
161
162 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
163
164         * mini-arm.c: Fix the arm build.
165
166 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
167
168         * aot-compiler.c: don't leak the value returned from
169         mono_type_full_name().
170
171 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
172
173         * debugger-agent.c: defer including mono-mutex.h until we know the
174         agent is supported.
175
176 2009-11-04 Jonathan Chambers <joncham@gmail.com>
177
178         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
179         of pthreads directly.
180
181         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
182         exception handlers. Pass info argument.
183
184         * mini.h: Adjust signatures of soft debugger functions to pass void*
185         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
186
187         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
188         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
189         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
190         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
191
192         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
193
194         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
195         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
196         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
197         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
198
199         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
200
201         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
202
203         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
204
205         * mono-semaphore.h: Skeleton implementation for Windows.
206
207         Code contributed under MIT/X11 license.
208
209 2009-11-04 Jonathan Chambers <joncham@gmail.com>
210
211         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
212
213         Code contributed under MIT/X11 license.
214
215 2009-11-04 Jonathan Chambers <joncham@gmail.com>
216
217         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
218
219         Code contributed under MIT/X11 license.
220
221 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
222
223         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
224         debug info to 100 because 10 still slows down gdb too much.
225
226         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
227         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
228         them in the wrappers.
229
230 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
231
232         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
233
234         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
235
236         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
237         function mono_aot_get_array_helper_from_wrapper ().
238
239         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
240         array helper methods.
241
242 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
243
244         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
245         the value was loaded from memory.
246
247         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
248         the value was loader from there.
249
250         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
251         without constant swizzle.
252
253 2009-11-02 Jonathan Chambers <joncham@gmail.com>
254
255         * mini-amd64.c: Put soft debugger functions behind a
256         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
257
258         * mini-amd64.h: disable the soft debugger in windows.
259
260         Code contributed under MIT/X11 license.
261
262 2009-11-02 Jonathan Chambers <joncham@gmail.com>
263
264         * mini-x86.c: Put soft debugger functions behind a
265         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
266
267         Code contributed under MIT/X11 license.
268
269 2009-11-02 Jonathan Chambers <joncham@gmail.com>
270
271         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
272         to mono_arch_find_jit_info_ext.
273
274         Code contributed under MIT/X11 license.
275
276 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
277
278         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
279
280         * debugger-agent.c: Add support for filtering events by assemblies.
281
282         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
283         the agent is not enabled.
284
285 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
286
287         * exceptions-x86.c: hopefully last change to fix the windows build.
288         This one courtesy of Jonathan Chambers.
289
290 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
291
292         * debugger-agent.c: remove unused function.
293
294 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
295
296         * debugger-agent.c: add #ifdefs for a few header files.
297         * mini-x86.h: disable the soft debugger in windows.
298         Step 1 of 2 to make this compile on windows with gcc.
299
300 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
301
302         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
303         as it breaks the build.
304
305 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
306
307         Merge the soft debugger branch.
308
309         * debugger-agent.h debugger-agent.c: New files containing the soft
310         mode debugger module.
311
312         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
313         at the appropriate locations.
314
315         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
316         opcode.
317
318         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
319         enable/disable single stepping.
320
321         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
322         which returns all information in a StackFrameInfo structure, and can handle the
323         LMF frames added by the debugger.
324
325         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
326         about an LMF frame.
327
328         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
329         walker function which works on a specific thread and passes a StackFrameInfo
330         structure to its callback.
331
332         * mini.c (mini_init): Initialize the debugger agent.
333
334         * aot-compiler.c aot-runtime.c: Add soft-debug support.
335
336         * mini-ops.h: Add OP_SEQ_POINT opcode.
337
338         * driver.c (mono_main): Add new '--debugger-agent' option for passing
339         arguments to the debugger agent.
340
341 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
342
343         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
344         speed things up.
345
346         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
347
348         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
349
350         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
351
352         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
353         if needed.
354         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
355         sets the IMT argument and makes a virtual call.
356
357         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
358
359 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
360
361         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
362         the windows build.
363
364 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
365
366         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
367         runtime. Fixes #551228.
368
369 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
370
371         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
372
373         * basic.cs: Add a test.
374
375         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
376         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
377         CONSTRAINED. Fixes #550964.
378
379         * generics.cs: Add a test.
380
381 2009-10-28  Mark Probst  <mark.probst@gmail.com>
382
383         * mini-posix.c (add_signal_handler): Use
384         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
385
386 2009-10-28 Jerry Maine <crashfourit@gmail.com>
387
388         Contributed under the terms of the MIT/X11 license by
389         Jerry Maine <crashfourit@gail.com>.
390
391         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
392         sse4a for simd intrinsics.
393
394         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
395         sse4a for simd intrinsics.
396
397 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
398
399         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
400         instead of inst_p1 which is not the same on ILP32 platforms.
401
402 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
403
404         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
405         not the mscorlib one before calling mono_get_lmf_addr.
406
407         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
408         of the ip to the LMF.
409
410         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
411         immediate in the op->op_imm optimization.
412
413         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
414         understand. VTypes now work, but are not abi compliant, as they are
415         split into 4 byte parts instead of 8.
416         (emit_memcpy): Fix the unrolled case to work on the PS3.
417
418         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
419
420         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
421         the default when static linking.
422
423         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
424
425         * aot-compiler.c: Add an autoreg option to automatically register
426         statically linked aot modules using ELF .ctors.
427
428         * genmdesc.pl: Add __ppc64__ to allowed defines.
429
430 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
431
432         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
433         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
434
435 2009-10-24  Mark Probst  <mark.probst@gmail.com>
436
437         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
438
439 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
440
441         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
442         which will contain the domain where the method was found.
443
444         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
445         mini_jit_info_table_find ().
446
447         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
448
449         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
450
451 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
452
453         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
454         set, its not supported yet.
455
456 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
457
458         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
459         iface wrapper is not found.
460         (mono_aot_get_method): Ditto for GetGenericValueImpl.
461
462 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
463
464         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
465         which have a different name.
466
467         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
468         wrappers and Array.GetGenericValueImpl ().
469
470         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
471         because of the change above.
472
473         * generics.cs: Add a test for full aot + generic array ifaces.
474
475 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
476
477         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
478         that hides the previous one.
479
480 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
481
482         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
483         marshalled. Fixes #541623.
484
485 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
486
487         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
488
489 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
490
491         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
492
493 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
494
495         * mini-posix.c (sigprof_signal_handler):
496         Implemented support for building stat call chans in different ways.
497
498 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
499
500         * mini-exceptions.c (mono_find_jit_info):
501         Also check that a jit info has been found (fixes a profiler crash).
502
503 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
504
505         * mini.c (mono_codegen):
506         Call mono_profiler_code_buffer_new with correct code address.
507
508 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
509
510         * driver.c (mono_main): Change the date in the copyright.
511
512 2009-10-14  Mark Probst  <mark.probst@gmail.com>
513
514         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
515         allocator in shared generic code for open classes, because we
516         can't get those classes' vtables.  We need to make managed
517         allocators not depend on the vtable at compile-time to solve this.
518
519 2009-10-13  Martin Baulig  <martin@ximian.com>
520
521         * debug-mini.c (mono_debugger_trampoline_compiled): Add
522         `const guint8 *trampoline' argument; send both the old and the new
523         notification.
524
525 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
526
527         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
528         mono_runtime_capture_context () without calling mono_runtime_invoke ().
529         (can_marshal_struct): Skip structures with auto layout.
530
531         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
532
533 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
534
535         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
536         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
537         a variable to hold the stack slot used by the int<->float conversion opcodes.
538
539         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
540
541 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
542
543         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
544         when using full-aot.
545
546 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
547
548         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
549         each instance of Comparer<T>.
550
551         * generics.cs: Add a new test.
552
553 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
554
555         * driver.c (parse_debug_options): Add a 'gdb' option.
556
557         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
558
559         * image-writer.c: Add support for emitting the image into a memory buffer.
560
561         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
562
563         * aot-compiler.c: Add support for registering debug info with GDB using the
564         new JIT debugging interface in GDB 7.0. It can be turned on by setting
565         MONO_XDEBUG to 'gdb'.
566
567 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
568
569         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
570         gdb mode.
571
572 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
573
574         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
575         can be used to set breakpoints in gdb.
576
577         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
578         segment to an absolute address.
579
580 2009-10-13  Mark Probst  <mark.probst@gmail.com>
581
582         * method-to-ir.c: Use the managed array allocator method if
583         available.
584
585 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
586
587         * aot-compiler.c : Fix the MSVC builds
588
589         Code is contributed under MIT/X11 license.
590
591 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
592
593         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
594         avoid registering 1 symbol file per method with gdb.
595
596 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
597
598         * mini-sparc.c: Fix the handling of enums with base type long.
599
600         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
601
602         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
603         instead of using type->data.klass as the later doesn't work with generics.
604
605 2009-09-25  Mark Probst  <mark.probst@gmail.com>
606
607         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
608         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
609         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
610         works differently now and we don't handle it in the JIT anymore.
611
612         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
613         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
614         the Thread class split.
615
616 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
617
618         * driver.c: Don't run tests with the obsolete treeprop optimization.
619
620         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
621         variable volatile. Fixes #541577.
622
623         * basic-calls.cs: Add a new test.
624
625         * basic-long.cs: Remove tests which are now in basic-calls.cs.
626
627 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
628
629         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
630         work/required with recent iphone sdk versions.
631
632         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
633         structures.
634
635         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
636         in the VCALL decomposition code.
637
638 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
639
640         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
641
642         * basic.cs: Add a test.
643
644         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
645         generic invokes.
646
647         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
648         searches all the domains of the current thread.
649
650         * exceptions-<ARCH>.c: Use it. Fixes #539394.
651
652 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
653
654         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
655         so catching exceptions thrown in the same method works. Fixes exception17.exe.
656
657         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
658         for non-jit trampolines.
659
660         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
661
662         * aot-compiler.c (add_wrappers): Ditto.
663
664         * mini-arm.c: Implement support for passing vtypes and floats, and increase
665         the size of the param area used by dyn_call to 6 which covers the majority of
666         methods.
667
668         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
669
670         * mini-arm.c: Implement support for passing/receiving
671         longs and receiving floats in the dyn_call code.
672
673         * mini-amd64.c: Implement support for receiving vtypes in registers in
674         the dyn_call code.
675
676         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
677         the dyn_call code.
678
679 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
680
681         * mini-arm.c (get_call_info): Return more precise information in
682         ArgInfo->regtype.
683         (dyn_call_supported): Use the information in CallInfo.
684
685         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
686
687         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
688         code.
689
690         * mini-arm.c: Update after the dyn_call api changes.
691
692         * mini.c (mini_create_jit_domain_info): Register a destructor function
693         for the runtime_invoke_hash.
694
695         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
696         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
697         this function.
698         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
699         (dyn_call_supported): Simplify this by using get_call_info ().
700         (mono_arch_dyn_call_free): New destructor function.
701
702         * generics.cs: Remove a printf.
703
704         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
705
706         * mini-arm.c: Add support for enum return values and passing a few arguments
707         on the stack.
708         
709         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
710         dyn invoke.
711
712         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
713
714         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
715         the dynamic invoke wrappers.
716
717         * mini-arm.c: Implement OP_DYN_CALL for arm.
718
719         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
720         supported by the dynamic runtime invoke wrapper.
721
722         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
723         runtime invoke wrapper.
724
725         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
726         if possible when running with full-aot.
727
728         * mini-ops.h: Add OP_DYN_CALL opcode.
729
730         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
731         with dynamic arguments lists similar to libffi.
732
733 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
734
735         * method-to-ir.c: Fix the previous change on 64 bit platforms.
736         
737         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
738         to NEWARR.
739
740         * iltests.il.in: Add a new test.
741         
742 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
743
744         * aot-compiler.c (add_generic_instances): Add more instances of
745         GenericEqualityComparer.
746
747 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
748
749         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
750
751 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
752
753         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
754         comments on some functions that now can fail.
755
756 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
757
758         * Makefile.am: Add Info.plist to EXTRA_DIST
759
760 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
761
762         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
763         static synchronized wrappers. Fixes #539500.
764
765 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
766
767         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
768         properly.
769
770 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
771
772         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
773         lmf before calling filter clauses as well. Fixes #539550.
774
775         * exceptions.cs: Add a test.
776         
777 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
778
779         * aot-compiler.c (add_generic_class): Add instances of
780         Array.GetGenericValueImpl as well.
781
782         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
783         can be tested too.
784
785         * generics.cs: Add a fullaot linq test.
786
787 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
788
789         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
790         reg r1 on arm.
791
792 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
793
794         * mini-trampolines.c (mono_delegate_trampoline) : Call
795           mono_cominterop_get_invoke if the delegate target object
796           is a COM object.
797
798         Code is contributed under MIT/X11 license.
799
800 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
801
802         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
803         internal call is defined outside platform code. Reduce code 
804         duplication with existing [Method|Field]AccessException
805
806 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
807
808         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
809         if the return value is a small struct passed on regs.
810
811 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
812
813         * cpu-arm.md mini-arm.c: Remove unused opcodes.
814
815         * mini-codegen.c: Enable the cpu description validation for arm.
816
817 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
818
819         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
820         test which depends on structs to objects.cs.
821         
822         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
823         require object model related stuff working.
824
825         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
826
827         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
828
829         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
830         against the instruction metadata in mini-ops.h. amd64 only for now.
831
832         * mini-ops.h: Fix some instruction descriptions.
833
834         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
835         unused instructions.
836
837 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
838
839         * exceptions.cs: Add a new test.
840
841 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
842
843         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
844
845 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
846
847         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
848         skip empty phi opcodes.
849         
850         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
851         correctly by zero extending after loads. Skip methods containing calls
852         to the monitor enter/exit trampolines.
853
854         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
855         when calling mono_thread_force_interruption_checkpoint ().
856
857         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
858
859         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
860         64 bit thunks.
861         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
862
863         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
864         bootstrap could run.
865
866 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
867
868         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
869
870 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
871
872         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
873         of the method to
874         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
875         LLVM might be very short.
876
877         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
878         in OP_THROW/RETHROW.
879
880         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
881         alignment on osx.
882
883 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
884
885         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
886         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
887         LLVM might be very short.
888
889 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
890
891         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
892         the alignment for the value of sp.
893
894 2009-09-01  Geoff Norton  <gnorton@novell.com>
895
896         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
897         managed wrappers in full aot.
898
899 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
900
901         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
902
903 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
904
905         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
906
907 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
908
909         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
910
911         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
912         saved info.
913
914         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
915
916         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
917         depend on the info MonoMethodHeader which could be missing in IL stripped
918         assemblies.
919
920 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
921
922         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
923         they are only 4 byte aligned.
924
925 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
926
927         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
928         was done previously, since using SP causes too many problems.
929
930         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
931         frames without a frame pointer works.
932
933         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
934         global register in methods with calls, since the calls can go through
935         a static rgctx trampoline which doesn't save it.
936
937 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
938
939         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
940
941 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
942
943         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
944
945 2009-08-18  Christian Hergert  <chris@dronelabs.com>
946
947         * method-to-ir.c: Fix warnings for uninitialized variables.
948
949 2009-08-18  Christian Hergert  <chris@dronelabs.com>
950
951         * mini-exceptions.c:
952         * aot-compiler.c: Fix printf warnings.
953
954 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
955
956         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
957         Add GetGenericValueImpl<string>.
958         
959         * aot-compiler.c (add_generic_instances): Add instances of
960         GenericEqualityComparer<T> for primitive types. Only emit the array
961         wrappers into the mscorlib image.
962
963 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
964
965         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
966         the methods_loaded array using amodule->info->nmethods.
967
968         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
969         (MONO_AOT_FILE_VERSION): Bump this.
970
971         * aot-compiler.c: Emit more generic instances allowing some parts of linq
972         to work.
973
974         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
975         MonoJitInfo doesn't belong to its methods aot image.
976
977 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
978
979         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
980
981         * mini-arm.c: Fix warnings.
982         
983         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
984
985         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
986         supports it.
987
988 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
989
990         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
991         avoid clobbering IP.
992
993         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
994         hold the trampoline argument, so its initial value is available during
995         debugging.
996
997 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
998
999         * exceptions-arm.c:
1000         * exceptions-hppa.c:
1001         * mini.c:
1002         * exceptions-s390x.c:
1003         * exceptions-mips.c:
1004         * exceptions-ppc.c:
1005         * exceptions-sparc.c:
1006         * exceptions-alpha.c:
1007         * aot-runtime.c:
1008         * mini-trampolines.c:
1009         * exceptions-x86.c:
1010         * exceptions-s390.c: add and use #define's instead of sizeof()
1011         for MonoJitInfo and MonoJitInfoTable.
1012
1013 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1014
1015         * tramp-arm.c:
1016         * tramp-amd64.c:
1017         * tramp-ppc.c:
1018         * tramp-x86.c: use a #define instead of sizeof() for a few
1019         structures that use a zero-length array.
1020
1021 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
1022
1023         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
1024         case when the method is dynamic. Fixes #529238.
1025
1026 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
1029         of asserting when a method is JIT compiled in full-aot mode.
1030
1031 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
1032         
1033         Contributed under the terms of the MIT/X11 license by
1034         Jerry Maine <crashfourit@gail.com>.
1035         
1036         * fixed wrong dates in changelog.
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         * basic-simd.cs: added test for packed double square root.
1044         * cpu-amd64.md: added opcode info for packed double square root.
1045         * cpu-x86.md: added opcode info for packed double square root.
1046         * mini-ops.h: added IR opcode for packed double square root.
1047         * mini-x86.c: added IR to native translation code for packed double square root.
1048         * mini-amd64.c: removed todo for packed double square root.
1049         * simd-intrinsics.c: added method to IR opcode converstion for
1050         packed double square root.
1051
1052 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1053
1054         Contributed under the terms of the MIT/X11 license by
1055         Jerry Maine <crashfourit@gail.com>.
1056
1057         * mini-amd64.c: Added a change to help tell the difference as 
1058         to what perpose the xmm register is being used--mainly to help
1059         with debuging.
1060         * mini-amd64.h: Changed callee regs to use 15 out of 16 
1061         (one used for special cases) xmm registers for both fp
1062         and simd ops. Added define to turn on new feature in the regalloc
1063         that allows fp and simd ops to share the xmm regs happily.
1064         * codegen.c: Added code to detect for which perpose an xmm reg is
1065         being used (fp or simd) and to translate back and forth to the
1066         correct logical reg bank (fp or simd) for 'spill load's.
1067
1068 2009-08-03 Jerry Maine <crashfourit@gmail.com>
1069
1070         Contributed under the terms of the MIT/X11 license by
1071         Jerry Maine <crashfourit@gail.com>.
1072
1073         * basic-simd.cs: Added tests for stressing the regalloc when running with
1074         16 simd regs and when simd and fp ops share the same reg bank.
1075
1076 2009-08-01  Mark Probst  <mark.probst@gmail.com>
1077
1078         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
1079         in shared generic code, we might have to look up the class in the
1080         RGCTX.  If we use the class directly, compute its GC descriptor.
1081
1082 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1083
1084         * mini.c (mono_jit_runtime_invoke): Fix a warning.
1085
1086 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1087
1088         * mini.c (mono_jit_runtime_invoke): Initialize the class and
1089         check for errors. Fixed the case when the class with the Main
1090         method is broken.
1091
1092 2009-07-31 Jerry Maine <crashfourit@gmail.com>
1093
1094         Contributed under the terms of the MIT/X11 license by
1095         Jerry Maine <crashfourit@gail.com>.
1096
1097         * cpu-amd64.md: Fixed simple bug in machine discrition file.
1098
1099 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
1100
1101         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
1102
1103 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
1104
1105         * method-to-ir.c: Fix naming of stelem and ldelem.
1106
1107 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
1108
1109         * driver.c (main_thread_handler): Check that the assembly loaded
1110         matches the filename when doing AOT.
1111
1112 2009-07-30  Mark Probst  <mark.probst@gmail.com>
1113
1114         * mini.c: get_ip_from_sigctx installer has been removed, so don't
1115         call it anymore.
1116
1117         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
1118         utils/mono-sigcontext.h).
1119
1120         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
1121         #ifdef.
1122
1123 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
1124
1125         * mini.c (mono_codegen):
1126         Call profiler hook to keep track of method code buffers.
1127
1128 2009-07-27  Mark Probst  <mark.probst@gmail.com>
1129
1130         * method-to-ir.c: Invoke write barriers for the
1131         Interlocked.(Compare)Exchange JIT intrinsics.
1132
1133 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
1134
1135         * Makefile.am (version.h): Fix issues when built out of tree.
1136         Remove some redundant 'grep's piped through 'sed's.
1137
1138 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1139
1140         This patch is contributed under the terms of the MIT/X11 license
1141
1142         * mini-ppc.c (mono_arch_output_basic_block):
1143         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
1144         for bits 32-47 with signed load/store diplacements for bits
1145         48-63.  Use prefered base/offset order for indexed form.
1146         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
1147         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
1148         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
1149         OP_LOADI2_MEMBASE): Same.
1150         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
1151         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
1152         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
1153         indexed form.
1154         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
1155         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
1156         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
1157         OP_LOADI1_MEMINDEX): Same
1158         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
1159         OP_STORER8_MEMINDEX): Same
1160         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
1161         computations.
1162         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
1163         for bits 32-47 with signed load/store diplacements for bits
1164         48-63.  Use prefered base/offset order for indexed form.
1165
1166 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
1167
1168 This patch is contributed under the terms of the MIT/X11 license
1169
1170         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
1171         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
1172         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
1173         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
1174         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
1175         cfg->stack_usage to avoid size warnings.
1176         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
1177         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
1178         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
1179         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
1180         to convert.
1181         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
1182         after code varible is initialized.
1183         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
1184         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
1185         (mono_arch_emit_epilog): 
1186         Move Use ppc_load32 for cfg->stack_usage to avoid size
1187         warnings.
1188
1189 2009-07-24  Mark Probst  <mark.probst@gmail.com>
1190
1191         * method-to-ir.c: The write barrier doesn't do the store anymore,
1192         so we have always to emit it.  Also, emit the wbarrier after the
1193         store.
1194
1195 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
1196
1197         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
1198         for argument count 3 too.
1199
1200 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
1201
1202         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
1203         the caller handle the exceptions.
1204         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
1205         method. Fixes #524498.
1206
1207 2009-07-22  Geoff Norton  <gnorton@novell.com>
1208
1209         * mini-exceptions.c: Fix build on ia64.
1210
1211 2009-07-22  Mark Probst  <mark.probst@gmail.com>
1212
1213         * mini-exceptions.c (ves_icall_get_frame_info): Use write
1214         barriers.
1215
1216 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
1217
1218         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
1219         code.
1220
1221 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1222
1223         * basic-simd.cs (Main): Pass args to the test driver.
1224
1225 2009-07-20  Geoff Norton  <gnorton@novell.com>
1226
1227         * mini-x86.h: Fix the x86 version guards to use Apple's
1228         properly defined macros.
1229
1230 2009-07-20  Geoff Norton  <gnorton@novell.com>
1231
1232         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
1233         aligned access.
1234
1235 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
1236
1237         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
1238         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
1239         the information which is needed for invokes, so only one locking+hash table
1240         lookup is needed.
1241
1242         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
1243         
1244         * aot-compiler.c (add_generic_instances): Emit instances of 
1245         GenericComparer<T> for primitive types.
1246
1247 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
1248
1249         * mini-posix.c: Fix linux build.
1250
1251 2009-07-19  Geoff Norton  <gnorton@novell.com>
1252
1253         * mini.h: Add prototypes for mono_runtime_syscall_fork and
1254         mono_gdb_render_native_backtraces
1255         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
1256         so we implement the sane semantics to the runtime here
1257         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
1258         so we need to call it differently (mono_gdb_render_native_backtraces)
1259         * mini-posix.c: Move the old semantics from mini.c to the prototypes
1260         here for default implementations.
1261         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
1262         support Apple's weird syscall (SYS_fork) implementation and not busy
1263         loop in abort() on native crashes on OSX anymore.
1264
1265 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
1266
1267         * aot-runtime.c (load_method): Change the handling of the
1268         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
1269         are used.
1270
1271         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
1272
1273 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
1274
1275         * mini.c (mono_patch_info_equal): Revert the last change for now as it
1276         seems to break the aot tests.
1277         
1278         * mini.c (mono_patch_info_equal): Fix the handling of 
1279         MONO_PATCH_INFO_RGCTX_FETCH.
1280
1281 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1282
1283         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
1284
1285         * mini.c (mono_patch_info_hash): Fix the handling of 
1286         MONO_PATCH_INFO_INTERNAL_METHOD.
1287         (mono_patch_info_equal): Ditto.
1288
1289 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
1290
1291         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
1292         in a few places.
1293         
1294         * mini-llvm.c: Add some infrastructure for AOT support.
1295
1296 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1297
1298         * mini-llvm-cpp.c: Update to the latest llvm api.
1299         
1300         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
1301         option to false to prevent llvm from installing signal handlers which
1302         trip up the gc.
1303         
1304 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
1305
1306         * cpu-x86.md:
1307         * cpu-amd64.md: Revert previous change as those instructions
1308         take 2 separate arguments. Remember to read the arch docs more
1309         carefully next time.
1310
1311 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
1312
1313         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
1314
1315 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
1316
1317         * mini-ppc.c: exploit multiple load/store units if available (rest of
1318         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
1319         http://bugzilla.novell.com/show_bug.cgi?id=487846).
1320
1321 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
1322
1323         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
1324         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
1325
1326 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
1327
1328         * cpu-x86.md: Fix missing clobbering from trancendental simd
1329         ops.
1330
1331         * cpu-amd64.md: Same.
1332
1333 2009-07-14 Jerry Maine <crashfourit@gmail.com>
1334
1335         Contributed under the terms of the MIT/X11 license by
1336         Jerry Maine <crashfourit@gail.com>.
1337
1338         * basic-simd.cs: Added tests for single and doulble indexers.
1339
1340         * cpu-amd64.md: Added simd opcode information.
1341
1342         * mini-amd64.c: Added IR to native simd generation code.
1343         Added simd register names and function that returns them.
1344
1345         * mini-amd64.h: Added marcos to turn on simd code compilation in
1346         amd64. Added max simd register count marco. Added caller/callee
1347         register mask marcos. Added marcos to use simd register bank.
1348
1349         * mini.h: Added helper marco for shufling dwords and simple
1350         floats.
1351
1352 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
1353
1354         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
1355
1356         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
1357
1358         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
1359         the length of the native code as well.
1360
1361         * basic-simd.cs: Add a test for #521662.
1362
1363 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
1364
1365         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
1366
1367 2009-07-13  Mark Probst  <mark.probst@gmail.com>
1368
1369         * mini.c: Register function for getting the IP from a signal
1370         context with metadata.
1371
1372 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
1373
1374         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
1375         call a generic class init trampoline if needed. Fixes #519336.
1376
1377         * generics.cs: Add a test.
1378         
1379 2009-07-09  Mark Probst  <mark.probst@gmail.com>
1380
1381         * method-to-ir.c: When doing a call which might be remote from
1382         shared generic code to other shared code with open type arguments,
1383         get the remoting invoke wrapper from the RGCTX and do an indirect
1384         call to it.
1385
1386 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
1387
1388         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
1389         after the unbox trampoline in the full-aot case.
1390
1391 2009-07-02  jonas echterhoff <jonas@unity3d.com>
1392         
1393         * mini.c: Move initialization of jit_mutex before debugger initialization
1394         
1395         to avoid crashes.
1396         
1397         
1398         * Info.plist: added Info.plist and link flag to enable the mono executable
1399         to access other processes. Requires codesigning of the executable to work.
1400         
1401         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
1402         
1403         compile on OS X.
1404         
1405
1406 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
1407
1408         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
1409
1410 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
1411
1412         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
1413         when the generic instance is an instantiation of a subclass of the
1414         methods class. Fixes #517166.
1415
1416 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
1417
1418         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
1419         code.
1420
1421         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
1422         AOTed code.
1423
1424         * CMakeLists.txt: Add minimal support for installation.
1425
1426 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
1427
1428         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
1429         determine whenever a method is directly callable to a separate function.
1430
1431         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
1432         needed ones as a result of the previous change.
1433
1434         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
1435         type of register arrays.
1436
1437         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
1438         type of register arrays.
1439
1440 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
1441         
1442         Contributed under the terms of the MIT/X11 license by
1443         Jerry Maine <crashfourit@gail.com>.
1444
1445         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
1446
1447 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1448
1449         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
1450
1451 2009-06-24  Neale Ferguson <neale@sinenomine.net>
1452
1453         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
1454         dump of structure return value. Fix some formatting.
1455         * cpu-s390x.md: Fix lengths of instruction sequences.
1456         * mini-s390.c: Minor formatting changes.
1457
1458 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
1459
1460         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
1461         Use sigaction on freebsd as well.
1462
1463 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
1464
1465         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
1466         uses #ifdef on it.
1467         
1468         * mini.c (mini_init): Revert a change which breaks cross-compilation.
1469
1470 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1471
1472         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
1473
1474 2009-06-22  Mark Probst  <mark.probst@gmail.com>
1475
1476         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
1477
1478 2009-06-20  Martin Baulig  <martin@ximian.com>
1479
1480         * debug-mini.c
1481         (MonoDebuggerThreadFlags): New enum typedef.
1482         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
1483         (mono_debugger_thread_created): Added `gpointer func' argument;
1484         initialize the new `thread_flags' field.
1485
1486 2009-06-18  Martin Baulig  <martin@ximian.com>
1487
1488         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
1489         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
1490
1491         * debug-debugger.c
1492         (mini_debugger_set_attach_ok): New function; sets the attach-ok
1493         flag in `MONO_DEBUGGER__info.runtime_info'.
1494
1495         * driver.c
1496         (mono_main): Call mini_debugger_set_attach_ok() if generics
1497         sharing is disabled.
1498
1499 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
1500
1501         * aot-compiler.c (add_wrappers): Fix a warning.
1502
1503         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
1504         the ppc load/store macro changes.
1505
1506 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
1507
1508         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
1509
1510         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
1511         not just the got symbol.
1512
1513         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
1514         on ppc.
1515
1516         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
1517         ppc.
1518         
1519         * aot-compiler.c: Remove some fixmes.
1520
1521         * driver.c (mono_main): Print a helpful message when cross-compiling.
1522
1523         * mini.c (mini_init): Disable signal handlers when cross-compiling.
1524
1525         * method-to-ir.c (initialize_array_data): Do the optimization if the
1526         target byte order is little endian, instead of the host byte order.
1527
1528         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
1529         wrappers into the mscorlib image, Emit a unique plt symbol for each
1530         image, emit symbols for plt entries.
1531
1532         * image-writer.c (img_writer_emit_symbol_size): New function to emit
1533         a .size directive.
1534         
1535 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
1536
1537         * aot-compiler.c (add_wrappers): Avoid calling 
1538         mono_marshal_get_type_info () since it can assert for some types.
1539
1540         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
1541         ldtoken are used inside wrappers.
1542
1543         * helpers.c: Add support for prefixing tools with the arch name.
1544
1545         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
1546         quantities when using ilp32.
1547
1548         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
1549         spill slots. Use sizeof(mgreg_t) for the spill slot size.
1550
1551         * image-writer.c: Use .long on ilp32.
1552
1553         * aot-compiler.c: Use 32 bit loads on ilp32.
1554         
1555 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
1556
1557         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
1558
1559         * mini-ops.h: Use TARGET_POWERPC define for consistency.
1560
1561         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
1562
1563         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
1564         second got slot of every aot image.
1565         
1566         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
1567         aot on platforms with function pointers.
1568
1569         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
1570         support for aot/full aot on ppc/ppc64.
1571         
1572         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
1573         arguments which are needed on ppc.
1574
1575         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
1576         argument.
1577
1578         * mini-trampolines.c aot-runtime.c: Update after the above changes.
1579         
1580         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
1581
1582         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
1583
1584         * aot-compiler.c (emit_got_info): Fix reading unused memory.
1585
1586         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
1587
1588 2009-06-17  Geoff Norton  <gnorton@novell.com>
1589
1590         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
1591
1592 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
1593
1594         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
1595         to control whenever the dwarf writer is in xdebug or aot mode.
1596         (emit_class_dwarf_info): Use a separate abbrev for structures without
1597         children.
1598
1599         * aot-compiler.c: Pass the appending parameter to 
1600         mono_dwarf_writer_create ().
1601
1602         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
1603         falls through to its next bblock. Fixes #513931.
1604
1605         * iltests.il: Add a test.
1606
1607         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
1608         infor even if emit_line is FALSE, as the apple linker seems to require it.
1609
1610         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
1611
1612         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
1613         gcc does.
1614         (emit_fde): Ditto.
1615
1616 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
1617
1618         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
1619         mips build.
1620
1621 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
1622
1623         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
1624         'has_call_handler' fields.
1625
1626         * method-to-ir.c (mono_method_to_ir): Set them if needed.
1627
1628         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
1629         first bblock if not needed. Fixes #512790.
1630         
1631 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
1632
1633         * aot-compiler.c (mono_compile_assembly): Fix a warning.
1634         
1635         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
1636         wrappers.
1637
1638         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
1639         remoting-invoke-with-check wrappers, which are not needed when running with
1640         full-aot, since it doesn't support remoting.
1641         
1642 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1643
1644         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
1645
1646         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
1647         method info, it is not used anymore.
1648
1649         * mini.h: Bump AOT file format version.
1650         
1651         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
1652         word smaller.
1653
1654         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
1655         change above.
1656         
1657         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
1658
1659         * mini.h: Bump AOT file format version.
1660         
1661 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
1662
1663         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
1664         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
1665         iphone.
1666
1667         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
1668         of CKFINITE and FBGE for VFP.
1669
1670 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
1671
1672         * aot-compiler.c: Don't align code to 16 bytes on arm.
1673         
1674         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
1675         before the methods they belong to.
1676
1677         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
1678         the full-aot case if possible, since the trampoline will be called right 
1679         away.
1680
1681         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
1682         trampolines to 1024 after the change above.
1683
1684         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
1685         trampoline to save 8 bytes per trampoline.
1686
1687         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
1688         change above.
1689
1690 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1691
1692         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
1693
1694 2009-06-08  Martin Baulig  <martin@ximian.com>
1695
1696         * debug-mini.c
1697         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1698         (_mono_debugger_throw_exception): Don't make this static.
1699         (_mono_debugger_unhandled_exception): Likewise.
1700         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1701
1702         * debug-mini.c
1703         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1704         (_mono_debugger_throw_exception): Add function prototype.
1705         (_mono_debugger_unhandled_exception): Likewise.
1706
1707         * mini-exceptions.c
1708         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1709         arg; return the first exception handler if the exception is caught
1710         and we're running inside the debugger.
1711         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1712         improve exception handle inside runtime-invoke, check whether the
1713         exception is actually caught in the method being invoked and not
1714         by the runtime-invoke-wrapper.
1715
1716 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
1717
1718         * image-writer.c: Improve support for the osx assembler.
1719
1720         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
1721         support them.
1722
1723 2009-06-08  Martin Baulig  <martin@ximian.com>
1724
1725         * debug-mini.c
1726         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
1727         (_mono_debugger_throw_exception): Don't make this static.
1728         (_mono_debugger_unhandled_exception): Likewise.
1729         (mono_debugger_handle_exception): Moved to mini-exceptions.c
1730
1731         * debug-mini.c
1732         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
1733         (_mono_debugger_throw_exception): Add function prototype.
1734         (_mono_debugger_unhandled_exception): Likewise.
1735
1736         * mini-exceptions.c
1737         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
1738         arg; return the first exception handler if the exception is caught
1739         and we're running inside the debugger.
1740         (mono_debugger_handle_exception): Moved here from debug-mini.c;
1741         improve exception handle inside runtime-invoke, check whether the
1742         exception is actually caught in the method being invoked and not
1743         by the runtime-invoke-wrapper.
1744
1745 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
1746
1747         * image-writer.c (append_subsection): Don't align subsections of the
1748         debug_line section as a workaround.
1749
1750         * dwarfwriter.c: Emit line number info in the AOT case as well.
1751
1752 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
1753
1754         This patch is contributed under the terms of the MIT/X11 license
1755
1756        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
1757        code_len <= code_size
1758
1759 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
1762
1763 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
1764
1765         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
1766         invoke wrappers, we now use trampolines instead.
1767
1768 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1769
1770         * mini-darwin.c: The exception thread must not be registered with
1771         the GC.
1772
1773 2009-06-04  Mark Probst  <mark.probst@gmail.com>
1774
1775         * mini-gc.c: Disable the code because it makes SGen crash.
1776
1777 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
1778
1779         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
1780         instead of asserting.
1781
1782 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * aot-compiler.c (mono_compile_assembly): Move the creation of the
1785         output file after the code has been compiled.
1786
1787 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
1788
1789         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
1790
1791 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
1792
1793         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
1794         entries distinction to simplify the code.
1795
1796         * mini.h: Bump AOT file format version.
1797         
1798 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
1799
1800         * objects.cs: Fix the signature of one of the tests.
1801
1802         * mini.c (mini_create_ftnptr): New helper function, moved here from
1803         object.c.
1804         (mini_get_addr_from_ftnptr): Ditto.
1805         (mini_init): Install the new helpers.
1806
1807 2009-05-28  Martin Baulig  <martin@ximian.com>
1808
1809         Correctly initialize the debugger when embedding Mono.
1810
1811         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
1812         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
1813         see documentation in mini_debug_running_inside_mdb().
1814
1815         * debug-debugger.c
1816         (mini_debug_running_inside_mdb): New function to check whether
1817         we're running inside mdb.
1818
1819         * mini.c (mini_init): Call mini_debugger_init() if we're running
1820         inside the debugger.
1821
1822         * driver.c (mono_main): Moved the call to mini_debugger_init()
1823         into mini_init() to make this work when embedding Mono.
1824
1825         * debug-debugger.c (mini_debugger_init): Warn about duplicate
1826         calls to mini_debugger_init().
1827
1828         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
1829         mono_debugger_main() -> mini_debugger_main() and put them inside a
1830         `MONO_DEBUGGER_SUPPORTED' conditional.
1831
1832 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
1833
1834         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
1835         this is no longer in use.
1836         * mini.h: Same.
1837
1838 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
1839
1840         * mini-sparc.c (add_outarg_load): Fix the sparc build.
1841
1842         * aot-compiler.c (emit_method_code): Always write out C style symbols for
1843         methods.
1844
1845 2009-05-27  Martin Baulig  <martin@ximian.com>
1846
1847 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1848
1849         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
1850         long_conv_to_r_un to 64 bits.
1851
1852         * cpu-x86.md: Increase the instruction size due to the changes.
1853
1854         * iltests.il.in: Add regression test.
1855
1856         Fixes #467201.
1857
1858 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1859
1860         * objects.cs: Move the previous test from basic.cs to here.
1861
1862 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1863
1864         * basic.cs: Add regression test for #506915.
1865
1866 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
1867
1868         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
1869         optimization we must check the bb of the first byte of stobj as
1870         it's the only one set in cil_offset_to_bb.
1871
1872         Fixes #506915.  
1873
1874 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
1875
1876         * image-writer.c: Fix pointer directive on ppc64.
1877
1878 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
1879
1880         * image-writer.c (asm_writer_emit_section_change): Avoid using
1881         .bss subsections on ppc too.
1882
1883 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
1884
1885         * image-writer.c: Fix the definition of TARGET_ASM_....
1886         
1887         * image-writer.c: Fix the emission of assembler directives in the last
1888         change.
1889
1890         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
1891         exception throwing code to accomodate ppc64.
1892
1893         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
1894         size to work on ppc64 too.
1895
1896         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
1897         too.
1898
1899         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
1900         the assembler dialect instead of using platform specific defines.
1901
1902 2009-05-22  Geoff Norton  <gnorton@novell.com>
1903
1904         * mini-arm.c (get_call_info): If a structure is split between the stack
1905         and argument registers, we should not advance the stack pointer by the entire
1906         native size, but just by the amount that spilled.
1907
1908 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
1909
1910         * mini-arm.c (get_call_info): Handle structures with alignment requirements
1911         correctly.
1912
1913 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
1916         wrappers normally.
1917         
1918         * aot-compiler.c (add_extra_method): Fix up the collection of extra
1919         methods so wrapper don't get added twice.
1920         (add_generic_instances): Don't add methods of arrays.
1921
1922         * generics.cs: Mark one test as !FULLAOT.
1923
1924 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1925
1926         * mini-x86.c (emit_move_return_value): Remove unused vars.
1927
1928 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1929
1930         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
1931         decomposing 8 bytes structs into a LCALL.
1932
1933         * mini-x86.c (emit_move_return_value): We no longer push the vtype
1934         pointer for where to store the returned regs.
1935
1936         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
1937         state the concern.
1938
1939         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
1940
1941 2009-05-20  Miguel de Icaza  <miguel@novell.com>
1942
1943         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
1944         without getenv.
1945
1946 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
1947
1948         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
1949
1950         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
1951         generics.
1952
1953 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
1954
1955         * local-propagation.c (mono_local_cprop): Avoid local propagation
1956         across paired add/sub if the first instruction dest reg is it's
1957         source reg. For example:
1958
1959         int_add_imm R12 <- R12 [1] clobbers: 1
1960         int_sub_imm R42 <- R12 [1] clobbers: 1
1961
1962         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
1963         maintain the math identify.
1964
1965         Fixes #505375.
1966
1967 2009-05-20  Andreia Gaita  <avidigal@novell.com>
1968
1969         * Makefile.am: avoid going on the network just to get the revision,
1970         use git log instead
1971
1972 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
1973
1974         Fixed estimate for short branches on amd64 (they were off mark, and
1975         enabling call prolog-epilog instrumentations caused assertions).
1976         * mini.h (struct MonoBasicBlock): added max_length field to hold the
1977         estimate for the maximum length of this basic block.
1978         * mini-amd64.c:
1979         - mono_arch_emit_prolog: compute max_length for each basic block
1980           (instead of max_offset), and inflate size estimate also for entry bb
1981           in case of code instrumentation.
1982         - mono_arch_output_basic_block: get rid of "cpos" (the current
1983           estimated "position" in the code), and always use "offset" instead,
1984           which is accurate; at the beginning of the function quickly recompute
1985           max_offset for all the remaining blocks, starting from the current
1986           cfg->code_len (which is correct, and not estimated) and using the
1987           estimated block lengths computed previously.
1988
1989 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
1990
1991         * exceptions-ppc.c: Remove the caching from the trampoline creation 
1992         functions, it is already done in the caller.
1993
1994         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
1995
1996         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
1997         MONO_ARCH_GSHARED_SUPPORTED define.
1998
1999         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
2000
2001         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
2002         function.
2003
2004 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
2005
2006         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
2007         call to mono_marshal_get_rgctx_invoke ().
2008
2009         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
2010         mono_marshal_get_static_rgctx_invoke (), all platforms which support
2011         gshared use the static rgctx trampolines now.
2012         
2013         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
2014         platform supports it.
2015
2016 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2017
2018         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
2019
2020         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
2021
2022 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2023
2024         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
2025
2026         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
2027         for ppc.
2028
2029 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
2030
2031         Made it possible for mono_arch_instrument_epilog to preserve
2032         argument registers, otherwise instrumenting the "epilogue" before
2033         a tail call would clobber them.
2034         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
2035         if like mono_arch_instrument_epilog but with an additional parameter
2036         that states if argument registers must be preserved.
2037         * mini.c: implemented mono_arch_instrument_epilog as a call to
2038         mono_arch_instrument_epilog_full without asking to preserve argument
2039         registers (this makes the existing code work as usual).
2040         * mini-amd64.c:
2041         - mono_arch_instrument_epilog: add parameter to transform it into
2042         mono_arch_instrument_epilog_full, and preserve argument registers
2043         when required.
2044         - mono_arch_output_basic_block, OP_TAILCALL case: call
2045         mono_arch_instrument_epilog_full.
2046         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
2047         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
2048         only transformed mono_arch_instrument_epilog into
2049         mono_arch_instrument_epilog_full.
2050
2051 2009-05-15  Geoff Norton  <gnorton@novell.com>
2052
2053         * mini-darwin.c: This works on arm now.
2054
2055 2009-05-14  Geoff Norton  <gnorton@novell.com>
2056
2057         * jit.h, driver.c: Allow full-aot to be decided programatically by the
2058         embedding api.
2059
2060 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2061
2062         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
2063         label names.
2064
2065         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
2066         wrappers during full aot mode correctly.
2067
2068         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
2069         methods correctly.
2070
2071         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
2072         mono_metadata_type_hash ().
2073
2074 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
2075
2076         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
2077         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
2078         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
2079         Removed MONO_INST_BRLABEL from the instruction flags, and the
2080         remaining code that used it, because we do not support branches inside
2081         basic blocks (and branch target labels) anymore.
2082         * Makefile.am: As part of the above cleanup, remove reference to
2083         BURG files which don't exist anymore.
2084
2085 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
2086
2087         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
2088         osx.
2089
2090         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
2091         to use mono_arch_throw_corlib_exception.
2092
2093         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
2094         mono_arch_throw_corlib_exception for throwing corlib exceptions.
2095
2096         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
2097         domain mempool.
2098
2099         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
2100
2101         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
2102         for the got to make debugging easier and to avoid confusing it with the
2103         system got.
2104         
2105         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
2106         method so a breakpoint can be set when using gdb.
2107
2108 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
2109
2110         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
2111         on mono_method_get_imt_slot ().
2112
2113         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
2114         num_decodes variables.
2115
2116         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
2117         change as it doesn't seem to work.
2118         
2119         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
2120         wrappers.
2121
2122 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
2123
2124         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
2125         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
2126
2127         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
2128         builder when using full aot.
2129
2130         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
2131         here, it is already handled.
2132         
2133         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
2134         correctly for IMT.
2135
2136         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
2137
2138         * mini-arm.h: Enable IMT for full aot.
2139         
2140         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
2141         arch doesn't support it.
2142
2143         * mini.c (mini_init): Don't disable IMT for full aot if the
2144         architecture supports it.
2145
2146         * mini.h (MonoAotTrampoline): New enum containing the different types
2147         of 'numerous' trampolines.
2148         (MONO_AOT_FILE_VERSION): Bump this.
2149
2150         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
2151         static rgctx trampolines. Add support for full-aot IMT thunks.
2152
2153         * mini-amd64.h: Enable IMT for full aot.
2154
2155         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
2156         to exclude tests belonging to a category.
2157
2158         * generics.cs: Mark some tests with a !FULLAOT category.
2159
2160         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
2161         generics tests.
2162
2163 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
2164
2165         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
2166         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
2167         (emit_plt): Fix a warning.
2168
2169 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
2170
2171         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
2172         back into aot-compiler.c to a place where the other functions shared by
2173         the runtime and aot compiler are.
2174         
2175         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
2176         as done previously, instead of in MonoAotFileInfo, since pointers might have
2177         alignment requirements.
2178
2179         * mini.h: Bump AOT file format version.
2180
2181 2009-05-10  Miguel de Icaza  <miguel@novell.com>
2182
2183         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
2184         that is used at runtime from the aot-compiler.c, this makes it
2185         work on setups that remove the AOT compiler from the output
2186         image. 
2187
2188 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
2189
2190         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
2191         PPC.
2192
2193         * mini-ppc.h: Enable static rgctx trampolines for ppc.
2194
2195         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
2196
2197         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
2198         stuff to mono_arch_decompose_long_opts ().
2199         (mono_decompose_opcode): Remove some dead code.
2200
2201 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2202
2203         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
2204         cmethod can be null for quite a some reasons.
2205
2206 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
2207
2208         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
2209
2210 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2211
2212         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
2213
2214 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2215
2216         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
2217         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
2218         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
2219         calls returning structures by addr on amd64.
2220
2221         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
2222
2223         * iltests.il.in: Restructure the tail call tests a bit.
2224         
2225 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
2226
2227         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
2228         for virtual methods too.
2229
2230 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
2231
2232         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
2233         due to regression in verifying System.dll.
2234
2235 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2236
2237         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
2238         in dynamic methods.
2239
2240         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
2241         instances.
2242
2243         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
2244         g_str_hash () which can change.
2245
2246         * driver.c (mini_regression): Disable optimizations not supported by
2247         the cpu. Fixes #500019.
2248
2249         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
2250         build.
2251
2252 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2253
2254         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
2255         to the latest LLVM code.
2256
2257 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
2258
2259         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
2260
2261 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
2262
2263         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
2264         x86/amd64.
2265
2266         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
2267         no longer saving offsets, so just save the patch types along with the other
2268         info.
2269         * aot-runtime.c (load_patch_info): Update after the changes to 
2270         encode_patch_list ().
2271         (decode_got_entry): Removed, merged into load_patch_info ().
2272         (is_shared_got_patch): Removed, call the same function from
2273         aot-compiler.c.
2274
2275         * mini.h: Bump aot file format version.
2276         
2277         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
2278         half-finished no-dlsym code.
2279
2280         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
2281         option.
2282
2283         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
2284         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
2285
2286 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
2287
2288         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
2289         buffer length to work with AOT code.
2290
2291         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
2292         ldfld/stfld opcodes.
2293
2294         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
2295         as it is not used.
2296
2297         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
2298
2299         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
2300
2301         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
2302         LLVM API.
2303
2304         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
2305         if needed. Don't decompose long operations when using llvm.
2306
2307 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
2310         PAGESIZE constant.
2311
2312         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
2313
2314 2009-05-03  Martin Baulig  <martin@ximian.com>
2315
2316         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
2317         mono_debugger_insert_method_breakpoint() since the class init
2318         handler we're inserting at the top of the method already gives us
2319         a notification.
2320
2321 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
2322
2323         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
2324         to mono_arch_decompose_long_opts () for x86 and arm.
2325
2326 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
2327
2328         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
2329         TARGET_AMD64 here.
2330
2331 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
2332
2333         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
2334         JIT code.
2335
2336 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2337
2338         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
2339         number of trampolines used in full-aot mode.
2340
2341         * aot-compiler.c: Add an ntrampolines option to set the number of 
2342         trampolines emitted in full-aot mode.
2343
2344 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
2345
2346         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
2347         a volatile load. Get rid of get_tempname (), llvm assigns names
2348         automatically.
2349
2350         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
2351         builder function.
2352
2353         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
2354         a value.
2355
2356         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
2357         level 1.
2358
2359         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
2360         to the same register as a fixed sreg2. Fixes #497271.
2361
2362         * iltests.il.in: Add a new test.
2363
2364 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
2367         stack, since pushes complicate exception handling.
2368
2369         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
2370         the stack if they are passed using moves.
2371
2372         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2373
2374         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
2375         when using llvm.
2376
2377         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
2378         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
2379         of FMOVE if it is an R4.
2380
2381 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
2382
2383         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
2384
2385         * mini.h (LLVMCallInfo): New structure to store calling convention 
2386         information for the LLVM back end similar to the CallInfo structures in 
2387         the back-ends.
2388
2389         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
2390         call information in a format usable by LLVM.
2391         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
2392
2393         * method-to-ir.c (mono_emit_call_args): Emit calls using 
2394         mono_llvm_emit_call () when compiling using LLVM.
2395
2396         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
2397         comments to all functions. Fix memory leaks. Add a public init/cleanup
2398         function.
2399
2400         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
2401
2402         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
2403         mono_array_new_va () jit icall.
2404         
2405 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
2406
2407         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
2408         multiple machine description files to be specified.
2409         * mini-ops.h: fixes for cross-compilation.
2410
2411 2009-04-22  Miguel de Icaza  <miguel@novell.com>
2412
2413         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
2414         some porting work.
2415
2416 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
2417
2418         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
2419         to prevent asserts in various passes. Fixes #497220.
2420
2421 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
2422
2423         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
2424         a racy assert.
2425
2426         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
2427         table to avoid duplicates.
2428
2429         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2430         
2431         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
2432         option is used.
2433
2434 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
2435
2436         * mini.c (mini_method_verify): Fail fulltrust code if the exception
2437         is for method or field access.
2438
2439 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
2440
2441         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
2442         a Value to stdout.
2443
2444         * mini-llvm.c (mono_llvm_emit_method): Use it.
2445         
2446         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
2447         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
2448         on volatile values.
2449
2450         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
2451         synchronized methods.
2452
2453         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
2454
2455         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
2456
2457         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
2458         OP_LOADI8_MEM.
2459
2460         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
2461         allowing some options to be set dynamically.
2462
2463 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
2464
2465         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
2466         unconditional branch.
2467
2468         * mini.h (MonoTrampolineType): Add new trampoline type 
2469         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
2470         compiled code.
2471
2472         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
2473         function.
2474
2475         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
2476         creation function.
2477
2478         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
2479         is enabled. Instead, use the llvm vcall trampoline.
2480         
2481         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
2482
2483         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
2484         
2485         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
2486         functions.
2487
2488         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
2489         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
2490
2491         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
2492         OP_IA64_CSET opcode.
2493
2494         * mini.c: Fix a warning.
2495
2496         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
2497         THROW to the appropriate llvm type.
2498
2499 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
2500
2501         * mini.c (mini_method_compile): Add statistics for methods JITted
2502         with/without LLVM.
2503
2504 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2505
2506         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
2507         OP_IA64_CMP_<cond>_IMM opcodes.
2508
2509 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2510
2511         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
2512         corlib exceptions.
2513
2514         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
2515         correctly.
2516
2517         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
2518         GENERICINST.
2519
2520 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
2521
2522         * mini-exceptions.c : add thread id to EXCEPTION trace message.
2523
2524 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
2525
2526         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
2527         support.
2528
2529         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
2530         rgctx invoke trampolines for x86.
2531
2532         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
2533         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
2534         (mono_arch_get_vcall_slot): Simplify this.
2535
2536 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
2537
2538         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
2539         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
2540
2541 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
2542
2543         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
2544         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
2545
2546         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
2547
2548         * liveness.c (visit_bb): Remove a needless assert.
2549
2550 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
2551
2552         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
2553         full aot support to the arch specific code.
2554
2555         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
2556
2557         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
2558
2559         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
2560         
2561         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
2562         collect information about the delegate invoke impl trampolines.
2563
2564         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
2565         to save trampolines during full-aot mode.
2566
2567         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
2568         creation function which returns a trampoline which sets the rgctx
2569         argument.
2570         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
2571         wrapper if possible.
2572         (mono_delegate_trampoline): Ditto.
2573
2574         * mini.c (mono_jit_runtime_invoke): Ditto.
2575
2576         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
2577         
2578         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
2579
2580         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2581         
2582 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
2583
2584         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
2585         just setting the opcode to OP_NOP.
2586
2587 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
2588
2589         * mini.c (mini_method_compile): Put the last change inside an 
2590         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
2591         
2592         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
2593         and extend live ranges to cover the whole method when using xdb.
2594
2595         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
2596         do it in the trampolines.
2597
2598         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
2599         needed.
2600
2601         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
2602         
2603         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
2604         call code in full-aot mode since IMT is disabled there.
2605         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
2606         new JIT no longer has that restriction.
2607
2608         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
2609
2610         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
2611         a more compact format.
2612         (mono_aot_wrapper_name): New function to return a unique name for a
2613         wrapper method, also used by the AOT runtime.
2614
2615         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
2616         aot-compiler.c.
2617
2618         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
2619         when a ICollection<T> etc is encountered.
2620         (add_generic_instances): Process method arguments/locals too.
2621         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
2622         trampoline names.
2623
2624         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
2625         
2626 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
2627
2628         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
2629
2630         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
2631
2632         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
2633         representing the result of the decomposition. Nullify instructions
2634         instead of setting them to OP_NOP since nops can't have registers
2635         set.
2636
2637 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
2638
2639         * aot-compiler.c (mono_compile_assembly): Split this huge function into
2640         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
2641         info. Strip 'mapping symbols' on ARM.
2642
2643         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
2644         
2645         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
2646         this with the native genmdesc.
2647
2648 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
2649
2650         * aot-runtime.c:  Fixing the MSVC build.
2651
2652         Code is contributed under MIT/X11 license.
2653
2654 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2655
2656         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
2657         JITted code depends on it.
2658
2659 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2660
2661         * aot-compiler.c: Use new MonoGenericParam accessors.
2662
2663 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
2664
2665         Reduce memory usage and improve correctness wrt MonoGenericParam
2666         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
2667         handing.  Avoid allocating MonoGenericParams, but use the ones in
2668         the container itself.
2669
2670 2009-04-07  Miguel de Icaza  <miguel@novell.com>
2671
2672         * tasklets.c: Return exceptions in the out argument.
2673
2674 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
2675
2676         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
2677         opcode. Use pointer types in more places instead of casting them to 
2678         integers.
2679
2680         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
2681         optimizations.
2682         (mono_llvm_optimize_method): New helper function to optimize a method.
2683
2684         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
2685         widening code so it could be called from more places.
2686         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
2687         code paths in the call opcodes.
2688
2689 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
2690
2691         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
2692
2693 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
2694
2695         * dwarfwriter.c: Use _ to separate class name 
2696         components as gdb can't handle '.'. Represent reference variables
2697         as 'class <NAME>&'.
2698         
2699         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
2700
2701         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
2702         
2703         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
2704
2705         * gc-test.cs: New file with GC stack marking tests.
2706         
2707         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
2708         negative numbers for vfp.
2709
2710         * basic-float.cs: Add a test.
2711         
2712 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
2713
2714         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
2715
2716 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
2717
2718         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
2719         part of tasklet/continuation support.
2720
2721 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
2722
2723         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
2724         amd64 opcodes inside an ifdef.
2725
2726         * dwarfwriter.c: Emit inheritance information for classes, emit fields
2727         of complex types.
2728         
2729         * dwarfwriter.c (emit_type): Emit the class info for classes.
2730
2731 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
2732
2733         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
2734
2735         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
2736
2737         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
2738
2739         * ssa.c (mono_ssa_compute): Fix some memory leaks.
2740
2741 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
2742
2743         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
2744
2745         * mini-llvm.c: Update comments.
2746
2747         * mini.h (COMPILE_LLVM): New macro.
2748
2749         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
2750
2751         * ssa.c (mono_ssa_compute): Ditto.
2752         
2753         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
2754         the unwind ops from a DWARF FDE.
2755
2756         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
2757         methods by extracting the dwarf unwind ops from the unwind info generated
2758         by LLVM.
2759         
2760         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
2761         calls.
2762
2763         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
2764         addressing modes.
2765
2766 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
2767
2768         * Makefile.am (llvm_sources): Enable this.
2769
2770         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
2771         failing back to the JIT if something cannot be handled.
2772
2773         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
2774         compiling with LLVM.
2775
2776         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
2777         compiling with LLVM.
2778
2779         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
2780         compiling with LLVM.
2781
2782         * mini-ops.h: Add a few opcodes needed by LLVM.
2783
2784         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
2785         has no unwind info.
2786
2787         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
2788         backend.
2789
2790         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
2791
2792         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
2793
2794 2009-04-01  Mark Probst  <mark.probst@gmail.com>
2795
2796         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
2797         ridiculously large methods.
2798
2799 2009-03-31  Martin Baulig  <martin@ximian.com>
2800
2801         * debug-debugger.c (debugger_remove_breakpoint): Call
2802         mono_debugger_remove_class_init_callback ().
2803
2804 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
2805
2806         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
2807         right before emitting code, not at the start.
2808
2809         * mini.c (mono_postprocess_patches): Extract this into a separate function
2810         from mono_codegen ().
2811
2812         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
2813         byref types correctly.
2814
2815 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
2816
2817         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
2818         by the last change.
2819
2820 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
2821
2822         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
2823         indirect calls, this avoids problems where get_vcall_slot () would get
2824         confused by the native code for the instruction preceeding the call.
2825         (mono_arch_get_vcall_slot): Simplify this.
2826         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
2827
2828         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
2829         register allocator now seems to depend on them instead of the data in
2830         cpu-<ARCH>.md.
2831
2832         * mini.c (mini_method_compile): Throw the correct type of exception if
2833         mono_method_get_header () fails because of a loading error.
2834
2835 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
2836
2837         * mini.c (mini_method_compile): Clear the loader error if the method
2838         header cannot be decoded.
2839
2840         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
2841         interface methods on proxies correctly.
2842
2843         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
2844         this argument for vtype methods. Add precise liveness info for arguments.
2845
2846         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
2847         LIVERANGE_START/END opcodes.
2848
2849         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
2850         for arguments and values in registers.
2851
2852 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
2853
2854         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
2855         return a valuetype. Fixes #487518.
2856
2857         * iltests.il: Add a test.
2858         
2859         * aot-compiler.c: Use mono_thread_create () to create helper threads.
2860
2861         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
2862         closed over a null reference correctly.
2863
2864 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
2865
2866         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
2867
2868 2009-03-25  Mark Probst  <mark.probst@gmail.com>
2869
2870         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
2871         allocated to the same registers as fixed sregs.
2872
2873 2009-03-24  Mark Probst  <mark.probst@gmail.com>
2874
2875         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
2876         ATOMIC_CAS_IMM ops.
2877
2878         * method-to-ir.c: Handle more cases for
2879         Interlocked.CompareExchange.
2880
2881         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
2882         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
2883         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
2884
2885 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * aot-runtime.c (decode_method_ref): Fix a warning.
2888
2889         * unwind.c (mono_unwind_frame): Ditto.  
2890
2891 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2892
2893         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
2894         (mono_compile_assembly): Enable the binary writer for full-aot as well.
2895
2896         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
2897         fix the handling of large values in the ALU_PC_G0_NC relocation.
2898
2899 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2900
2901         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
2902
2903 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2904
2905         * method-to-ir.c (mono_spill_global_vars): Support for ternary
2906         ops.
2907
2908 2009-03-22  Mark Probst  <mark.probst@gmail.com>
2909
2910         * method-to-ir.c: MINI_OP3 needs a comma.
2911
2912         * method-to-ir.c, mini.h, mini.c: Remove
2913         mono_init_op_sreg_counts ().
2914
2915 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
2916
2917         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
2918         OP_JMP.
2919         
2920         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
2921         assertion.
2922
2923         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
2924
2925         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
2926         code somewhat.
2927
2928 2009-03-21  Mark Probst  <mark.probst@gmail.com>
2929
2930         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
2931         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
2932         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
2933         operations.
2934
2935 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
2936
2937         * driver.c: Change location of gc_wrapper.h.
2938
2939         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
2940         inside finally clauses correctly. Fixes #485721.
2941
2942         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
2943         after the change above.
2944
2945         * exceptions.cs: Add a test.
2946         
2947 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2948
2949         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
2950
2951         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
2952         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
2953         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
2954
2955         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
2956         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
2957
2958 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
2959
2960         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
2961         Simplify logic for ensure_method_is_allowed_to_call_method. 
2962         Handle wrappers on callers.
2963
2964 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
2965
2966         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
2967         them don't run yet.
2968
2969         * basic-simd.cs: Fix the names of some test methods.
2970
2971 2009-03-18  Geoff Norton  <gnorton@novell.com>
2972
2973         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
2974
2975 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
2976
2977         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
2978
2979 2009-03-17  Jb Evain  <jbevain@novell.com>
2980
2981         * driver.c: remove now uneeded call to mono_gc_base_init before
2982         mono_profiler_load.
2983
2984 2009-03-17  Jb Evain  <jbevain@novell.com>
2985
2986         * dwarfwriter.c (token_handler): handle more cases.
2987
2988 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
2989
2990         * method-to-ir.c: Remove more dead code (that was required only
2991         because of method_is_safe). Fix compiler warnings.
2992
2993 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
2994
2995         * method-to-ir.c: Remove unneeded/useless method_is_safe
2996         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
2997
2998 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
2999
3000         * mini.c (mini_method_compile): Print the method been compiled with
3001         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
3002         for people not familiar with the runtime.
3003
3004 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
3005
3006         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
3007         a managed object which is later put into a GList. Return its class instead.
3008
3009         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
3010         stack slots when using sgen.
3011
3012 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
3013
3014         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
3015
3016 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
3017
3018         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
3019         > so it works on the first vreg as well.
3020
3021 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
3022
3023         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
3024         trigger randomly.
3025
3026         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
3027         
3028         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
3029         implement GArray.
3030
3031 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
3032
3033         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
3034         native->IL offset mapping.
3035
3036 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
3037
3038         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
3039
3040         * basic.cs: Add a test.
3041
3042 2009-03-11  Mark Probst  <mark.probst@gmail.com>
3043
3044         * mini-x86.c (mono_arch_output_basic_block): Use different
3045         registers in case the ones we want to overwrite are used by the
3046         other operand.  Fixes regression in #480807.
3047
3048 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
3049
3050         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
3051
3052         * dwarfwriter.c (emit_line_number_info): The line number info for
3053         IL code was off by one. Fix that.
3054
3055         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
3056         stack.
3057
3058 2009-03-09  Mark Probst  <mark.probst@gmail.com>
3059
3060         Contributed under the terms of the MIT/X11 license by Steven
3061         Munroe <munroesj@us.ibm.com>.
3062
3063         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
3064         Fixes #483462.
3065
3066 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
3067
3068         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
3069         as well.
3070
3071 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
3072
3073         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
3074         the delegate ctor handling code. Fixes #482638.
3075         
3076         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
3077         #481458.
3078
3079         * iltests.il.in: Add a test.
3080         
3081         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
3082         mini-posix.c.
3083
3084 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3085
3086         * mini-trampolines.c (mono_create_jump_trampoline): If the method
3087         is shared generic code, return the trampoline, even if the method
3088         has already been compiled.  Fixes #479763.
3089
3090         * mini.c, mini.h: New function
3091         mono_jit_find_compiled_method_with_jit_info() which is the same as
3092         mono_jit_find_compiled_method() but also returns the jit info.
3093
3094 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3095
3096         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
3097         for methods which actually have one.  For all other methods, make
3098         sure the this argument var is live the whole method.
3099
3100         * mini.c (mini_method_compile): Every shared method has a
3101         this/vtable/mrgctx info.  Fixes #480807.
3102
3103 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3104
3105         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
3106         generic/imt thunks where some entries branch through the vtable,
3107         while other entries branch directly.
3108
3109 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
3110
3111         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
3112
3113         * mini-windows.c: Ditto.
3114         
3115         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
3116         ctors.
3117
3118 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
3119
3120         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
3121         down an assert.
3122
3123 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3124
3125         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
3126         #481403.
3127
3128 2009-03-04  Mark Probst  <mark.probst@gmail.com>
3129
3130         * exceptions-x86.c: Include debug-mini.h - fixes build.
3131
3132 2009-03-04  Martin Baulig  <martin@ximian.com>
3133
3134         * debug-mini.c: Clean up the exception API and add documentation.
3135         (mono_debugger_handle_exception): New public method; this is
3136         called when throwing an exception or encountering an unhandled one.
3137         (mono_debugger_call_exception_handler): Formerly known as
3138         mono_debugger_handle_exception(); this is used to tell the
3139         debugger that we're about to invoke an exception handler.
3140
3141 2009-03-04  Martin Baulig  <martin@ximian.com>
3142
3143         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
3144         ../metadata/mono-debug-debugger.c; save and reset exception state.
3145
3146 2009-03-02  Martin Baulig  <martin@ximian.com>
3147
3148         * debug-mini.c: Moved the debugger exception handling here from
3149         ../metadata/mono-debug-debugger.c.
3150
3151         * debug-mini.h
3152         (MonoDebuggerExceptionAction): New exception typedef.
3153
3154         * debug-mini.c
3155         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
3156
3157         * exceptions-amd64.c
3158         (mono_amd64_throw_exception): Use the new debugger exception
3159         handling code.
3160
3161         * mini-exceptions.c
3162         (mono_handle_exception_internal): Don't call
3163         mono_debugger_unhandled_exception() here.
3164
3165 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
3166
3167         * mini.c aot-compiler.c: Update after the changes to 
3168         mono_marshal_get_runtime_invoke ().
3169
3170         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
3171         Virtual generic methods might not have method->slot set, work around
3172         that.
3173
3174         * generics.cs: Add a test.
3175
3176 2009-03-02  Geoff Norton  <gnorton@novell.com>
3177
3178         * mini.c:
3179         * driver.c: Allow signal chaining of SIGFPE as well.
3180
3181 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
3182
3183         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
3184         this since it now receives the method not its generic context in the
3185         IMT reg.
3186
3187         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
3188         generic/imt thunks where some entries branch through the vtable, while
3189         other entries branch directly.
3190
3191         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
3192
3193         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
3194         support for interface methods as well.
3195
3196         * mini-trampolines.c: Add support for virtual generic methods in interfaces
3197         using the normal IMT thunks.
3198
3199         generics.cs: Add new tests.
3200         
3201         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
3202         the generic inst to the generic imt thunks. This fixes AOT support, 
3203         improves consistency with the normal IMT thunks, and makes it easier to
3204         add support for interface generic virtual methods later.
3205
3206         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
3207         
3208 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
3209
3210         * driver.c (mono_set_signal_chaining): New public API function to enable
3211         signal chaining on POSIX platforms.
3212
3213         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
3214         (si@lindenlab.com) to implement signal chaining. The original patch was
3215         contributed under the MIT X/11 license:
3216         https://bugzilla.novell.com/show_bug.cgi?id=318894
3217
3218 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
3219
3220         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
3221         too until it can be made to run on amd64.
3222
3223 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
3224
3225         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
3226         to  get_generic_context_from_code () + get_call_info () if possible.
3227
3228 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
3229
3230         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
3231         suspend-on-sigsegv functionality.
3232
3233         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
3234         to suspend when a native SIGSEGV is received. This is useful for debugging
3235         crashes which don't happen under gdb, since a live process contains more
3236         information than a core file.
3237
3238         * mini-exceptions.c (mono_print_thread_dump): Use 
3239         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
3240
3241         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
3242
3243         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
3244         
3245         * basic-float.cs: Disable the tests which currently fail on amd64.
3246
3247         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
3248         value to mono_arch_patch_callsite () to fix crashes.
3249         
3250         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
3251
3252 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3253
3254         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
3255         nop code by patching the call address to point to the nullified class init
3256         trampoline, as the former does not seem to be safe on SMP machines.
3257
3258 2009-02-23  Mark Probst  <mark.probst@gmail.com>
3259
3260         * mini-ops.h: Fix the argument types for a few x86 opcodes where
3261         they were wrong.
3262
3263 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
3264
3265         * basic-float.cs basic-calls.cs: Fix warnings.
3266
3267 2009-02-22  Mark Probst  <mark.probst@gmail.com>
3268
3269         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
3270         correct frame pointer in the LMF.  Should fix #478394.
3271
3272 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
3273
3274         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
3275
3276         * image-writer.c: Make the binary writer less verbose.
3277
3278 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
3279
3280         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
3281         are called from runtime invoke wrappers.
3282
3283 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
3284
3285         * cpu-ppc.md (store_memindex): Increase the size of this.
3286
3287 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3288
3289         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3290
3291         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
3292
3293         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
3294         OP_LCONV_TO_R_UN.
3295
3296         Last fix for of #467201.
3297
3298
3299 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3300
3301         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3302
3303         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
3304         and long_conv_to_r8_2:
3305
3306         Fixed part of #467201.
3307
3308 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3309
3310         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3311
3312         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
3313         conversion to 32 bits.
3314
3315         * cpu-x86.md: Increase the size of int_conv_to_r4.
3316
3317         * basic-float.cs: Add a test for this.
3318
3319         Fixed part of #467201.
3320
3321 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3322
3323         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3324
3325         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
3326         conversion to 64 bits.
3327
3328         * basic-float.cs: Add a test for this.
3329
3330         Fixed part of #467201.
3331
3332 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3333
3334         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3335
3336         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
3337         This behavior is compatible with MS.
3338
3339         * iltest.il.in: Add a test for this.
3340
3341         Fixed part of #467201.
3342
3343 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
3344
3345         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
3346
3347         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
3348         change the precision of the value.
3349
3350         * cpu-x86.md: Define len for float_conv_to_r4.
3351
3352         * basic-float.cs: Add a test for this.
3353
3354         Fixed part of #467201.
3355
3356 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
3357
3358         * mini.c: Adjust locking order to the new semantics where the loader lock
3359         comes first.
3360
3361 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
3362
3363         * aot-runtime.c:
3364         * mini-amd64.c:
3365         * mini-arm.c:
3366         * mini-ia64.c:
3367         * mini-mips.c:
3368         * mini-ppc.c:
3369         * mini-sparc.c:
3370         * mini-trampolines.c:
3371         * mini-x86.c:
3372         * mini.c:
3373         * tramp-alpha.c:
3374         * tramp-amd64.c:
3375         * tramp-arm.c:
3376         * tramp-hppa.c:
3377         * tramp-ia64.c:
3378         * tramp-mips.c:
3379         * tramp-ppc.c:
3380         * tramp-s390.c:
3381         * tramp-s390x.c:
3382         * tramp-sparc.c:
3383         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
3384
3385 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
3386
3387         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
3388         as it is incorrect.
3389
3390 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3391
3392         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
3393         for cctors if needed.
3394
3395 2009-02-17  Mark Probst  <mark.probst@gmail.com>
3396
3397         * mini-ppc.c: Fix build on Darwin.
3398
3399 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
3400
3401         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
3402         version instead of 3 as valgrind doesn't like version 3.
3403
3404         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3405
3406         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
3407         usable for hashing methods.
3408         (emit_extra_methods): Use the new hash to avoid putting every method in the
3409         same hash bucket.
3410
3411         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
3412
3413         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
3414         whenever a method ref could match a method.
3415         
3416         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
3417         test to fail.
3418         
3419         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
3420         methods refs.
3421
3422         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
3423
3424         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
3425         the encoding buffer.
3426
3427         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
3428         mono_method_get_header () on inflated methods as an optimization.
3429
3430 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3431
3432         * ssa.c (fold_ins): Fix another crash if the instruction following the
3433         switch was optimized away.
3434
3435 2009-02-16  Mark Probst  <mark.probst@gmail.com>
3436
3437         Contributed under the terms of the MIT/X11 license by Steven
3438         Munroe <munroesj@us.ibm.com>.
3439
3440         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
3441
3442 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
3443
3444         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
3445         around the mono_domain_alloc calls, it is now done by the functions
3446         themselves.
3447
3448         * aot-compiler.c (compile_method): Only add wrappers referenced by
3449         the method if compiling with full AOT.
3450         (mono_compile_assembly): Error out if --aot=full is specified on
3451         a platform where it is not supported.
3452
3453         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
3454         on ARM too.
3455
3456         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
3457         AOT support.
3458
3459         * aot-runtime.c (load_named_code): Handle 
3460         mono_arm_throw_exception_by_token.
3461
3462         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
3463
3464         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
3465         unaligned.
3466
3467         * Makefile.am (fullaotcheck): Exit if a test fails.
3468
3469         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
3470         on ARM.
3471         (mono_compile_assembly): Handle the assembler failing.
3472
3473         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
3474         accepting subsections of .bss.
3475
3476         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
3477         was optimized away.
3478
3479         * aot-compiler.c: Remove some unused includes.
3480         
3481         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
3482         now in MonoImageWriter.
3483
3484         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
3485         code sequence which matches a non-virtual call. Fixes #472654.
3486
3487 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
3488
3489         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
3490         xdebug code.
3491         
3492         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
3493         use the image/dwarf writers directly.
3494
3495         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
3496         field.
3497
3498         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
3499         MonoDwarfWriter.
3500
3501         * image-writer.h: Fix some typos.
3502
3503         * dwarfwriter.h dwarfwriter.c: New files.
3504         
3505         * aot-compiler.c: Extract the DWARF info writing functionality into a 
3506         separate module.
3507
3508         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
3509         argument to return unwind info.
3510
3511         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
3512
3513         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
3514         
3515         * aot-runtime.c (decode_method_ref): Add a case for 
3516         MONO_AOT_METHODREF_WRAPPER_NAME.
3517
3518         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
3519         for AOT.
3520
3521         * aot-compiler.c (encode_method_ref): Use the new constants.
3522
3523         * aot-runtime.c (decode_method_ref): Ditto.
3524
3525         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
3526         be compiled, not the icall itself.
3527
3528 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
3529
3530         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
3531         using decode_method_ref ().
3532
3533         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
3534         convert it to an in32. Fixes #475859.
3535
3536         * arrays.cs: Add a test.
3537
3538 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3539
3540         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
3541         OP_LCONV_TO_U2.
3542
3543         * basic-long.cs: Add a test.
3544
3545 2009-02-12  Mark Probst  <mark.probst@gmail.com>
3546
3547         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
3548         remove the frame pointer in leaf methods which don't receive any
3549         arguments, don't throw exceptions and don't do dynamic stack
3550         allocations.
3551
3552 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3553
3554         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
3555         the fail_tramp changes. Hopefully fixes #475132.
3556
3557 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
3558
3559         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
3560         instead of mono_metadata_signature_dup_full.
3561
3562 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
3563
3564         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
3565         for processing jump tables. Fixes #473787.
3566
3567 2009-02-11  Mark Probst  <mark.probst@gmail.com>
3568
3569         * mini-generic-sharing.c: mini_method_get_context() just calls
3570         mono_method_get_context_general() now.
3571
3572         * mini.c, mini.h: Moved get_object_generic_inst(),
3573         construct_object_context_for_method() and
3574         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
3575
3576 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
3577
3578         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
3579         basic block fell through to its successor bblock without a branch. Fixes
3580         #474718.
3581
3582         * iltests.il.in: Add a test.
3583         
3584         * aot-compiler.c (encode_method_ref): Encode methods of array types.
3585         (can_encode_patch): We can now handle arrays of generic parameters and
3586         array methods.
3587
3588         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
3589
3590         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
3591         the AOT file to avoid some #ifdefs in aot-runtime.c
3592
3593         * mini.h: Bump AOT file format version.
3594
3595 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3596
3597         * Makefile.am (fullaotcheck): Make this run the tests.
3598
3599         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
3600
3601 2009-02-10  Mark Probst  <mark.probst@gmail.com>
3602
3603         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
3604         individually.  Fixes #473482.
3605
3606 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3607
3608         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
3609
3610 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
3611
3612         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
3613         (mono_compile_assembly): Hush compile warnings about
3614         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
3615         code path.
3616
3617 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
3618
3619         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
3620
3621         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
3622
3623         * aot-compiler.c: Fix arm support.
3624
3625         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
3626         img_writer_emit_unset_mode () function.
3627
3628         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
3629         (mono_unwind_get_dwarf_pc_reg): Ditto.
3630
3631         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
3632         Move almost all platform specific code to a set of arch_ functions, 
3633         and document them to ease porting.
3634         
3635         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
3636
3637         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
3638
3639         * aot-compiler.c: Extract the image writing functionality into a separate
3640         module to reduce the size of this file.
3641
3642 2009-02-09  Geoff Norton  <gnorton@novell.com>
3643
3644         * mini-s390.c: Fix the signature of emit_sig_cookie.
3645
3646 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
3647
3648         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
3649
3650         * aot-runtime.c (is_shared_got_patch): Ditto.
3651
3652         * aot-runtime.c (load_named_code): Cope with the fact that 
3653         decode_got_entry () won't decode the patch fully if its corresponding got
3654         entry is already filled.
3655         
3656         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
3657         Initialize *ji.
3658         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
3659
3660         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
3661         as the moving pointer instead of 'buf' for consistency with the rest of the
3662         codebase.
3663         (mono_arch_create_monitor_exit_trampoline): Ditto.
3664
3665         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
3666         generic_class_init trampolines.
3667         (add_generic_class): Extract some code from add_generic_instances () into a
3668         separate function so it can be called from other places too.
3669         (compile_method): Call add_generic_class () for the classes of inflated methods
3670         referenced by the method.
3671         (can_encode_patch): Allow references to generic parameters.
3672
3673         * aot-runtime.c: Add support the patches required by the new trampolines.
3674         
3675         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
3676         support.
3677
3678         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
3679         full-aot support.
3680
3681         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
3682         this from get_throw_pending_exception, make the signature full aot compatible.
3683
3684         * Makefile.am (fullaotcheck): New target to run full-aot tests.
3685
3686         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
3687
3688         * exceptions.cs: Add a test.
3689
3690 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3691
3692         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
3693         use the DWARF_DATA_ALIGN constant instead.
3694
3695         * exception-<ARCH>.c: Update after the above change.
3696
3697         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
3698         dwarf unwinder.
3699
3700         * mini-arm.c: Enable the dwarf unwinder.
3701
3702         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
3703         instead of mono_class_setup_vtable ().
3704
3705 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
3706
3707         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
3708         dwarf unwinder.
3709
3710         * mini-x86.h: Enable the dwarf unwinder.
3711
3712 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
3713
3714         Fix mcs/tests/test-7.cs
3715         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
3716         2009-02-03.
3717
3718 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
3719
3720         * mini.c (print_jit_stats): Remove some unused statistics.
3721
3722 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3723
3724         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
3725
3726 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3727
3728         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
3729         the method we get from mono_object_get_virtual_method() because
3730         that function does it properly, now.
3731
3732 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3733
3734         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
3735         opcodes. Fixes #472775.
3736
3737 2009-02-05  Mark Probst  <mark.probst@gmail.com>
3738
3739         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
3740         fact that mono_find_jit_info() sometimes returns the context
3741         corresponding to the jit info in new_ctx.  Fixes #472600.
3742
3743 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
3744
3745         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
3746         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
3747         klass->enum_basetype directly.
3748
3749         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
3750         enum subtypes.
3751
3752         * unwind.c: Avoid 0 sized arrays.
3753
3754 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3755
3756         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
3757         size on systems with 64k pages. Fixes #471389.
3758
3759 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3760
3761         Contributed under the terms of the MIT/X11 license by Steven
3762         Munroe <munroesj@us.ibm.com>.
3763
3764         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
3765         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
3766         necessary.
3767
3768 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3769
3770         Contributed under the terms of the MIT/X11 license by Steven
3771         Munroe <munroesj@us.ibm.com>.
3772
3773         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
3774         comparison fix.
3775
3776         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
3777         The trampoline can be longer on PPC64.
3778
3779 2009-02-04  Mark Probst  <mark.probst@gmail.com>
3780
3781         Contributed under the terms of the MIT/X11 license by Steven
3782         Munroe <munroesj@us.ibm.com>.
3783
3784         * mini-ppc.c: Compiler warning fixes and trivial code
3785         simplifications.
3786
3787 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
3788
3789         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
3790         ins->dreg which could be a hardware register, not a vreg.
3791
3792         * aot-compiler.c (emit_method_dwarf_info): Ditto.
3793         
3794         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
3795         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
3796
3797         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
3798         
3799         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
3800         ->dreg, that is not the vreg we are looking for.
3801
3802         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
3803
3804         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
3805         LIVERANGE_END.
3806
3807         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
3808         strange crashes.
3809
3810 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
3811
3812         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
3813
3814         * aot-compiler.c (emit_line_number_info): Fix line number emission when
3815         the line diff is 0.
3816
3817         * aot-compiler.c: Add xdebug support on x86.
3818
3819         * unwind.c: Add x86 support.
3820         
3821         * aot-compiler.c (emit_exception_debug_info): Control the emission of
3822         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
3823
3824         * mini.c (mini_method_compile): Ditto.
3825         
3826         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
3827         the variable index.
3828
3829         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
3830         which mimic .push_section/.pop_section in GAS.
3831         
3832         * aot-compiler.c: Emit precise live range information for variables.
3833
3834         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
3835
3836         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
3837         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
3838         them.
3839
3840         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
3841         the live ranges of variables.
3842
3843         * mini.h (struct MonoMethodVar): Add two fields containing the live range
3844         of the variable in terms of native offsets.
3845
3846 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
3847
3848         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
3849         
3850 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3851
3852         Contributed under the terms of the MIT/X11 license by Steven
3853         Munroe <munroesj@us.ibm.com>.
3854
3855         * exceptions-ppc.c (restore_regs_from_context): Correct operand
3856         order (offset then base reg) for ppc_load_multiple_regs.
3857         (emit_save_saved_regs) Correct operand order for
3858         ppc_store_multiple_regs.
3859         (mono_arch_get_call_filter): Correct operand order for
3860         ppc_load_multiple_regs.
3861
3862         * mini-ppc.c (emit_memcpy): Fix operand order for
3863         ppc_load_reg_update and ppc_store_reg_update.
3864         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
3865         (mono_arch_emit_epilog): Correct operand order for
3866         ppc_load_multiple_regs.
3867
3868         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
3869         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
3870
3871 2009-02-02  Mark Probst  <mark.probst@gmail.com>
3872
3873         * cpu-ppc64.md: Fixed storer4_memindex length.
3874
3875 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
3876
3877         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
3878         line number info.
3879         
3880         * aot-compiler.c (emit_line_number_info): Optimize this.
3881
3882 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
3883
3884         * aot-compiler.c: Disassemble tokens in the IL disassembly.
3885         
3886         * aot-compiler.c: Add debug info for methods without debug info by
3887         emitting an IL file and having the line number info referencing that file.
3888
3889         * aot-compiler.c: Optimize the size of the generated line number info.
3890
3891         * aot-compiler.c: Emit line number info in xdebug mode.
3892
3893         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
3894         million arguments.
3895
3896 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
3897
3898         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
3899
3900         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
3901         is used.
3902
3903 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3904
3905         * basic-calls.cs: Test for the weird crash found on arm.
3906         
3907 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
3908
3909         * cpu-arm.md: Increase the size of storer8_membase_reg and
3910         loadr8_membase_reg to 24 bytes to accomodate the extra add.
3911
3912         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
3913         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
3914         reg to LR otherwise we'll be loading/storing from just the offset.
3915
3916 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3917
3918         Question: if we are storing gint32's inside the "*native_offset",
3919         should we change the signature to "gint32 *native_offset" to
3920         ensure that we do not have type definition problems?
3921         
3922         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
3923         an int * as this is what the other function expects, causes
3924         problems with Freescale's compiler that defined int32_t to be a
3925         long and makes int incompatible 
3926
3927 2009-01-30  Miguel de Icaza  <miguel@novell.com>
3928
3929         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
3930         filename conflict with bjam.
3931
3932 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3933
3934         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
3935         as it might use decomposed ops.
3936
3937 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3938
3939         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
3940
3941         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
3942         is defined.
3943
3944         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
3945
3946         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
3947         offsets.
3948
3949         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
3950         way registers are stored in MonoContext on arm.
3951
3952         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
3953         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
3954
3955         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
3956
3957         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
3958
3959         * mini.c (mini_init): Register mono_isfinite.
3960
3961         * jit-icalls.c (mono_isfinite): New jit icall.
3962
3963         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
3964         
3965         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
3966         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
3967         the parent frame.
3968
3969 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3970
3971         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
3972         separate frame and stack pointers, so we must use FP to find the register
3973         spill area.
3974         The FP reg is retrieved from the MonoContext::regs array.
3975
3976 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3977
3978         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
3979         as FPA requires it.
3980
3981 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
3982
3983         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
3984         return R4 and R8 when not running under softfloat.
3985
3986         Fixes basic-calls.exe
3987
3988 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
3989
3990         * mini-arm.c: Implement some overflow opcodes.
3991
3992 2009-01-29  Miguel de Icaza  <miguel@novell.com>
3993
3994         * ssa.c: handle another alloca.h
3995
3996         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
3997         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
3998         MONO_ARCH_USE_SIGACTION. 
3999
4000         * aot-runtime.c, mini-exceptions.c: Replace platform define with
4001         capability defines.
4002
4003         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
4004
4005         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
4006         PPC targets as sigaction does not exist on all platforms, define
4007         this on a per-platform basis.
4008
4009         Instead of erroring out if the platform is not defined, include
4010         mini-ppc-os.h, and expect that the OS specific setting provides
4011         the required information.   
4012
4013 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4014
4015         * aot-compiler.c: Fix --enable-minimal=aot.
4016
4017 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
4018
4019         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
4020         previous change.
4021
4022 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4023
4024         * exceptions-arm.c: Fix warnings.
4025
4026         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
4027         ARM.
4028
4029         * mini-x86.c: Fix --enable-minimal=jit build.
4030
4031         * mini.c: Really fix --enable-minimal=jit build.
4032         
4033         * mini.c (construct_object_context_for_method): Move this outside
4034         the DISABLE_JIT block to fix the --enable-minimal=jit build.
4035
4036         "Backported" of r124984 from 2.0 branch.
4037         
4038         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
4039
4040         "Backport" of r124977 + r124978 from 2.0 branch.
4041         
4042         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
4043         to avoid calling mono_exception_from_token () from the throw trampoline.
4044         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
4045         for throwing corlib exceptions, this fixes full-aot support for corlib
4046         exceptions.
4047
4048         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
4049
4050 2009-01-29  Miguel de Icaza  <miguel@novell.com>
4051
4052         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
4053         part of the changes to split the code in mini into operating
4054         system specific files.
4055
4056         This patch was done by copying mini.c to the respective files to
4057         preserve SVN history.
4058
4059 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4060
4061         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
4062
4063 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
4064
4065         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
4066         remoting-invoke-with-check wrappers of shared methods.
4067
4068         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
4069
4070 2009-01-27  Mark Probst  <mark.probst@gmail.com>
4071
4072         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
4073         optimization if the top of stack is the last instruction in the
4074         bblock.  Otherwise it might have been used after its definition.
4075         Fixes #469742.
4076
4077 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
4078
4079         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
4080         method as well when get_vcall_slot () fails to match a code sequence.
4081
4082         * mini-arm.c: Fix the android build, which doesn't have
4083         __aeabi_read_tp.
4084
4085 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4086
4087         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
4088         the s390x build.
4089
4090 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
4091
4092         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
4093
4094 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4095
4096         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
4097         and put its id into jinfo->used_regs. This is only used on amd64,
4098         which is currently the only platform generating unwind info.
4099
4100         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
4101         the dwarf unwinder. This is required to correctly handle async exceptions
4102         like thread abort and stack overflows, which can happen while a method
4103         is in the middle of its prolog or epilog.
4104         
4105         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
4106         the unwind info belonging to an AOTed method.
4107
4108         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
4109         into cfg->unwind_ops.
4110         
4111         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
4112
4113         * mini.c (mini_init): Call mono_unwind_init ().
4114         (mini_cleanup): Call mono_unwind_cleanup ().
4115
4116         * unwind.c: Add functions for managing a set of unwind info entries, allowing
4117         unwind info to be shared between methods.
4118
4119         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
4120         saved in the LMF.
4121
4122         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
4123         get_throw_pending_exception () to avoid initialization races.
4124
4125         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
4126         mono_arch_exceptions_init () function.
4127
4128         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
4129
4130 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
4131
4132         * mini.c (mono_get_domain_intrinsic): New helper function.
4133         (mono_get_thread_intrinsic): Ditto.
4134
4135         * mini-arm.c mini-ia64.c: Use the new helper functions.
4136         
4137         * method-to-ir.c (mono_method_to_ir): Fix the comment for
4138         the last constrained_call change, since it is needed in the non-AOT
4139         case as well.
4140
4141         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
4142         
4143         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
4144         mono_get_lmf_addr () on arm eabi linux.
4145
4146 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
4147
4148         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
4149         code sequence which matches a non-virtual call.
4150
4151 2009-01-23  Mark Probst  <mark.probst@gmail.com>
4152
4153         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
4154         stack pointer (r1).
4155
4156 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
4157
4158         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
4159         runtime-invoke wrappers, since they are also shared based on signature.
4160
4161 2009-01-22  Mark Probst  <mark.probst@gmail.com>
4162
4163         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
4164         info from the (correct) context.
4165
4166 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
4167
4168         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
4169         
4170         * unwind.c (mono_unwind_frame): New function to unwind through a frame
4171         using dwarf unwinding info. Not yet used.
4172
4173         * mini.c (mini_init): When using xdebug, disable freeing of domains.
4174
4175 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4176
4177         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
4178         descriptors.
4179
4180         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
4181         special case and handle mono_arch_delegate_invoke_impl() returning
4182         function descriptors.
4183
4184         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
4185         trampolines return function descriptors, too.
4186
4187 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4188
4189         * method-to-ir.c (handle_alloc): Avoid generic instances in the
4190         out_of_line optimization.
4191
4192 2009-01-21  Martin Baulig  <martin@ximian.com>
4193
4194         * mini.h
4195         (MonoCompile): Added `disable_deadce_vars' to disable removing
4196         unused variables.
4197
4198         * mini.c
4199         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
4200         inside the debugger.
4201
4202         * liveness.c (mono_analyze_liveness): Don't remove any unused
4203         variables if `cfg->disable_deadce_vars' is set.
4204
4205 2009-01-21  Mark Probst  <mark.probst@gmail.com>
4206
4207         * method-to-ir.c: Only apply exception constructor optimization if
4208         the the method actually belongs to an exception class.  Fixes
4209         #467456.
4210
4211 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
4212
4213         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
4214         change inside a #ifdef __mono_ppc64__.
4215
4216         * aot-compiler.c (compile_method): Remove the previous limitation.
4217
4218         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
4219         on type variables in AOTed code.
4220         
4221         * aot-compiler.c (compile_method): Skip generic methods having type 
4222         constraints on their generic parameters.
4223
4224         * aot-compiler.c (compile_method): Check for methods which cannot be
4225         encoded inside RGCTX_FETCH patches as well.
4226
4227         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
4228         build.
4229
4230 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4231
4232         * method-to-ir.c: Force the vtable variable in shared generic code
4233         for the case that they might show up on a stack trace where they
4234         are needed.
4235
4236         * mini-exceptions.c: Save and use generic sharing info as well as
4237         IP in stack traces to resolve shared generic instantiations.
4238
4239 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
4240
4241         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
4242         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
4243
4244 2009-01-20  Mark Probst  <mark.probst@gmail.com>
4245
4246         * method-to-ir.c: Do generic sharing for array constructors.
4247
4248 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
4249
4250         * mini-exceptions.c (mono_print_thread_dump): Add information
4251         about the thread state using wapi_current_thread_desc.
4252
4253 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4254
4255         * basic-simd.cs: Tests for the new constructors. 
4256
4257 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
4258
4259         * mini-ops.h: Added OP_EXPAND_*
4260
4261         * cpu-x86.md: Same.
4262
4263         * mini-x86.c (mono_arch_output_basic_block): Same.
4264         
4265         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
4266
4267 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
4268
4269         * iltests.il.in: Add a test for #467385.
4270
4271 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
4272
4273         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
4274         thread been cleaned up is not the same currently in execution.
4275
4276         Fixes appdomain-unload crashes on windows, osx and linux variants
4277         without the __thread keyword.
4278
4279 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
4280
4281         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
4282         (koush@koushikdutta.com). Implement this for android.
4283
4284         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
4285         begins with a digit.
4286
4287         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
4288         mono_marshal_get_write_barrier ().
4289
4290 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
4291
4292         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
4293         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
4294         that pass them on a register pair.
4295
4296         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
4297         test was crashing due to that.
4298
4299 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
4300
4301         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
4302         trampoline code. Include ucontext.h only if available.
4303
4304 2009-01-15  Mark Probst  <mark.probst@gmail.com>
4305
4306         * mini.c: mono_domain_lookup_shared_generic() takes an open method
4307         and doesn't check whether it's sharable, like it was before
4308         removing the shared generics hash.  This brings IronPython
4309         performance back to what it was before that change.
4310
4311 2009-01-14  Mark Probst  <mark.probst@gmail.com>
4312
4313         * method-to-ir.c: Handle delegate invocation optimization earlier,
4314         otherwise it would be handled (much more slowly) by the
4315         final/sealed optimization.
4316
4317 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
4318
4319         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
4320         domain is not set. Fixes #465864.
4321
4322 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4323
4324         * method-to-ir.c: Don't stop sharing of generic methods with catch
4325         clauses - we already handle those.
4326
4327 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4328
4329         * mini.c, mini.h: lookup_generic_method() is now
4330         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
4331         making the shared_generics_hash obsolete.
4332
4333 2009-01-12  Mark Probst  <mark.probst@gmail.com>
4334
4335         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
4336         use the red zone.  Make room on the stack first and then use it,
4337         not the other way around.
4338
4339 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
4340
4341         * mini.c (mini_init): Call mono_xdebug_init ().
4342
4343         * aot-compiler.c (mono_xdebug_init): Make this non-static.
4344
4345 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
4346
4347         * TestDriver.cs: Add an --iter argument to run tests multiple times.
4348
4349         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
4350         trampolines.
4351
4352         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
4353         debug+unwind info for trampolines.
4354
4355         * mini.c (mono_create_unwind_op): New helper function.
4356
4357         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
4358
4359 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
4360
4361         * aot-compiler.c: Fix the build.
4362
4363 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
4364
4365         * Makefile.am: Update dtrace-prelink.sh location.
4366
4367 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
4368
4369         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
4370         optimization. Fixes #464520.
4371
4372 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
4373
4374         * mini-amd64.c : Adding code to save/restore non-volatile registers
4375            on Winx64.
4376
4377         * exceptions-amd64.c : Adding code to save/restore non-volatile 
4378           registers on Winx64.
4379
4380         Contributed under MIT/X11 license.
4381
4382 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
4383
4384         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
4385         __GNUC_MINOR__ which can break when the major version changes.
4386
4387 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
4388
4389         * basic-simd.cs: Add tests for usage of the sizeof opcode.
4390
4391 2009-01-07  Geoff Norton  <gnorton@novell.com>
4392
4393         * helpers.c:  Allow mono -v -v -v to work on darwin.
4394
4395 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
4396
4397         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
4398           pattern. 
4399
4400         Contributed under MIT/X11 license.
4401
4402 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
4403
4404         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
4405         instead of directly accessing type->data.klass. Fixes #462016.
4406         (mono_allocate_stack_slots_full): Ditto.
4407
4408         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
4409         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
4410
4411         * aot-compiler.c (emit_plt): Fix ARM build.
4412
4413 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
4414
4415         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
4416         
4417         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
4418         change.
4419
4420         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
4421         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
4422         #463357.
4423
4424         * iltests.il.in: Add a regression test.
4425
4426 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4427
4428         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
4429
4430 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4431
4432         * basic-simd.cs: Add a regression test for #462457.
4433
4434 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4435
4436         * mini-ops.h: Add a definition of XPHI.
4437
4438         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
4439
4440         * ssa.c (op_phi_to_move): Handle XPHI.
4441
4442         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
4443
4444         Fixes #462457
4445
4446 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
4447
4448         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
4449
4450 2008-12-31  Geoff Norton  <gnorton@novell.com>
4451
4452         * mini-ppc.c: The prolog size allocated can be too small for darwin
4453         ppc32 under certain circumstances.  Also fix a small logic bug.
4454
4455 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
4456
4457         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
4458         while loading AOT methods.
4459
4460         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
4461         since only the former is nulled out after a successful cast. This prevents
4462         crashes with rethrown exceptions when using --debug=casts.
4463
4464 2008-12-24  Mark Probst  <mark.probst@gmail.com>
4465
4466         * mini.h: New macro for checking whether a method is final,
4467         i.e. whether the method or its class is marked final.
4468
4469         * method-to-ir.c: Use the new macro for all final-checks
4470         consistently.  Fixes the crash in the System.ServiceModel tests.
4471
4472 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4473
4474         * mini-exceptions.c (get_exception_catch_class): Corrected another
4475         overly strict assertion.
4476
4477 2008-12-23  Mark Probst  <mark.probst@gmail.com>
4478
4479         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
4480         Clobbering it is not allowed because the caller might use it as
4481         the vtable register in the interface call.
4482
4483 2008-12-19  Mark Probst  <mark.probst@gmail.com>
4484
4485         * mini-exceptions.c (get_exception_catch_class): Corrected an
4486         overly strict assertion.
4487
4488 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
4489         
4490         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
4491
4492         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
4493
4494         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
4495
4496         * cpu-mips.md: correct lengths for certain long_ opcodes.
4497
4498         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
4499
4500         * 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().
4501         
4502 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4503
4504         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
4505         
4506 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
4507         
4508         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
4509         
4510 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
4511
4512         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
4513         next basic block.
4514         
4515 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
4516
4517         * 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
4518
4519         * 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)
4520         
4521 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
4522         
4523         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
4524         
4525 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
4526
4527         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
4528         gshared code. Fixes #458947.
4529
4530         * generics.cs: Add a test.
4531
4532 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4533         
4534         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4535         
4536         * mini-mips.c: first pass n32 code generation.
4537
4538         * mini-mips.h: datatypes and defines for n32 support.
4539
4540         * exceptions-mips.c: first pass n32 code generation.
4541         
4542         * tramp-mips.c: first pass n32 code generation.
4543         
4544         * cpu-mips.md: add long_ opcodes.
4545         
4546 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
4547
4548         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4549
4550         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4551         
4552         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4553         
4554         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4555
4556         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4557
4558         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4559
4560         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4561
4562         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
4563
4564         * helpers.c: for mips/n32, don't pass -mips32 to objdump
4565
4566 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
4567
4568         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
4569
4570 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
4571
4572         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
4573
4574 2008-12-12  Mark Probst  <mark.probst@gmail.com>
4575
4576         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
4577         descriptors for helper functions directly in front of the code.
4578
4579 2008-12-11  Mark Probst  <mark.probst@gmail.com>
4580
4581         * method-to-ir.c: Removed an unnecessary assertion.
4582
4583 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4584
4585         * method-to-ir.c: Merge SGEN changes from the old JIT.
4586
4587 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
4588
4589         * driver.c (compile_all_methods_thread_main): Handle failure of
4590         mono_get_method ().
4591
4592 2008-12-10  Mark Probst  <mark.probst@gmail.com>
4593
4594         * mini-ppc.c: Merged with mini-ppc64.c.
4595
4596         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
4597
4598         * Makefile.am: Use the same sources for PPC and PPC64.
4599
4600         * mini-ppc64.c: Removed.
4601
4602 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4603
4604         * branch-opts.c (remove_block_if_useless): Extract fall through detection
4605         code to mono_bb_is_fall_through.
4606         
4607         * branch-opts.c (mono_remove_critical_edges): Same.
4608
4609 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4610
4611         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
4612         expect that an OP_BR_REG will be there.
4613
4614 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
4615
4616         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
4617         for the many branch ops. The original check miss OP_BR_REG.
4618
4619         Fixes #457574.
4620         
4621 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4622
4623         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
4624
4625 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4626
4627         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
4628         while holding the aot lock.
4629
4630 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4631
4632         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
4633         
4634 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4635
4636         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
4637           to release all runtime callable wrappers held by the runtime.
4638
4639         Contributed under MIT/X11 license.
4640
4641 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
4642
4643         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
4644           for Winx64.
4645
4646         Contributed under MIT/X11 license.
4647
4648 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
4649
4650         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
4651         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
4652
4653 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
4654
4655         * cpu-mips.md: fix ckfinite length
4656
4657         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
4658         (mono_arch_lowering_pass): cleanup, rearrange for clarity
4659         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
4660         
4661 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
4662
4663         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
4664         
4665 2008-12-08  Geoff Norton  <gnorton@novell.com>
4666
4667         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
4668         size by 8 bytes as well.
4669
4670 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4671
4672         * basic-simd.cs: Fix method names for Vector16b.
4673         
4674 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4675
4676         * basic-simd.cs: Fix method names for Vector16sb.
4677
4678 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4679
4680         * basic-simd.cs: Fix method names for Vector8us.
4681         
4682 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4683
4684         * basic-simd.cs: Fix method names for Vector8s.
4685         
4686 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4687
4688         * basic-simd.cs: Fix method names for Vector4ui.
4689
4690 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4691
4692         * basic-simd.cs: Fix method names for Vector2l.
4693
4694 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4695
4696         * basic-simd.cs: Fix method names for Vector2d.
4697
4698 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4699
4700         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
4701         that are extension methods.
4702
4703 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
4704
4705         * basic-simd.cs: Fix method names for Vector4f.
4706
4707 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
4708
4709         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
4710         as such. Fixes #456669.
4711
4712 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4713
4714         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
4715         
4716 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
4717
4718         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
4719         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
4720         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
4721         (mips_adjust_stackframe): handle FP spills
4722                 
4723         * mini-ops.h: add mips_mtc1_s2
4724         
4725         * cpu-mips.md: add mips_mtc1_s2
4726         
4727 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
4728
4729         * unwind.c: New file, move the unwind info encoding functions here from
4730         aot-compiler.c, so they could be used at runtime too.
4731
4732 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4733
4734         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
4735         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
4736         
4737 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
4738
4739         * mini-mips.c: cleanup warnings
4740         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
4741         (mips_adjust_stackframe): handle case of taking the address of stack locals
4742         
4743 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4744
4745         * aot-compiler.c: Implement a few functions missing from the asm writer.
4746         (emit_method_code): Only write symbols for methods when using the bin
4747         writer, since the assembler can't deal with the characters in our method
4748         names.
4749
4750         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
4751
4752         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
4753         call.
4754
4755         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
4756         a bit to also restore %rax.
4757
4758 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4759
4760         * mini-ppc.c: Some simple merges from mini-ppc64.c.
4761
4762 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4763
4764         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
4765         arguments.
4766
4767 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4768
4769         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
4770
4771         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
4772         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
4773
4774         * exceptions-ppc64.c: Removed.
4775
4776         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
4777
4778 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4779
4780         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
4781         tramp-ppc64.c.
4782
4783         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
4784
4785         * tramp-ppc64.c: Removed.
4786
4787 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
4788
4789         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
4790         the TYPESPEC table.
4791
4792 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4793
4794         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
4795
4796         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
4797         mini-ppc.h instead of mini-ppc64.h.
4798
4799         * mini-ppc64.h: Removed.
4800
4801 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4802
4803         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
4804         
4805         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
4806         
4807 2008-12-05  Mark Probst  <mark.probst@gmail.com>
4808
4809         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
4810         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
4811         code easier.
4812
4813 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4814
4815         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
4816
4817 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4818
4819         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
4820
4821 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4822
4823         * basic-simd.cs: Tests for operator == and != on Vector4f.
4824
4825 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4826
4827         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
4828
4829         * simd-intrinsics.c: Kill useless enum.
4830
4831 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4832
4833         * cpu-mips.md: add long_conv_to_ovf_i4_2
4834         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
4835
4836 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4837
4838         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
4839         
4840         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
4841
4842 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4843
4844         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
4845         
4846 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4847
4848         * basic-simd.cs: Add tests for new methods.
4849
4850 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4851
4852         * simd-intrinsics.c: Add support for operator == and !=
4853         on Vector4(u)i.
4854
4855         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
4856
4857 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
4858
4859         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
4860
4861 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
4862
4863         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
4864
4865         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
4866         MONO_PATCH_INFO_ICALL_ADDR.
4867
4868         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
4869
4870         * aot-compiler.c: Resurrect full-aot support.
4871
4872 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4873
4874         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
4875         
4876 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
4877
4878         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
4879         
4880 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
4881
4882         * basic-simd.cs: Fix tests to work under ppc.
4883         Remove tests for methods that will be removed.
4884
4885 2008-12-03  Mark Probst  <mark.probst@gmail.com>
4886
4887         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
4888         generic type (via a typedef or typeref) correctly.
4889
4890 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
4891
4892         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
4893         diagnose an assertion failure.
4894
4895 2008-12-02  Mark Probst  <mark.probst@gmail.com>
4896
4897         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
4898         Fix trampoline size.
4899
4900         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
4901         conversion opcodes are implemented natively instead via emulation.
4902
4903 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4904
4905         * cpu-mips.md: remove mips_xori
4906
4907         * mini-ops.h:  remove mips_xori
4908
4909         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
4910
4911         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
4912         
4913         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
4914         
4915 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4916
4917         * cpu-mips.md: fix instruction lengths.
4918
4919         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
4920
4921         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
4922
4923         * mini-ops.h: fix slti / sltiu op profiles.
4924         
4925 2008-12-02  Martin Baulig  <martin@ximian.com>
4926
4927         * method-to-ir.c (mono_method_to_ir): Disable debugging
4928         information for the init locals block to make the debugger stop
4929         after all locals have been initalized.
4930
4931 2008-12-02  Martin Baulig  <martin@ximian.com>
4932
4933         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
4934         running inside the debugger.
4935
4936 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
4937
4938         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
4939         is enabled.
4940
4941         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
4942         alu->alu imm optimization which only shows if deadce is disabled.
4943
4944         * aot-compiler.c: Rename the function names for the binary and asm writers
4945         so they can coexist in the same process. Rework the xdebug code to use the
4946         asm writer. This avoids the need to call into the runtime to dump the
4947         debugging info. Add more debugging info for types.
4948
4949         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
4950
4951         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
4952         cpu description tables, they can't occur in cpu-<ARCH>.md.
4953
4954         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
4955         the stack in CEE_LDFLDA. Fixes #450542.
4956
4957         * generics.cs: Add a new test.
4958
4959 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
4960
4961         * mini-ops.h: updated MIPS opcodes
4962         * mini-mips.c: decompose long opts
4963         * mini-mips.h: decompose long opts
4964         
4965 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
4966
4967         * cpu-mips.md: fix length on int_rem_un
4968         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
4969         
4970 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
4971
4972         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
4973
4974         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
4975
4976 2008-11-29  Martin Baulig  <martin@ximian.com>
4977
4978         * mini-exceptions.c (mono_handle_native_sigsegv): Check
4979         mono_debug_using_mono_debugger() in addition to the
4980         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
4981
4982 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4983
4984         * mini-ops.h: updated more MIPS opcodes
4985         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
4986         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
4987         
4988 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4989
4990         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
4991
4992 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
4993
4994         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
4995         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
4996         * mini-ops.h: correct selected mips opcode entries
4997         
4998 2008-11-28  Mark Probst  <mark.probst@gmail.com>
4999
5000         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
5001         make them work.
5002
5003 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5004
5005         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
5006
5007 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
5008
5009         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
5010         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
5011         * mini-mips.h: disable IMT
5012         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
5013         
5014 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5015
5016         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
5017
5018 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5019
5020         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
5021
5022 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
5023
5024         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
5025         consistency.
5026
5027 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5028
5029         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5030         for Set/GetVector aligned versions.
5031
5032 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5033
5034         * basic-simd.cs: Add tests for Get/SetVector.
5035
5036 2008-11-27  Mark Probst  <mark.probst@gmail.com>
5037
5038         * mini.c: Removed g_slist_append_mempool().  Now in
5039         metadata/mempool.c.
5040
5041 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
5042
5043         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
5044         size properly and make the bounds check optional.
5045
5046         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
5047         for SetVector and IsAligned.
5048
5049 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
5050
5051         * mini.c: Remove unused mono_normalize_opcodes () function.
5052
5053 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5054
5055         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
5056         using the new atomic add ops now.
5057
5058         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
5059         add.
5060
5061 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5062
5063         * mini-ppc64.c: Several fixes.
5064
5065 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5066
5067         * cpu-mips.md: added jump_table
5068         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
5069
5070 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5071
5072         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
5073
5074 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5075
5076         * mini-ops.h: corrected a handful of MIPS opcodes.
5077
5078 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5079
5080         * aot-compiler.c: MIPS to use ELF writer
5081
5082 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
5083
5084         * mini-codegen.c: remove MIPS specific assert.
5085
5086 2008-11-25  Mark Probst  <mark.probst@gmail.com>
5087
5088         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
5089         fixes.  PPC64 now passes most of the runtime regressions.
5090
5091 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
5092
5093         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
5094         volatile intervals a bit.
5095
5096 2008-11-24  Mark Probst  <mark.probst@gmail.com>
5097
5098         * basic-long.cs: New test case.
5099
5100 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5101
5102         * mini.c (mini_method_compile): Disable globalra for large methods for 
5103         now.
5104
5105         * regalloc2.c (order_moves): Add fp support.
5106
5107         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
5108         source bblock ends with an OP_BR_REG.
5109
5110         * ratests.cs: Add a new test.
5111
5112 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5113
5114         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
5115         sharing.  PPC64 now passes generics.exe.
5116
5117 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5118
5119         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
5120
5121 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
5122
5123         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
5124         memory when mono_jit_info_table_find () can't find the method in the
5125         LMF case.
5126
5127         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
5128         AOTed code too.
5129         
5130         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
5131         writer too.
5132
5133 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5134
5135         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
5136         Several fixes.  PPC64 now runs exceptions.exe and
5137         devirtualization.exe.
5138
5139 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5140
5141         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
5142         arrays.exe and basic-math.exe.
5143
5144 2008-11-22  Mark Probst  <mark.probst@gmail.com>
5145
5146         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
5147         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
5148
5149 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5150
5151         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
5152
5153 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5154
5155         * method-to-ir.c: Move bounds checking macros to ir-emit.h
5156
5157         * ir-emit.h: Move macros from method-to-ir.c to here.
5158
5159 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
5160
5161         * mini-ops.h: Correct the long simd ops to use LREG.
5162
5163 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
5164
5165         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
5166         
5167         * mini-ops.h: Correct the dreg type of a few long opcodes.
5168
5169         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
5170         Add netbsd support.
5171
5172 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
5173
5174         * mini-ppc.c: remove negative stack references in epilog
5175         for platforms that don't support the red zone.
5176
5177 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5178
5179         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
5180         point regs.  Now PPC64 passes basic-calls.exe.
5181
5182 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5183
5184         * basic-simd.cs: Add tests for accessors of Vector2l.
5185
5186 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5187
5188         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
5189
5190         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
5191         
5192         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
5193
5194 2008-11-21  Mark Probst  <mark.probst@gmail.com>
5195
5196         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
5197         PPC64 passes basic-long.exe.
5198
5199 2008-11-20  Mark Probst  <mark.probst@gmail.com>
5200
5201         * decompose.c: Decompose carry and overflow add on PPC64 like on
5202         other 64 bit archs.  Don't decompose sub at all on PPC64.
5203
5204         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
5205         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
5206         basic-long.exe.
5207
5208 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5209
5210         * basic-simd.cs: Add tests for accessors of Vector2d.
5211
5212 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5213
5214         * mini-ops.h: Added OP_INSERTX_R8_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 Vector2d.
5221
5222 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5223
5224         * basic-simd.cs: Add tests for accessors of Vector4f.
5225
5226 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5227
5228         * mini-ops.h: Added OP_INSERTX_R4_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 Vector4f.
5235
5236 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5237
5238         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
5239
5240 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5241
5242         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
5243
5244         * cpu-x86.md: Same.
5245
5246         * mini-x86.c (mono_arch_output_basic_block): Same.
5247         
5248         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
5249
5250 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5251
5252         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
5253
5254 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5255
5256         * simd-intrinsics.c: Enable setters for Vector16sb.
5257
5258 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
5259
5260         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
5261
5262         * cpu-x86.md: Same.
5263
5264         * mini-x86.c (mono_arch_output_basic_block): Same.
5265         
5266         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
5267
5268 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
5269
5270         * simd-intrinsics.c: Implement setter for Vector8us.
5271
5272 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5273
5274         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
5275         for dead variables.
5276
5277 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
5278
5279         * mini-ppc.c: remove references to the red zone in the prolog
5280         (for systems that don't support it).
5281
5282 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5283
5284         * cpu-ppc64.md: Fixed a few instruction lengths.
5285
5286         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
5287         now.
5288
5289 2008-11-19  Mark Probst  <mark.probst@gmail.com>
5290
5291         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
5292         basic.exe now.
5293
5294 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
5295
5296         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
5297
5298 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
5299
5300         * mini-ops.h: Added OP_INSERT_I2.
5301
5302         * cpu-x86.md: Same.
5303
5304         * mini-x86.c (mono_arch_output_basic_block): Same.
5305         
5306         * simd-intrinsics.c: Implement setter for Vector8s.
5307
5308         * simd-methods.h: Add the names of get setters of Vector8s.
5309
5310 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5311
5312         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
5313         
5314         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
5315         parameters.
5316
5317         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5318
5319 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5320
5321         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
5322         for PPC64.  An empty program runs now.
5323
5324 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5325
5326         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
5327
5328         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
5329         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
5330         info for JITted code is emitted into a shared library, loadable into gdb.
5331
5332 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5333
5334         * Makefile.am: Changes to build PPC64.
5335
5336         * mini-arch.h: Include mini-ppc64.h on PPC64.
5337
5338 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5339
5340         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
5341         in PPC code up to r119147.
5342
5343 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5344
5345         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5346         cpu-ppc64.md: Changes for PPC64.
5347
5348         Based on code submitted by andreas.faerber@web.de at
5349         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
5350         X11/MIT license.
5351
5352 2008-11-18  Mark Probst  <mark.probst@gmail.com>
5353
5354         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
5355         cpu-ppc64.md: Copied from the corresponding PPC files from
5356         r118846.
5357
5358 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
5359
5360         * mini-ops.h: Added OP_ROUND.
5361
5362         * cpu-x86.md: Added round.
5363
5364         * mini-x86.c: Added support for intrinsicing Math.Round (double).
5365
5366         * basic-math.cs: Added test_0_round to test rounding.
5367
5368         Contributed under MIT/X11 license.
5369
5370 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
5371
5372         * aot-compiler.c : Fix the Winx64 build.
5373
5374         Contributed under MIT/X11 license.
5375
5376 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5377
5378         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
5379         in OP_EXTRACT_R8 to avoid possible stack corruption.
5380
5381 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5382
5383         * mini-ops.h: Added OP_EXTRACT_R8/I8.
5384
5385         * cpu-x86.md: Added extract_r8.
5386
5387         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
5388         
5389         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
5390         a couple of OP_EXTRACT_I4.
5391
5392         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
5393
5394         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
5395
5396 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
5397
5398         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
5399         and not 4.1. 
5400
5401 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5402
5403         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
5404         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
5405
5406         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
5407         are not needed any more.
5408
5409         * mini.h: Remove the unused INS_LIST macros.
5410
5411         * mini.c (mini_method_compile): Remove a disable globalra case which is no
5412         longer needed.
5413
5414         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
5415         ir-emit.h.
5416
5417         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
5418         mono_alloc_ireg () instead.
5419
5420         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
5421         macros.
5422
5423         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
5424         on amd64.
5425
5426         * aot-runtime.c (load_aot_module): Disable AOT when running under
5427         CAS.
5428
5429         * mini-amd64.h: Change the monitor fastpath defines to check for
5430         !PLATFORM_WIN32 so they work on *bsd too.
5431
5432         * mini.h mini.c mini-hhpa.c: Remove more unused code.
5433
5434         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
5435
5436         * mini.h (MonoCompile): Remove new_ir flag.
5437
5438         * regalloc.h regalloc.c: Remove unused code.
5439
5440         * cpu-*.md: Remove more unused opcodes.
5441
5442         * simple-cee-ops.h simple-mini-ops.h: Removed.
5443
5444         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
5445         
5446 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
5447
5448         * aliasing.h: Removed.
5449
5450         * *.c: Remove references to aliasing.h and inssel.h.
5451
5452         * mini.c: Remove additional unused functions.
5453
5454         * mini-ops.h cpu-*.md: Remove unused opcodes.
5455
5456 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5457
5458         Remove the old JIT code.
5459
5460         * inssel*.brg: Removed.
5461
5462         * ssa.c abcremoval.c aliasing.c: Removed.
5463
5464         * ssa2.c: Renamed to ssa.c.
5465
5466         * abcremoval2.c: Renamed to abcremoval.c.
5467
5468         * *.c: Removed all !cfg->new_ir code.
5469
5470         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
5471         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
5472
5473         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
5474         
5475 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
5476
5477         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
5478         to simplify the code and cut back on the number of global symbols in the AOT
5479         file.
5480         
5481         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
5482
5483 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
5484
5485         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
5486         with the got/got_info tables.
5487
5488         * mini.h: Bump AOT file format version.
5489         
5490         * unwind.h: New file, contains definitions for stack unwinding.
5491
5492         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
5493         to cfg->unwind_ops.
5494         
5495         * aot-compiler.c: Generalize the emitting of unwind information to use the
5496         information in cfg->unwind_ops.
5497
5498         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
5499
5500         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
5501         AOT method frames. Enable writing symbols for methods by default.
5502
5503 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
5504
5505         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
5506         and make it work with vectors of element sizes 1, 2 and 4.
5507
5508         * simd-intrinsics.c: Enable getter for all vectors with element size
5509         1, 2 or 4.
5510
5511         * simd-methods.h: Add the names of other getters.
5512
5513         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
5514
5515         * cpu-x86.md: Same.
5516
5517         * mini-x86.c: Same.
5518
5519 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
5520
5521         * mini-ppc.h: portability fix.
5522
5523 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5524
5525         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
5526         buggy and will overwrite it.
5527
5528 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5529
5530         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
5531         Use it to emit local symbols for all methods so AOTed methods show up with
5532         their full name in gdb/valgrind output.
5533
5534 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
5535
5536         * mini-ppc.c: portability fixes.
5537
5538 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5539
5540         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
5541         entries out of the if (!generic_shared...) code so it is always done.
5542         (mono_class_init_trampoline): Do the patching when running under valgrind
5543         too, newer versions of valgrind have no problems with it.
5544
5545 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5546
5547         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
5548         further sections.
5549
5550 2008-11-13  Mark Probst  <mark.probst@gmail.com>
5551
5552         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
5553         filters.
5554
5555 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5556
5557         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
5558
5559 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5560
5561         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
5562
5563         * cpu-x86.md: Same.
5564
5565         * mini-x86.c: Same.
5566
5567         * simd-intrinsics.c: Same.
5568
5569 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5570
5571         * simd-intrinsics.c: Enable constructor intrinsics for all types.
5572
5573 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5574
5575         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
5576         to work with more Vector types.
5577
5578 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
5579
5580         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
5581         store the elemens directly instead of using and intermediate.
5582
5583 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
5584
5585         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
5586
5587         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
5588         to preserve %eax for aot plt trampolines.
5589
5590         * aot-compiler.c (compile_method): Don't skip synchronized methods.
5591         (encode_method_ref): Flag synchronized methods so they won't go through
5592         the AOT trampoline.
5593
5594         * aot-compiler.c: Additional work to support AOTing synchronized methods/
5595         wrappers.
5596
5597         * cpu-ia64.md (jmp): Increase max length.
5598
5599 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5600
5601         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
5602         open generic classes.
5603
5604         * aot-compiler.c: Enable the ELF writer on ELF platforms.
5605
5606         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
5607         box+brtrue optimization since it causes test failures on x86.
5608
5609 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5610
5611         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
5612
5613         * cpu-x86.md: Same.
5614
5615         * mini-x86.c: Same.
5616
5617         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
5618         for simd ctor values. 
5619
5620         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
5621         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
5622
5623 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
5624
5625         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
5626         LogicalRightShift.
5627
5628         * simd-instrincs.c: Same.
5629
5630         * basic-simd.cs: Same.
5631
5632 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
5633
5634         * ratests.cs: Add more tests.
5635
5636         * regalloc2.c (add_spill_code): Handle more corner cases.
5637
5638 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5639
5640         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
5641         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
5642         both the source an destination of an instruction.
5643
5644 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
5645
5646         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
5647         wapihandles.c: more portability changes.
5648
5649 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
5650
5651         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
5652         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
5653         safe to execute in a signal handler and the kernel provides better
5654         the info in /proc/self/smaps. Avoid the assert on sigaction during
5655         cleanup.
5656
5657 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
5658
5659         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
5660         do the bblock linking hack if it is actually needed.
5661
5662         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
5663         up linking.
5664
5665         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
5666         crash problem is fixed.
5667
5668         * branch-opts.c (mono_remove_critical_edges): Link up newly added
5669         bblocks.
5670
5671         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
5672         for catch clauses.
5673         (mini_method_compile): Set the starting value of next_vreg to 
5674         MAX_IREGS + MAX_FREGS when using globalra.
5675
5676         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
5677         filter clauses with BB_EXCEPTION_HANDLER.
5678
5679         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
5680
5681 2008-11-10  Mark Probst  <mark.probst@gmail.com>
5682
5683         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
5684         space for stdcall.  Fixes regressions on Win32.
5685
5686 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
5687
5688         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
5689         bblocks.
5690         (linear_scan): Remove an assert which doesn't seem to be needed.
5691
5692         * local-propagation.c (mono_local_deadce): Avoid a call to
5693         MONO_DELETE_INS which would screw up the instruction linking.
5694
5695         * mini.c (mono_decompose_op_imm): Make this work with globalra.
5696
5697         * regalloc2.c: Upgrade to work the current JIT code.
5698
5699 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
5700
5701         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
5702         case.
5703
5704         * aot-runtime.c: Remove some dead code.
5705
5706         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
5707         consistency.
5708         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
5709
5710         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
5711         trampolines using sscanf since atoi doesn't work on large unsigned values.
5712
5713         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
5714         Initialize code_size.
5715
5716 2008-11-08  Mark Probst  <mark.probst@gmail.com>
5717
5718         * method-to-ir.c (mini_emit_inst_for_method): Make
5719         Interlocked.CompareExchange work for Int arguments on 32 bit
5720         archs, as well.
5721
5722 2008-11-07  Mark Probst  <mark.probst@gmail.com>
5723
5724         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
5725
5726 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
5727
5728         * main.c Fix MSVC build.
5729
5730         Contributed under MIT/X11 license.
5731
5732 2008-11-06  Mark Probst  <mark.probst@gmail.com>
5733
5734         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
5735         alignment larger than 8 bytes are aligned correctly, too.
5736
5737         * mini.c: Honor the min_align field of MonoClass when laying out
5738         the stack.
5739
5740 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
5741
5742         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
5743
5744         * aot-compiler.c (emit_plt): Fix a warning.
5745         
5746         * aot-compiler.c: Implement ARM support in the binary writer.
5747
5748 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5749
5750         * basic-simd.cs: Add test for getter with byref arg.
5751         Fix the naming of a few tests.
5752         Add missing checks to a test.
5753
5754 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5755
5756         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
5757
5758         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
5759         most of the full-aot support for monitor enter/exit trampolines.
5760
5761         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
5762         enter/exit trampoline creation functions.
5763
5764         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
5765         make dist.
5766
5767 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
5768
5769         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
5770         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
5771         implement the needed functionality without adding crap to the runtime.
5772
5773 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
5774
5775         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
5776         non-x86 builds.
5777
5778         * mini.c (mono_build_date): New global version holding the build date in
5779         string format.
5780         
5781         * Makefile.am (buildver.c): Generate a file containing the build date.
5782
5783         * main.c: Set the build date from the generated file.
5784
5785         * mini.c (mono_get_runtime_build_info): New helper function returning build
5786         information in a string format.
5787         
5788         * driver.c (mono_main): Print the build date in --version.
5789
5790         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
5791         file when the bind-to-runtime-version option is used.
5792
5793 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5794
5795         * simd-intrinsics.c: Fix bug when using getters and byref args. 
5796
5797 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
5798
5799         * simd-methods.h: Rename prefetch methods.
5800
5801         * simd-intrinsics.c: Same.      
5802
5803 2008-11-05  Mark Probst  <mark.probst@gmail.com>
5804
5805         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
5806         sizes.
5807
5808 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5809
5810         * aot-compiler.c: Use the bundled elf header files instead of depending on
5811         the system one.
5812         
5813         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
5814         mempool.
5815
5816         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
5817         on every call.
5818
5819 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
5820
5821         * cpu-x86.md: Add store nta ops.
5822
5823         * mini-ops.h: Same.
5824
5825         * mini-x86.c: Same.
5826
5827         * mini.h: Add an enum for simd prefetch modes.
5828
5829         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
5830         of store. Use the changed code to support store nta.
5831
5832         * simd-intrinsics.c: Add prefetch ops for all vector types.
5833
5834 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5835
5836         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
5837         threads.
5838         
5839         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
5840         names.
5841
5842         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
5843         trampolines.
5844
5845 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5846
5847         * mini-x86.c: Fixed commit.
5848
5849 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5850
5851         * aot-compiler.c (emit_plt): Align the plt section only on x86.
5852
5853 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5854
5855         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
5856         and MONITOR_EXIT, for the ASM fastpaths.
5857
5858         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
5859         available.
5860
5861         * mini.c, patch-info.h: Signature and patch infos for
5862         Monitor.Enter/Exit trampolines.
5863
5864         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
5865
5866         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
5867         Monitor.Enter/Exit ASM fastpath for Linux.
5868
5869 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5870
5871         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
5872
5873         * objects.cs: Add a new test.
5874         
5875         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
5876
5877         * aot-runtime.c (load_method): Run class initialization in the PLT case even
5878         if MONO_LOG_LEVEL is set.
5879
5880         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
5881
5882         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
5883
5884         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
5885         
5886         * aot-compiler.c: Change the relocation code to use virtual addresses instead
5887         of file offsets. Align the sections belonging to the data segment to 
5888         PAGESIZE.
5889
5890 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5891
5892         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
5893         elf.h. Port it to amd64.
5894
5895 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5896
5897         * driver.c: Enable SIMD by default.
5898
5899 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
5900
5901         * cpu-x86.md: Add prefetch op.
5902
5903         * mini-ops.h: Same.
5904
5905         * mini-x86.c: Same.
5906
5907         * mini.h: Add an enum for simd prefetch modes.
5908
5909         * simd-methods.h: Add prefetch function names.
5910
5911         * simd-intrinsics.c: Add prefetch ops for all vector types.
5912
5913 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
5914
5915         * aot-compiler.c (emit_bytes): Speed this up a little.
5916
5917 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
5918
5919         * aot-compiler.c: Add JIT time etc. statistics.
5920         
5921         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
5922
5923         * mini.h (MonoCompile): Add 'got_offset' field.
5924
5925         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
5926         method_got_offsets array.
5927
5928         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
5929         wrappers.
5930
5931         * aot-compiler.c (compile_method): Add generic method instances referenced
5932         by the method to the list of methods to be compiled, this is required so if
5933         A<T> references B<T>, and another assembly references A<int>, then it will
5934         also get a copy of B<int>.
5935
5936         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
5937         when checking for monitor enter/exit.
5938
5939 2008-10-30  Mark Probst  <mark.probst@gmail.com>
5940
5941         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
5942         for Monitor.Enter and Monitor.Exit if enabled.
5943
5944         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
5945         Solaris.
5946
5947 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
5948
5949         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
5950         of an OP_MOVE. Fixes #440046.
5951
5952         * basic-long.cs: Add a new test.
5953
5954 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5955
5956         * mini.h: Add synchronization note for the managed counter-part.
5957
5958         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
5959         returns the simd caps of the current cpu.
5960
5961 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
5962
5963         * basic-simd.cs: Remove Console.WriteLine.
5964
5965 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5966
5967         * basic-simd.cs: New tests for Vector2ul.
5968
5969 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5970
5971         * simd-intrinsics.c: Add new vector type Vector2ul.
5972
5973 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5974
5975         * basic-simd.cs: New tests for Vector2l.
5976
5977 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5978
5979         * cpu-x86.md: Add long version of most packed int ops.
5980
5981         * mini-ops.h: Same.
5982
5983         * mini-x86.h: Same.
5984
5985         * simd-intrinsics.c: Add new vector type Vector2l.
5986
5987 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5988
5989         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
5990
5991         * simd-methods.h: Remove SN_op_BitwiseXor.
5992
5993 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
5994
5995         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
5996         alignment.
5997
5998 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5999
6000         * basic-simd.cs: Test for Vector2d.
6001
6002         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
6003         value.
6004
6005 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6006
6007         * cpu-x86.md: Add double version of all packed float ops.
6008
6009         * mini-ops.h: Same.
6010
6011         * mini-x86.h: Same.
6012
6013         * simd-intrinsics.c: Add new vector type Vector2d.
6014
6015         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
6016
6017         * simd-methods.h: Add Duplicate.
6018
6019 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
6020
6021         * basic-simd.cs: Test for packing with signed saturation.
6022
6023 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
6024
6025         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
6026         found in the TYPESPEC table.
6027
6028 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
6029
6030         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
6031         too.
6032
6033         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
6034
6035         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
6036         instead of the RVA, since the RVA can be changed by tools like the cil 
6037         stripper.
6038
6039         * method-to-ir.c (mono_method_to_ir2): Ditto.
6040
6041         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
6042         (deserialize_variable): Ditto.
6043
6044 2008-10-25  Martin Baulig  <martin@ximian.com>
6045
6046         * debug-mini.c (write_variable): Use
6047         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
6048
6049 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6050
6051         * cpu-x86.md: Add unsigned variants of packd and packw.
6052
6053         * mini-ops.h: Same.
6054
6055         * mini-x86.h: Emit the right instruction for packd and packw.
6056         Add unsigned variants of packd and packw.
6057
6058         * simd-intrinsics.c: Packd and packw were used in place of their
6059         unsigned variants. Change that.
6060         Add intrinsics for (Signed)PackWithSignedSaturation.
6061
6062         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
6063
6064 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6065
6066         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
6067
6068 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6069
6070         * mini-ops.h: Remove dword packed add/sub with saturation ops.
6071
6072         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
6073
6074         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
6075         sse instructions.
6076
6077         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
6078
6079 2008-10-24  Mark Probst  <mark.probst@gmail.com>
6080
6081         * method-to-ir.c, mini.c: Special casing for the synchronized
6082         wrapper for the ldtoken+GetTypeFromHandle case.
6083
6084 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6085
6086         * mini.c (mono_replace_ins): Move this to branch-opts.c.
6087
6088         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
6089         created/split bblocks.
6090
6091 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6092
6093         * mini-ops.h: Add packed signed mul high.
6094         
6095         * cpu-x86.md: Same.
6096
6097         * mini-x86.c (mono_arch_output_basic_block): Same.
6098
6099         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
6100
6101         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
6102
6103 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6104
6105         * basic-simd.cs: Tests for Vector16sb.
6106
6107 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
6108
6109         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
6110
6111 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6112
6113         * mini-ops.h: Add packed signed min, max and compare greater.
6114         
6115         * cpu-x86.md: Same.
6116
6117         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
6118         saturation.
6119
6120         * simd-methods.h: Add CompareGreaterThan.
6121
6122         * simd-methods.h: Remove CompareEquals.
6123
6124         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
6125
6126         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
6127
6128         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
6129         CompareEqual.
6130
6131 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6132
6133         * basic-simd.cs: Fix tests due to change in the API.
6134
6135 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6136
6137         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
6138
6139 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6140
6141         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
6142
6143         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
6144         inst_offset as this has invalid values for LDADDR.
6145
6146 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6147
6148         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6149
6150         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
6151
6152 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6153
6154         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
6155         for accessing field->data.
6156
6157 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6158
6159         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
6160
6161 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
6162
6163         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
6164
6165         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
6166
6167 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6168
6169         * dominators.c (mono_compute_natural_loops): Allocate GList enties
6170         from the cfg mempool.
6171
6172 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6173
6174         * basic-simd.cs: Tests for new methods in Vector8us.
6175
6176 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
6177
6178         * mini-ops.h: Add multiply and store high.
6179         
6180         * cpu-x86.md: Same.
6181
6182         * mini-x86.c (mono_arch_output_basic_block): Same.
6183
6184         * simd-methods.h: Same.
6185
6186         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
6187         and CompareEqual.
6188
6189 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6190
6191         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
6192         mono_class_setup_vtable ().
6193
6194         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
6195         mono_class_get_vtable_entry () for accessing klass->vtable.
6196
6197         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
6198
6199         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
6200         found.
6201
6202         * method-to-ir.c (mono_save_token_info): Don't save references made from
6203         wrappers.
6204
6205         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
6206         of generic instances.
6207
6208         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
6209
6210 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6211
6212         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
6213         OP_JMP depends on the method signature.  Calculate it properly.
6214
6215 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6216         
6217         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
6218         called directly.
6219
6220         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
6221         instances.
6222         (emit_extra_methods): Add another table mapping method indexes to 
6223         offsets in the extra_method_info table.
6224
6225         * mini.h: Bump AOT file format version.
6226         
6227         * aot-runtime.c: Merge most of the code from mono_aot_get_method
6228         and mono_aot_get_method_from_token () into one function.
6229
6230 2008-10-19  Mark Probst  <mark.probst@gmail.com>
6231
6232         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
6233         separate counter.
6234
6235 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
6236
6237         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
6238         methods.
6239
6240         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
6241         disable_aot.
6242
6243         * mini.c (mono_patch_info_equal): Compare the generic context as well.
6244
6245         * mini.h: Bump aot file format version.
6246
6247         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
6248         AOT file can contain native code for methods which are not in the METHOD
6249         table. Generate code for non-sharable generic instances of generic methods
6250         found in the METHODSPEC table.
6251         
6252         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
6253         encoding generic type handles.
6254
6255         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
6256         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
6257
6258         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
6259         macros + MONO_ADD_INS.
6260
6261         * mini.c (mono_jump_info_token_new2): New function which takes a generic
6262         context as well.
6263
6264         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
6265
6266         * mini.h: Bump aot file format version.
6267
6268         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
6269
6270 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6271
6272         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
6273         platforms, with definable stack alignment value.  Set to 16 now
6274         for all platforms.
6275
6276         * mini.c, mini.h, driver.c: Command line option for disabling
6277         stack alignment.
6278
6279 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6280
6281         * basic-simd.cs: Tests for new methods in Vector4ui.
6282
6283 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6284
6285         * mini-ops.h: Add packed int shuffle.
6286         
6287         * cpu-x86.md: Same.
6288
6289         * mini-x86.c (mono_arch_output_basic_block): Same.
6290
6291         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
6292         extract mask, max, min, shuffle.
6293
6294         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
6295
6296 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
6297
6298         * basic-simd.cs: Tests for new methods in Vector8us.
6299
6300 2008-10-17  Mark Probst  <mark.probst@gmail.com>
6301
6302         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
6303         RuntimeTypeHandle, not a TypedReference.
6304
6305 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
6306
6307         * simd-intrinsics.c: remove relocations.
6308
6309 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
6310
6311         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
6312         optimizations from the x86 backend.
6313
6314 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
6315
6316         * simd-methods.h, simd-intrinsics.c: debloat method names and
6317         prepare for no relocations.
6318
6319 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6320
6321         * mini-ops.h: Add packed min/equal and sum of absolute differences.
6322         
6323         * cpu-x86.md: Same.
6324
6325         * mini-x86.c (mono_arch_output_basic_block): Same.
6326
6327         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
6328         extract mask, max, min and sum of absolute differences.
6329
6330         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
6331         method name.
6332
6333 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6334
6335         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
6336         Renamed one test for consistency.
6337
6338 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6339
6340         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
6341         fix to the code that deal with other blocks.
6342
6343 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6344
6345         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
6346
6347 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
6348
6349         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
6350         that deals with vreg interference. Explicitly check for OP_LDADDR to be
6351         able to process the source reg.
6352
6353 2008-10-16  Martin Baulig  <martin@ximian.com>
6354
6355         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
6356
6357         * inssel.brg: Add `OP_HARD_NOP'.
6358
6359         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
6360
6361         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
6362         `OP_HARD_NOP' instruction when running inside the debugger.
6363
6364         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
6365         `OP_HARD_NOP' instruction when running inside the debugger.
6366
6367 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6368
6369         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
6370         now works. The issue with the regalloc tripping up no longer
6371         happens.
6372
6373         * simd-intrinsics.c (load_simd_vreg): Same.
6374
6375 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6376         
6377         * basic-simd.cs: Tests for new Vector8ui methods.
6378
6379 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6380
6381         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
6382         only for type. This fixes crashes where MonoInst::klass is checked
6383         for ops of type != VTYPE or OBJ.
6384
6385         * simd-intrinsics.c (load_simd_vreg): Same.
6386
6387 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
6388
6389         * mini-ops.h: Add ops for packed shuffle/max/avg and
6390         extract mask.
6391         
6392         * cpu-x86.md: Same.
6393
6394         * mini-x86.c (mono_arch_output_basic_block): Same.
6395
6396         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
6397         extract mask.
6398
6399         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
6400         to emit extract mask op.
6401
6402         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
6403         to emit word shuffles.
6404
6405 2008-10-15  Mark Probst  <mark.probst@gmail.com>
6406
6407         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
6408         the largest alignment needed by a variable, but at least
6409         sizeof(gpointer).
6410
6411 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6412
6413         * basic-simd.cs: Tests for the fixes in the last commit.
6414
6415 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6416
6417         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
6418         no longer handles STACK_PTR input.
6419
6420         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
6421
6422         * simd-intrinsics.c (load_simd_vreg): New function that works like 
6423         get_simd_vreg   but handles STACK_PTR input.
6424
6425         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
6426         as the input can be an arbitrary pointer.
6427
6428         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
6429         LDADDR local optimization directly otherwise use a store op.
6430
6431 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6432
6433         * basic-simd.cs: Tests for dup low and dup high.
6434
6435 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
6436
6437         * mini-ops.h: Add dup low and dup high ops.
6438         
6439         * cpu-x86.md: Same.
6440
6441         * mini-x86.c (mono_arch_output_basic_block): Same.
6442
6443         * simd-intrinsics.c (vector4f_intrinsics): Same.
6444
6445 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6446
6447         * basic-simd.cs: Tests for recently added functionality.
6448
6449 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6450
6451         * mini-ops.h: Add remaining sse1 fp ops.
6452         
6453         * cpu-x86.md: Add remaining sse1 fp ops.
6454
6455         * mini-x86.c (mono_arch_output_basic_block): Same.
6456
6457         * mini.h: Add enum for simd FP compare conditions.
6458
6459         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
6460
6461         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
6462         so the backed can generate the appropriate op.
6463
6464 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
6465         This patch squeese one more byte from the SimdIntrinsc struct.
6466
6467         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
6468         a a shift amount intead of simply or'ing it.
6469
6470         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
6471
6472         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
6473         byte so we can have an aditional flags field without increasing struct size.
6474
6475         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
6476         against the simd_supported_versions bitmask.
6477
6478         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
6479
6480 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
6481
6482         * mini.c: remove rawbuffer code (the only use here is unsafe because
6483         it takes locks during signal handling and the kernel now provides much
6484         better info in proc/pid/smaps these days).
6485
6486 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
6487
6488         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
6489         OP_X86_PUSH_OBJ. Fixes #434620.
6490
6491         * objects.cs: Add a test.
6492         
6493 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
6494
6495         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
6496         that the packuswb/packusdw don't work with unsigned numbers for what
6497         would be negative numbers in signed format.
6498
6499         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
6500         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
6501
6502         * mini-ops.h: Add doubleword forms of many ops and packing ones.
6503
6504         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
6505
6506         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
6507
6508         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
6509
6510         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
6511         add more ops.
6512
6513         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
6514         version as the enum in mini.h.
6515
6516         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
6517         for sse3 ops, check the simd_version field if present. This way the code
6518         works with all versions of sse.
6519
6520 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6521
6522         * simd-intrinsics.c: Fixed intrinsic name typo.
6523
6524         * mini.h: Added missing simd exported function.
6525
6526         * basic-simd.cs: Added tests for Vector4ui.
6527         Fixed broken test for Vector16b.
6528
6529 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
6530
6531         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
6532         the max length to 64.
6533
6534 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6535
6536         * method-to-ir.c: Only do the fast virtual generic method call for
6537         non-wrapper methods.
6538
6539         * mini.h, mini-trampolines.c: The new generic virtual remoting
6540         trampoline handles virtual method calls via the vtable (as done by
6541         the fast virtual generic method calls) to remoting proxies.
6542
6543         * mini.c (mono_jit_create_remoting_trampoline): For generic
6544         methods reate a generic virtual remoting trampoline.
6545
6546         * mini-amd64.h: Enable fast virtual generic method calls again.
6547
6548 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6549
6550         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
6551         restore registers when doing tail calls.
6552
6553 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6554
6555         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
6556         Vector4ui.
6557
6558 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6559
6560         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
6561
6562 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6563
6564         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
6565
6566 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6567
6568         * basic-simd.cs: Retrofit for API changes.
6569
6570 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6571
6572         * mini-ppc.c: Handle integer stack arguments for tail calls.
6573
6574 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6575
6576         * optflags-def.h: Removed sse3 optimization.
6577
6578         * driver.c: Same.
6579
6580         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
6581         sse3.
6582
6583         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
6584
6585         * mini.h: Added enumeration with simd versions.
6586
6587         * simd-intrinsics.c (emit_intrinsics): Use the new static var
6588         for detecting SSE3.
6589
6590         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
6591
6592         * mini.c (mini_init): Call mono_simd_intrinsics_init.
6593
6594 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6595
6596         * basic-simd.cs: Added tests for Vector8u and Vector16u.
6597
6598         * basic-simd.cs: Fixed test naming.
6599
6600 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6601
6602         * mini-ops.h: Added ops for packed and saturated math, shifts
6603         and packing/unpacking.
6604
6605         * cpu-x86.md: Added descriptors for the above ops.
6606
6607         * mini-x86.c: Added code to emmit the above ops.
6608
6609         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
6610
6611 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
6612
6613         * aot-compiler.c (compile_method): Enable AOT for generic code.
6614
6615         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
6616
6617 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
6618
6619         * mini.c: add a workaround for a common screwup that ends up blamed
6620         to mono (other processes blocking signal delivery).
6621
6622 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6623
6624         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
6625         in the LDFLD/STFLD opcodes. Fixes #432673.
6626
6627         * iltests.il.in: Add a new test.
6628
6629 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
6630
6631         * mini-arm.c: attach the thread in unmanaged->managed transitions
6632         using delegates (bug #433148).
6633
6634 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6635
6636        * basic-simd.cs: Use new ShuffleSel constants.
6637
6638 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
6639
6640         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
6641
6642         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
6643         only disable simd intrinsics if no sse2 is detected.
6644
6645         * optflags-def.h: Added sse3.
6646
6647         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
6648         is disabled.
6649
6650 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6651
6652         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
6653         when adding delegate-invoke wrappers.
6654
6655 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6656
6657         * Makefile.am: Reenable the simd tests.
6658
6659 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6660
6661         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
6662           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
6663           other vreg is allocated to that hreg.
6664
6665         Contributed under MIT/X11 license.
6666
6667 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
6668
6669         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
6670         yet checked in.
6671
6672 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6673
6674         * basic-simd.cs: New test suite for SIMD intrinsics.
6675
6676         * Makefile.am: Added new tests.
6677
6678 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
6679
6680         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
6681
6682         * mini-ops.h: Same.
6683
6684         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
6685
6686         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
6687         using SSE2 aware opcodes.
6688
6689         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
6690         is enabled, this code path is only reachable if conversion ops are emmited after
6691         mono_method_to_ir.
6692
6693         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
6694
6695         This optimization saves 6 bytes per conversion against the old version.
6696
6697 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6698
6699         * aot-compiler.c (compile_method): Don't skip methods referencing 
6700         generic methods without a corresponding entry in token_info_hash, since
6701         encode_method_ref () can handle all generic methods now.
6702
6703         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
6704         generic context is set.
6705         
6706         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
6707         generic sharing of LDTOKEN.
6708
6709 2008-10-06  Mark Probst  <mark.probst@gmail.com>
6710
6711         * mini-amd64.h: Temporarily disabled fast virtual generic method
6712         calls because it breaks the System.Runtime.Remoting tests.
6713
6714 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6715
6716         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
6717
6718         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
6719         so inlining actually works.
6720         (check_inline_caller_method_name_limit): Ditto.
6721
6722 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
6723
6724         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
6725         64 bit safety (from Olaf Hering and Andreas Farber).
6726
6727 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6728         
6729         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
6730         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
6731         unused virtual call support code.
6732
6733         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
6734         
6735         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
6736         which can't use aot trampolines.
6737         (decode_patch): Don't create aot trampolines for methods which can't use
6738         them.
6739
6740         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
6741         use aot trampolines.
6742
6743         * mini.h: Bump AOT image format version.
6744         
6745 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
6746
6747         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
6748         to save_token_info () since cmethod is inflated for constrained calls.
6749
6750         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
6751
6752 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
6753
6754         * Makefile.am: Add build rules for ppc64.
6755         This avoids the build failing at pedump with unresolved symbols
6756         due to lack of arch_sources. Instead it will now fail earlier
6757         due to lack of cpu-ppc64.md.
6758
6759         Contributed under MIT/X11 license.
6760
6761 2008-10-04  Mark Probst  <mark.probst@gmail.com>
6762
6763         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
6764         tail calls.
6765
6766         * iltests.il.in: Add test case for tail call with many arguments.
6767
6768 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6769
6770         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
6771         to the fast virtual generic method code until the aot case is fixed.
6772
6773 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6774
6775         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
6776
6777 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6778
6779         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
6780         thunks.
6781
6782 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6783         
6784         * simd-intrinsics.c: Forgot to add this one.
6785
6786         * mini-codegen.c: Fix macro in case SIMD is not supported.
6787
6788 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6789         
6790         This patch land initial JIT support for simd intrinsics.
6791
6792         * mini-x86.h: Added new define to make --enable_minimal work on x86.
6793
6794         * Makefile.am: Added simd-intrinsics.c
6795
6796         * simd-intrinsics.c: New file with simd instrinsic related
6797         code.
6798
6799         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
6800
6801         * cpu-x86.md: Add simd related instructions.
6802
6803         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
6804
6805         * driver.c: Added two new --regression variants.
6806
6807         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
6808
6809         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
6810
6811         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
6812         extract some complicated logic to helper functions.
6813
6814         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
6815
6816         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
6817
6818         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
6819         the specialized simplification pass.
6820
6821         * method-to-ir.c (mono_spill_global_vars): Use new macro.
6822
6823         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
6824
6825         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
6826         table.
6827
6828         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
6829         if MONO_ARCH_NEED_SIMD_BANK is defined.
6830
6831         * mini-ops.h: Added the new simd ops.
6832
6833         * mini-x86.c: Added mono_arch_xregname.
6834
6835         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
6836
6837         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
6838
6839         * mini-x86.h: Define simd related MONO_ARCH macros.
6840
6841         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
6842
6843         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
6844
6845         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
6846         MONO_CLASS_IS_SIMD to deal with simd related IR.
6847
6848         * mini.h (MonoInst): Added spill_var to the backend union.
6849
6850         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
6851
6852         * mini.h: Added forward declarations of the new simd fuctions.
6853
6854         * optflags-def.h: Added new optimization names SIMD.
6855
6856         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
6857
6858         * regalloc.h: Added support for working with 3 register banks.
6859
6860         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
6861
6862         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
6863
6864 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
6865
6866         * mini-exceptions.c: remove 64 bit related ifdef clutter.
6867
6868 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6869
6870         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
6871         instead of one on 64 bit systems.
6872
6873         * method-to-ir.c: Remove unused includes.
6874
6875 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
6876
6877         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
6878         cfg->used_int_regs, since the two are different on arm.
6879
6880 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6881
6882         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
6883         mono_method_get_vtable_index() to get the vtable index.
6884
6885 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6886
6887         * method-to-ir.c (mono_method_to_ir2): Don't create native
6888         wrappers for array methods, because they're never called (and if
6889         they were called they wouldn't work).
6890
6891 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6892
6893         * method-to-ir.c (mono_method_to_ir2): Array methods are
6894         special-cased and must not be invoked indirectly via the (M)RGCTX
6895         when generic sharing is turned on.  Fixes #431413.
6896
6897 2008-10-01  Mark Probst  <mark.probst@gmail.com>
6898
6899         * method-to-ir.c: When generic sharing is active, call
6900         non-interface virtual generic methods via the standard trampoline.
6901
6902         * mini-trampolines.c: Handle virtual generic shared methods.
6903
6904         * mini.h, mini-x86.c, mini-x86.h: New argument for
6905         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
6906         method thunks and which is the trampoline to call if the lookup
6907         fails.  Enable the virtual generic method thunk for x86.
6908
6909         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
6910         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
6911         argument but assert that it's NULL, because these archs don't yet
6912         implement the virtual generic method thunk.  Changes in the IMT
6913         thunk data structures.
6914
6915 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
6916
6917         * aot-compiler.c (emit_globals): Avoid invalid characters in
6918         the static linking symbol.
6919
6920         * objects.cs: Add a test for the range check optimization. Fix warnings.
6921
6922         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
6923         optimization from the current JIT.
6924
6925         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
6926         later in decompose_array_access_opts () to allow more optimizations.
6927
6928         * method-to-ir.c (mono_handle_soft_float): Rename this to 
6929         mono_decompose_soft_float () for consistency.
6930
6931         * mini-ops.h: Fix arguments of OP_STRLEN.
6932
6933         * method-to-ir.c (save_cast_details): Extract the cast details saving code
6934         into a separate function.
6935         (reset_cast_details): Ditto.
6936         (handle_unbox): Save cast details. Fixes #431254.
6937
6938         * method-to-ir.c: Remove some obsolete FIXMEs.
6939
6940 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6941
6942         * ir-emit.h (alloc_dreg): Write a warning before crashing.
6943
6944 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6945
6946         * mini-codegen.c: More work on macros to make them
6947         ready for multiple regbanks.
6948
6949 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6950
6951         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
6952
6953         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
6954
6955 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6956
6957         * mini-codegen.c (mono_spillvar_offset): Proper support for
6958         multiple regbanks.
6959
6960 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6961
6962         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
6963         the stack overflow changes.
6964
6965 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6966
6967         * mini-codegen.c: Make all bank macros depend on reg_bank.
6968
6969         * mini-codegen.c (mono_local_regalloc): Make free mask
6970         initialization regbank aware.
6971
6972 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6973
6974         * mini-codegen.c (mono_local_regalloc): Extract callee
6975         mask selection to a function and make it regbank aware.
6976
6977 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
6978
6979         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
6980         code to deal with many regbanks.
6981
6982 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
6983
6984         * mini-codegen.c: More fp->regbank changes.
6985
6986 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6987
6988         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
6989         of a hardcoded constant.
6990
6991 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
6992
6993         * method-to-ir.c (type_from_stack_type): Fix typo.
6994
6995 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
6996
6997         * mini-ia64.c (emit_move_return_value): Convert float return values to
6998         double.
6999
7000         * objects.cs: Add a new test.
7001         
7002         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
7003         VARARG methods to fix an assert later.
7004
7005         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
7006         end so it at least compiles.
7007
7008 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7009
7010         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
7011
7012 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
7013
7014         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
7015         optimization to a new function (emit_optimized_ldloca_ir) and enable
7016         it for both ldloca and ldloca_s.
7017
7018 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
7019
7020         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
7021         gshared CASTCLASS code.
7022
7023         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
7024         amd64, where the libc stack unwinder encounters stack frames referring to
7025         native code in unmapped memory.
7026
7027         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
7028         sharing.
7029
7030         * generics.cs: Add new test.
7031
7032 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
7033
7034         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
7035         add a check that one of the ARM_FPU_ constants is defined.
7036
7037         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
7038         
7039         * mini-exceptions.c: Fix build on non-altstack platforms.
7040
7041         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
7042         sharing of vtypes.
7043
7044         * ir-emit.h: Add a comment to NEW_PCONST.
7045
7046         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
7047
7048         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
7049
7050         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
7051         after the changes to MonoJitDomainInfo.
7052
7053 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7054
7055         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
7056
7057 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7058
7059         * mini-ppc.c: Compiler warning fixes.
7060
7061 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7062
7063         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
7064         for pinvokes.
7065
7066 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7067
7068         * exceptions-ppc.c, mini-ppc.h: Compile
7069         mono_arch_handle_altstack_exception() on Darwin, too.
7070
7071 2008-09-27  Mark Probst  <mark.probst@gmail.com>
7072
7073         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
7074         work on archs which don't have generic sharing implemented, only
7075         without the vtable_arg.
7076
7077 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7078
7079         * mini.c: Added comment explaining why delegate ctor icall
7080         wrappers are compiled.
7081
7082 2008-09-26  Mark Probst  <mark.probst@gmail.com>
7083
7084         * mini.c: Don't produce trampolines to delegate ctor icall
7085         wrappers but compile them upfront.
7086
7087 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
7088
7089         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
7090         runtime-set function when going back to managed code. Currently this
7091         is used to set back the protection on the soft ovf pages and/or to
7092         throw the stack overflow exception that happened in unmanaged code.
7093
7094 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
7095
7096         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
7097         runtime-set function when going back to managed code. Currently this
7098         is used to set back the protection on the soft ovf pages and/or to
7099         throw the stack overflow exception that happened in unmanaged code.
7100
7101 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
7102
7103         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
7104         the support code for restoring stack protection after stack overflows
7105         that happen in unmanaged code. Don't set the exec permission on the
7106         soft overflow area.
7107
7108 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
7109
7110         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
7111         delegate->method_ptr is set. Fixes #428054.
7112
7113 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7114
7115         * tests.cs: Rename to ratests.cs.
7116
7117         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
7118         emit_get_rgctx_... functions.
7119
7120 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7121
7122         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
7123
7124 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7125
7126         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
7127         before asserting that method is sharable.
7128
7129 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7130
7131         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
7132         whether method needs a static RGCTX wrapper used instead of
7133         complex conditions.
7134
7135         * generic-sharing.c, mini.h: A few functions moved to
7136         metadata/generic-sharing.c.
7137
7138 2008-09-25  Mark Probst  <mark.probst@gmail.com>
7139
7140         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
7141         Generic code sharing for value types, which essentially means
7142         treating value type methods like static methods.  The RGCTX is
7143         passed in the same way.
7144
7145 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
7146
7147         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
7148         opcode when creating multi-dimensional arrays of open types.
7149
7150         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
7151         open generic types.
7152
7153         * generics.cs: Add a test.
7154
7155         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
7156
7157 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7158
7159         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
7160
7161         * mini.c (mini_method_compile): Set it when running under the debugger. 
7162
7163         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
7164         vreg optimization if the flag is set.
7165
7166         * driver.c (mono_main): Add --attach= option to pass options to
7167         the attach agent.
7168
7169         * mini.c (sigquit_signal_handler): Start the attach agent.
7170
7171         * ssapre.c: Disable this to save space since it is not yet ported to
7172         linear IR.
7173
7174         * regalloc2.c: Disable this to save space.
7175
7176         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
7177
7178 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
7179
7180         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
7181         the -v option useful again.
7182
7183 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
7184
7185         * mini-amd64.c (mono_arch_output_basic_block): Add support for
7186         --break-at-bb.
7187
7188         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
7189         arrays of arrays. Fixes #428406.
7190
7191         * method-to-ir.c (mini_emit_castclass): Ditto.
7192
7193         * objects.cs: Add new test.
7194         
7195 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
7196
7197         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
7198         was wrong at it choked against target_type_is_incompatible for byref types.
7199
7200 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7201
7202         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
7203         places.
7204
7205 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
7206
7207         * mini-exceptions.c: update a few more exceptions-related counters.
7208
7209 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
7210
7211         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
7212         new functions to allocate from persistent mempools.
7213
7214 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
7215
7216         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
7217         multiple register banks in the future.
7218
7219         * mini-codegen.c (mono_local_regalloc): Fix a warning.
7220
7221 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
7222
7223         * mini.c (type_to_eval_stack_type): Remove duplicated function.
7224
7225         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
7226
7227         * mini.h: Export type_to_eval_stack_type.
7228
7229         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
7230         is only ins->klass of byref types.
7231
7232 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
7233
7234         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
7235         (mini_emit_memcpy2): Ditto.
7236
7237         * mini-amd64.c: Fix a warning.
7238
7239 2008-09-21  Mark Probst  <mark.probst@gmail.com>
7240
7241         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
7242         linking.
7243
7244 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
7245
7246         * method-to-ir.c: Extract stloc micro-optimization to a
7247         function and apply it to all cases.
7248
7249 2008-09-19  Mark Probst  <mark.probst@gmail.com>
7250
7251         * method-to-ir.c: Don't fail generic code sharing in cases we
7252         already support.
7253
7254 2008-09-18  Mark Probst  <mark.probst@gmail.com>
7255
7256         * mini-ppc.c: Handle structs in tailcalls on Darwin.
7257
7258 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
7259
7260         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
7261         implementation.
7262
7263 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
7264
7265         * trace.c: make tracing more useful and correct, with per-thread
7266         id and indent info.
7267
7268 2008-09-15  Mark Probst  <mark.probst@gmail.com>
7269
7270         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
7271         doing a method call and the argument is an R4.
7272
7273 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
7274
7275         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
7276         generic methods.
7277
7278 2008-09-13  Mark Probst  <mark.probst@gmail.com>
7279
7280         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
7281
7282 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
7283
7284         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
7285         (MONO_JUMP_TABLE_FROM_INS): Ditto.
7286
7287 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7288
7289         * driver.c: Add a --agent argument (not supported yet) to load managed
7290         agent assemblies before loading the main assembly, similarly to how the
7291         Java VM handles agents.
7292
7293 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7294
7295         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
7296         function to do stack layout of local variables.
7297
7298 2008-09-11  Mark Probst  <mark.probst@gmail.com>
7299
7300         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
7301         calculation.
7302
7303 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
7304
7305         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
7306         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
7307         JIT if DISABLE_JIT is defined.
7308
7309         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
7310         defined.
7311
7312 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7313
7314         * iltests.il.in: Disable the fconv test on PPC (the result is
7315         undefined according to ECMA).
7316
7317 2008-09-10  Mark Probst  <mark.probst@gmail.com>
7318
7319         * iltests.il.in: Enable tail call tests for PPC.
7320
7321         * mini.h: Add variable for storing incoming valuetype argument
7322         addresses for tail calls.
7323
7324         * mini-ppc.c: Implement valuetype arguments and return values for
7325         tailcalls on Linux.
7326
7327 2008-09-09  Mark Probst  <mark.probst@gmail.com>
7328
7329         * mini-ppc.c: Partially implement tail calls (struct arguments and
7330         return values not supported).
7331
7332         * method-to-ir.c: Enable tail calls on PPC.
7333
7334 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
7335
7336         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
7337         runtime-invoke wrappers to work around the problem of them getting
7338         assigned to a random class.
7339
7340         * aot-runtime.c (mono_aot_get_method): Ditto.
7341         
7342 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
7343
7344         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
7345         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
7346
7347 2008-09-07  Mark Probst  <mark.probst@gmail.com>
7348
7349         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
7350         until they're implemented properly.
7351
7352         * exceptions-ppc.c: Use arch-independent exception-handling code
7353         instead of custom one.
7354
7355         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
7356         for Linear IR.
7357
7358         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
7359
7360         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
7361         applies when __powerpc__ is defined.
7362
7363 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
7364
7365         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
7366         methods to their code to avoid computing the full name of wrappers and
7367         doing a lookup in a string hash table.
7368
7369 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7370
7371         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
7372         we identify bblocks before method_to_ir () is ran.
7373
7374         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
7375         Also avoid optimizing branches pointing to themselves.
7376
7377         * mini.c (mini_method_compile): Ditto. Fixes #422947.
7378
7379 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
7380
7381         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
7382
7383 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
7384
7385         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
7386         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
7387         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
7388         'buf'.
7389
7390         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
7391         jumped to the same entry in plt_jump_table.
7392
7393 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
7394
7395         * method-to-ir.c (initialize_array_data): Handle field with RVA from
7396         dynamic images.
7397
7398 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
7399
7400         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
7401         other assignment can be if converted. Saves 1.5% on corlib size and fixes
7402         #421807.
7403
7404 2008-08-29  Geoff Norton  <gnorton@novell.com>
7405
7406         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
7407         segment, and doesn't properly handle .space as .text.  Fixes
7408         AOT Mach/ARM
7409
7410 2008-08-29  Geoff Norton  <gnorton@novell.com>
7411
7412         * mini.c: Disable the mach exception handler when running on 
7413         ARM
7414
7415 2008-08-29  Geoff Norton  <gnorton@novell.com>
7416
7417         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
7418         globals on Darwin/ARM
7419
7420 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
7421
7422         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
7423         since too many things depend on it. Instead, call 
7424         mono_runtime_set_no_exec ().
7425         
7426         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
7427         the new JIT.
7428
7429         * aot-compiler.c: Add an 'asm-only' AOT option.
7430
7431         * mini.c: Avoid initializing the runtime when doing AOT compilation.
7432                 
7433         * aot-compiler.c (compile_method): Disable gshared support for now as it
7434         doesn't yet work.
7435
7436 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7437
7438         * mini-amd64.h : Fix a compiler warning.
7439
7440         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
7441           Changed to use a callback function to retrieve the unwind info.
7442           This avoids problems observed when code blocks were removed by
7443           unloading an app domain.
7444
7445         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
7446           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
7447           to work properly.
7448
7449         Contributed under MIT/X11 license.
7450
7451 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
7452
7453         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
7454           case to keep the stack aligned to 8.
7455
7456         Contributed under MIT/X11 license.
7457
7458 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
7459
7460         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
7461         avoid repeated linear searches.
7462
7463 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
7464
7465         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
7466         methods it can't handle.
7467         
7468         * aot-compiler.c (add_method): Avoid adding a method twice.
7469         (add_wrappers): Add runtime invoke wrappers for all methods.
7470
7471         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
7472         function to create an aot-compatible version of this trampoline.
7473
7474         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
7475
7476 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
7477
7478         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
7479
7480         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
7481         with a generic sharing failure.
7482
7483         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
7484
7485         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
7486         CEE_RETHROW. Fixes #419634.
7487
7488         * mini.c (mono_method_to_ir): Ditto.
7489
7490         * exceptions.cs: Add a new test.
7491         
7492         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
7493         to mono_type_stack_size_internal () since some callers might not pass in
7494         an rgctx.
7495
7496         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
7497         instrument_prolog. Fixes #419878.
7498
7499         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
7500         doubles in soft float mode volatile.
7501
7502 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
7503
7504         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
7505
7506         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
7507         to handle soft float correctly.
7508
7509         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
7510         the fast path.
7511
7512         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
7513
7514         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
7515         to sp, since the generics catch code requires it.
7516
7517         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
7518         copying.
7519
7520         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
7521         mono_arch_emit_imt_argument ().
7522
7523         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
7524
7525         * mini-arm.c tramp-arm.c: Generic sharing updates.
7526
7527 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
7528
7529         * mini-arm.c: Fix the arm build.
7530
7531         * generic-sharing.c (mini_type_get_underlying_type): New helper function
7532         handling enums, generic instances and generic sharing.
7533         (mini_type_stack_size_full): Ditto.
7534
7535         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
7536         
7537         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
7538
7539         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
7540
7541         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
7542         trampolines.
7543
7544         * mini-arm.c: Various small generic sharing changes.
7545
7546         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
7547         this for x86.
7548         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
7549         custom code.
7550
7551         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
7552         helper function to return a generic class init trampoline.
7553
7554         * method-to-ir.c mini.c: Use it.
7555         
7556         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
7557         arch-specfic function to return a generic class init trampoline.
7558
7559         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
7560         the GENERIC_CLASS_INIT custom code.
7561
7562         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
7563         a fatal error, not a sharing failure.
7564
7565         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
7566         needed.
7567
7568         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
7569         trampoline argument from MONO_ARCH_VTABLE_REG.
7570
7571         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7572         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7573         argument, and pass the vtable in VTABLE_REG.
7574
7575         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
7576         order of the arguments to the C trampoline: pass 'slot' as the trampoline
7577         argument, and pass the vtable in VTABLE_REG.
7578         (mono_arch_create_trampoline_code_full): Remove some special casing for
7579         the rgctx fetch trampoline.
7580
7581         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
7582         Fixes #419273.
7583
7584         * iltests.il: Add a test for it.
7585
7586 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
7587
7588         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
7589
7590         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
7591         no longer needed.
7592
7593         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
7594         use mono_jit_info_table_find () to avoid recursion.
7595         (mono_delegate_trampoline): Add a sync wrapper here.
7596
7597         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
7598         here.
7599
7600         * mini.c (mono_method_to_ir): Ditto.
7601         
7602         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
7603         add_sync_wrapper argument. Don't add a sync wrapper here.
7604         (mono_create_jump_trampoline): Don't add a sync wrapper here.
7605
7606         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
7607         
7608 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7609
7610         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
7611           of nonvolatile registers back from MonoContext to CONTEXT.
7612
7613         Contributed under MIT/X11 license.
7614
7615 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
7616
7617         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
7618           arguments on Winx64 there are only 4 argument registers.  For this
7619           logic to work the last argument must be pulled from the stack.  
7620
7621         Contributed under MIT/X11 license.
7622
7623 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
7624
7625         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7626
7627         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
7628         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
7629         encode/decode_method_ref ().
7630
7631         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
7632
7633         * aot-runtime.c (decode_patch): Ditto.  
7634
7635         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
7636         MONO_PATCH_INFO_METHOD.
7637
7638         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
7639         MonoGenericJitInfo.
7640
7641         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
7642         MonoGenericJitInfo.
7643
7644         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
7645
7646         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
7647         one from the caller.
7648
7649         * aot-runtime.c (decode_generic_inst): New function to decode and
7650         return a interned generic inst.
7651         (decode_klass_ref): Use it.
7652         (decode_method_ref): Ditto.
7653
7654         * aot-compiler.c (emit_exception_debug_info): Save 
7655         jinfo->has_generic_jit_info too.
7656
7657 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7658
7659         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
7660
7661         * iltests.il.in: Add a test for fconv_to_i.
7662
7663         * liveness.c: Disable the liveness2 pass for now to save space.
7664
7665         * regalloc2.c: Include mempool-internals.h to fix warnings.
7666
7667         * aot-compiler.c (encode_method_ref): Encode the context of generic
7668         instance methods.
7669
7670         * aot-runtime.c (decode_method_ref): Inflate generic methods using
7671         the context saved in the aot file.
7672
7673         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
7674
7675         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
7676
7677         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
7678         volatile so they won't be optimized away.
7679
7680 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
7681
7682         * ssa.c:
7683         * ssa2.c:
7684         * mini.c:
7685         * regalloc2.c:
7686         * dominators.c: Remove duplicated functions that now are in
7687         mempool-internals.h.
7688
7689 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
7690
7691         * aot-compiler.c: Fix warnings.
7692
7693         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
7694
7695         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
7696
7697         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
7698         as the patch type.
7699
7700         * mini.c (mono_resolve_patch_target): Ditto.
7701         
7702         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
7703         (encode_klass_ref): Add support for encoding VARs/MVARs.
7704
7705         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
7706
7707         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
7708         the handling of the got entries into a separate 'decode_got_entry' function.
7709         Add support for RGCTX_FETCH.
7710
7711         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
7712         clobbered by the trampoline code.
7713
7714         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
7715         not clobbered by the indirect calling code.
7716
7717 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7718
7719         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
7720         to fix the build.
7721
7722 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
7723
7724         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
7725         signature using the compilation mempool otherwise we would leak it.
7726
7727 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
7728
7729         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
7730         mono_emit_abs_call ().
7731
7732         * patch-info.h: Add GENERIC_CLASS_INIT.
7733
7734         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
7735
7736         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
7737         as their target as a near call.
7738
7739         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
7740         ABS handling code.
7741         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
7742
7743         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
7744         call to a runtime function described by a patch.
7745
7746         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
7747         mono_emit_abs_call, this has the advantage that the ABS handling code in
7748         mono_codegen () can handle them both, and can handle other stuff in the
7749         future without additional code.
7750
7751         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
7752         entry.
7753         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
7754         abs addresses.
7755
7756         * mini.h: Add missing bblock related prototypes.
7757
7758         * mini.h (MonoCompile): Remove unused reverse_inst_list and
7759         reverse_inst_list_len fields.
7760
7761         * mini.c: Refactor this file a bit by moving branch optimizations to 
7762         branch-opts.c.
7763
7764         * method-to-ir.c: Merge generic sharing changes missed earlier.
7765
7766         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
7767
7768         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
7769         shared patches. Process METHODCONST as a shared patch.
7770
7771         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
7772         as it crashes on the 2.0 mscorlib.
7773
7774         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
7775         to cause crashes.
7776         
7777         * aot-compiler.c: Use is_plt_patch () in a few additional places.
7778         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
7779         by IMT.
7780
7781         * aot-compiler.c: Reorganize the got handling code to be a bit more
7782         understandable.
7783
7784 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7785
7786         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
7787         mono_patch_info_equals/hash, and use it to massively simplify
7788         get_plt_index ().
7789
7790         * mini.c (mono_patch_info_hash): Simplify this and add support for
7791         more patch types.
7792
7793         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
7794
7795         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
7796         handling code, since an offset is not enough to identify a trampoline.
7797
7798         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
7799
7800 2008-08-17  Mark Probst  <mark.probst@gmail.com>
7801
7802         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
7803
7804         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
7805
7806         * mini-ops.h: Argument and result types for OVF_CARRY ops.
7807
7808         * decompose.c: PPC decompositions for various ops.
7809
7810         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
7811
7812 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
7813
7814         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
7815         call the generic trampoline code using a call, instead of a jump, to
7816         remove some special casing from the generic trampoline code.
7817
7818         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
7819         (mono_codegen): Ditto.
7820
7821         * aot-compiler.c aot-runtime.c: Ditto.
7822
7823         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
7824
7825         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
7826         helper function to find the offset corresponding to a lazy fetch trampoline.
7827
7828         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
7829         when doing generic sharing.
7830
7831         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
7832         places.
7833         
7834         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
7835         mini-trampolines.c to be with the other trampoline creation functions.
7836
7837         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
7838         as it is equal to method->signature in most cases, add a 
7839         mono_emit_method_call_full variant which takes a signature and an imt
7840         argument as well.
7841
7842 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
7843
7844         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
7845         to this function, since it could be computed easily from the method 
7846         argument.
7847         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
7848         more.
7849
7850         * method-to-ir.c mini.c: Remove references to 
7851         compile_generic_method_wo_context.
7852
7853         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
7854         generic method calls.
7855         
7856         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
7857         dimensional non-szarrays.
7858
7859         * mini.c (mini_init): Register mono_array_new_1.
7860
7861         * jit-icalls.c (mono_array_new_1): New jit icall.
7862
7863         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
7864         pointing to the method.
7865
7866         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
7867         method addresses belonging to METHOD_JUMP patches in the 
7868         jump_target_got_slot_hash.
7869         (mono_aot_load_method): Ditto.
7870
7871         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
7872         METHOD_JUMP patches.
7873
7874         * mini.c (mini_create_jit_domain_info): New helper function which 
7875         initializes/frees domain->runtime_info.
7876         (mini_free_jit_domain_info): Ditto.
7877         (mini_init): Install the domain hook functions with the runtime.
7878
7879         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
7880         information maintained by the JIT.
7881
7882         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
7883         insertion into jump_table_hash into mono_codegen (), also implement proper
7884         locking.
7885
7886         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
7887         tail calls, it is already done by the aot code.
7888         
7889         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
7890         mechanism on amd64.
7891
7892         * iltests.il.in: Make the jmp test a bit more complex.
7893
7894         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
7895         generic instances which doesn't have a token.
7896
7897         * aot-runtime.c (decode_method_ref): Ditto.
7898         
7899         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
7900         can handle this case now.
7901         (handle_box): Ditto.
7902
7903 2008-08-15  Geoff Norton  <gnorton@novell.com>
7904
7905         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
7906         debugging check.
7907
7908 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
7909
7910         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
7911         calling generic methods.
7912
7913         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
7914
7915         * aot-runtime.c (decode_patch_info): Ditto.
7916
7917         * mini.c (mono_resolve_patch_target): Ditto.
7918         
7919         * patch-info.h: Add METHOD_RGCTX.
7920
7921         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
7922
7923 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
7924
7925         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
7926         arguments in registers.
7927
7928         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
7929         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
7930
7931         * mini.c (mini_method_compile): Abort aot compilation for generic
7932         methods if generic sharing is disabled.
7933         
7934         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
7935         an mrgctx.
7936
7937         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
7938         requiring an mrgctx.
7939
7940         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
7941         store instructions when converting a vcall to a normal call.
7942
7943         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
7944         mono_arch_find_jit_info.
7945
7946 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
7947
7948         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
7949         avoid calling mono_method_full_name () for every method even if the
7950         env var is not set.
7951         (check_inline_caller_method_name_limit): Ditto.
7952
7953 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7954
7955         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
7956         assemblies in one run.
7957
7958         * aot-compiler.c (mono_compile_assembly): Only print out a count of
7959         skipped methods if it is not 0.
7960
7961         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
7962
7963 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7964
7965         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
7966           MONO_ARCH_HAVE_UNWIND_TABLE.
7967
7968         Contributed under MIT/X11 license.
7969
7970 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
7971
7972         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
7973           from default optimizaton list on Winx64.
7974
7975         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
7976
7977         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
7978           the LMF from the MonoJitTlsData structure.
7979
7980         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
7981
7982         Contributed under MIT/X11 license.
7983
7984 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
7985
7986         * mini.c (sigsegv_signal_handler): Fix the build.
7987
7988         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
7989         assembly->aot_module.
7990
7991         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
7992         hash table. This simplifies and speeds up a lot of code, and fixes support
7993         for .netmodules.
7994
7995         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
7996         with the runtime.
7997
7998         * mini-exceptions.c: Ditto.
7999         
8000         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
8001         'native_offset' argument, since these are computed in the 
8002         mono_find_jit_info () function.
8003
8004         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
8005         is used by exceptions-ppc.c.
8006
8007         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
8008         mono_arch_find_jit_info ().
8009         
8010         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
8011         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
8012         generic code in mini-exceptions.c.
8013
8014 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
8015
8016         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
8017
8018         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
8019         
8020         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
8021         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
8022         called while holding the loader lock. Fixes #415608.
8023         (mono_aot_get_method_from_token_inner): Ditto.
8024
8025 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8026
8027         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
8028         to reduce differences between this and the generic implementation in
8029         mini-exceptions.c.
8030         (ves_icall_get_frame_info): Ditto.
8031
8032         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
8033
8034         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
8035         longer neccesarry.
8036
8037         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
8038         mono_arch_get_call_filter () and make it non-static, for consistency with the
8039         other architectures.
8040
8041 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
8042
8043         * mini.c:
8044         * local-propagation.c:
8045         * mini-x86.c: Correct the name of arch defines.
8046
8047 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
8048
8049         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
8050         NO_EMULATE_LONG_SHIFT_OPS define.
8051
8052 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
8053
8054         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
8055         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
8056
8057         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
8058         MACH fixes. Merged from the 2.0 branch.
8059
8060         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
8061
8062         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
8063         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
8064
8065         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
8066
8067         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
8068         mono_marshal_get_native_wrapper () signature changes.
8069
8070 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
8071
8072         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
8073         conversion bug under arm.
8074
8075 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
8076
8077         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
8078
8079         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
8080         with overflow checking.
8081
8082 2008-08-05  Marek Habersack  <mhabersack@novell.com>
8083
8084         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
8085         to the genmdesc.pl file
8086
8087 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
8088
8089         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
8090         arg_array in the soft-float versions of the LOAD/STORE macros.
8091
8092         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
8093         implementation.
8094
8095         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
8096
8097 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8098
8099         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
8100         a float HFA. Fixes #413621.
8101
8102 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
8103
8104         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
8105         frame_size to args_size. Fixes build.
8106
8107 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
8108
8109         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
8110         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
8111
8112         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
8113         the stack are not unaligned. Fixes #413247.
8114         
8115 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
8116
8117         * mini.c: update jitted methods performance counters.
8118
8119 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
8120
8121         * mini-exceptions.c: increase the exceptions thrown performance
8122         counter in mono_handle_exception ().
8123
8124 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
8125
8126         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
8127         can work with netmodules.
8128
8129 2008-07-28  Geoff Norton  <gnorton@novell.com>
8130
8131         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
8132         regression tests.
8133
8134 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8135
8136         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
8137         correct place.
8138
8139 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
8140
8141         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8142           The float param registers and other param registers must be the 
8143           same index on Windows x64.
8144
8145         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
8146           ArgValuetypeAddrInIReg argument case.  Setting the argument
8147           op to OP_VTARG_ADDR (OP_REGOFFSET)).
8148
8149         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
8150           variable computed above as the copy length for arguments of storage
8151           type ArgValuetypeAddrInIReg.
8152
8153         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
8154           ArgValuetypeAddrInIReg argument case.  This case will rely on
8155           mono_arch_emit_outarg_vt to emit the correct code later in the process.
8156
8157         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
8158           a 32 byte stack allocation for all calls.  We will omit the adjustment for
8159           jump and tail call instructoins as they do not follow the typical call behavior.
8160
8161         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
8162           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
8163           local variable and pass the local variable by reference to the called method.
8164
8165         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
8166           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
8167           of a struct is passed in a register it must be saved with the other
8168           volatile argument on the stack.
8169
8170         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
8171           frame pointer the stack adjustment value must be saved to the unwind 
8172           info structure.
8173
8174         Contributed under MIT/X11 license.
8175
8176 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
8177
8178         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
8179         which got lost in the merge.
8180
8181 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8182
8183         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
8184         build.
8185
8186         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
8187         
8188         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
8189         icalls, since they won't be patched.
8190
8191         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
8192         different code sequence when running under valgrind to prevent some valgrind
8193         errors.
8194
8195         * iltests.il.in: Add new regression test.
8196
8197         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
8198         end with a throw.
8199
8200         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
8201         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
8202
8203         * iltests.il.in: Add new test.
8204
8205         * aot-compiler.c: Fix some warnings.
8206
8207         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
8208         Fixes #412494.
8209
8210 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
8211
8212         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
8213         (mini_usage_jitdeveloper): Add a missing --wapi option.
8214
8215 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8216
8217         * mini-codegen.c: Simplify the is_fp macros.
8218         (free_up_ireg): Remove, use free_up_reg instead.
8219         (free_up_reg): Fix the fp case.
8220
8221 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8222
8223         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
8224         lowered earlier.
8225
8226         * exceptions-x86.c: Merge some changes which seemed to have got lost
8227         in the linear-ir merge.
8228
8229         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
8230
8231         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
8232         long vreg volatile even if the variable was already created.
8233
8234         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
8235         volatile variables.
8236
8237 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
8238
8239         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
8240
8241         * mini.c (mono_jit_compile_method_inner): Add support for 
8242         MONO_EXCEPTION_BAD_IMAGE.
8243
8244         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
8245         mini_method_get_context () returns NULL. Fixes #356531.
8246
8247         * mini.c (mono_method_to_ir): Ditto.
8248         
8249         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
8250         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
8251
8252 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8253
8254         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
8255         in the LDFTN implementation.
8256
8257 2008-07-25  Mark Probst  <mark.probst@gmail.com>
8258
8259         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
8260         code, patch calls to icalls, too, even if they're not in the
8261         shared generic code hash.  Fixes #411962.
8262
8263 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
8264
8265         * cpu-x86.md: Increase the length of the fcall opcodes.
8266
8267         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
8268         calls returning floats.
8269
8270         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
8271         on NEWARR.
8272         
8273         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
8274         missed earlier.
8275
8276         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
8277         into the domain->method_code_hash.
8278
8279         * aot-compiler.c: Fix win32 build.
8280
8281         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
8282         
8283         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
8284         gshared NEWARR implementation.
8285
8286         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
8287
8288         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
8289         can be used outside of method_to_ir.
8290
8291         * mini.h (MonoCompile): Add arg_types field.
8292
8293         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
8294         
8295         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
8296         the values of the local arg_array and param_types array.
8297
8298 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8299
8300         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
8301         got accesses might only get generated later when NEWOBJ is decomposed.
8302         
8303         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
8304         looking up the native code of the target method when a delegate is called
8305         for the first time.
8306
8307         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
8308         optimization.
8309
8310         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
8311
8312         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
8313         AOT work on platforms without a working dlsym implementation.
8314
8315         * mini.h: Bump AOT image format version.
8316         
8317 2008-07-24  Mark Probst  <mark.probst@gmail.com>
8318
8319         * mini-exceptions.c: Free a MonoType with
8320         mono_metadata_free_type() instead of g_free().
8321
8322         * aot-runtime.c: Free a MonoType.
8323
8324 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
8325
8326         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
8327         optimization.
8328
8329         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
8330         fp stack on x86.
8331
8332 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
8333         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
8334         profiler hook.
8335
8336 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8337
8338         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
8339         NEWOBJ calls on valuetypes.
8340
8341         * iltests.il.in: Add new test.
8342
8343         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
8344
8345 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8346
8347         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
8348         is no longer needed.
8349
8350         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
8351         non register sized integer arguments.
8352         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
8353         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
8354         emit_memcpy2 ().
8355
8356         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
8357         CEE_MONO_RETOBJ.
8358         
8359         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
8360         two a binop with different sized arguments is emitted.
8361
8362         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
8363         instruction in the ins==NULL case.
8364
8365 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
8366
8367         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
8368
8369         * mini-x86.c: Fix osx build.
8370
8371         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
8372         opcodes as well.
8373
8374         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
8375         instruction for non int sized variables.
8376
8377         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
8378         implementation.
8379
8380 2008-07-23  Robert Jordan  <robertj@gmx.net>
8381
8382         * method-to-ir.c: Fix MSVC build.
8383
8384 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
8385
8386         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
8387         a non int sized type, widen it to an int since newer versions of gcc seem to
8388         generate code which needs this.
8389
8390         * ssa2.c abcremoval2.c: Fix warnings.
8391
8392         * *: Merge the Linear IR branch.
8393
8394         The original branch is at trunk/branches/vargaz/mini-linear-il, and
8395         the ChangeLog file there describes all the changes done over the years. 
8396         Further documentation can be found at www.mono-project.com/Linear_IL.
8397
8398 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8399
8400         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
8401           The float param registers and other param registers must be the 
8402           same index on Windows x64.
8403
8404         Contributed under MIT/X11 license.
8405
8406 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
8407
8408         * mini.c: Make the previous fix GC safe.
8409
8410 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
8411
8412         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
8413
8414 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
8415
8416         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
8417           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
8418           ArgValuetypeAddrInIReg instead.
8419
8420         Contributed under MIT/X11 license.
8421
8422 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
8423
8424         * mini-codegen.c (get_register_spilling): Fix a warning.
8425
8426 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
8427
8428         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
8429         for types which the initialization fails. Raises the provided exception
8430         at the right stop after cleanup.
8431
8432 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
8433
8434         * aot-compiler.c: Free most of the memory allocated during compilation.
8435
8436         * mini.c (mini_parse_debug_options): Fix a leak.
8437         
8438         * mini.c (mini_method_compile): Don't add the method to the jit info tables
8439         during aot compilation.
8440
8441 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
8442
8443         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
8444         it has too much register pressure.
8445
8446 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
8447
8448         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
8449
8450 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8451
8452         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8453         on x86.
8454
8455         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
8456         on amd64 similar to the way it is done on arm.
8457
8458         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8459
8460         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
8461         consistency, normalize error messages, avoid loading aot-only modules in
8462         normal mode.
8463
8464         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
8465         for consistency.
8466
8467         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
8468
8469 2008-07-11  Martin Baulig  <martin@ximian.com>
8470
8471         * debug-debugger.h
8472         (MonoDebuggerInfo): Add `interruption_request'.
8473
8474 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
8475
8476         * aot-compiler.c (emit_plt): Remove some dead code.
8477
8478         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
8479
8480         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
8481         return the plt info offset belonging to a given plt entry.
8482
8483         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
8484         mono_aot_get_plt_info_offset.
8485         
8486         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
8487         similar to the amd64 code by makeing jumps through a separate jump table 
8488         instead of embedding the jump addresses into the code.
8489
8490 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
8491
8492         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
8493         method.
8494
8495 2008-07-10  Martin Baulig  <martin@ximian.com>
8496
8497         * mini.c (mini_method_compile): Disable generics sharing when
8498         running in the debugger.
8499
8500 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8501
8502         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
8503
8504         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
8505         the local register allocator from running out of registers on x86 when 
8506         using aot.
8507
8508 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
8509
8510         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
8511         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
8512         C4146.
8513
8514         Contributed under MIT/X11 license.
8515
8516 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
8517
8518         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
8519         speed up the assembler.
8520
8521 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8522
8523         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
8524         support.
8525
8526         * mini.c: Move the soft float handling macros a bit earlier, add 
8527         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
8528         place.
8529
8530         * mini.h: Add prototype for mono_arch_fixup_jinfo.
8531
8532         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
8533         read-only to help catch code allocation requests.
8534         
8535         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
8536         and turn it off when using --aot-only or when compiling with --aot=full.
8537
8538         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
8539         jump table for switches from the normal domain mempool, not the code
8540         manager.
8541
8542         * mini-trampolines.c (get_unbox_trampoline): New function to return an
8543         unbox trampoline which handles aot-only mode too.
8544
8545         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
8546         an AOTed unbox trampoline.
8547
8548         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
8549
8550 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8551
8552         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
8553         ""
8554
8555         Contributed under MIT/X11 license.
8556
8557 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
8558
8559         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
8560           the unwind information for the method at the end of the allocated block.
8561           
8562         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
8563           MonoCompileArch to hold the unwind info for SEH on Winx64
8564         
8565         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
8566           frame pointer info for the method being compiled.
8567           
8568         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
8569           the call to mono_exception_from_token.
8570           
8571         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
8572           storing the method prolog information in a format that the Winx64 SEH can understand.  This
8573           information is stored a the end of the method block because it is all 32-bit offset based.
8574
8575         Contributed under MIT/X11 license.
8576
8577 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
8578
8579         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
8580
8581         * wapihandles.c: Fix warnings.
8582
8583         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
8584         mode.
8585
8586         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
8587         mono_jit_compile_method in aot-only mode since that calls the type 
8588         initializer.
8589         
8590         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
8591         get_delegate_invoke_impl in aot-only mode.
8592
8593         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
8594
8595 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
8596
8597         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
8598
8599         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
8600         is on by default.
8601
8602         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
8603
8604         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
8605         init trampoline from the AOT file as well.
8606
8607         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
8608         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
8609         code.
8610
8611         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
8612         mono_init.
8613
8614         * exceptions-amd64.c: Add _full variants for the remaining exception code
8615         creation functions as well, allow emission of relocatable code, remove
8616         caching since that is now done by the caller.
8617
8618         * mini-exceptions.c: Add _full variants for the remaining exception code
8619         creation functions as well, add aot-only support.
8620
8621         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
8622         if we can determine a proper token for them.
8623         (add_wrappers): Add a few more wrappers.
8624         (emit_method_code): Remove some dead code.
8625         (emit_trampolines): Emit exception code too.
8626
8627         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
8628
8629         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
8630         mono_array_new_va which avoids varargs.
8631
8632         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
8633
8634         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
8635         mono_arch_create_specific_trampoline () in all places.
8636
8637         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
8638         a bit so it can be used for other things as well.
8639         
8640         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
8641         on demand as well.
8642
8643         * exceptions-amd64.c: Rename the caching from the exception code creation
8644         functions, it is done by the caller instead.
8645         
8646         * exceptions-amd64.c: Change the signature of the exception code creation 
8647         functions to allow the creation of relocatable code later.
8648
8649         * mini-exceptions.c: Add a set of functions to query the various 
8650         runtime-generated exception functions.
8651
8652         * mini.c mini-exceptions.c: Use the newly added functions instead of the
8653         mono_arch_.. () functions.
8654         
8655 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8656
8657         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
8658
8659         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
8660
8661         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
8662         (mini_get_vtable_trampoline): Ditto.
8663
8664         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
8665         code in the AOT case by returning the code size and a list of relocations to
8666         the caller.
8667
8668         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
8669
8670 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
8671
8672         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
8673           clean the stack.
8674
8675         Contributed under MIT/X11 license.
8676
8677 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
8678
8679         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
8680         so the buffer size can be computed correctly. Fixes #404735.
8681
8682         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
8683         normally as cfg->debug_info is already freed.
8684
8685 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
8686
8687         * mini-amd64.c: For calls returning vtypes in registers, don't store
8688         the return address on the stack, instead allocate a separate local for
8689         it. Fixes #404729.
8690
8691 2008-07-05  Mark Probst  <mark.probst@gmail.com>
8692
8693         * mini-trampolines.c, mini.h: Add an argument to
8694         mono_create_jit_trampoline_in_domain() for turning off the adding
8695         of the sync wrapper.
8696
8697         * mini.c: Use the JIT trampoline without sync instead of
8698         ldftn_nosync in static RGCTX invoke wrappers so that the call can
8699         be patched.
8700
8701 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8702
8703         * driver.c: Turn on GSHARED optimization by default.
8704
8705 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
8706
8707         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
8708         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
8709
8710         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
8711         create a variant of the generic trampoline code callable from AOTed trampolines.
8712
8713         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
8714         trampoline code callable from AOTed trampolines.
8715
8716         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
8717
8718 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8719
8720         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
8721         pass-through manner.
8722
8723         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
8724         and don't fail sharing for them anymore.
8725
8726         * mini-exceptions.c: Handle exceptions in shared generic methods.
8727
8728         * generic-sharing.c: When checking the context of a generic
8729         method, also check its class's context.  Don't treat wrappers as
8730         sharable.
8731
8732         * mini-trampolines.c: Some code factored out to
8733         metadata/generic-sharing.c.  Handle the MRGCTX case.
8734
8735         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
8736         we must deal with the method being of another instantiation of the
8737         class.  Add static rgctx invoke wrappers to generic methods.
8738
8739 2008-07-04  Mark Probst  <mark.probst@gmail.com>
8740
8741         * mini.c: Provide all jit infos of generic shared methods with a
8742         generic jit info.
8743
8744         * mini-exceptions.c: Handle the new situation that a generic info
8745         might be available, but not info about the this/vtable/mrgctx
8746         variable.
8747
8748 2008-07-03  Mark Probst  <mark.probst@gmail.com>
8749
8750         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
8751         generic methods.
8752
8753 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
8754
8755         * dominators.c (check_dominance_frontier): Fix a warning.
8756
8757         * mini.h: Add some missing prototypes.
8758
8759         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
8760
8761         * driver.c (mono_jit_init_version): Correct the comments since the first
8762         argument should be the name of the root domain, not a filename.
8763
8764         * aot-runtime.c (make_writable): Error out if this is called while running
8765         with --aot-only.
8766         (load_aot_module): Ditto.
8767
8768         * aot-compiler.c: Really fix the computation of method indexes.
8769
8770         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
8771         optimizations as this is no longer called frequently.
8772
8773         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
8774         method and the invoke impl code and pass it to the delegate trampoline instead of
8775         just the delegate class.
8776
8777 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
8778
8779         * aot-compiler.c: Fixup the computation of method indexes.
8780         (add_wrappers): Create the base methods of the runtime invoke wrappers using
8781         the method builder infrastructure.
8782
8783         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
8784         has no header.
8785
8786         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
8787         mode, load the method right away instead of creating a trampoline.
8788
8789         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
8790
8791         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
8792         some checks a bit.
8793
8794 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
8795
8796         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
8797         (mono_aot_load_method): Use method_index instead of method->token.
8798
8799         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
8800         can handle icalls etc. properly.
8801
8802         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8803
8804         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
8805
8806         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
8807         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
8808         JIT_ICALL_ADDR patch type.
8809
8810         * patch-info.h: Add JIT_ICALL_ADDR patch type.
8811
8812         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
8813         request flag.
8814         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
8815
8816         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
8817
8818 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
8819
8820         * mini.c: Use domain->jit_code_hash_lock for controlling access to
8821         domain->jit_code_hash.
8822
8823 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
8824
8825         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
8826
8827 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
8828
8829         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
8830         get_this_arg_from_call, let it compute it when needed.
8831
8832         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
8833         gsctx from code only when needed.
8834
8835         * mini-trampolines.c (get_generic_context): Rename this to 
8836         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
8837         it can be called by the arch backends.
8838
8839         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
8840
8841 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * driver.c (mono_main): Add experimental --aot-only command line option.
8844
8845         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
8846         set.
8847
8848 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
8849
8850         * driver.c (DllMain): Remove mono_module_handle.
8851
8852         Contributed under MIT/X11 license.
8853
8854 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
8855
8856         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
8857         for emitting methods which are not in the source assembly. Detect and report
8858         failure of assembling+linking.
8859         
8860         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
8861
8862         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
8863
8864 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
8865
8866         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
8867
8868 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
8869
8870         * mini.h: Remove some obsolete prototypes.
8871
8872         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
8873
8874 2008-06-24  Mark Probst  <mark.probst@gmail.com>
8875
8876         * mini.c (get_object_generic_inst): Variable-sized arrays are not
8877         supported by Visual Studio, so use alloca().
8878
8879 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
8880
8881         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
8882         Fixes #402585.
8883
8884 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8885
8886         * mini.c: Fail sharing of a generic method if it contains an open
8887         catch clause (because we don't pass MRGCTXs yet).
8888
8889 2008-06-23  Mark Probst  <mark.probst@gmail.com>
8890
8891         * mini.c: When compiling a method with generic sharing, insert the
8892         method instantiated with an all-Object generic context into the
8893         jit info table, instead of the context of the first instantiation
8894         of the method we happen to compile.
8895
8896 2008-06-18  Martin Baulig  <martin@ximian.com>
8897
8898         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
8899         `major_version' and `minor_version'.
8900
8901 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8902
8903         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
8904         mono_method_is_generic_sharable_impl() takes an additional
8905         argument specifying whether to treat type variables as reference
8906         types.
8907
8908 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8909
8910         * mini.h: Removed obsolete prototypes.
8911
8912 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8913
8914         * mini.c: Don't fail generic sharing for initobj and sizeof - we
8915         already handle them.
8916
8917 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8918
8919         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
8920         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
8921         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
8922         tramp-x86.c: Added a MonoGenericContext* argument to
8923         mono_arch_get_unbox_trampoline() so that it can call other
8924         functions which require it.
8925
8926 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8927
8928         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
8929         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
8930         mono_arch_get_this_arg_from_call() takes a
8931         MonoGenericSharingContext* as well.
8932
8933 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8934
8935         * mini.c: Factor out code for emitting unbox into emit_unbox() and
8936         implement generic sharing of unbox.
8937
8938 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8939
8940         * mini.c: Don't compute the vtable to determine whether a field is
8941         special static, because it might not work for open types.
8942
8943 2008-06-17  Mark Probst  <mark.probst@gmail.com>
8944
8945         * mini.c: Removed the unused token_type and token_source arguments
8946         from get_runtime_generic_context_ptr().
8947
8948 2008-06-17  Marek Habersack  <mhabersack@novell.com>
8949
8950         * mini.c (ADD_BINOP): fix the build
8951
8952 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
8953
8954         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
8955         a widening op.
8956
8957 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8958
8959         * mini.h: Removed class relations enum that's not used anymore.
8960
8961 2008-06-16  Mark Probst  <mark.probst@gmail.com>
8962
8963         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
8964
8965         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
8966         the lazy fetch trampoline access code.
8967
8968 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
8969
8970         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
8971
8972 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
8973
8974         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
8975
8976         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
8977
8978         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
8979
8980 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8981
8982         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
8983         intrinsics.
8984
8985         * mini-ops.h: Add MIN/MAX_UN opcodes.
8986
8987         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
8988         intrinsics.
8989
8990         * basic-math.cs: Add more min/max tests.
8991
8992         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
8993
8994 2008-06-13  Mark Probst  <mark.probst@gmail.com>
8995
8996         * mini.c: Small fix in the prologue of emit_castclass.
8997
8998 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
8999
9000         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
9001
9002         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
9003         do not work even for unsigned types. Fixes #400014.
9004
9005         * basic-math.cs: Add regression tests for unsigned Min/Max.
9006
9007 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9008
9009         * mini.c: Added additional context_used argument to several
9010         functions, which will be needed for sharing generic methods.  Use
9011         GET_RGCTX macro wherever appropriate.  Declare only one
9012         context_used in mono_method_to_ir().
9013
9014 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9015
9016         * mini.c, generic-sharing.c: Removed generic class relations.
9017
9018         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
9019         functions due to MRGCTX changes.
9020
9021 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9022
9023         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
9024         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
9025         with calculated IMT.
9026
9027         * mini.c: Generic sharing of calls via generic interfaces.
9028
9029         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
9030         generic method with non-constant MonoGenericContext*.  Instead,
9031         the context is taken out of the method itself.
9032
9033 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9034
9035         * mini.c: Generic sharing of ldvirtftn.
9036
9037 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9038
9039         * mini.c: Generic sharing of ldftn.
9040
9041 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9042
9043         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
9044
9045 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9046
9047         * mini.c: Generic sharing of the special case of ldtoken followed
9048         by a call to GetTypeFromHandle.
9049
9050 2008-06-13  Mark Probst  <mark.probst@gmail.com>
9051
9052         * mini.c: Generic sharing of box for nullable types.
9053
9054 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
9055
9056         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
9057         are passed on the stack. Fixes #324807.
9058
9059 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
9060
9061         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
9062         for the ArgValuetypeAddrInIReg case.
9063
9064         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
9065         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
9066
9067         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
9068         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
9069         local variable and pass the local variable by reference to the called method.
9070           
9071         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
9072         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
9073
9074         Contributed under MIT/X11 license.
9075
9076 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
9077
9078         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
9079
9080         * debug-mini.c (mono_debug_print_vars): Release memory after printing
9081         everything.
9082
9083 2008-06-10  Martin Baulig  <martin@ximian.com>
9084
9085         * debug-mini.c
9086         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
9087
9088 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
9089
9090         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
9091         possible error when no arguments are passed.
9092
9093         Contributed under MIT/X11 license.
9094
9095 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
9096
9097         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
9098         where the file name is NULL.
9099
9100 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
9101
9102         * mini.c: Fix s390 build.
9103
9104 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
9105
9106         * trace.c (mono_trace_parse_options): Fix warnings.
9107
9108         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
9109
9110 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
9111
9112         * mini.c (remove_block_if_useless): Avoid printing the method name.
9113         
9114         * mini.c: Remove needless setting of ins->cil_code which is now done by 
9115         MONO_INST_NEW.
9116
9117         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
9118         LMF. Not yet used.
9119
9120         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
9121         translated code after it has been patched.
9122
9123 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
9124
9125         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
9126         avoid problems during code patching on SMP systems.
9127         (emit_call): Avoid adding a patch info which is already added by 
9128         emit_call_body.
9129         (mono_arch_emit_exceptions): Ditto.
9130
9131 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
9132
9133         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
9134         MONO_TYPE_ISSTRUCT already checks for it.
9135
9136 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
9137
9138         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
9139           structs with floats on Winx64 the float registers are not used.  
9140           The integer registers are always used..
9141         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
9142           only one register will be used and only if the size of the struct 
9143           is 1,2,4, or 8 bytes.
9144
9145         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
9146           to work for Winx64.
9147
9148         Contributed under MIT/X11 license.
9149
9150 2008-06-05  Martin Baulig  <martin@ximian.com>
9151
9152         * debug-debugger.c (debugger_lookup_class): Also call
9153         mono_class_setup_methods() here; we're only called from RTI.
9154
9155 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
9156
9157         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
9158         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
9159         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
9160         Post-process object files and add dtrace-generated object, if necessary.
9161
9162         Contributed under MIT/X11 license.
9163
9164 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9165
9166         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
9167         element class.
9168
9169         * mini.c: Generic sharing for unbox.any and castclass.
9170
9171 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9172
9173         * mini.c: Ignore tailcall prefix in shared generic code and when
9174         doing calls which require a vtable/rgctx argument.
9175
9176 2008-06-04  Mark Probst  <mark.probst@gmail.com>
9177
9178         * mini.c: Don't free the JIT info.
9179
9180         * driver.c: Changes in the JIT info table testing code.
9181
9182 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
9183
9184         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
9185         interruption. Fix some warnings.
9186
9187         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
9188         interruption_checkpoint.
9189
9190 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
9191
9192         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
9193         from embedding applications.
9194
9195 2008-06-02  William Holmes  <billholmes54@gmail.com>
9196
9197         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
9198           reserving 32 bytes on the stack when making calls. 
9199
9200         Contributed under MIT/X11 license.
9201
9202 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
9203
9204         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
9205         the linear IL branch.
9206
9207         * driver.c: Print out more information for --version on arm.
9208
9209 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
9210
9211         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
9212         bb_exit instead, since out of line bblocks might not actually be emitted
9213         out-of-line.
9214         
9215         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
9216         maximum epilog size for out of line bblocks if tracing is enabled.
9217
9218         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
9219
9220 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
9221
9222         * arrays.cs: Regression tests for allocating arrays with negative sizes.
9223
9224 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
9225
9226         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
9227         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
9228         opcodes.
9229
9230 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
9231
9232         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
9233         the 'value' to store is a constant.
9234
9235         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
9236
9237         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
9238         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
9239
9240 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
9241
9242         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
9243         for accessing method->generic_container.
9244
9245 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
9246
9247         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
9248         
9249         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
9250
9251         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
9252
9253         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
9254         fails.
9255
9256 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
9257
9258         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
9259
9260         * mini.c: Handle the case when mono_class_vtable () fails.
9261
9262 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
9263         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
9264         the stat profiler.
9265
9266 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9267
9268         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
9269         together with domain sharing.
9270
9271 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9272
9273         * mini.c: Treat callvirts to final methods like non-virtual calls
9274         when doing generic sharing, i.e. look them up in the runtime
9275         generic context.
9276
9277 2008-05-22  Mark Probst  <mark.probst@gmail.com>
9278
9279         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
9280         with computed types (for generic sharing).
9281
9282         * mini.c: Generic sharing for mkrefany and refanyval.
9283
9284 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
9285
9286         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
9287         possible.
9288
9289         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
9290         the generic sharing code.
9291         
9292         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
9293         when needed.
9294
9295 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9296
9297         * mini.h: Remove the declaration of mono_aot_init_vtable ().
9298
9299 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
9300
9301         * driver.c: updated copyright date
9302
9303 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
9304
9305         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
9306         needed.
9307
9308 2008-05-19  Martin Baulig  <martin@ximian.com>
9309
9310         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
9311         pointing to the new `_mono_debug_using_mono_debugger' variable.
9312
9313         * driver.c
9314         (mono_main): Check mono_debug_using_mono_debugger() rather than
9315         the `MONO_INSIDE_MDB' environment variable to check whether we're
9316         inside the debugger.
9317
9318 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
9319
9320         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
9321         argument.
9322
9323 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
9324
9325         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
9326
9327         * mini.c: Added mini_assembly_can_skip_verification. This
9328         function checks if the assembly requested to skip verification. 
9329         Fixes part of #387274.
9330
9331 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
9332
9333         * mini.c (mini_get_method): Disable the check for open generic classes when
9334         using generic sharing.
9335
9336         * generics.cs: Add a test for #387034.
9337
9338         * mini.c (mini_get_method): Check whenever the method class is an open generic
9339         type, and return NULL in that case, causing a verification error. Fixes
9340         #384123.
9341
9342 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9343
9344         * driver.c (mono_main): Revert r102623. The right
9345         thing to do is to enable the verifier under verifiable
9346         unless a --security flag was passed.
9347
9348         We need this non-trivial behavior for --verify-all otherwise
9349         mcs-compileall won't be able to use it. As it needs everything to
9350         be verified under validil.
9351
9352 2008-05-06  Martin Baulig  <martin@ximian.com>
9353
9354         Fix #383749.
9355
9356         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
9357         (mono_debugger_thread_cleanup): Likewise.
9358         (mono_debugger_extended_notification): Likewise.
9359
9360 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9361
9362         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
9363         against both inflated and non-inflated methods. We need to check against the
9364         generic definition for cases where the instantiated method is not visible.
9365         We need to check against the inflated types for cases where the instantiation
9366         changes any super type. This fixes #382986.
9367
9368         Note that this doesn't need to be applied to other parts of mono_method_to_ir
9369         that check for visibiliy as generic params only appears as the type subject
9370         of tokens on call opcodes. Field manipulation and ldftn must always
9371         target an exact type.
9372
9373 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
9374
9375         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
9376         if no related --security flag is passed.
9377
9378 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9379
9380         * mini-arch.h: Prepare support for ppc64.
9381
9382         Contributed under MIT/X11 license.
9383
9384 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9385
9386         * aot-runtime.c: Prepare support for ppc64.
9387
9388         Contributed under MIT/X11 license.
9389
9390 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
9391
9392         * mini-ops.h: Prepare support for ppc64.
9393
9394         Contributed under MIT/X11 license.
9395
9396 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
9397
9398         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
9399
9400         Contributed under MIT/X11 license.
9401
9402 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
9403
9404         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
9405         assemblies, since aot_name is not a full path, causing us to load MS.NET 
9406         assemblies on windows.
9407
9408 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
9409
9410         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
9411         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
9412         * main.c: Use UTF-8 encoded command line instead of Windows default code
9413         page on Windows to support Unicode.
9414         * driver.c (DllMain): New function for mixed-mode assembly support.
9415         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
9416         export __stdcall functions without decoration.
9417
9418         Contributed under MIT/X11 license.
9419
9420 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9421
9422         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
9423         saving it very early.
9424
9425 2008-04-28  Mark Probst  <mark.probst@gmail.com>
9426
9427         * mini.h, mini.c: Lots of code for accessing the old RGCTX
9428         deleted.  The only way to access the new RGCTX is via the
9429         trampline.
9430
9431         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
9432         vtable instead of the RGCTX to static methods.
9433
9434         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
9435         accessing the new RGCTX.
9436
9437         * generic-sharing.c: There is no separation between self, type
9438         arguments and other types in the RGCTX anymore.
9439
9440 2008-04-25  Jonathan Chambers <joncham@gmail.com>
9441
9442         * mini-amd64.c (add_general): Remove previous stack adjustment.
9443         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
9444         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
9445         for 32 bytes of stack space reserved for all calls.
9446         
9447         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
9448         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
9449         adjustment.
9450         
9451         Code contributed under MIT/X11 license.
9452
9453 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
9454
9455         * mini.c (mini_method_verify): Only verify non-inflated methods, check
9456         against the root definition, peeling out method and type instantiations.
9457         Cache verify success results, code that fails verification is still
9458         checked multiple times.
9459
9460 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
9461
9462         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
9463
9464 2008-04-23  Jonathan Chambers <joncham@gmail.com>
9465
9466         * mini-amd64.c (add_general): Always increment stack on Win64.
9467         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
9468         on Win64.
9469         
9470         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
9471         stack based argument handling on Win64.
9472         
9473         Code contributed under MIT/X11 license.
9474
9475 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
9476
9477         * Makefile.am (version.h): Add support for git-svn.
9478
9479 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
9480
9481         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
9482         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
9483         avoiding allocations and libc functions which might deadlock.
9484         
9485         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
9486         'no-gdb-backtrace' option is set.
9487
9488         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
9489
9490         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
9491
9492 2008-04-21  Martin Baulig  <martin@ximian.com>
9493
9494         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
9495         and `get_lmf_addr'; `notification_address' is no longer a pointer.
9496
9497 2008-04-21  Martin Baulig  <martin@ximian.com>
9498
9499         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
9500         `thread_vtable', `event_handler_ptr' and `event_handler'.
9501
9502 2008-04-21  Martin Baulig  <martin@ximian.com>
9503
9504         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
9505         allows delayed initialization of the `executable_code_buffer' when
9506         attaching.
9507
9508 2008-04-21  Martin Baulig  <martin@ximian.com>
9509
9510         * mini.h (mono_debugger_create_notification_function): Removed.
9511         * tramp-*.c (mono_debugger_create_notification_function): Removed.
9512
9513         * mdb-debug-info64.s
9514         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9515
9516         * mdb-debug-info32.s
9517         (MONO_DEBUGGER__notification_function): Added this in the .text section.
9518
9519         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
9520         currently only works on x86 and x86_64, so don't create it on ppc.
9521
9522 2008-04-21  Martin Baulig  <martin@ximian.com>
9523
9524         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
9525
9526         * mini.c
9527         (mini_method_compile): In the fp elimination check, check
9528         `debug_options.mdb_optimizations' in addition to
9529         mono_debug_using_mono_debugger().       
9530
9531         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
9532         disable some JIT optimizations which are only disabled when
9533         running inside the debugger.
9534         Added `--help-debug' option to describe the debugging options.
9535         (parse_debug_options): New static function to parse the `--debug'
9536         options, so we can easily add more stuff in future.
9537
9538 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
9539
9540         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
9541         the method has no body.
9542
9543 2008-04-19  Jonathan Chambers <joncham@gmail.com>
9544
9545         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
9546         assembly is not allowed in MSVC 64-bit compiler. 
9547         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
9548         as we get floating point exceptions everywhere.
9549         
9550         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
9551         correctly align arguments for call to throw_exception.
9552         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
9553         
9554         Code contributed under MIT/X11 license.
9555
9556 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
9557
9558         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
9559
9560 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
9561
9562         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
9563
9564         * mini-amd64.c (NEW_INS): Set cil_code.
9565
9566         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
9567         from mini-amd64.c so all debugger related logic is in one place.
9568
9569         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
9570         later won't have a random ip assigned to them.
9571
9572 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
9573
9574         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
9575         the arch specific function initializes code_size.
9576         (mono_create_delegate_trampoline): Ditto.
9577
9578         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
9579         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
9580         platforms.
9581
9582         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
9583         running under the debugger.
9584
9585         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
9586         debugger.
9587
9588         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
9589         debugger. Also move the disabling of optimizations here from driver.c.
9590         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
9591         debugger.
9592
9593         * mini.h (MonoCompile): Add a few new flags.
9594
9595 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
9596
9597         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
9598         so the cil_code field of created MonoInst's is properly set.
9599         (mini_select_instructions): Ditto.
9600
9601         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
9602         (MONO_INST_NEW_CALL): Ditto.
9603
9604         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
9605         in many places so the ins->cil_code field is properly initialized.
9606
9607         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
9608         place.
9609
9610 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
9611
9612         * mini.c (mini_method_compile): Print a different message when compiling a 
9613         shared method.
9614         
9615         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
9616         > 1.
9617
9618 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9619
9620         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
9621         SSE2 instructions.
9622
9623         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
9624         
9625 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
9626
9627         * mini.c (handle_stack_args): Make this return void since its return value was
9628         never used. Also set cfg->unverifiable for invalid IL instead of calling
9629         G_BREAKPOINT ().
9630
9631 2008-04-10  Mark Probst  <mark.probst@gmail.com>
9632
9633         * mini.c: Make sure "this" is live in catch clauses with type
9634         variables in shared generic code.
9635
9636 2008-04-08  Mark Probst  <mark.probst@gmail.com>
9637
9638         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
9639         generic_class_is_reference_type() to ensure the proper behaviour
9640         when sharing generic code and the type in question is a type
9641         argument.
9642
9643 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9644
9645         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
9646         race conditions when printing thread dumps. Fixes #377738.
9647
9648 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
9649         
9650         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
9651         shows up when both MonoInst arguments can cause aliasig.
9652         There is likely no way in the current JIT to trigger this problem, but
9653         it showed up in the development of generics sharing, when in a new
9654         opcode both args of an OP_GROUP can be aliases (addresses of a local).
9655         When the generics sharing code will be committed, its tests will be
9656         valid also for this bug.
9657
9658 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9659
9660         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
9661         PATCH_INFO_METHOD.
9662
9663         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
9664         NULL.
9665
9666 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
9667
9668         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
9669         use a more detailed exception message for InvalidCastException.
9670
9671         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
9672
9673         * driver.c (mono_main): Add --debug=casts option to turn on better 
9674         InvalidCastException message details.
9675
9676         * mini.c (mini_get_debug_options): New helper function to return the address of
9677         the debug_options variable.
9678
9679         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
9680         the jit_tls TLS variable.
9681
9682         * mini.c (mono_jit_tls): New TLS variable.
9683
9684         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
9685         option is used.
9686
9687 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
9688
9689         * mini.h: Removed verifer related stuff. This code was moved to verify.c
9690
9691         * mini.c: Removed verifer related stuff, code moved to verify.c.
9692
9693         * driver.c: Using code from verify.c instead of mini.c.
9694
9695 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
9696
9697         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
9698         longer valid.
9699
9700 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
9701
9702         * mini.c (check_for_method_verify): Enabling verification of
9703         corlib if mono_verify_all is set. Bugs in the verifier preventing that
9704         have been fixed.
9705
9706 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
9707
9708         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
9709         caller saved registers as well.
9710         
9711         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
9712         saved registers as well.
9713
9714 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
9715
9716         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
9717
9718         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
9719         code.
9720
9721 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
9722
9723         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
9724         to get_call_info.
9725         (get_call_info): Take a gsctx argument instead of 'cfg'.
9726
9727 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
9728
9729         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
9730         mono_verify_all is set.
9731
9732         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
9733
9734         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
9735
9736 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
9737
9738         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
9739         an exception.
9740
9741         * driver.c mini.c mini.h: Add a --verify-all development option to test the
9742         verifier and the code generated by the compiler.
9743
9744 2008-03-25  Mark Probst  <mark.probst@gmail.com>
9745
9746         * mini.c: Generic sharing of the non-nullable case of the box
9747         instruction.
9748
9749 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
9750
9751         * inssel.brg: Fix the build.
9752
9753         * iltests.il.in: Add a test for lconv.ovf.u8.un.
9754
9755 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
9756
9757         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
9758         Array:Address. Fixes #372410.
9759
9760         * iltests.il.in: New tests for readonly prefix.
9761
9762 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
9763
9764         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
9765         mini-trampolines.c.
9766
9767         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
9768         mini-exceptions.c.
9769
9770         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
9771         
9772         * mini.c (mono_decompose_op_imm): New helper function.
9773
9774         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
9775         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9776         return value.
9777
9778         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9779         mono_arch_output_basic_block. Fix warnings.
9780
9781         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
9782         for now.
9783
9784 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
9785
9786         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
9787         since the extra frame is now detected automatically inside the loop.
9788
9789         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
9790         opts which are now in mono_peephole_ins ().
9791         
9792         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
9793
9794         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
9795         frames and skip duplicate managed-to-native frames. Fixes #367665.
9796
9797         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9798         opts which are now in mono_peephole_ins ().
9799         (mono_arch_peephole_pass_2): Ditto.
9800
9801         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
9802
9803         * mini-codegen.c (mono_peephole_ins): New helper function containing the
9804         arch independent peephole optimizations.
9805
9806         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
9807         opts which are now in mono_peephole_ins ().
9808
9809         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
9810         
9811         * mini-s390.c (mono_arch_output_basic_block): Fix build.
9812
9813         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
9814         pattern.
9815
9816         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
9817         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
9818         opcode. 
9819
9820 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
9821
9822         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
9823         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
9824         return value.
9825
9826         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
9827         mono_arch_output_basic_block. Fix warnings.
9828
9829 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9830
9831         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9832         conv.ovf.u.un.
9833
9834 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9835
9836         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
9837         conv.ovf.u.un.
9838
9839         * iltests.il: Add new tests.
9840
9841 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
9842
9843         * mini.c: Removed Windows version macros.
9844
9845 2008-03-20  Mark Probst  <mark.probst@gmail.com>
9846
9847         * generic-sharing.c: Put reflection types in the extensible part
9848         of the runtime generic context.
9849
9850         * mini.c: Generic sharing of the GetTypeHandle special case of the
9851         ldtoken instruction.
9852
9853 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
9854
9855         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
9856
9857         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
9858         
9859         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
9860         consistency with the other version on the linear IR branch.
9861
9862         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
9863
9864         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
9865
9866         * iltests.il.in: Add new tests.
9867
9868 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
9869
9870         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
9871
9872         * iltests.il.in: Add new tests.
9873
9874 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9875
9876         * mini.c: Two variables with the same name were declared in
9877         nesting contexts and one wasn't initialized.  Fixed.
9878
9879 2008-03-19  Mark Probst  <mark.probst@gmail.com>
9880
9881         * mini.c: Generic sharing of the initobj instruction.
9882
9883 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
9884
9885         * mini.c: make the test to optimize ldtoken from typeof() more
9886         precise.
9887
9888 2008-03-18  Mark Probst  <mark.probst@gmail.com>
9889
9890         * mini.c: Generic sharing of the initobj instruction for reference
9891         types.
9892
9893 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
9894
9895         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
9896         the mono_breakpoint_clean_code() code to perform bound checks.
9897
9898 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
9899
9900         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
9901         mono_arch_patch_callsite() to include the start of the managed method
9902         to be able to perform bound checks.
9903
9904 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9905
9906         * mini.c: Generic sharing for the isinst instruction.
9907
9908 2008-03-17  Mark Probst  <mark.probst@gmail.com>
9909
9910         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9911         inssel-long32-mips.brg: Added opcodes for doing indirect calls
9912         with the runtime generic context argument.
9913
9914         * mini.c: Share calls to several types of unsharable methods by
9915         putting the address of the method code in the runtime generic
9916         context and doing an indirect call.
9917
9918         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9919         to switches.
9920
9921 2008-03-16  Mark Probst  <mark.probst@gmail.com>
9922
9923         * generic-sharing.c: Change due to a change in the runtime genric
9924         context API.
9925
9926 2008-03-15  Martin Baulig  <martin@ximian.com>
9927
9928         * tramp-x86.c
9929         (mono_arch_nullify_class_init_trampoline): Add call to
9930         mono_breakpoint_clean_code() to make things work when running
9931         inside the debugger.
9932
9933         * tramp-amd64.c
9934         (mono_arch_nullify_class_init_trampoline): Add call to
9935         mono_breakpoint_clean_code() to make things work when running
9936         inside the debugger.
9937
9938 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9939
9940         * inssel-long.brg (reg): Fix 64 bit build.
9941
9942 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9943
9944         * mini.c, mini.h: Share static generic code by passing it an
9945         implicit argument pointing to the runtime generic context.
9946
9947         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
9948         inssel-long32-mips.brg: New opcodes for calling shared static,
9949         which need to be passed the runtime generic context.
9950
9951         * mini-amd64.c, mini-x86.c: Save the runtime generic context
9952         argument on the stack in the prologue if needed.  New function for
9953         finding the runtime generic context argument from the registers
9954         saved by the trampoline.
9955
9956         * mini-amd64.h, mini-x86.h: Specify which register to use for the
9957         runtime generic context argument.
9958
9959         * tramp-amd64.c: Also restore the register used for the runtime
9960         generic context argument.
9961
9962         * mini-trampoline.c: Resolve shared static calls by consulting the
9963         runtime generic context via the new argument.
9964
9965         * generic-sharing.c: Add an argument to sharability-checking
9966         functions that specifies whether type variables should be treated
9967         as sharable type arguments.
9968
9969         * inssel-x86.brg: Removed a superfluous, buggy rule.
9970
9971         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
9972         to switches.
9973
9974 2008-03-14  Martin Baulig  <martin@ximian.com>
9975
9976         * debug-debugger.c (main_thread_handler): Call
9977         mono_runtime_run_main() without sending any notifications.
9978
9979         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
9980
9981 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9982
9983         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
9984
9985 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9986
9987         * tramp-x86.c: Fixed register restore offsets in the trampoline
9988         code for ECX and EDX.
9989
9990 2008-03-12  Geoff Norton  <gnorton@novell.com>
9991
9992         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
9993         different ucontext_t implementations.
9994         * exceptions-arm.c: Use the above defines to get exceptions working on 
9995         iPhone (based on a patch by Luke Howard lukeh@padl.com)
9996         * mini-arm.c: Implement iPhone icache support (based on a patch by
9997         Luke Howard lukeh@padl.com)
9998
9999 2008-03-12  Mark Probst  <mark.probst@gmail.com>
10000
10001         * mini.c: Enable generic sharing of calls to non-static
10002         non-interface non-generic non-value-type methods.
10003
10004         * mini-trampolines.c: Resolve calls from shared generic code.
10005
10006 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
10007
10008         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
10009
10010         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
10011
10012 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
10013
10014         * mini.c: some fixes for the AOT compiler.
10015
10016 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10017
10018         * cpu-amd64.md: Add clob:1 to some float opcodes.
10019
10020 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
10021
10022         * mini.h: Added MiniVerifierMode enumeration.
10023
10024         * mini.c: Added mini_verifier_set_mode to control
10025         the usage of the new verifier.
10026
10027         * mini.c (mono_method): Integrated the new verifier.
10028
10029         * driver.c: Extended --security option with validil and
10030         verifiable options to activate the new verifier.
10031
10032 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
10033
10034         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
10035         optimization to ctors taking 0 or 2 arguments too.
10036
10037         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
10038         a bit.
10039
10040         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
10041
10042         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
10043
10044 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
10045
10046         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
10047         non-aot case as well.
10048
10049         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
10050
10051         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
10052         changes.
10053
10054         * aot-compiler.c (encode_patch): Ditto.
10055
10056         * mini.h (G_MININT32): Fix the definition of this.
10057
10058 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
10059
10060         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
10061
10062         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
10063
10064 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10065
10066         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
10067         methods returning vtypes in registers.
10068         (mono_arch_allocate_vars): Ditto.
10069
10070         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
10071
10072         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
10073
10074         * generics.cs: Add a test from the linear IR branch.
10075
10076         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
10077
10078         * mini.c (inline_method): Cache failed inline attempts.
10079
10080 2008-03-04  Mark Probst  <mark.probst@gmail.com>
10081
10082         * mini.c: For shared methods of generic classes put the location
10083         of "this" into the MonoGenericJitInfo.
10084
10085         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
10086         register out of a MonoContext by register number.  Add the generic
10087         sharing context as an argument to mono_arch_find_this_argument().
10088
10089         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
10090         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
10091         for new arch function.
10092
10093         * mini-exception.c: Handle open exception clauses in shared
10094         generic code.
10095
10096         * mini-trampolines.c: Supply additional argument to
10097         mono_arch_find_this_argument().
10098
10099 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
10100
10101         * Makefile.am (regtests): Run the bench.exe tests last.
10102
10103 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
10104
10105         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
10106         a bit.
10107
10108 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
10109
10110         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
10111         with MS.
10112
10113         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
10114         
10115         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
10116
10117         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
10118         whose class has no cctor.
10119
10120         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
10121
10122 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
10123
10124         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
10125         unverified.
10126
10127 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
10128
10129         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
10130         to be in sync with the code on the linear IR branch.
10131
10132         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
10133
10134         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
10135
10136 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
10137
10138         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
10139
10140         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
10141
10142         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
10143
10144         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
10145
10146         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
10147         
10148         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
10149         body.
10150
10151 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
10152
10153         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
10154         OP_LOADR4_MEMBASE emission.
10155
10156         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
10157         (mono_spillvar_offset_float): Ditto.
10158
10159         * mini-mips.c (mono_arch_emit_prolog): Ditto.
10160
10161         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
10162         emission.
10163
10164         * basic-long.cs: Add regression tests for them.
10165
10166         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
10167         use.
10168         (mono_arch_allocate_vars): Fix representation of single-precision float
10169         argument.
10170         (mono_arch_output_basic_block): Ditto.
10171
10172         * inssel-mips.brg: Ditto, remove duplicate items.
10173
10174         * mini-mips.c (emit_load_volatile_arguments): New function to handle
10175         arguments of tail calls as on other platforms.
10176         (mono_arch_output_basic_block): Handle tail calls.
10177
10178         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
10179         register.
10180
10181         * objects.cs (test_5_pass_static_struct): Add test for it.
10182
10183         Contributed under MIT/X11 license.
10184
10185 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
10186
10187         * Makefile.am: Use gmcs for compiling the regression tests.
10188
10189         * *.2.cs *.2.il: Rename to *.cs and *.il.
10190
10191 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
10192
10193         * regalloc.h: Make the vassign array smaller.
10194
10195         * mini.c (mini_method_compile): Remove an unused field in cfg.
10196
10197         * mini-codegen.c: Add a bunch of micro optimizations.
10198
10199 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
10200
10201         * regalloc.h: Remove some unused fields.
10202
10203 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
10204
10205         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
10206
10207         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
10208
10209 2008-02-22  Mark Probst  <mark.probst@gmail.com>
10210
10211         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
10212
10213         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
10214         trampoline: Fetch an entry from the runtime generic context.  If
10215         it's NULL, jump to the actual trampoline to fill the runtime
10216         generic context.  Otherwise, return it.
10217
10218         * mini.c: Call the lazy fetch trampoline to get entries out of the
10219         runtime generic context.
10220
10221         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
10222         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
10223         tramp-sparc.c: Stubs for the lazy fetch trampoline.
10224
10225 2008-02-21  Mark Probst  <mark.probst@gmail.com>
10226
10227         * mini.c: Fetch data out of the extensible part of the runtime
10228         generic context instead of calling a helper function.
10229
10230         * generic-sharing.c: Some functions moved into
10231         metadata/generic-sharing.c.  Helper function for fetching other
10232         types now checks and asserts against extensible rgctx (just for
10233         debugging purposes - the helper function isn't called anymore
10234         unless for debugging).
10235
10236 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10237
10238         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
10239         for tail calls up to the point that the tests in iltests.exe run. Also add a
10240         dummy CKFINITE implementation.
10241         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
10242         needed for trampoline LMF frames.
10243
10244         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
10245         trampoline LMF frames.
10246
10247 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
10248
10249         * mini.c (inline_method): clean any pending loader error when inlining fail.
10250         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
10251
10252 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
10253
10254         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
10255
10256         * aot-runtime.c (decode_patch_info): Ditto.
10257
10258         * mini.c (mono_resolve_patch_target): Ditto.
10259         
10260         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
10261         icall wrappers.
10262
10263         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
10264         
10265         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
10266         if it references an icall address.
10267
10268 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
10269
10270         * cpu-s390x.md: Remove some more unused opcodes.
10271         
10272         * cpu-s390x.md: Remove some unused opcodes.
10273
10274         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
10275         mono_op_imm_to_op ().
10276
10277         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
10278         instead of a switch statement.
10279         
10280         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
10281         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
10282
10283         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
10284         
10285         * mini-codegen.c: Remove unused mono_regstate2_... functions.
10286
10287         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
10288         -1.
10289
10290 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
10291
10292         * driver.c (mono_main): Improve error reporting when an assembly cannot be
10293         opened. Fixes #362607.
10294
10295         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
10296
10297         * iltests.il.in: Add a test for static methods in interfaces.
10298
10299 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
10300
10301         * genmdesc.c (build_table): Fix a crash on older glib versions.
10302
10303         * cpu-sparc.md: Remove some unused opcodes.
10304         
10305         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
10306         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
10307
10308         * cpu-amd64.md: Remove some unused opcodes.
10309
10310         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
10311         like the other opcodes.
10312
10313 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
10314
10315         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
10316
10317         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
10318
10319         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
10320         variables 'cfg' instead of 'm' for consistency.
10321
10322         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
10323
10324         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
10325         argument holding the vtype return address, to avoid the ambigious use of
10326         cfg->ret for this purpose.
10327
10328         * mini.c (NEW_RETLOADA): Use vret_addr if set.
10329
10330         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
10331         
10332         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
10333         new mono_print_ins () function which only takes one argument.
10334
10335 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
10336
10337         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
10338         macro arguments.
10339
10340 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
10341
10342         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
10343
10344         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
10345
10346         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
10347         opcodes and other small changes.
10348
10349         * mini-ops.h: Add some new opcodes from the linear IR branch.
10350
10351         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
10352
10353         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
10354         opcodes, use the REG_MEMBASE opcodes instead.
10355         
10356         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
10357         opcodes, use the REG_MEMBASE opcodes instead.
10358         
10359         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
10360         linear IR branch.
10361
10362         * mini.c (mono_op_imm_to_op): New helper function.
10363
10364         * mini-ops.h: Add some opcodes from linear IR branch.
10365
10366 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
10367
10368         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
10369         <tsv@solvo.ru>.
10370
10371 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
10372
10373         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
10374         OP_ICONV_TO_R4/R8.
10375
10376         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
10377
10378 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * aot-compiler.c (emit_method_code): Add an assert.
10381
10382         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
10383         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
10384         methods.
10385
10386 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
10387
10388         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
10389         some load/store opcodes so they are consistent. 
10390         (mono_arch_emit_prolog): Simplify some code.
10391
10392         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
10393
10394         * objects.cs: Add tests for large argument offsets on ARM.
10395
10396         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
10397         stack offsets. Fixes #359651.
10398
10399         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
10400
10401         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
10402
10403         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
10404
10405         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
10406
10407         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
10408
10409         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
10410         rid of CEE_CONV_R_UN.
10411
10412         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
10413
10414 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
10415
10416         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
10417
10418         * mini.c (mono_normalize_opcodes): Add some more opcodes.
10419
10420         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
10421
10422         * cpu-amd64.md: Remove some unused opcodes.
10423
10424         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
10425
10426         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
10427
10428         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
10429         arch specific functions for its parts. Call the peephole pass after local
10430         regalloc so the prolog can compute a more accurate max_offset.
10431         
10432         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
10433         the corresponding OP_I/OP_L opcodes.
10434
10435         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
10436
10437         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
10438
10439 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10440
10441         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
10442         as they are handled in mini.c.
10443
10444         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
10445         
10446         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
10447         case since it is handled in mini.c.
10448
10449         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
10450
10451         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
10452
10453         * *.c: Use the new opcodes in the IR and back end code.
10454
10455         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
10456
10457         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
10458
10459 2008-02-06  Mark Probst  <mark.probst@gmail.com>
10460
10461         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
10462         an assert because it has a race condition.
10463
10464 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
10465
10466         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
10467
10468         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
10469
10470         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
10471
10472         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
10473         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
10474
10475 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
10476
10477         * cpu-amd64.md (move): Correct the maximum size of move.
10478
10479 2008-02-05  Mark Probst  <mark.probst@gmail.com>
10480
10481         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
10482         the generic class init trampoline to return quickly if the class
10483         is already inited.
10484
10485 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
10486
10487         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
10488         issues where an 32 bit callsite cannot be patched by a 64 bit address.
10489
10490 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
10491
10492         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
10493         branch.
10494
10495 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
10496
10497         * objects.cs: Add some soft-float tests.
10498
10499         * mini.c: Fix a couple more soft-float issues.
10500
10501         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
10502
10503         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
10504         avoid a REX prefix.
10505
10506 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
10507
10508         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
10509         exception happens while compiling a virtual method.
10510
10511 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
10512
10513         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
10514         
10515         * mini-sparc.c: Fix build.
10516
10517         * mini-sparc.c (get_call_info): Add support for generic sharing.
10518
10519         * mini-exceptions.c: Add a FIXME.
10520
10521 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
10522
10523         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
10524         altstack handling code.
10525
10526         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
10527         
10528         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
10529
10530         * mini-s390.c: Add support for generic sharing.
10531
10532         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10533         Fix CAS on s390.
10534         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10535
10536         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
10537
10538         * mini-s390x.c: Add support for generic sharing.
10539         
10540         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
10541         Fix CAS on ia64.
10542         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
10543
10544         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
10545         can be used since it takes a 16 bit signed immediate.
10546
10547         * inssel-s390x.brg: Fix OP_SETRET.
10548
10549         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
10550
10551         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
10552
10553         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
10554
10555         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
10556
10557         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
10558         in one place.
10559
10560         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
10561         stuff.
10562
10563         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
10564         of the unused mono_arch_patch_delegate_trampoline stuff.
10565
10566 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
10567
10568         * basic-long.cs: Move the fp related tests to basic-float.cs.
10569
10570         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
10571
10572         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
10573
10574         * basic-calls.cs: Add a test for proper float argument passing.
10575
10576         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
10577         if the context corresponds to an exception received through a signal.
10578
10579         * exceptions.cs: Add a test for nullref handling at the start of a try
10580         clause.
10581
10582         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
10583
10584         * jit-icalls.c (mono_break): New JIT icall.
10585
10586         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
10587
10588         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
10589
10590 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
10591
10592         * cpu-*.md: Get rid of unused opcodes.
10593
10594         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
10595
10596         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
10597         by all platforms.
10598
10599         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
10600         define.
10601
10602         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
10603         the arch independent trampoline code in mini-trampolines.c.
10604
10605         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
10606
10607         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
10608
10609         * mini-s390.h: Remove an unused define.
10610         
10611         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
10612         the arch independent trampoline code in mini-trampolines.c.
10613
10614         * mini-arm.c (mono_arch_emit_prolog): Fix build.
10615
10616 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
10617
10618         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
10619
10620         * mini-s390.c (mono_arch_emit_prolog): Fix build.
10621
10622         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
10623
10624         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
10625
10626         * cpu-amd64.md: Use smaller sizes for int opcodes.
10627
10628         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
10629
10630         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
10631         objects.cs.
10632
10633         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
10634         debugging.
10635
10636         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
10637         instead of though a pointer to save an indirection when accessing elements of
10638         the array.
10639
10640         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
10641         some typos.
10642         (NOT_IMPLEMENTED): New helper macro.
10643         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
10644         of a bb.
10645
10646         * *.c: Use the new helper macro.
10647
10648 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
10649
10650         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
10651
10652 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
10653
10654         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
10655         stack slots.
10656
10657 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
10658
10659         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
10660         profiling is enabled.
10661         
10662         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
10663         the end.
10664         (mono_arch_emit_prolog): Add more first bblock optimizations.
10665
10666         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
10667         in order if possible.
10668         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
10669         bblock, since the arguments are still in their original registers.
10670
10671         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
10672
10673 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
10674
10675         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
10676         as well.
10677
10678         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
10679         offset 0.
10680
10681         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
10682
10683         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
10684         process async exceptions received while in unmanaged code.
10685
10686         * mini.c (mini_init): Install a callback with the runtime which will be called
10687         when a thread receives an async exception while in unmanaged code.
10688
10689         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
10690
10691         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
10692
10693 2008-01-16  Wade Berrier  <wberrier@novell.com>
10694
10695         * cpu-g4.md:
10696         * cpu-arm.md:
10697         * cpu-s390x.md:
10698         fix build
10699
10700 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
10701
10702         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
10703         compilation with sun cc.
10704
10705         * cpu-*.md: Fix the build.
10706
10707         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
10708
10709         * mini-amd64.h: Add some comments to the MonoLMF structure.
10710
10711         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
10712         
10713         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
10714         in the LMF structure if possible. This saves two instructions in the
10715         managed->native wrappers.
10716
10717         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
10718
10719 2008-01-16  Mark Probst  <mark.probst@gmail.com>
10720
10721         * generic-sharing.c: New type argument lookup code which uses the
10722         runtime generic context template.
10723
10724 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
10725
10726         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
10727
10728         * mini-arm.c (add_general): Fix arm eabi parameter passing.
10729         (mono_arch_output_basic_block): Fix localloc implementation.
10730
10731         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
10732
10733         * mini-ia64.c (peephole_pass): Fix ia64 build.
10734
10735         * mini-amd64.c (peephole_pass): Fix a warning.
10736         
10737         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
10738         at a constant offset from sp/fp.
10739
10740         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
10741         instead of obtaining it from *lmf in the managed method case.
10742
10743 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
10744
10745         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
10746
10747 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
10748
10749         * mini.h (MonoInstList): New type.
10750         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
10751         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
10752         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
10753         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
10754         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
10755         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
10756         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
10757         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
10758         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
10759         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
10760         MONO_INST_LIST_FOR_EACH_ENTRY,
10761         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
10762         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
10763         mono_inst_list_first, mono_inst_list_last,
10764         mono_inst_list_next, mono_inst_list_prev): New instruction
10765         list handling interfaces.
10766         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
10767         list head 'ins_list'.
10768         (MonoInst): Replace next pointer with list head 'node'.
10769         (MonoCallInst): Make 'out_args' a MonoInstList.
10770         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
10771         (MonoCompile): Delete reverse_inst_list and
10772         reverse_inst_list_len.
10773         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
10774         mono_arch_lowering_pass, mono_arch_local_regalloc,
10775         mono_arch_output_basic_block, mono_arch_emit_prolog):
10776         Convert to new instruction lists.
10777         (insert_after_ins): Delete.
10778         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
10779         instruction lists.
10780         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
10781         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
10782         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
10783         mono_emulate_opcode, mono_emit_load_got_addr,
10784         inline_method, mono_method_to_ir, mono_print_bb_code,
10785         print_dfn, decompose_pass, nullify_basic_block,
10786         replace_out_block_in_code, remove_block_if_useless,
10787         merge_basic_blocks, move_basic_block_to_end,
10788         try_unsigned_compare, optimize_branches, mono_print_code,
10789         mini_select_instructions, remove_critical_edges): Likewise.
10790         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
10791         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
10792         mono_arch_output_basic_block, mono_arch_emit_prolog):
10793         Likewise.
10794         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
10795         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10796         mono_arch_output_basic_block): Likewise.
10797         (inst_list_prepend, insert_after_ins): Delete.
10798         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
10799         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
10800         instruction lists.
10801         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
10802         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
10803         mono_arch_emit_prolog): Likewise.
10804         * cfold.c (mono_constant_fold): Likewise.
10805         * liveness.c (visit_bb, mono_analyze_liveness,
10806         optimize_initlocals): Likewise.
10807         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
10808         * graph.c (mono_draw_code_cfg): Likewise.
10809         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
10810         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
10811         mono_ssa_cprop): Likewise.
10812         * abcremoval (get_relations_from_previous_bb, process_block):
10813         Likewise.
10814         * local-propagation (mono_cprop_invalidate_values,
10815         mono_local_cprop_bb): Likewise.
10816         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
10817         peephole_pass, mono_arch_output_basic_block,
10818         mono_arch_emit_prolog): Likewise.
10819         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
10820         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10821         mono_arch_emit_prolog): Likewise.
10822         (insert_after_ins): Delete.
10823         * aliasing.c (print_code_with_aliasing_information,
10824         mono_build_aliasing_information, mono_aliasing_deadce):
10825         Convert to new instruction lists.
10826         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
10827         peephole_pass, NEW_INS, mono_arch_lowering_pass,
10828         mono_arch_local_regalloc, mono_arch_output_basic_block):
10829         Likewise.
10830         (insert_after_ins): Delete.
10831         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
10832         peephole_pass, mono_arch_output_basic_block): Convert to
10833         new instruction lists.
10834         * mini-codegen (InstList, inst_list_prepend,
10835         insert_after_ins): Delete.
10836         (insert_before_ins, get_register_force_spilling,
10837         get_register_spilling, free_up_ireg, free_up_reg,
10838         create_copy_ins, create_spilled_store, alloc_int_reg,
10839         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
10840         to new instruction lists.
10841         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
10842         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
10843         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
10844         (insert_after_ins): Delete.
10845         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
10846         mono_arch_local_regalloc, mono_arch_output_basic_block,
10847         mono_arch_call_opcode): Convert to new instruction lists.
10848         (insert_after_ins): Delete.
10849         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
10850         peephole_pass, mono_arch_output_basic_block,
10851         mono_arch_emit_prolog): Convert to new instruction lists.
10852
10853 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
10854
10855         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
10856
10857         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
10858         Fixes #353182.
10859
10860         * Makefile.am (version.h): Make this work with non-bash shells.
10861
10862 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
10863
10864         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
10865
10866 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
10867
10868         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
10869         the InitializeArray optimization.
10870
10871 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
10872
10873         * mini.c driver.c: Don't include os/gc_wrapper.h.
10874
10875 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
10876
10877         * mini.c (print_jit_stats): Print GC statistics if available.
10878
10879 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
10880
10881         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
10882
10883 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
10884
10885         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
10886
10887 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
10888
10889         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
10890         
10891         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
10892
10893         * driver.c (mono_main): Ditto.
10894
10895 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
10896
10897         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
10898
10899         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
10900         in the vtable can't be encoded.
10901         (compile_method): Ditto.
10902
10903 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
10904
10905         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
10906         defined.
10907
10908         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
10909         lmf->rbp.
10910
10911         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
10912         the top LMF entry belongs to the current method.
10913
10914         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
10915
10916 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
10917
10918         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
10919         
10920         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
10921
10922         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
10923
10924         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
10925
10926         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
10927
10928         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
10929         implementation.
10930
10931         * basic-float.cs: Add an ulong->double cast test.
10932
10933 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
10934
10935         * mini.c (mono_method_to_ir): Fix a warning.
10936
10937 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
10938
10939         * mini-ops.h: Add OP_SWITCH.
10940
10941         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
10942         CEE_SWITCH in back-end code, use OP_SWITCH instead.
10943
10944 2007-12-11  Geoff Norton  <gnorton@novell.com>
10945
10946         * mini-s390x.c: Minor change to the MAX() define to allow
10947         it to compile with other gcc versions.
10948
10949 2007-12-11  Geoff Norton  <gnorton@novell.com>
10950
10951         * cpu-s390x.md:
10952         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
10953
10954 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10955
10956         exceptions-arm.c (mono_arch_get_restore_context): Restore
10957         the frame pointer.
10958
10959         exceptions-arm.c (throw_exception): Save the frame pointer.
10960         This is a partial fix for #323747. Only the client side is
10961         fixed.
10962
10963 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10964
10965         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
10966         was using an unrelated variable to log the class which
10967         needed the cctor to be called. This was crashing on arm.
10968
10969 2007-12-09  Robert Jordan  <robertj@gmx.net>
10970
10971         * mini-x86.c (mono_arch_emit_epilog):
10972         Consider all kinds of 64-bit types. Fixes #323114.
10973
10974 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
10975
10976         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
10977
10978 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10979
10980         * mini-amd64.c (peephole_pass): Add a missing instruction check.
10981
10982 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10983
10984         * mini.c: run type ctor before allocating an object, not only
10985         when running it's constructor method (fixes at least part of bug #342507).
10986
10987 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
10988         
10989         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
10990         
10991         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
10992         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
10993         function.
10994
10995         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
10996         mono_generic_class_init_trampoline () the same as it is done with the other
10997         trampolines.
10998
10999         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
11000         aot-runtime.c aot-compiler.c: Implement AOT support.    
11001
11002 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11003
11004         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
11005         build for archs which don't have the vtable trampoline defined
11006         yet.
11007
11008 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
11009
11010         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
11011
11012         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
11013
11014         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
11015
11016         * tramp-<ARCH>.c: Use the new helper function.
11017
11018 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11019
11020         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
11021         trampoline call, which takes a vtable argument.
11022
11023         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
11024         OP_TRAMPCALL_VTABLEs like other calls.
11025
11026         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
11027         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
11028         call.  Implemented a support function which fetches the vtable
11029         from a register set.
11030
11031         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
11032         Implemented a generic class init trampoline, using the
11033         OP_TRAMPCALL_VTABLE opcode.
11034
11035         * mini.c: Implemented static field access when sharing generic
11036         code.  This implies initing the class using the new
11037         OP_TRAMPCALL_VTABLE call.
11038
11039 2007-12-07  Mark Probst  <mark.probst@gmail.com>
11040
11041         * mini.c: Don't compile methods with sharing enabled if their
11042         classes are disabled for sharing.
11043
11044 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11045
11046         * inssel.brg: Add a missing sign extension to the GETCHR and array access
11047         opcodes. Fixes #346563.
11048
11049         * objects.cs: Add a new test.
11050
11051         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
11052
11053         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
11054         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
11055
11056 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
11057
11058         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
11059
11060 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
11061
11062         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
11063         code stream.
11064
11065 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
11066
11067         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
11068
11069         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
11070         optimization in the AOT case.
11071         
11072 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
11073
11074         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
11075         
11076         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
11077
11078         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
11079
11080         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
11081
11082         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
11083         is created by the inlined delegate ctor.
11084
11085         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
11086
11087         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
11088
11089 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
11090
11091         * cpu-x86.md: Fix the length of ckfinite.
11092
11093 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
11094
11095         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
11096         
11097         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
11098         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
11099
11100         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
11101
11102         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
11103         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
11104
11105 2007-11-28  Martin Baulig  <martin@ximian.com>
11106
11107         * mini-x86.c
11108         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
11109         after creating the trampoline.
11110
11111 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
11112
11113         * aot-runtime.c (load_aot_module): Check runtime version if needed.
11114
11115         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
11116         the same version.
11117
11118         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
11119         instead of the calling method to help AOT.
11120
11121         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
11122
11123 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
11124
11125         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
11126         is defined.
11127
11128 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
11129
11130         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
11131         
11132         * aot-compiler.c (compile_method): Correct check for generic method definitions.
11133         (encode_method_ref): No need to handle generic method definitions specially.
11134
11135         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
11136
11137         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
11138         decode_klass_info.
11139
11140         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
11141         encode_klass_info.
11142         (compile_method): Enable generic sharing.
11143
11144 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
11145
11146         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
11147         (mini_method_compile): Add preliminary support for AOTing shared generic code.
11148
11149         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
11150         generic code.
11151
11152         * mini-trampolines.c: Fix a warning.
11153
11154         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
11155         NEW_PCONST.
11156         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
11157         (generic_class_is_reference_type): Remove unused function.
11158
11159         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
11160         in the generic vtable trampoline case.
11161
11162         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
11163         
11164         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
11165         return an AOT method based on a vtable slot.
11166
11167         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
11168
11169         * mini.c (mini_get_vtable_trampoline): Export this.
11170
11171 2007-11-22  Martin Baulig  <martin@ximian.com>
11172
11173         * debug-debugger.h
11174         (MonoDebuggerInfo): Move `debugger_version' up.
11175
11176 2007-11-22  Martin Baulig  <martin@ximian.com>
11177
11178         * mini-amd64.c
11179         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
11180
11181         * mini-trampolines.c
11182         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
11183         after compiling the method.
11184
11185 2007-11-20  Martin Baulig  <martin@ximian.com>
11186
11187         * debug-mini.c
11188         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
11189         (mono_debugger_remove_breakpoint): Likewise.
11190         (mono_debugger_check_breakpoints): Likewise.
11191
11192         * debug-debugger.c: Implement the new breakpoint interface here.
11193
11194 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
11195
11196         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
11197         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
11198
11199         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
11200
11201 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
11202
11203         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
11204
11205         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
11206         mini.c.
11207
11208         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
11209         mini.c.
11210
11211         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
11212         returning a vtype in a register.
11213
11214         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
11215         here from the arch specific code.
11216
11217         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
11218         mini.c.
11219
11220         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
11221         (mono_arch_emit_prolog): Increment maximum prolog size.
11222
11223         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
11224         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
11225
11226         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
11227         MonoGenericSharingContext.
11228
11229         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
11230         MonoGenericSharingContext. Allocate memory from the cfg mempool.
11231
11232 2007-11-15  Mark Probst  <mark.probst@gmail.com>
11233
11234         * mini.c, mini.h, generic-sharing.c: Functions for producing code
11235         which extract fields out of the runtime generic context.  Full
11236         sharing of the NEWARR opcode.
11237
11238 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
11239
11240         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
11241         --enable-minimal=ssa.
11242
11243 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
11244
11245         * mini-trampolines.c (mono_delegate_trampoline): Update after 
11246         mono_marshal_get_delegate_invoke () signature change.
11247
11248 2007-11-13  Mark Probst  <mark.probst@gmail.com>
11249
11250         * mini.c: Removed the shared context in favor of the generic
11251         sharing context.  Allocate the MonoJitInfo structure with room for
11252         the generic sharing context if it's needed.
11253
11254         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
11255         domain-internals.h now.
11256
11257         * mini-x86.c: Pass the generic sharing context to get_call_info ().
11258
11259         * generic-sharing.c: Several changes for working without a shared
11260         context and instead operating on open types instead.
11261
11262 2007-11-12  David S. Miller  <davem@davemloft.net>
11263
11264        * inssel-sparc.brg: Fix double instruction emit.
11265
11266 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
11267
11268         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
11269         Get/Set/Address methods.
11270         
11271         * mini.c debug-debugger.c mini-trampolines.c: Update after 
11272         mono_marshal_get_delegate_invoke signature change.
11273
11274 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11275
11276         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
11277         This can happens with dynamic methods. Fixes the other bug in #322722.
11278
11279 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
11280
11281         * tramp-arm.c (mono_arch_patch_callsite): Support patching
11282         BX call sequence.
11283
11284         * mini-arm.c (arm_patch): Implement patching of BX call
11285         sequence. Fixes one of the bugs in #322722.
11286
11287 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
11288
11289        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
11290        under Linux.  We only need to flush every 32-byte cache line.    
11291
11292 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
11293
11294         * mini.c:
11295         move_basic_block_to_end: Add branches when needed, eventually creating
11296         a new BB.
11297         optimize_branches: added a parameter that tells if it's ok to create
11298         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
11299         and avoid calling move_basic_block_to_end when it's not ok.
11300         Fixes bug 318677.
11301
11302 2007-11-07  Mark Probst  <mark.probst@gmail.com>
11303
11304         * mini.c: Abort inlining call to InitializeArray if something
11305         looks wrong.  Let the icall handle it, which now has proper safety
11306         checks.
11307
11308 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
11309
11310         * mini.c (mono_spill_call): add support for soft-float.
11311
11312         * mini.c (mono_method_to_ir): add support for soft-float
11313         to inlined functions that return float.
11314
11315         * mini.c (mono_method_to_ir): add support for soft-float
11316         to cee_stsfld opcode on float fields.
11317
11318 2007-11-05  Geoff Norton  <gnorton@novell.com>
11319
11320         * mini-x86.h: Fix the structure access for X86 Leopard.
11321
11322
11323 2007-11-05  Martin Baulig  <martin@ximian.com>
11324
11325         * mini-trampolines.c
11326         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
11327         after compiling the method to notify the debugger.
11328
11329 2007-11-05  Martin Baulig  <martin@ximian.com>
11330
11331         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
11332
11333 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
11334
11335         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
11336         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
11337
11338 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
11339
11340         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
11341         native-to-managed wrappers.
11342         
11343 2007-11-01  Geoff Norton  <gnorton@novell.com>
11344
11345         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
11346         members.
11347
11348 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
11349
11350         * mini.c, mini-x86.c: when getting back from unmanaged code
11351         to managed via a marshaled delegate we also need to set the
11352         right domain.
11353
11354 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
11355
11356         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
11357         for amd64.
11358
11359 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
11360
11361         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
11362         let the debugger or other external agents to tell the JIT when
11363         a sw breakpoint has been inserted in the code that the JIT needs
11364         to be able to inspect.
11365
11366 2007-10-31  Martin Baulig  <martin@ximian.com>
11367
11368         * debug-debugger.h
11369         (MonoDebuggerInfo): Remove `runtime_class_init'.
11370
11371 2007-10-30  Martin Baulig  <martin@ximian.com>
11372
11373         * debug-mini.h
11374         (mono_debugger_thread_created): Added `MonoThread *' argument.
11375         (mono_debugger_extended_notification): New public method.
11376         (mono_debugger_trampoline_compiled): New public method.
11377
11378         * debug-mini.c
11379         (MonoDebuggerThreadInfo): Added `thread' and
11380         `extended_notifications' fields.
11381
11382         * debug-debugger.c
11383         (debugger_executable_code_buffer): New static variable.
11384
11385         * debug-debugger.h
11386         (MonoDebuggerInfo): Added `executable_code_buffer',
11387         `executable_code_buffer_size', `breakpoint_info_area',
11388         `breakpoint_table' and `breakpoint_table_size'.
11389
11390 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
11391
11392         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
11393         that IP  either is an unused value or the vtable pointer. IMT 
11394         calls use vtable + offset now. Reduced by almost half the size
11395         of IMT entries.
11396
11397 2007-10-26  Jonathan Chambers <joncham@gmail.com>
11398
11399         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
11400         defines to access param registers. Replace long usage with
11401         gsize as sizeof(long) != sizeof(void*) on Win64.
11402
11403         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
11404         on Win64. Fix intrinsic, use _AddressOfReturnAddress
11405         instead of non-existant _GetAddressOfReturnAddress.
11406
11407         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
11408         param registers. Save/restore %rdi and %rsi in MonoLMF.
11409
11410         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
11411         param registers. Modify (throw_exception) signature to take 
11412         %rdi and %rsi on Win64. 
11413
11414         Code is contributed under MIT/X11 license.
11415
11416 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11417
11418         * helpers.c: unlink debugging output files.
11419
11420 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
11421
11422         * mini.c: Move mono_create_ftnptr () to object.c.
11423
11424 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
11425
11426         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
11427         optional. This function can now be used to disassemble code generated
11428         outside the JIT such as trampolines and IMT thunks.
11429
11430         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
11431
11432         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
11433         vtable pointer from a ldr instruction.
11434
11435         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
11436         new IMT call sequence.
11437
11438         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
11439         call sequence for interface invocations.
11440
11441         * mini-arm.c (mono_arch_emit_imt_argument): added, required
11442         for imt support. This function is empty since IMT on ARM requires no
11443         special handling on the IR side.
11444
11445         * mini-arm.c (mono_arch_find_imt_method): added, required for
11446         imt support.
11447
11448         * mini-arm.c (mono_arch_find_this_argument): added, required
11449         for imt support.
11450
11451         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
11452         a ldr instruction to load a value stored in the code stream.
11453
11454         * mini-arm.c (mono_arch_build_imt_thunk):added, required
11455         for imt support.
11456
11457
11458 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
11459
11460         * mini.c (mini_init): Install the jump trampoline callback.
11461
11462 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11463
11464         * mini-trampolines.c: handle synchronized methods with the common
11465         vtable trampoline (bug #335601).
11466
11467 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
11468
11469         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
11470
11471         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
11472         64 bit platforms.
11473
11474         * mini-ia64.h mini-ia64.c: Add support for IMT.
11475
11476         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
11477         prolog. Fixes #331958.
11478
11479 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
11480
11481         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
11482
11483 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11484
11485         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
11486         trampoline.
11487
11488 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11489
11490         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
11491         trampoline.
11492
11493 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
11494
11495         * mini-x86.c, mini-x86.h: x86 support for the common vtable
11496         trampoline.
11497
11498 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
11499
11500         * mini-trampolines.c: changed the magic rampoline to understand
11501         the common vtable trampoline method: the method to invoke is
11502         determined by the vtable displacement of the call.
11503
11504 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
11505
11506         * mini.c, mini.h: register the common vtable trampoline if the
11507         architecture supports it.
11508
11509 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
11510
11511         * cpu-amd64.md: use the correct max length for tls_get.
11512
11513 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
11514
11515         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
11516         CEE_STELEM_ANY. Fixes #333696.
11517
11518 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
11519
11520         * exceptions-x86.c: provide more graceful handling of the case where
11521         we followed a bogus function pointer from managed code (bug #332866).
11522
11523 2007-10-11  Mark Probst  <mark.probst@gmail.com>
11524
11525         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
11526         replaces the generic_shared flag and will carry more information
11527         in the future.
11528
11529         * generic-sharing.c: Added mini_type_stack_size() which allows
11530         allows open types if given a generic sharing context.
11531         mini_get_basic_type_from_generic() takes a
11532         MonoGenericSharingContext* instead of a MonoCompile* now.
11533
11534         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
11535         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
11536         mini-sparc.c, mini-x86.c: Trivial changes required by the two
11537         changes above.  Just passing arguments through to the right
11538         places.
11539
11540 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11541
11542         * mini-arm.c: unify the call emission to emit_code_seq().
11543
11544 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
11545
11546         * tramp-arm.c: reduced the trampoline size.
11547
11548 2007-10-10  Mark Probst  <mark.probst@gmail.com>
11549
11550         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
11551         variable handling out of arch-specific code.
11552
11553 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
11554
11555         * mini-arm.c: implemented fast delegate dispatch.
11556
11557 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11558
11559         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
11560         that fp elimination is turned off if the space required by locals is too
11561         big. Fixes #331958.
11562
11563 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11564
11565         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
11566         ARM to the new style trampoline.
11567
11568 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
11569
11570         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
11571
11572         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
11573
11574 2007-10-09  Martin Baulig  <martin@ximian.com>
11575
11576         * debug-debugger.h
11577         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
11578         `field_info_offset_offset'.     
11579
11580 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
11581
11582         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
11583         removed more internal usage of the r11 register and made it available
11584         to the register allocator.
11585
11586 2007-10-08  Mark Probst  <mark.probst@gmail.com>
11587
11588         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
11589         when sharing generics and treat type variables as references.
11590
11591 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11592
11593         * mini-ppc.c: started removing the internal uses of register r11
11594         to eventually allow the register allocator to manage it as an
11595         additional available register.
11596
11597 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
11598
11599         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
11600
11601 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
11602
11603         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
11604         specific trampolines as they are not performance critical as a jump
11605         target (maybe align as before only for AOT code?). This saves about
11606         200 KB of native code on x86 for monodevelop startup.
11607
11608 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11609
11610         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
11611         monodevelop startup.
11612
11613 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
11614
11615         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
11616
11617         * mini-sparc.h mini-sparc.c: Implement IMT support.
11618
11619         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
11620         its smaller and doesn't clobber sparc_g1.
11621
11622         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
11623
11624 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11625
11626         * mini-ppc.c: optimized the size of the IMT thunks a bit.
11627
11628 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
11629
11630         * mini-ppc.c: implemented fast delegate invocation.
11631
11632 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
11633
11634         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
11635
11636 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11637
11638         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
11639         code to the new style trampoline in preparation for IMT support.
11640
11641 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
11642
11643         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
11644         systems already. This also reduces the specific trampiline sizes and
11645         prepares for the use of r12 as the IMT identifier register.
11646
11647 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11648
11649         * mini-mips.h: endianess fix (simplified from a patch by
11650         Thomas Kunze <thommy@tabao.de>, bug #323737).
11651
11652 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11653
11654         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
11655         to access ucontext fields and enable netbsd support
11656         (partially from Magnus Henoch <mange@freemail.hu>).
11657
11658 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11659
11660         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
11661         use the preprocessor from the CPP env var if it is set.
11662
11663 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11664
11665         * mini-trampolines.c: fixed an assertion and moved it earlier in the
11666         code, before interface_offset gets used.
11667
11668 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
11669
11670         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
11671         mono_class_setup_vtable () before accessing klass->vtable.
11672
11673 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
11674
11675         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
11676         hackish.
11677
11678 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
11679
11680         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
11681         IMT slots (this saves hundreds of KB of memory in programs like
11682         IronPython and Monodevelop).
11683
11684 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
11685
11686         * mini.c: print the delegate counter.
11687
11688 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
11689
11690         * mini-x86.c: make it easier to enable the debugging code for IMT
11691         slots.
11692
11693 2007-09-28  Martin Baulig  <martin@ximian.com>
11694
11695         * debug-debugger.h
11696         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
11697         `mono_method_klass_offset' and `mono_method_token_offset'.
11698
11699 2007-09-20  Mark Probst  <mark.probst@gmail.com>
11700
11701         * mini.c: First generics sharing implementation.  Can only share
11702         in very simple cases.  If sharing doesn't work it falls back to
11703         dedicated compilation.
11704
11705         * mini.h: Flag in MonoCompile to specify whether generic
11706         compilation is shared.  Flags enum for marking which generic inst
11707         of a context is used.  Prototypes for helper functions.
11708
11709         * generic-sharing.c: Helper functions for generic method sharing.
11710
11711         * optflags-def.h: Optimization flag (gshared) for enabling generic
11712         method sharing added.
11713
11714         * Makefile.am: generic-sharing.c added.
11715
11716 2007-09-19 Daniel Nauck <dna@mono-project.de>
11717
11718         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
11719
11720 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
11721         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
11722         fixes bug 325507.
11723
11724 2007-09-19  Martin Baulig  <martin@ximian.com>
11725
11726         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
11727         mono_debug_cleanup() is now part of mono_cleanup().
11728
11729 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
11730
11731         * driver.c (mono_main): Fix a warning.
11732
11733 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
11734
11735         * aot-compiler.c: Optimize various parts when processing large assemblies.
11736         Fixes ##325568.
11737
11738         * mini.c (mono_patch_info_hash): Improve hash function.
11739
11740 2007-09-14  Jonathan Chambers <joncham@gmail.com>
11741
11742         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
11743         
11744         Code is contributed under MIT/X11 license.
11745
11746 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11747
11748         * mini.c (mini_init): Fix a leak.
11749
11750         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
11751
11752 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
11753
11754         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
11755
11756 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11757
11758         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
11759
11760 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
11761
11762         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
11763         variance tests.
11764
11765         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
11766
11767         * mini.c (handle_alloc): Enable managed allocators in AOT code.
11768
11769         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
11770
11771         * aot-runtime.c (decode_patch_info): Ditto.
11772
11773 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11774
11775         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
11776         static case. Cache delegates in architecture specific code, 
11777         based on number of parameters.
11778         
11779         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
11780         in architecture specific code, based on number of parameters.
11781         
11782         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
11783         caching happen in architecture specific code now.
11784         
11785         Code is contributed under MIT/X11 license.
11786
11787 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11788
11789         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
11790         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
11791         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
11792
11793         Code is contributed under MIT/X11 license.
11794
11795 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
11796         * mini.c: (mono_thread_abort) Fixed bug #82416.
11797
11798 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11799
11800         * mini.: hook the new managed GC allocation feature into the JIT.
11801
11802 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
11803
11804         * mini.c: implementation for the new runtime tls opcode.
11805
11806 2007-09-11  Martin Baulig  <martin@ximian.com>
11807
11808         * debug-debugger.h
11809         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
11810         `mono_method_inflated_offset'.
11811
11812 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
11813
11814         * driver.c mini.h mini.c: Add a new devel command line option for injecting
11815         async exceptions into a method.
11816
11817         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
11818         purpose of testing whenever the unwinder works at every instruction.
11819
11820 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
11821
11822         * mini.c: check accessibility of method used in ldftn (fixes
11823         bug #82635).
11824
11825 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
11826
11827         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
11828
11829         * inssel.brg: Fix a warning.
11830
11831 2007-09-03  Martin Baulig  <martin@ximian.com>
11832
11833         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
11834         now takes the `main_method' as argument.
11835
11836 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
11837
11838         * cpu-sparc.md (endfilter): Add missing src1:i argument.
11839
11840 2007-08-30  Jonathan Chambers <joncham@gmail.com>
11841
11842         * driver.c: include the cil-coff.h header on Windows.
11843         
11844         Code is contributed under MIT/X11 license.
11845
11846 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
11847
11848         * mini.c, driver.c: don't include the cil-coff.h header.
11849
11850 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11851
11852         * mini.c: flag places that needs fixes fo soft-float support.
11853
11854 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
11855
11856         * mini.h, inssel-float.brg: fix soft-float constant loads on big
11857         endian systems (partially from Dean Jenkins, bug #81924).
11858
11859 2007-08-28  Mark Probst  <mark.probst@gmail.com>
11860
11861         * mini.c (check_linkdemand): Remove embedded reference object in
11862         call to LinkDemandSecurityException.
11863         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
11864         with an IntPtr instead of a reference object.
11865
11866 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
11867
11868         * mini.c (handle_initobj): Handle alignment properly.
11869
11870         * inssel.brg (mini_emit_memset): Ditto. 
11871
11872         * inssel.brg (mini_emit_memcpy): Ditto. 
11873
11874         * inssel-sparc.brg: Ditto.              
11875
11876         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
11877
11878 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
11879
11880         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
11881         exceptions raised in unmanaged code. Fixes part of #82594.
11882
11883 2007-08-24  Mark Probst  <mark.probst@gmail.com>
11884
11885         * mini.c (mono_method_to_ir), declsec.c
11886         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
11887
11888 2007-08-22  Martin Baulig  <martin@ximian.com>
11889
11890         * debug-mini.h
11891         (MonoDebuggerThreadInfo): New typedef.
11892         (mono_debugger_thread_table): New global variable.
11893         (mono_debugger_thread_created): New public function.
11894         (mono_debugger_thread_cleanup): New public function.
11895
11896         * debug-debugger.h
11897         (MonoDebuggerInfo):
11898         - removed `get_current_thread' and `lookup_assembly'.
11899         - removed `data_table'.
11900         - added `thread_table'.
11901
11902         * mini.c
11903         (mono_thread_start_cb): Call mono_debugger_thread_created().
11904         (mono_thread_attach_cb): Likewise.
11905         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
11906         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
11907         initial domain.
11908
11909         * driver.c (mono_main): Move mono_debug_init() up, before calling
11910         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
11911
11912 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11913
11914         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
11915         together when passing several arguments of type double (gives a small
11916         speedup and saves a few bytes of generated code).
11917
11918 2007-08-20  Jb Evain  <jbevain@novell.com>
11919
11920         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
11921
11922 2007-08-20  Jb Evain  <jbevain@novell.com>
11923
11924         * mini.c (mono_method_to_ir): throw MethodAccessException
11925         and FieldAccessException instead of InvalidProgramException.
11926
11927 2007-08-20  Mark Probst  <mark.probst@gmail.com>
11928
11929         * mini.c: CoreCLR security checks.
11930
11931         * mini.h: Removed MonoSecurityMode (moved to
11932         metadata/security-manager.h) and mono_security_mode global var
11933         (replaced by set/get functions in security-manager.h).
11934
11935         * driver.c: Added "core-clr-test" security mode for testing.  Used
11936         set-function for setting security mode.
11937
11938 2007-08-17  Mark Probst  <mark.probst@gmail.com>
11939
11940         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
11941         the new jit_info_table.
11942
11943         * driver.c: Test code for the new jit_info_table (enabled by the
11944         define MONO_JIT_INFO_TABLE_TEST).
11945
11946 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
11947
11948         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
11949         detection of call <REG> instruction sequence. Fixes build on freebsd.
11950
11951 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
11952
11953         * mini-exceptions.c: Fix a warning.
11954
11955 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
11956
11957         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
11958         stack overflow handling code on amd64 too.
11959
11960         * mini-exceptions.c (mono_setup_altstack): Make this use 
11961         mono_thread_get_stack_bounds ().
11962
11963         * mini-x86.h: Disable sigaltstack on solaris x86.
11964
11965 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
11966
11967         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
11968
11969 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
11970
11971         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
11972
11973 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
11974
11975         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
11976
11977         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
11978
11979 2007-08-03  Neale Ferguson <neale@sinenomine.net>
11980
11981         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
11982         due to alignment.
11983
11984 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
11985
11986         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
11987         to be emitted (bug #82281).
11988
11989 2007-08-01  Martin Baulig  <martin@ximian.com>
11990
11991         Merged the `debugger-dublin' branch.
11992
11993         * debug-debugger.h (MonoDebuggerInfo):
11994         Removed the `old_*' compatibility entries.
11995         Added `debugger_version' and `data_table'.
11996         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
11997         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
11998
11999         * debug-mini.c
12000         (MiniDebugMethodBreakpointInfo): Add `address_list'.
12001         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
12002         instead of a `gconstpointer'.
12003         (mono_debugger_insert_method_breakpoint): Return a
12004         `MonoDebugMethodAddressList *'.
12005
12006 2007-06-28  Martin Baulig  <martin@ximian.com>
12007
12008         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12009
12010 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
12011
12012         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
12013         __builtin_frame_address () since it is broken on older gcc versions.
12014
12015 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12016
12017         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
12018         on the stack overflow handling and made the managed stack overflows
12019         catchable in most cases using soft guard pages.
12020         * exceptions-x86.c: added code to restore the protection in the soft
12021         guard pages at the end of exception handling.
12022
12023 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
12024
12025         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
12026
12027 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12028
12029         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
12030         exception handling.
12031
12032 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
12033
12034         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
12035         signal handling support until it has been ported to the new mechanism.
12036         * mini.c: fixed stack overflow detection and use the new
12037         architecture code  to handle signals on the altstack.
12038
12039 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
12040
12041         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
12042         stack overflows on the alt stack.
12043
12044 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
12045
12046         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
12047         stack overflows on the alt stack.
12048
12049 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
12050
12051         * exceptions-ppc.c: cleanup preparing for altstack support.
12052
12053 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12054
12055         * exceptions-arm.c: cleanup preparing for altstack support.
12056
12057 2007-07-27  Mark Probst  <mark.probst@gmail.com>
12058
12059         * mini.c (print_jit_stats): Output hazard pointer stats.
12060
12061 2007-07-26  Mark Probst  <mark.probst@gmail.com>
12062
12063         * driver.c, mini.c: Replaced security mode flags with a single
12064         enum variable.
12065
12066 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12067
12068         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
12069
12070 2007-07-25  Mark Probst  <mark.probst@gmail.com>
12071
12072         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
12073         (which doesn't do anything yet) for activating Core CLR
12074         (Silverlight) security.
12075
12076 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
12077
12078         * mini-codegen.c: work around a possible gcc bug on arm.
12079
12080 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12081
12082         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
12083         message for platforms that don't support AOT compilation.
12084
12085 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
12086
12087         * mini.h, mini.c, driver.c: temporary smcs hack.
12088
12089 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
12090
12091         * mini-arm.h, mini-arm.c: arm EABI fixes.
12092
12093 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
12094
12095         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
12096         case.
12097
12098         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
12099         trampolines taking a method argument.
12100
12101         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
12102
12103         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
12104         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
12105
12106         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
12107         JIT compilation throws an exception. Fixes #82050.
12108
12109 2007-07-19  Mark Probst  <mark.probst@gmail.com>
12110
12111         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
12112         with the MONO_EXCEPTION_ defines.
12113
12114 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
12115
12116         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
12117         #82117.
12118         
12119         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
12120         the cause of an assertion.
12121
12122 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
12123
12124         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
12125         removed.
12126
12127 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
12128
12129         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
12130         assert. Should fix #82103.
12131
12132 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
12133
12134         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
12135         here too. Fixes #82095.
12136
12137         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
12138         addresses.
12139
12140         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
12141
12142         * mini-amd64.h: Enable IMT for amd64.
12143         
12144         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
12145
12146 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
12147
12148         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
12149
12150 2007-07-12  Mark Probst  <mark.probst@gmail.com>
12151
12152         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
12153         as soon as check_linkdemand sets an exception_type.
12154
12155 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12156
12157         * mini-x86.c: fixed offsets for IMT call sequence.
12158         * mini-x86.h: enable IMT again.
12159
12160 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12161
12162         * trace.c (mono_trace_enter_method): Decode MonoType too.
12163
12164         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
12165
12166         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
12167
12168         * mini-amd64.c: Add preliminary IMT implementation.
12169         
12170 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
12171
12172         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
12173         understand the new IMT-base interface invocation (thanks to
12174         Daniel Nauck for the report and the remote debugging session).
12175
12176 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12177
12178         * mini-x86.c: size and speed optimizations for the IMT bsearch.
12179
12180 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12181
12182         * Makefile.am (aotcheck): Make this actually use the AOTed code.
12183
12184 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
12185
12186         * mini-trampolines.c: implement AOT IMT support.
12187         * mini-x86.h: enable IMT support for wider testing.
12188
12189 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12190
12191         * inssel.brg (emit_imt_argument): Add aot support here.
12192
12193         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
12194
12195 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
12196
12197         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
12198         of the IMT implementation, partially from massi, with my
12199         implementation of the bsearch sequence. Disabled by default until
12200         the AOT code is implemented.
12201
12202 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12203
12204         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
12205
12206         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
12207
12208 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12209
12210         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
12211         arch-independent IMT JIT code from Massimiliano
12212         Mantione (massi@ximian.com) with small cleanups from me.
12213
12214 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
12215
12216         * Makefile.am: fix svn invocation to get the svn revision to be
12217         independent of the local language (build fix).
12218
12219 2007-07-09  Mark Probst  <mark.probst@gmail.com>
12220
12221         * mini.c (inline_method): Reset cfg->exception_type if the
12222         inlining is aborted.  Fixes: 82049.
12223
12224 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
12225
12226         * mini.c: remove assert from exception handling code when exception_ptr
12227         is not set.
12228
12229 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12230
12231         * mini.c (mono_codegen): Add an assert.
12232
12233         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
12234         enter and leave code.
12235         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
12236
12237 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12238
12239         * mini-ppc.c: fixed memory corruption for localloc(0)
12240         (bug #81852).
12241
12242 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12243         
12244         * mini.c: Fix warnings.
12245
12246 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
12247
12248         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
12249         to emit better double->int conversions.
12250
12251 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12252
12253         * mini.c: the provided Min/Max optimizations are valid for unisgned
12254         ints.
12255
12256 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
12257
12258         * 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
12259
12260 2007-06-28  Miguel de Icaza  <miguel@novell.com>
12261
12262         * mini.c (mono_running_on_valgrind): Add support for reporting the
12263         method and  its boundaries to valgrind.
12264
12265 2007-06-28  Martin Baulig  <martin@ximian.com>
12266
12267         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
12268
12269 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
12270
12271         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
12272
12273         * generic.2.cs: Add new test case.
12274
12275 2007-06-25  Martin Baulig  <martin@ximian.com>
12276
12277         Merged the `debugger-dublin' branch.
12278
12279         * debug-mini.c
12280         (mono_debugger_insert_method_breakpoint): New public method.
12281         (mono_debugger_remove_method_breakpoint): Likewise.
12282         (mono_debugger_check_breakpoints): New static method.
12283         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
12284
12285         * debug-debugger.h (MonoDebuggerInfo):
12286         Renamed (to keep backward compatibility in the vtable):
12287         `insert_breakpoint' -> `old_insert_breakpoint'.
12288         `remove_breakpoint' -> `old_remove_breakpoint'.
12289         `create_string' -> `old_create_string'.
12290         `lookup_class' -> `old_lookup_class'.
12291         `lookup_type' -> removed; changed into a dummy field.
12292         `lookup_assembly' -> `old_lookup_assembly'.
12293         Added (same functionality, but different signature):
12294         `create_string', `lookup_class', `lookup_assembly'
12295         Added new:
12296         `get_method_addr_or_bpt', `remove_method_breakpoint',
12297         `runtime_class_init'.
12298
12299         * debug-debugger.c: Merged the `debugger-dublin' branch.
12300
12301 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
12302
12303         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
12304         well.
12305         (peephole_pass): Likewise.
12306
12307 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
12308
12309         * driver.c: hopefully make setaffinity work also for ancient
12310         versions of linux.
12311
12312 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
12313
12314         * driver.c : win32 build fix.
12315
12316 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
12317
12318         * driver.c: check for the MONO_NO_SMP env var and bind to a single
12319         processor if it is set.
12320
12321 2007-06-21  Martin Baulig  <martin@ximian.com>
12322
12323         * debug-mini.h: New file.
12324
12325         * debug-mini.c
12326         (mono_debugger_insert_breakpoint_full): Moved here from
12327         ../metadata/mono-debug-debugger.c.
12328         (mono_debugger_remove_breakpoint): Likewise.
12329         (mono_debugger_breakpoint_callback): Likewise.
12330
12331 2007-06-15  Raja R Harinath  <rharinath@novell.com>
12332
12333         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12334         changes in MonoGenericClass.
12335
12336 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
12337
12338         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
12339
12340 2007-06-14  Raja R Harinath  <rharinath@novell.com>
12341
12342         * jit-icalls.c (mono_helper_compile_generic_method): Update to
12343         removal of MonoGenericMethod.
12344
12345 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12346
12347         * mini-exceptions.c: hooks for the exception events profiling API.
12348
12349 2007-06-14  Randolph Chung  <tausq@debian.org>
12350
12351         * Makefile.ma: Add hppa target.
12352         * mini-arch.h: Include mini-hppa.h
12353         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
12354         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
12355         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12356
12357 2007-06-14  Randolph Chung  <tausq@debian.org>
12358
12359         * inssel.brg: Add rules for "chained" compare-branch operations so that
12360         a single compare op can affect multiple branches.  Adjust cost for
12361         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
12362         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
12363         cost for some rules so that they can more easily be overridden by
12364         per-arch rules (with fixes from lupus).
12365         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12366
12367 2007-06-13  Randolph Chung  <tausq@debian.org>
12368
12369         * mini-ops.h: Reorder branch ops so that they match the order of the
12370         corresponding CEE_* ops.  The code expects them this way.
12371         Add new ops for HPPA target.
12372         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12373
12374 2007-06-13  Randolph Chung  <tausq@debian.org>
12375
12376         * mini-exceptions.c: Handle cases where the stack grows towards
12377         larger addresses.
12378         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
12379
12380 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12381
12382         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
12383         counter.
12384         * driver.c: explain where a non-matching corlib is found.
12385
12386 2007-06-13  Mark Probst  <mark.probst@gmail.com>
12387
12388         * mini.c (print_jit_stats): Output dynamic code allocation stats.
12389
12390 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
12391
12392         * mini-exceptions.c: Generate a method profile leave event during
12393         an exception to ensure that the profiler gets notified.
12394
12395 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
12396
12397         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
12398         branch.
12399
12400         * cpu-amd64.md: Add long_and/or/xor opcodes.
12401
12402 2007-06-06  Wade Berrier  <wberrier@novell.com>
12403
12404         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
12405         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
12406         length of instruction shr_imm (expected 8, got 10)
12407
12408 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
12409
12410         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
12411
12412 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12413
12414         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12415         MonoInternalHashTable again (fixed bug in the internal hash table
12416         code).
12417
12418 2007-06-06  Mark Probst  <mark.probst@gmail.com>
12419
12420         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
12421         Have to figure out what makes it crash the SWF regression.
12422
12423 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
12424
12425         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
12426
12427 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
12428
12429         * mini.c: optimize out the type check when storing null in a
12430         reference array.
12431
12432 2007-06-04  Mark Probst  <mark.probst@gmail.com>
12433
12434         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
12435         MonoInternalHashTable.
12436
12437 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
12438
12439         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
12440         signed integer methods.
12441
12442 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12443
12444         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
12445         permanently since the current approach doesn't work.
12446
12447 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
12448
12449         * inssel.brg (stmt): Only call delegate->invoke_impl if 
12450         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
12451
12452 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12453
12454         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
12455         the sreg2==rdx case.
12456         
12457         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
12458         account if it contains a rex prefix.
12459         (peephole_pass): Handle OP_FMOVE as well.
12460
12461 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
12462
12463         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
12464         as it causes regressions.
12465
12466 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
12467
12468         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
12469         static case as well.
12470
12471         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
12472
12473         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12474         (mono_arch_get_this_arg_from_call): Ditto.
12475
12476         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
12477
12478         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
12479         invoke_impl field.
12480
12481         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
12482         (mono_arch_get_this_arg_from_call): Ditto.
12483
12484         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
12485         
12486         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
12487         try to create optimized invoke code and use that for further invocations. 
12488         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
12489
12490         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
12491
12492 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
12493
12494         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
12495         sealed classes or methods.
12496         *devirtualization.cs: tests for the new optimization
12497
12498 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
12499
12500         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
12501         by the update_volatile () function.
12502
12503 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
12504
12505         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
12506         require it.
12507
12508         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
12509
12510 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
12511
12512         * mini.c: Add configure checks for header files.
12513         * mini-x86.c: Add configure checks for header files.
12514         * trace.c: Add configure checks for header files.
12515         * aot-runtime.c: Add configure checks for header files.
12516         * aot-compiler.c: Add configure checks for header files.
12517         * driver.c: Add configure checks for header files.
12518         * mini-codegen.c: Add configure checks for header files.
12519         
12520         Code is contributed under MIT/X11 license.
12521
12522 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
12523
12524         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
12525         icompare_imm -128 + op_iclt. Fixes #81703.
12526
12527 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
12528
12529         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
12530
12531 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
12532
12533         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
12534         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
12535         so that all isinst checks now use "interface_bitmap".
12536
12537 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
12538
12539         * cpu-amd64.md (jmp): Fix a warning.
12540
12541         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
12542
12543         * basic.cs: Add new regression test.
12544
12545         * basic.cs: Remove test which is now in basic-long.cs.
12546
12547         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
12548
12549         * basic-long.cs: Add new test.
12550         
12551 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
12552
12553         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
12554
12555 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
12556
12557         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
12558
12559         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
12560         places.
12561         
12562         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
12563         throwing code a bit.
12564
12565         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
12566         the exception throwing code a bit.
12567
12568         * mini-x86.c (get_call_info): Allocate result from a mempool.
12569
12570 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
12571
12572         * aot-compiler.c (find_typespec_for_class): Fix the assert.
12573
12574         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
12575
12576         * mini.h (MonoCompile): Add 'token_info_hash' field.
12577
12578         * mini.c: Save token->method associations during compilation so the AOT 
12579         compiler can use it.
12580         
12581         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
12582         which reference generic classes and methods.
12583
12584 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
12585
12586         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
12587
12588         * aot-compiler.c (compile_method): Fix a typo in a comment.
12589
12590         * aot-runtime.c (decode_cached_class_info): Skip generic types.
12591
12592         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
12593         everything generic.
12594
12595         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
12596
12597 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
12598
12599         * mini.h (MonoCompile): Add 'args' field.
12600
12601         * mini.c (mono_compile_create_vars): Store variables representing the arguments
12602         into cfg->args.
12603
12604         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
12605
12606 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
12607
12608         * mini.c (mono_compile_get_interface_var): Remove this unused function.
12609
12610         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
12611
12612         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
12613         opcodes for some opcodes.
12614
12615         * mini.h *.brg *.c: Use the new opcodes.
12616
12617 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
12618
12619         * mini.h: Bumped aot revision.
12620
12621         * inssel.brg: modified code generation of type checks for interfaces
12622         to use the new "MonoClass.interface_bitmap" instead of the old
12623         "MonoClass.interface_offsets".
12624
12625 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
12626
12627         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
12628
12629 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
12630
12631         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
12632         64 bit platforms.
12633
12634 2007-04-27  Neale Ferguson <neale@sinenomine.net>
12635
12636         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
12637
12638 2007-04-27  Wade Berrier  <wberrier@novell.com>
12639
12640         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
12641         mini.h) to fix build.
12642
12643 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
12644
12645         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
12646         
12647         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
12648         causes the corlib unit tests to fail.
12649
12650 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
12651
12652         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
12653
12654         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
12655
12656         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
12657         opcodes to the comparison relations.
12658
12659         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
12660         opcodes to their types.
12661         
12662         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
12663
12664         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
12665         it in cfg->arch.cinfo.
12666
12667         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
12668
12669         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
12670         cfg->cil_offset_to_bb.
12671
12672 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
12673
12674         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
12675         created becase of initlocals.
12676
12677 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
12678
12679         * mini-alpha.c cpu-alpha.md: More alpha port work from 
12680         Sergey Tikhonov <tsv@solvo.ru>.
12681
12682 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
12683
12684         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
12685
12686 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
12687
12688         * cpu-s390.md (break): Correct the length of break instruction.
12689
12690 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
12691
12692         * mini.c: fix a couple of soft-float issues and comments.
12693
12694 2007-04-15  Miguel de Icaza  <miguel@novell.com>
12695
12696         * trace.c (is_filenamechar): - is also a filename char.
12697
12698 2007-04-15  Neale Ferguson <neale@sinenomine.net>
12699
12700         * mini-s390.c: Correct checking for enum type in return value processing.
12701
12702 2007-04-14  Raja R Harinath  <rharinath@novell.com>
12703
12704         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
12705         (version.h): Makefile is in the build directory.
12706
12707 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
12708
12709         * mini-amd64.h: fix for assertion failure on Solaris/amd64
12710
12711 2007-04-11  Martin Baulig  <martin@ximian.com>
12712
12713         * mini.c (can_access_member): Fix handling of generic classes;
12714         fixes #81259.
12715
12716 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
12717
12718         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
12719
12720 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
12721
12722         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
12723
12724 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
12725
12726         * mini-codegen.c: make sure the right spill amount is
12727         used for fp or integer registers (fixes the float_sub_spill() on ppc).
12728
12729 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
12730
12731         * mini-ppc.c: fixes for the fp_branch_nan test.
12732
12733 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
12734
12735         * basic.cs: Comment out new test which still fails on ia64.
12736
12737 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
12738
12739         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
12740
12741 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12742
12743         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
12744
12745 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
12746
12747         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
12748         on 64 bit machines. Fixes part of #80738.
12749
12750         * basic.cs: Add regression test.
12751
12752 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12753
12754         * inssel.brg basic.cs: Revert previous change to fix build.
12755
12756         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
12757         platforms.
12758         
12759         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
12760
12761         * basic.cs: Add new regression test.
12762
12763 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
12764
12765         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
12766         many arguments.
12767
12768 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12769
12770         * cpu-s390x.md: Correct length of break instruction.
12771
12772 2007-03-16  Neale Ferguson <neale@sinenomine.net>
12773
12774         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
12775         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
12776
12777 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
12778
12779         * *.c: Begin WIN64 port.
12780         * mini.c:  Use correct register in profiler.
12781         * mini-amd64.c: No inline assembly on Win64.
12782         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
12783         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
12784         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
12785         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
12786         mono_arch_ip_from_context for Win64.
12787         
12788         Contributed under MIT/X11 license.
12789
12790 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
12791
12792         * exceptions-amd64.c (seh_handler): Ditto.
12793
12794         * exceptions-x86.c (seh_handler): Fix a memory leak.
12795
12796 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
12797
12798         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
12799         mini-s390x.c: fixed peephole optimizations to deal
12800         correctly with 1 and 2 byte reload avoidance.
12801
12802 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
12803
12804         * cpu-s390.md, cpu-s390x.md: update localloc length.
12805
12806 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12807
12808         * cpu-g4.md: added missing descriptions.
12809
12810 2007-03-14  Miguel de Icaza  <miguel@novell.com>
12811
12812         *  Makefile.am: Add support so the tail tests are not executed on
12813         PowerPC as that is a known limitation of the PowerPC port.
12814
12815 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12816
12817         * runmdesc.bat:  Move to msvc directory.
12818         
12819 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
12820
12821         * runmdesc.bat:  Run executable that was produced by the current
12822         target and sent via an argument.
12823         
12824 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
12825
12826         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
12827         #81102.
12828
12829         * generics.2.cs: Add regression test.
12830
12831 2007-03-09  Wade berrier  <wberrier@novell.com>
12832
12833         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
12834
12835 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
12836
12837         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
12838         AOT code depends on this.
12839
12840 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
12841
12842         * mini.c: more precise tracking of types in the eval stack
12843         (part of fix for bug #81044).
12844
12845 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
12846
12847         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
12848
12849         * aot-compiler.c (encode_patch): Remove an obsolete comment.
12850
12851 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
12852
12853         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
12854
12855         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
12856
12857 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
12858
12859         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
12860         a pointer on 64 bit systems. Fixes #80190.
12861
12862         * iltests.il: Add new regression test.
12863
12864 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
12865
12866         * mini.c: inline a constant for Environment.IsRunningOnWindows.
12867
12868 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
12869
12870         * trace.c: Remove an erroneous alignemnt check when tracing.
12871           Fixes --trace on OSX86.
12872
12873 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
12874
12875         * mini-$(arch).h: initialize SP in context for all the archs.
12876
12877 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
12878
12879         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
12880         regressions in the thread tests.
12881
12882 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
12883
12884         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
12885         - fixed implementation of LOCALLOC opcode
12886         - implemented non-un compare for floats
12887         - code cleanup
12888         - implementation of FDIV and CKFINITE opcodes
12889         - fixes for latest mono updates
12890         - additional arch opcodes
12891
12892 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
12893
12894         * Makefile.am: simplify and merge rules for cross-compilation.
12895
12896 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
12897
12898         * local-propagation.c: Actually *apply* the fix for bug 80591...
12899
12900 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
12901
12902         * mini-exceptions.c: backuot part of the last change
12903         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
12904
12905 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
12906         * inssel.brg: Fix bug 59286.
12907
12908
12909 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
12910
12911         * mini-exceptions.c: patch from Zoltan to correctly check for
12912         stack boundaries (using the stack register, not the frame register),
12913         fixes bugs #80724, #79717.
12914
12915 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
12916
12917         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
12918         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
12919
12920         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
12921         presence of frame pointer elimination.
12922
12923 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
12924         
12925         * mini-x86.h: NetBSD UCONTEX_REG defines.
12926
12927 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
12928
12929         * inssel-amd64.brg: Fix amd64 build.
12930
12931 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
12932
12933         * mini.h: remove extern to workaround what looks likes gcc bug 26905
12934         on amd64.
12935
12936 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
12937
12938         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
12939         ends.
12940
12941         * mini-<ARCH>.c: Use mono_is_regsize_var ().
12942
12943 2007-01-30 Mark Mason <mason@broadcom.com>
12944
12945            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
12946            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
12947            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
12948            beginning support for CEE_JMP [not quite working yet]
12949            * tramp-mips.c: LMF handling now works
12950         
12951 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
12952
12953         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
12954
12955         * mini.h (NULLIFY_INS): New macro.
12956
12957 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
12958
12959         * mini.c: statistical profiler fix for windows, patch
12960         from Tor Lillqvist (tml@novell.com).
12961
12962 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
12963         * local-propagation.c: Fix bug 80591.
12964
12965 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
12966
12967         * Makefile.am: put back the --export-dynamic option as with
12968         the previous gmodule flags (thanks to Robert Jordan).
12969
12970 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
12971
12972         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
12973
12974         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
12975         simplify and speed up the local register allocator. Also rename some fields
12976         like iassign->vassign.
12977         
12978         * regalloc.c: Remove some functions which are no longer used since their
12979         inlined version is in mini-codegen.c.
12980         
12981         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
12982
12983         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
12984
12985 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
12986
12987         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
12988         narrowing. Fixes #80622.
12989
12990         * iltests.il: Add new regresssion test. 
12991
12992 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
12993
12994         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
12995         debug-debugger.c, debug-debugger.h: warning fixes.
12996         * driver.c: updated copyright year and made it fit in one line.
12997
12998 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
12999
13000         * aot-runtime.c: updated to use mono-dl instead of gmodule.
13001
13002 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
13003
13004         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
13005
13006         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
13007
13008         * iltests.il: Add new test for bug #80507.
13009
13010 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13011
13012         * mini-arm.h: use soft-float also on vfp for now.
13013
13014 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13015
13016         * mini.c: fix some more soft-float issues.
13017
13018 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
13019
13020         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
13021
13022 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
13023         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
13024         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
13025         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
13026
13027 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
13028
13029         * mini-arm.c: typo fix.
13030
13031 2007-01-23  Neale Ferguson <neale@sinenomine.net>
13032
13033         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
13034
13035 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
13036
13037         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
13038         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
13039
13040         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
13041
13042         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
13043
13044         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
13045         
13046         * inssel.brg: Fix a warning.
13047
13048         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
13049
13050         * abcremoval.c ssa.c ssapre.c: Update after this change.
13051         
13052         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
13053
13054         * dominators.c (df_set): Use mono_bitset_union_fast.    
13055
13056 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13057
13058         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
13059         mini-codegen.c: reduce relocations and memory usage for the cpu
13060         description.
13061
13062 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
13063
13064         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
13065
13066         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
13067         to reduce their size.
13068
13069 2007-01-19 Mark Mason <mason@broadcom.com>
13070
13071         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
13072         * mini-mips.c: more configuration macros, support long conditional branches, additional
13073         asserts, fix epilog instrumentation.
13074         * mini-mips.h: use standard stack walk
13075         * cpu-mips.md: increase size of div, rem and conditional branches
13076         
13077 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
13078
13079         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
13080         to cpu spec data.
13081
13082 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
13083
13084         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
13085         (compile_method): Ditto.
13086
13087         * aot-runtime.c (decode_klass_info): Ditto.
13088
13089         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
13090         needed by the code generated by inssel.brg. Also fix a warning.
13091
13092 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
13093
13094         * mini.c: deal with enums that become genericinsts by
13095         being nested in a generic class (bug #79956).
13096
13097 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
13098
13099         * mini.c: match the generic definition to check for
13100         private access with generic types (bug #78431).
13101
13102 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
13103
13104         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
13105         to make life easier for people cross-compiling that insist on not
13106         using scratchbox.
13107
13108 2007-01-17 Mark Mason <mason@broadcom.com>
13109
13110         * inssel-long.brg: patch to deal with mips missing flags
13111         * inssel-long32-mips.brg: implement overflow checks
13112         * insset-mips.brg: implement overflow checks
13113         * mini-mips.h: implement conditional exception handling
13114         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
13115           Remove unused code, minor cleanups.
13116         * exceptions-mips.c: minor cleanups
13117         * mini-ops.h: add mips conditional exception ops
13118         * cpu-mips.md: add mips conditional exception ops
13119
13120         
13121 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
13122
13123         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
13124         to deal with mips missing of flags.
13125
13126 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
13127
13128         * exceptions-ppc.c: execute fault handlers.
13129
13130 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
13131
13132         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
13133
13134 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13135
13136         * mini.c: handle also floating point values in initialize_array.
13137
13138 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13139
13140         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
13141         array initialization and make it conditional on the intrins option.
13142
13143 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13144
13145         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
13146         relocations and put the patch info names close to the enum definition.
13147
13148 2007-01-15 Mark Mason <mason@broadcom.com>
13149
13150         * basic.cs, exceptions.cs: break up large tests to increase debugability.
13151
13152 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13153
13154         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
13155
13156 2007-01-12  Raja R Harinath  <rharinath@novell.com>
13157
13158         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
13159
13160 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
13161
13162         * Makefile.am: distribute the mips sources.
13163
13164 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13165
13166         * mini-codegen.h: handle bug #80489 here, by excluding ecx
13167         directly.
13168
13169 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
13170
13171         * cpu-x86.md: back out for now as this triggers other regressions.
13172
13173 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13174
13175         * cpu-x86.md: force src1 and dest regpair for long shift instructions
13176         to eax:edx, so ecx can't get allocated to them (bug #80489).
13177
13178 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
13179
13180         * mini.c, mini-exceptions.c: enabled running fault handlers
13181         (bug #80469).
13182
13183 2007-01-03  Miguel de Icaza  <miguel@novell.com>
13184
13185         * driver.c: If nothing fail, do not use the string "failed",
13186         because it makes it very annoying to view test result logs on the
13187         web. 
13188
13189 2006-12-30  Miguel de Icaza  <miguel@novell.com>
13190
13191         * debug-debugger.c (mono_debugger_main): Rename "main" to
13192         "main_method" to prevent a warning.
13193
13194         Remove a warning for unused field.
13195
13196 2006-12-28  Martin Baulig  <martin@ximian.com>
13197
13198         * debug-debugger.c
13199         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
13200
13201 2006-12-22  Martin Baulig  <martin@ximian.com>
13202
13203         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
13204         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
13205         seperate `.mdb_debug_info' section, so we can access it from the
13206         debugger even if the binary is stripped.
13207
13208         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
13209         from the `.mdb_debug_info' here to prevent the linker from
13210         removing that section.
13211
13212         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
13213         mdb-debug-info64.s.
13214
13215 2006-12-19  Robert Jordan  <robertj@gmx.net>
13216
13217         * mini-x86: enable the code to return small structures in
13218         registers for FreeBSD as well. Fixes bug #80278.
13219         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
13220
13221 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13222
13223         * mini-x86.c: align the stack when calling the profiler
13224         function instrumenting the prolog (on OSX).
13225
13226 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
13227
13228         * mini.c: emit a break opcode where Debugger.Break () is called.
13229
13230 2006-12-13  Miguel de Icaza  <miguel@novell.com>
13231
13232         * mini.c (mono_method_to_ir): Provide useful information on this
13233         assert, to prevent others from debugging like I did.
13234
13235 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13236
13237         * mini.c: enable code which was incorrectly commented
13238         (bug #80235).
13239
13240 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13241
13242         * mini-x86.c: enable on OSX, too, the code to return small
13243         structures in registers.
13244
13245 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
13246
13247         * mini-x86.c: remove the use of the dynamic code manager here, too.
13248
13249 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
13250
13251         * mini.h, debug-debugger.c, tramp-*.c: fixed 
13252         mono_debugger_create_notification_function() to use
13253         mono_global_codeman_reserve () instead of a dynamic code manager.
13254
13255 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
13256
13257         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
13258         ves_array_element_address() jit icall and use a generated
13259         managed method instead (which is about 4 times faster for a rank 3
13260         array access).
13261
13262 2006-11-29  Mark Mason  <mason@broadcom.com>
13263
13264         * basic-calls.cs: additional tests for passing
13265         structures as function arguments.
13266
13267 2006-11-29  Mark Mason  <mason@broadcom.com>
13268
13269         * mini-mips.h: disable custom exception handling
13270         * mini-mips.c: throw/rethrow should use jalr to call
13271         exception stubs.  Fixed bug with passing structures
13272         by value. More support for tracing floating point
13273         functions.
13274
13275 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
13276
13277         * mini.c: fixed typo in the soft-float ldind.r4 handling
13278         (bug #80086).
13279
13280 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13281
13282         * mini.c, mini.h, driver.c: added --runtime command line
13283         option to select a different runtime than the autodetected one.
13284         * jit.h: added API for embedders to initialize with a specific
13285         runtime version.
13286
13287 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
13288
13289         * mini.c: handle also boxing of r4 values (bug #80024).
13290
13291 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
13292
13293         * mini-ppc.c: force indirect calls until we reserve
13294         enough address space for all the generated code.
13295
13296 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
13297
13298         * exceptions-arm.c: workaround bugs in the libc definition
13299         of struct ucontext.
13300
13301 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
13302
13303         * inssel.brg: fixes from me and Mark Mason.
13304
13305 2006-11-23  Dick Porter  <dick@ximian.com>
13306
13307         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
13308         semaphore display now we've fixed the initial value
13309
13310 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13311
13312         * inssel.brg: partially revert the last change to fix the build.
13313
13314 2006-11-21  Mark Mason  <mason@broadcom.com>
13315
13316         * inssel.brg: Add and use compare-and-branch macros to support
13317         architectures that do not have condition code registers (ie. MIPS).
13318         * *-mips.{c,brg,md}: Fix copyright statements
13319
13320 2006-11-20  Mark Mason  <mason@broadcom.com>
13321
13322         * Makefile.am: remove mini-codegen.c from list of MIPS sources
13323         * mini.c: Allow GET_CONTEXT to be specified by the arch port
13324         * mini.h: Added declaration for mono_print_ins()
13325         * mini-codegen.c: added ins_spec initializer for MIPS
13326         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
13327         vreg to be virtual and hreg to be non-virtual.
13328         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
13329         is not yet working/implemented correctly.
13330         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
13331         non-static, fixup calls to print_ins() from other parts in the file.
13332
13333 2006-11-20  Mark Mason  <mason@broadcom.com>
13334
13335         * basic-calls.cs: added tests for passing structures as arguments
13336         to calls.
13337
13338 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
13339
13340         * inssel-long32.brg: optimize signed division by power of two.
13341
13342 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
13343
13344         * mini-arm.c: added support for interworking with thumb code
13345         (mono must be still be built using the ARM instruction encoding).
13346
13347 2006-11-19  Miguel de Icaza  <miguel@novell.com>
13348
13349         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
13350         verifier has different rules for it.   Fixes a few verifier issues
13351         in the test suite.
13352
13353         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
13354         at the end, so people know what happened.
13355
13356 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
13357
13358         * brach-opts.c: in optimize_exception_target() make sure we
13359         are in a catch clause (fixes bug #79871).
13360
13361 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13362
13363         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
13364         more soft-float support fixes.
13365
13366 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
13367
13368         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
13369         that are passed half on the stack and half in registers.
13370
13371 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
13372
13373         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
13374         more mips integration work from Mark E Mason 
13375         <mark.e.mason@broadcom.com>.
13376
13377 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
13378
13379         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
13380         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
13381         tramp-mips.c: added sources for the mips port, not
13382         integrated in the build yet. Contributed by
13383         Mark E Mason <mark.e.mason@broadcom.com>.
13384
13385 2006-11-14  Neale Ferguson <neale@sinenomine.net>
13386
13387         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
13388
13389 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
13390
13391         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
13392         put the soft-float rules in its own file since it seems to
13393         break s390 compilation.
13394
13395 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
13396
13397         * mini-arm.c: fixed wrnings.
13398
13399 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
13400
13401         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
13402         inssel-arm.brg: ARM support for soft-float.
13403
13404 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
13405
13406         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
13407         loads and stores of 32 bit fp values.
13408
13409 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
13410
13411         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
13412
13413         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
13414         works. Fixes #79852 and #79463.
13415
13416 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
13417
13418         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
13419         more soft-float support WIP and fixes.
13420
13421 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
13422
13423         * mini-arm.c: some VFP updates.
13424
13425 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
13426
13427         * mini-exceptions.c: 0 is a valid local var offset in some
13428         architectures, don't assert (bug #78508).
13429
13430 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
13431
13432         * exceptions-arm.c: fixed off by one error in stack walk code.
13433
13434 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
13435
13436         * mini.h, mini.c: more precise tracking of type load exceptions.
13437
13438 2006-11-03  Robert Jordan  <robertj@gmx.net>
13439
13440         * Makefile.am: [WIN32] Add monow.exe target.
13441         * driver.c: [WIN32] Don't detach the console when debugging.
13442         Fixes bug #79797.
13443         
13444 2006-10-30  Miguel de Icaza  <miguel@novell.com>
13445
13446         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
13447
13448 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
13449
13450         * aot-compiler.c (emit_method_info): Add a case missed earlier.
13451
13452         * driver.c (mini_regression): Fix --regression with AOT.
13453
13454         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
13455
13456 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
13457
13458         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
13459
13460         * mini-sparc.h: Don't use sigaction on sparc/linux.
13461
13462         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
13463
13464         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
13465
13466         * mini-exceptions.c: Add proper include files for getpid ().
13467
13468 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
13469
13470         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
13471         address instead of a MonoJitInfo* to avoid decoding the exception info for the
13472         method.
13473
13474         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
13475         name cache to reduce its size.
13476
13477         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
13478
13479 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
13480
13481         * mini-x86.c: Save/restore the current LMF structure more efficiently using
13482         the mono_lmf TLS variable.
13483
13484         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
13485         trampoline lmf frames.  
13486
13487         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
13488
13489 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
13490
13491         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
13492         the mono_lmf TLS variable.
13493
13494         * mini-exceptions.c: Access the LMF structure through accessors.
13495
13496         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
13497         variable instead of in jit_tls->lmf.
13498
13499         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
13500         
13501         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
13502         trampoline lmf frames.
13503
13504         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
13505
13506 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
13507
13508        * mini.c trace.c mini-x86.c: Revert these too.
13509         
13510        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
13511        signature change.
13512
13513 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
13514
13515         * genmdesc.c: removed now dead code.
13516
13517 2006-10-09  Robert Jordan <robertj@gmx.net>
13518
13519         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
13520
13521 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
13522
13523         * mini.h: do not leave gaps in the opcode values.
13524
13525 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
13526
13527         * jit-icalls.h: flag functions as internal here, too.
13528
13529 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
13530
13531         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
13532         functions with the internal attribute.
13533
13534 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
13535
13536         * aot-compiler.c: fclose the file descriptor in the profile read loop.
13537
13538 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
13539
13540         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
13541         for soft-float.
13542
13543 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
13544
13545         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
13546         tail calls as on other platforms.
13547
13548         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
13549
13550         * iltests.il: Add a few tailcall tests.
13551
13552 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13553
13554         * driver.c: fix loop for old compilers (bug #79521).
13555
13556 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
13557
13558         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
13559
13560         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
13561
13562         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
13563         metadata without any code.
13564
13565         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
13566         more precise debugging information using gdb.
13567
13568 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
13569
13570         * inssel-ia64.brg: Make the helper methods static.
13571
13572 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13573
13574         * inssel-x86.brg: make the helper methods static.
13575
13576 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
13577
13578         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
13579
13580 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
13581
13582         * mini.c: updates for monoburg changes.
13583         * inssel.brg: make a few helper functions static as they should.
13584
13585 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
13586
13587         * Makefile.am: Move mini-codegen.c to common_sources.
13588
13589 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
13590
13591         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
13592         instructions.
13593         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
13594         mini-ppc.h: port to use the common local register allocator.
13595
13596 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13597
13598         * mini.h: Remove the comment too then.
13599
13600 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
13601
13602         * mini.h: put back backend.data which is to be used shortly and
13603         doesn't increase the size of MonoInst. If any 64 bit arch aligned
13604         pointers on 4 byte boundaries it'd have much bigger issues running
13605         and you can ifdef it out anyway.
13606
13607 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13608
13609         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
13610         MonoInst size by 4 bytes on 64 bit machines.
13611
13612 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
13613
13614         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
13615         replacement with more meaningful field names. Arch maintainers, please
13616         check the assigned names are good enough for your arch.
13617
13618 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
13619
13620         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
13621         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
13622
13623 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
13624
13625         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
13626         relocations and memory requirements, put the optimization flags
13627         definitions in their own file.
13628
13629 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
13630
13631         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
13632
13633         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
13634
13635 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
13636
13637         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
13638
13639 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
13640
13641         * inssel.brg: use the correct function to get the size of an item
13642         in an array, given an element class.
13643         * aot-compiler.c: do not access class->class_size directly.
13644
13645 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
13646
13647         * mini.h, debug-mini.c: added a debugging function to print
13648         info about local variables and arguments in a jitted method.
13649
13650 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
13651
13652         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13653
13654         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
13655
13656 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13657
13658         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
13659         inner and outer loops when passing vtypes.
13660
13661 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
13662
13663         * mini-ppc.c: take into account the cpu errata for cache flushing
13664         which caused some random errors (bug #79381).
13665
13666 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
13667
13668         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
13669         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
13670
13671 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
13672
13673         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
13674         loaded.
13675
13676         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
13677         freebsd ports tree.
13678
13679         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
13680         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
13681
13682         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
13683         displacement.
13684
13685 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
13686
13687         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
13688
13689 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
13690
13691         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
13692         macro does not have to be changed during debugging.
13693
13694         * 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>.
13695
13696         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
13697
13698         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
13699         
13700         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
13701         MONO_ARCH_NO_EMULATE_MUL is defined.
13702
13703         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
13704
13705         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
13706
13707         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
13708
13709         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
13710         
13711 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
13712
13713         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
13714         stuff to mini-exceptions.c where it is used.
13715
13716         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
13717         setup code, the real one is in mini-exceptions.c.
13718
13719         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
13720         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
13721         some changes from the freebsd ports tree.
13722
13723         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
13724         constants.
13725         
13726         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
13727
13728 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
13729
13730         * mini.c: on Linux, check for /proc to be mounted
13731         (bug# 79351, novell bug#201204).
13732
13733 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
13734
13735         * mini.c: handle cases where pthread_attr_getstack() behaves
13736         incorrectly (bug #78096).
13737
13738 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
13739
13740         * mini-arm.c: support larger stack frames (bug #79272).
13741
13742 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
13743
13744         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
13745
13746         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
13747         tokens.
13748
13749         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
13750         mono_class_from_name () to find a class from its name.
13751
13752         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
13753
13754 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
13755
13756         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
13757
13758 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
13759
13760         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
13761
13762 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
13763
13764         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
13765         callinfo->trampoline.
13766
13767         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
13768         fixes #79271.
13769         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
13770         future.
13771
13772 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
13773
13774         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
13775
13776 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
13777
13778         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
13779         stats.method_trampolines, it is already done by the generic trampoline code.
13780
13781         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
13782         
13783 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
13784
13785         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
13786
13787         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
13788
13789         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
13790
13791         * mini.c (print_jit_stats): Print mscorlib mempool size too.
13792         
13793         * mini.c (print_jit_stats): Print new stats.
13794
13795         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
13796
13797 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
13798
13799         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
13800         Address on two dimensional arrays. Fixes #78729.
13801
13802         * mini.h (MonoCompile): Add a 'skip_visibility' field.
13803
13804         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
13805         a method.
13806
13807         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
13808
13809         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
13810         #79130.
13811         
13812         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
13813         a race condition.
13814         (mini_get_ldelema_ins): Ditto.
13815
13816 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
13817
13818         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
13819         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
13820         Fixes #79213.
13821
13822 2006-08-29 Neale Ferguson <neale@sinenomine.net>
13823
13824         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
13825         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
13826
13827         * exceptions-s390x.c: Cosmetic change.
13828
13829         * tramp-s390.c: Fix warning.
13830
13831         * cpu-s390.md: Correct length of mul_imm.
13832
13833 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
13834
13835         * aot-compiler.c: added binary writer with ELF backend
13836         implementation (only on Linux/x86 for now).
13837
13838 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13839
13840         * Makefile.am: Don't run net 2.0 AOT tests.
13841
13842         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
13843         (mono_compile_assembly): Skip net 2.0 assemblies as well.
13844
13845         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
13846
13847 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
13848
13849         * aot-compiler.c: simplified and refactored the asm-writing code
13850         to allow different backends.
13851
13852 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
13853
13854         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
13855
13856         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
13857         little. Share patches of type TYPE_FROM_HANDLE as well.
13858
13859         * mini.c (mono_patch_info_equal): New helper function.
13860         (mono_patch_info_hash): Ditto.
13861
13862         * aot-compiler.c (emit_method_code): Fix s390 build.
13863
13864         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
13865         is not handled because it is stored as a flag and not as a type ctor. Fixes
13866         #79016.
13867
13868 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
13869
13870         * aot-compiler.c: Fix computation of GOT slot statistics.
13871         
13872         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
13873         Also remove support for not PIC AOT.
13874
13875         * mini.h: Bump AOT file format version.
13876
13877         * objects.cs: Add a test for #78990.
13878
13879         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
13880         (peter.dettman@iinet.net.au). Fixes #79087.
13881
13882         * basic-long.cs: Add a test for the above.
13883
13884 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
13885
13886         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
13887         
13888         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
13889         code somewhat.
13890
13891 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
13892
13893         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
13894         exceptions.
13895
13896 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
13897
13898         * mini.c: Don't verify COM proxy invoke calls
13899         
13900
13901 2006-08-10  Dick Porter  <dick@ximian.com>
13902
13903         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
13904         which process is holding semaphores locked.
13905
13906 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
13907
13908         * mini-ia64.c mini-amd64.c: Fix #79027.
13909
13910         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
13911
13912         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
13913
13914         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
13915         implicit arguments in a vararg call. Fixes #79027.
13916
13917 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
13918
13919         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
13920         (mono_get_array_new_va_signature): Ditto.
13921
13922 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
13923
13924         * aot-runtime.c: Call init_plt lazily.
13925
13926         * inssel-long.brg: Fix unsigned long->int conversion.
13927
13928         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
13929
13930         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
13931         that most data is now in the .rss/.data section.
13932
13933 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
13934
13935         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
13936
13937         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
13938
13939         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
13940
13941         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
13942
13943         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
13944         virtual call. Fixes #79010.
13945
13946         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
13947         and use the result as the this argument in the real call.
13948
13949         * generics.2.cs: Add a new test for #79010.
13950         
13951 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
13952
13953         * mini-x86.c: Fix a warning.
13954
13955         * aot-compiler.c: Add a bunch of statistics.
13956
13957         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
13958
13959 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
13960
13961         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
13962
13963 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
13964
13965         * 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>.
13966
13967 2006-07-13  Miguel de Icaza  <miguel@novell.com>
13968
13969         * mini.c (mono_method_to_ir): Obtain the original method in the
13970         CIL stream and use this to perform validation.
13971
13972         Fixed: #78816
13973
13974 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
13975
13976         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
13977         (mono_arch_call_opcode): Ditto.
13978
13979         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
13980         #78826.
13981
13982         * mini.c (mono_patch_info_dup_mp): New helper function.
13983         
13984         * aot-compiler.c (compile_method): Fix some of the memory allocated during
13985         compilation. Fixes #78827.
13986
13987 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
13988
13989         * declsec.c: Use original security informations for
13990           MONO_WRAPPER_MANAGED_TO_MANAGED.
13991
13992 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
13993
13994         * mini.c: Allow Com Interop methods/classes and
13995         don't verify COM wrapper calls
13996         
13997
13998 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
13999
14000         * inssel-long32.brg: Fix long->i4 checked conversion.
14001
14002         * exceptions.cs: Add a test for the above.
14003
14004 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
14005
14006         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
14007
14008         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
14009         leaks.
14010
14011         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
14012         #78775.
14013
14014 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
14015
14016         * mini.c: Fix solaris/x86 exception handling.
14017
14018         * Makefile.am: Get rid of $(ICU_LIBS).
14019
14020 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
14021
14022         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
14023         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
14024         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
14025
14026         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
14027
14028         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
14029         this function causes a SIGSEGV.
14030
14031 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
14032
14033         * mini.c: Remove unused solaris/x86 includes.
14034
14035 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
14036
14037         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
14038
14039 2006-06-20  Jb Evain  <jbevain@gmail.com>
14040
14041         * cpu-g4.md: fix max length of start_handler instruction.
14042
14043 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
14044         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
14045
14046 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
14047         * ssa.c: Fixed bug 78653 for SSA based deadce.
14048         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
14049         MonoInst.flags, used in SSA based deadce.
14050         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
14051         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
14052
14053 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
14054
14055         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
14056         it can end up using non executable memory on ppc64 systems
14057         running ppc32 userspace (fix from Johannes Berg).
14058
14059 2006-06-14  Dick Porter  <dick@ximian.com>
14060
14061         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
14062         4.1.1
14063
14064 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
14065         * mini.c: Made so that inline is locally disabled if it would
14066         trigger a .cctor, because too many apps depend on this behavior
14067         (which seems to be also the one of the MS CLR).
14068
14069 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
14070
14071         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
14072         No idea why this worked before.
14073
14074         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
14075         which branch to outer exception clauses since they could skip the
14076         inner finally clauses. Fixes #78633.
14077
14078         * exceptions.cs: Add a test for the above.
14079
14080         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
14081         Fixes #78629.
14082
14083         * iltests.il: Add a test for the above.
14084
14085 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
14086
14087         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
14088         after the end of a try bblock, to prevent asserts in mini_method_compile ().
14089
14090         * iltests.il: Add a test for the above.
14091
14092 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
14093
14094         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
14095         
14096         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
14097         methods as instrinsics.
14098
14099 2006-06-09  Wade Berrier <wberrier@novell.com>
14100
14101         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
14102         (simple-cee-ops.h ssapre-mini-ops.h)
14103
14104 2006-06-09  Neale Ferguson <neale@sinenomine.net>
14105
14106         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
14107         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
14108         instruction).
14109         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
14110         * cpu-s390x.md: Fix max. length values for a couple of instructions.
14111
14112 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
14113
14114         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
14115
14116 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
14117
14118         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
14119         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
14120         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
14121         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
14122         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
14123         of opcodes, so that bug 78549 should not happen again.
14124         * ssapre.c: Updated to use the renamed files.
14125
14126 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
14127
14128         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
14129         in OP_ATOMIC_EXCHANGE_I4.
14130
14131 2006-06-07  Wade Berrier <wberrier@novell.com>
14132
14133         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
14134         in mono_debugger_create_notification_function)
14135
14136 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
14137
14138         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
14139         
14140         * mini.c (type_from_stack_type): Disable some changes which do not
14141         seem to work.
14142
14143         * driver.c: Reenable opts.
14144
14145         * mini.h (MonoStackSlot): New structure to keep track of the verification state
14146         of the evaluation stack.
14147         
14148         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
14149         evaluation stack trace at entry to the bblock.
14150
14151         * mini.c (merge_stacks): New function to perform verification of stack merges.
14152         Turned off by default.
14153
14154         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
14155         STACK_MP.
14156         
14157 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
14158
14159         * local-propagation.c: Fixed bug 78549.
14160
14161 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
14162
14163         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
14164
14165 2006-06-02  Miguel de Icaza  <miguel@novell.com>
14166
14167         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
14168         tramp-arm.c, tramp-ia64.c
14169         (mono_debugger_create_notification_function): Update signature to
14170         new signature and use new protocol for creating the notification
14171         function.  
14172
14173         Should fix the build.
14174
14175 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
14176
14177         * exceptions-ppc.c (mono_jit_walk_stack)
14178         (ves_icall_get_frame_info): Fix the build
14179
14180 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
14181
14182         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
14183
14184 2006-05-31  Raja R Harinath  <rharinath@novell.com>
14185
14186         * il2tests.2.il: New file for generics CIL tests.  Add test for
14187         #78019.
14188         * Makefile.am: Update.
14189
14190         Fix #78019
14191         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
14192         to nullable types.
14193
14194 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
14195
14196         * aliasing.c: Fixed bug 78311.
14197
14198 2006-05-29  Martin Baulig  <martin@ximian.com>
14199
14200         * mini-exceptions.c (mono_find_jit_info): When computing the
14201         native offset, check whether we're actually inside the method's
14202         code; call mono_debug_print_stack_frame() to format the frame.
14203         (ves_icall_System_Exception_get_trace): Call
14204         mono_debug_print_stack_frame() to format the stack frame.
14205         (ves_icall_get_trace): Update to the new debugging API.
14206         (mono_jit_walk_stack_from_ctx): Likewise.
14207         (ves_icall_get_frame_info): Likewise.
14208
14209         * mini.c (get_method_from_ip): Use the new debugging API.
14210         (mono_print_method_from_ip): Likewise.
14211
14212         * exceptions-ppc.c
14213         (mono_jit_walk_stack): Use the new debugging API.
14214         (ves_icall_get_frame_info): Likewise.   
14215
14216 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
14217
14218         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
14219
14220 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
14221
14222         * mini.c: Added "limitator" to inline for debugging.
14223
14224 2006-05-24  Martin Baulig  <martin@ximian.com>
14225
14226         * debug-debugger.c (mono_debugger_init): Create a private,
14227         malloc()-based code manager for the notification function and
14228         intentionally leak it on exit.  This fixes the crash-on-exit race
14229         condition.
14230
14231         * tramp-amd64.c
14232         (mono_debugger_create_notification_function): Added
14233         `MonoCodeManager *' argument.
14234
14235         * tramp-x86.c
14236         (mono_debugger_create_notification_function): Added
14237         `MonoCodeManager *' argument.
14238
14239 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
14240
14241         * aliasing.c: Fixed 64 bit issue.
14242         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14243         default since all known bugs are fixed (one more time!).
14244
14245 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
14246
14247         * mini.c: write barrier support.
14248
14249 2006-05-23  Martin Baulig  <martin@ximian.com>
14250
14251         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
14252         check at the top of the file.
14253
14254 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
14255
14256         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
14257         reverting changes without reason and without changelog entries.
14258
14259 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
14260
14261         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
14262         to a few opcodes. Fixes #78439.
14263
14264         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
14265         consistency with other archs.
14266
14267         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
14268
14269 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14270
14271         * debug-debugger.c: fix the build.
14272
14273 2006-05-17  Martin Baulig  <martin@ximian.com>
14274
14275         * debug-debugger.c
14276         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
14277         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
14278         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
14279         (debugger_attach): Call GC_mono_debugger_add_all_threads().
14280
14281 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
14282
14283         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
14284
14285 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
14286
14287         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
14288         MONO_TYPE_GENERICINST.
14289         
14290         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
14291         MONO_TYPE_GENERICINST.
14292
14293 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
14294
14295         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
14296         #78325.
14297
14298 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
14299
14300         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
14301         mempool.
14302         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
14303
14304 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
14305
14306         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
14307         mono_trace_cleanup ().
14308
14309         * iltests.il: Fix problem with the newly added test.
14310
14311         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
14312         due to register constraints, free up the previous hreg. Fixes #78314.
14313
14314         * iltests.il: Add new test for #78314.  
14315
14316         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
14317         Interlocked.Add. Fixes #78312.
14318
14319         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
14320         
14321 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
14322
14323         * inssel.brg (mini_emit_virtual_call): Fix a warning.
14324
14325 2006-05-05  Martin Baulig  <martin@ximian.com>
14326
14327         * debug-mini.c (mono_debug_open_block): New method.
14328
14329         * mini-amd64.c
14330         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14331         the beginning of each basic block.
14332
14333         * mini-x86.c
14334         (mono_arch_output_basic_block): Call mono_debug_open_block() at
14335         the beginning of each basic block.
14336
14337 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14338
14339         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14340         default until I understand why they break the build on amd64.
14341
14342 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
14343
14344         * mini.c (mini_cleanup): Call mono_cleanup ().
14345
14346         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
14347         errors.
14348
14349 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
14350
14351         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
14352         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
14353         default since all known bugs are fixed, and I cannot reproduce bug
14354         77944... I'm asking Matt Hargett to test again after this commit.
14355
14356 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
14357
14358         * mini-codegen.c: Fixed typo that thrashed inline.
14359
14360 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
14361
14362         * dominators.c (compute_dominators): Avoid using a worklist since
14363         it is not correct in some cases. Instead, iterate over all bblocks as
14364         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
14365
14366 2006-04-28  Miguel de Icaza  <miguel@novell.com>
14367
14368         * mini.c (mono_jit_compile_method_inner): Use
14369         mono_prepare_exception_from_error that resets the value
14370         internally.
14371
14372 2006-04-27  Miguel de Icaza  <miguel@novell.com>
14373
14374         * mini.c: Move the mini_loader_error_to_exception to metadata. 
14375         
14376 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14377
14378         * aliasing.c: Fixed bug 78210.
14379
14380 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
14381
14382         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
14383         default until all their problems (or the ones they trigger) are fixed.
14384
14385 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
14386
14387         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
14388         
14389         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
14390         as loaded only after resolving patches since that could invoke the same method.
14391
14392         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
14393
14394         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
14395         functions.
14396
14397         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
14398         AOT loader.
14399
14400         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
14401         stack.
14402
14403         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
14404         made from AOT code through the PLT table.
14405
14406         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
14407         holding the plt offset when a call is made to the aot plt trampoline.
14408         
14409 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14410
14411         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
14412         amd64 AOT support.
14413
14414         * Makefile.am (common_sources): Fix build breakage.
14415
14416         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
14417         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
14418         intra-assembly calls if possible.
14419         
14420         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
14421
14422         * mini-trampolines.c: Handle PLT entries.
14423
14424         * mini.c: Avoid creating a GOT var for calls.
14425
14426         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
14427         from mscorlib code.
14428
14429         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
14430         from mscorlib code.
14431
14432         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
14433         AOT code.       
14434
14435         * mini.h: Bump AOT file format version.
14436         
14437         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
14438         covers more cases.
14439
14440 2006-04-25  Martin Baulig  <martin@ximian.com>
14441
14442         * driver.c: Disable copyprop, consprop and inline when running
14443         inside the debugger.
14444
14445 2006-04-25  Martin Baulig  <martin@ximian.com>
14446
14447         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
14448         with `get_current_thread' and added `detach'.
14449         (MonoDebuggerMetadataInfo): Added `thread_size',
14450         `thread_tid_offset', `thread_stack_ptr_offset' and
14451         `thread_end_stack_offset'.
14452
14453 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
14454
14455         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
14456         aot-runtime.c.
14457
14458         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
14459         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
14460
14461         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
14462
14463         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
14464
14465         * aot.c: Add support for ADJUSTED_IID.  
14466
14467 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
14468
14469         * aot.c (emit_method_order): Don't align method_order_end.
14470
14471         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
14472         the interface ID changes.
14473
14474 2006-04-21  Dick Porter  <dick@ximian.com>
14475
14476         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
14477         cleaning up a thread.  Fixes the new part of bug 77470.
14478
14479 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
14480
14481         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
14482         to managed wrapper.
14483                      
14484 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
14485
14486         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
14487         
14488         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
14489         SIGSEGV. Fixes #78072.
14490
14491         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
14492         unregister our SIGABRT handler.
14493
14494 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
14495
14496         * mini.c: Disabled inline where it can alter the call stack in a
14497         way visible from managed code.
14498         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
14499         default.
14500
14501 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
14502
14503         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
14504         on other platforms. Fixes #78089.
14505
14506 2006-04-13  Martin Baulig  <martin@ximian.com>
14507
14508         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
14509         determine whether we're inside the debugger.
14510
14511         * debug-debugger.h
14512         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
14513
14514 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
14515
14516         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
14517         handler clauses. Fixes #78024.
14518
14519         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
14520         in the CALL_MEMBASE opcodes. Fixes #78088.
14521         (mono_arch_get_vcall_slot_addr): Ditto.
14522
14523 2006-04-10  Martin Baulig  <martin@ximian.com>
14524
14525         * debug-debugger.c: The thread handling code has now been moved
14526         into ../metadata/threads.c.
14527
14528 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14529
14530         * driver.c (mono_main): Fix --with-gc=none build.
14531
14532         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
14533         (mono_spillvar_offset_float): Ditto.
14534         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
14535         hreg, not when its !global, since on ia64, there is a third category: stacked
14536         registers.      
14537
14538 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
14539
14540         * mini.c: set MonoInst->klass for load field address and a few other
14541         places.
14542
14543 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
14544
14545         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
14546
14547 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
14548
14549         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
14550         the branch opt changes.
14551
14552 2006-04-06  Dick Porter  <dick@ximian.com>
14553
14554         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
14555         
14556         * wapihandles.c (mini_wapi_seminfo): 
14557         * driver.c (mono_main): Add semaphore info option
14558
14559 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
14560
14561         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
14562         branch optimization changes. Fixes #78009.
14563
14564 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
14565
14566         * mini.c: ignore accessibility of methods in managed->native wrappers.
14567
14568 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
14569
14570         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
14571         
14572         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
14573
14574 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
14575
14576         * mini.c: Modify the branch optimizations to preserve the invariant that
14577         the entries inside the in_bb and out_bb arrays are unique.
14578         (mono_unlink_bblock): Avoid creation of new arrays.
14579
14580 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
14581
14582         * mini.c (mono_unlink_bblock): Fix regression caused by previous
14583         change (#77992).
14584
14585 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
14586
14587         * mini.c (optimize_branches): Remove the "optimizations" in
14588         the cbranch1/cbranch2 -> branch cases which were causing several
14589         problems in the past. Fixes #77986.
14590
14591 2006-03-31  Chris Toshok  <toshok@ximian.com>
14592
14593         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
14594         default optimizations :(
14595
14596 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
14597
14598         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
14599         branch.
14600
14601 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
14602
14603         * local-propagation.c: Added comments to structs and removed
14604         "Mono" prefixes from local tree mover types.
14605
14606 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
14607
14608         * Makefile.am (arch_sources): Define this for each architecture so 
14609         libmono_la_SOURCES is defined in one place.
14610
14611 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
14612
14613         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
14614         from handles/.
14615
14616 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
14617
14618         * driver.c: print the GC name supplied by configure.
14619
14620 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
14621
14622         * local-propagation.c: Added tree mover, and moved here all the
14623         local propagation code from mini.c
14624         * mini.c: Added support for treeprop, and moved all the local
14625         propagation code to local-propagation.c
14626         * mini.h: Added support for treeprop
14627         * driver.c: Added support for treeprop, enabled consprop, copyprop,
14628         treeprop, inline and deadce by default
14629         * Makefile.am: Added local-propagation.c
14630
14631 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
14632
14633         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
14634
14635 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
14636
14637         * debug-debugger.c: make it compile without the Boehm GC.
14638
14639 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
14640
14641         * mini.c: fixed issue with mismatch when an icall is registered
14642         with multiple names but same address.
14643
14644 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14645
14646         * declsec.c, mini-exceptions.c: use write barrier to set reference
14647         fields of managed objects.
14648
14649 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14650
14651         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
14652         (can_access_internals): Fix a warning.
14653
14654         * mini.c (print_method_from_ip): Rename this to 
14655         mono_print_method_from_ip so it gets exported.
14656
14657         * trace.c: Deal with strings inside StringBuilder's containing garbage
14658         and fix memory leaks. Fixes #77848.
14659
14660 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
14661
14662         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
14663         fixes #77787.
14664
14665 2006-03-16 Neale Ferguson <neale@sinenomine.net>
14666         
14667         * mini-s390.c: Remove OP_X86_TEST_NULL.
14668
14669 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14670
14671         * mini.c: use the correct GetHashCode() for the moving collector.
14672
14673 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
14674
14675         * liveness.c: Regalloc spill cost tuning.
14676
14677 2006-03-15 Neale Ferguson <neale@sinenomine.net>
14678         
14679         * mini-s390x.h: Correct S390_LONG macro.
14680
14681         * mini-s390x.c: Cleanup unused code.
14682
14683 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
14684
14685         * jit-icalls.h: New file.
14686
14687         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
14688         icalls and include that instead of including jit-icalls.c.
14689
14690         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
14691         OP_X86 opcodes.
14692
14693 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
14694
14695         * mini.c: when checking for member accessibility, also check for
14696         friend assemblies and for explicit interface implementations.
14697
14698 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
14699
14700         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
14701
14702         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
14703
14704         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14705         common cases are done first.    
14706
14707         * mini-ops.h: Only define platform specific opcodes on the given platform.
14708
14709         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
14710         branch.
14711         
14712 2006-03-14  Martin Baulig  <martin@ximian.com>
14713
14714         Revert Paolo's change from r57348:
14715
14716         * mini.h: don't use gboolean for bitfields.
14717         * mini.c: verifier changes for fields and methods accessibility.
14718
14719 2006-03-13  Neale Ferguson <neale@sinenomine.net>
14720
14721         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
14722
14723         * mini-s390x.c: Fix conv_r_un.
14724
14725         * cpu-s390, cpu-s390x.md: Fix lengths.
14726
14727 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
14728
14729         * mini.c: nested types have access to all the nesting
14730         levels, not just the enclosing types.
14731
14732 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
14733
14734         * mini.c: added a few more verification checks.
14735
14736 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
14737
14738         * liveness.c: Merge optimizations from the linear-il branch.
14739
14740 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14741
14742         * mini-ia64.c (emit_call): Add a comment.
14743
14744         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
14745
14746         * tramp-ia64.c: Fix some warnings.
14747
14748 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
14749
14750         * mini.h: don't use gboolean for bitfields.
14751         * mini.c: verifier changes for fields and methods accessibility.
14752
14753 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
14754
14755         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
14756         lazy icall wrapper changes.
14757
14758         * dominators.c: Replace all the dominator algorithms with faster
14759         ones from the linear-il branch.
14760
14761         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
14762         the mempool.
14763
14764         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
14765         common cases are done first.
14766
14767         * mini-amd64.c: Fix some warnings.
14768
14769         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
14770         from the mempool.
14771
14772         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
14773         added code.
14774
14775         * mini.h: Add a missing prototype.
14776
14777 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
14778
14779         * mini.c: Compile icall wrappers lazily.
14780
14781         * mini-codegen.c: Use printf instead of g_print since its much faster.
14782
14783         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
14784         function.
14785
14786         * mini.c (optimize_branches): Cache the negative result from 
14787         remove_block_if_useless ().
14788
14789         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
14790         Also fix some bblock linking issues.
14791
14792         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
14793         assembly files.
14794
14795         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
14796
14797         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
14798         accessed fields first, for better cache behavior.
14799         
14800 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
14801
14802         * mini.c: speedup IList<T> array accesses.
14803
14804 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
14805
14806         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
14807         inline_costs counter. Fixes #77190.
14808
14809 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
14810
14811         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
14812         trace messages. Fixes #77706.
14813
14814 2006-03-04  Martin Baulig  <martin@ximian.com>
14815
14816         * tramp-amd64.c, tramp-x86.c
14817         (mono_debugger_create_notification_function): Use
14818         mono_global_codeman_reserve() to allocate a buffer at runtime and
14819         return it.
14820
14821         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
14822
14823         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
14824         notification function at runtime and then call `initialize' in the
14825         `MONO_DEBUGGER__debugger_info' vtable.
14826
14827 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
14828
14829         * iltests.il: Fix a visibility problem.
14830
14831 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14832
14833         * driver.c, mini.c: add hooks for the counters API.
14834
14835 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
14836
14837         * driver.c: show disabled options.
14838
14839 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14840
14841         * linear-scan.c: always use cost-driven selection.
14842
14843 2006-02-28  Raja R Harinath  <rharinath@novell.com>
14844
14845         * jit-icalls.c (helper_compile_generic_method): Revert change from
14846         2006-02-24.
14847
14848 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
14849
14850         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
14851
14852 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
14853
14854         * inssel.brg: style fixes, mostly to force the updated monoburg
14855         to run for people using svn.
14856
14857 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
14858
14859         * mini.c: match monoburg changes.
14860
14861 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14862
14863         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
14864         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
14865         declaration in the header file.
14866
14867 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14868
14869         * helpers.c: reduce relocations and mem usage.
14870
14871 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14872
14873         * mini.h, mini-codegen.c: disable logging features if
14874         requested by configure.
14875
14876 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
14877
14878         * mini.c: tiny verifier changes.
14879
14880 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14881
14882         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
14883         cpu-pentium.md: stack alignment changes for osx/x86,
14884         partially from Geoff Norton <gnorton@customerdna.com>.
14885
14886 2006-02-24  Raja R Harinath  <harinath@gmail.com>
14887
14888         * jit-icalls.c (helper_compile_generic_method): Update to changes
14889         in metadata/class.c.
14890
14891 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
14892         
14893         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
14894         
14895         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
14896         interface calls with large offsets.
14897
14898 2006-02-23  Raja R Harinath  <rharinath@novell.com>
14899
14900         * jit-icalls.c (helper_compile_generic_method): Document the
14901         special-case we depend on so that we can inflate the method twice
14902         with the same context with no bad side-effects.
14903
14904 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
14905
14906         * mini-x86.c, mini-amd64.c: fix for case when xen support
14907         is disabled.
14908
14909 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
14910
14911         * mini-x86.c, mini-amd64.c: generate code to access tls items
14912         in a faster way for Xen systems.
14913
14914 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
14915
14916         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
14917         updates and compilation fixes for the OSX/x86 port, mostly from
14918         Geoff Norton <gnorton@customerdna.com>.
14919
14920 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
14921
14922         * inssel.brg: faster interface call implementation
14923         to sync with the interface_offsets MonoVTable changes.
14924
14925 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14926
14927         * mini.c: more verification checks.
14928
14929 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
14930
14931         * mini.c: added a few more verification checks.
14932
14933 2006-02-17      Neale Ferguson <neale@sinenomine.net>
14934
14935         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
14936         facility on the processor and use it if available.
14937
14938 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14939
14940         * driver.c, aot.c, mini.c: throw exception if the IL code is
14941         invalid or unverifiable.
14942
14943 2006-02-17  Raja R Harinath  <rharinath@novell.com>
14944
14945         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
14946         m.StructField.
14947
14948 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
14949
14950         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
14951
14952 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14953
14954         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
14955         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
14956         handling of instantiated generic valuetypes.
14957
14958 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
14959
14960         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
14961         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
14962         instead.
14963
14964         * generics.2.cs: Revert the nullable reftypes tests.
14965
14966 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
14967
14968         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
14969         using __builtin_frame_address (1) as it doesn't work in the presence
14970         of optimizations. Hopefully fixes #77273.
14971
14972         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
14973         -> generics.cs change as it doesn't work with some automake versions.
14974
14975 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14976
14977         * mini.c: handle systems that sue a different way to
14978         retrieve the stack address of the current thread.
14979
14980 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
14981
14982         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
14983         it specially in the makefile.
14984
14985         * generics.2.cs: Add tests for nullable reference types.
14986
14987 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
14988
14989         * mini.c: always handle the case when mono_jit_init()
14990         is called in a thread different from the main thread,
14991         confusing libgc (bug #77309).
14992
14993 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
14994
14995         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
14996
14997 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
14998
14999         * mini.c: change optimize_branches () to use a single loop
15000         and introduce a new optimization to simplify some range checks.
15001
15002 2006-02-03  Martin Baulig  <martin@ximian.com>
15003
15004         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
15005         and merged with debugger_thread_manager_add_thread().
15006         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
15007         inform the debugger about the main thread.
15008
15009 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15010
15011         * basic.cs: Add test for div.un/rem.un constant folding.
15012
15013 2006-02-03  Neale Ferguson <neale@sinenomine.net>
15014
15015         * cpu-s390x.md: correct int_xor_imm length
15016
15017 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
15018
15019         * generics.2.cs: New test for #77442.
15020
15021         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
15022         #77442.
15023
15024 2006-02-02  Martin Baulig  <martin@ximian.com>
15025
15026         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
15027         <mono/metadata/mono-debug-debugger.h>   
15028
15029         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
15030
15031 2006-02-02  Martin Baulig  <martin@ximian.com>
15032
15033         * debug-debugger.h: New header file for debug-debugger.c.
15034
15035         * debug-debugger.c: Big API cleanup; don't run the managed Main()
15036         function is a separate thread anymore; add support for attaching.
15037
15038 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
15039
15040         * tramp-x86.c: Fix a warning.
15041
15042 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
15043
15044         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
15045         on very large methods.
15046
15047         * aot.c (load_patch_info): Fix a warning.
15048
15049 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
15050
15051         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
15052         mini-ops.h: alu membase optimizations.
15053
15054 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
15055
15056         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
15057         to speedup StringBuilder.
15058
15059 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
15060
15061         * dominators.c (mono_compute_natural_loops): Fix detection of
15062         loop body start blocks.
15063
15064         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
15065
15066 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
15067
15068         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
15069         #75145.
15070
15071 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
15072
15073         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15074
15075 2006-01-25  Martin Baulig  <martin@ximian.com>
15076
15077         * debug-debugger.c: Moved the `MonoDebuggerManager' and
15078         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
15079         started to cleanup this file a little bit.
15080
15081 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
15082
15083         * mini.c: optimize a codepath frequently happening in generics code.
15084
15085 2006-01-23  Martin Baulig  <martin@ximian.com>
15086
15087         * Makefile.am: Only compile debug-debugger.c on supported platforms.
15088
15089         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
15090         functions directly.
15091
15092         * driver.c: debug-debugger.c is only available if
15093         `MONO_DEBUGGER_SUPPORTED' is defined.   
15094
15095 2006-01-23  Martin Baulig  <martin@ximian.com>
15096
15097         * debug-debugger.c: Only enable this on platforms where the Mono
15098         Debugger is working (x86 and x86_64).
15099
15100 2006-01-21  Martin Baulig  <martin@ximian.com>
15101
15102         The Mono Debugger is now using the normal `mono' instead of the
15103         `mono-debugger-mini-wrapper' when executing managed code.
15104
15105         * debug-debugger.c: New file; previously known as
15106         debugger/wrapper/wrapper.c.
15107
15108         * debug-mini.c (mono_init_debugger): Removed.
15109
15110         * driver.c (mono_main): Added new `--inside-mdb' command line
15111         argument which is used when running inside the debugger.
15112
15113 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
15114
15115         * liveness.c (mono_analyze_liveness): Remove some unused data
15116         structures.
15117
15118 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
15119
15120         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
15121
15122 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
15123
15124         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
15125         depends on implementation details of monobitset.
15126
15127         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
15128         Fixes #77271.
15129
15130 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
15131
15132         * liveness.c: Update after monobitset changes.
15133
15134 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
15135
15136         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
15137
15138 2006-01-11 Neale Ferguson <neale@sinenomine.net>
15139
15140         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
15141
15142         * mini-s390x.c: Remove warning messages.
15143
15144 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
15145
15146         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
15147
15148 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
15149
15150         * generics.2.cs: Add ldelem/stelem_any test.
15151
15152 2006-01-10 Neale Ferguson <neale@sinenomine.net>
15153
15154         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
15155
15156 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
15157
15158         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
15159         
15160 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
15161
15162         * generics.2.cs: Reenable vtype tests.
15163
15164         * inssel-x86.brg: Remove an icorrect valuetype rule.
15165
15166 2006-01-06 Neale Ferguson <neale@sinenomine.net>
15167
15168         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
15169         initial support for OP_ABS.
15170
15171 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15172
15173         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
15174
15175 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15176
15177         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
15178         conversion and implement LADD/LSUB.
15179
15180         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
15181         architectures.
15182
15183 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15184
15185         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
15186
15187         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
15188         architectures.
15189
15190 2006-01-05 Neale Ferguson <neale@sinenomine.net>
15191
15192         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
15193         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
15194         (stack walk problem).
15195
15196 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
15197
15198         * aot.c (mono_aot_load_method): Fix a warning.
15199
15200 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15201
15202         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
15203
15204 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15205
15206         * iltests.il: Add test for #77148.
15207
15208         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
15209         #77148.
15210
15211 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15212
15213         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
15214
15215 2006-01-03  Neale Ferguson <neale@sinenomine.net>
15216
15217         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
15218         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
15219
15220         * basic-long.cs: Add lconv-to-r4/r8 tests.
15221
15222 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
15223
15224         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
15225
15226         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
15227         here as on other archs.
15228
15229 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15230
15231         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
15232
15233 2005-12-29 Neale Ferguson <neale@sinenomine.net>
15234
15235         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
15236         
15237         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
15238
15239         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
15240         instrument_prolog; Add memory_barrier instruction.
15241
15242 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
15243
15244         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
15245
15246 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
15247
15248         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
15249
15250         * aliasing.c inssel.brg: Fix warnings.
15251
15252         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
15253         could skip initialization of some parts of memory.
15254
15255         * mini.c mini-ia64.c: Fix warnings.
15256
15257         * inssel-sparc.brg: Add an implementation of lneg which actually works.
15258
15259 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
15260
15261         * aliasing.c (mono_build_aliasing_information): Add a workaround for
15262         a crash seen on sparc.
15263
15264         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
15265         
15266         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
15267
15268 2005-12-21 Neale Ferguson <neale@sinenomine.net>
15269
15270         * mini-ops.h: Add s390_backchain instruction
15271
15272         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
15273
15274         * cpu-s390.md: Add s390_backchain instruction
15275
15276         * mini-s390.c: Significant ABI changes
15277
15278         * mini-s390.h: Cater for zero length structures
15279
15280 2005-12-20 Neale Ferguson <neale@sinenomine.net>
15281
15282         * mini-s390.c: ABI fixes
15283
15284         * inssel-s390.brg: Remove debug statements
15285
15286         * cpu-s390.md: Fix length of ATOMIC_xx operations
15287
15288 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
15289
15290         * basic-float.cs: Add float<->long conversion tests.
15291
15292 2005-12-16 Neale Ferguson <neale@sinenomine.net>
15293
15294         * mini-s390.c: Fix LOCALLOC processing.
15295
15296         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
15297
15298 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
15299
15300         * iltests.il: Add tests for some opcodes not covered by the other
15301         tests.
15302
15303 2005-12-15 Neale Ferguson <neale@sinenomine.net>
15304
15305         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
15306         register loading for Tail processing; Correct trace output.
15307
15308         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
15309
15310         * cpu-s390.md: Correct size of jmp instruction. 
15311
15312 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15313
15314         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
15315
15316 2005-12-13 Neale Ferguson <neale@sinenomine.net>
15317
15318         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
15319           Bring s390 up to current level.
15320
15321 2005-12-12  Zltan Varga  <vargaz@gmail.com>
15322
15323         * generics.2.cs: Disable the newly added tests as they do not work yet.
15324         
15325         * generics.2.cs: Add valuetype tests.
15326
15327 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
15328
15329         * basic-long.cs: Add i4->u8 test.
15330
15331         * objects.cs: Add tests for JIT intrinsic.
15332
15333         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
15334         optimizations lost by a mistake.
15335
15336 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
15337
15338         * basic-long.cs: Remove a test moved to objects.cs.
15339
15340         * arrays.cs: Add more array tests.
15341
15342 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
15343
15344         * arrays.cs: Add new tests for multi-dimensional arrays.
15345
15346 2005-12-06  Raja R Harinath  <rharinath@novell.com>
15347
15348         * Makefile.am (test_sources2): Add generics.2.cs.
15349         (EXTRA_DIST): Add test_sources2.
15350
15351 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
15352
15353         Support for boxing and unboxing nullable types as well as the
15354         isinst operation on nullables, per the CLI ammendment.
15355
15356         * inssel.brg (CEE_ISINST): Special case for nullable
15357
15358         * mini.c (handle_unbox_nullable): new method
15359         (handle_box): Special case for nullable types
15360         (mono_method_to_ir): Call handle_unbox_nullable in correct
15361         places.
15362
15363         * generics.2.cs: New test suite
15364
15365         * Makefile.am: Support for regression tests with generics.
15366
15367 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
15368
15369         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
15370         allocated to registers. Fixes #76800.
15371
15372 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
15373
15374         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
15375
15376 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
15377
15378         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
15379         of platforms.
15380
15381 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
15382
15383         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
15384         objects.cs.
15385
15386         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
15387         
15388         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
15389 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
15390
15391         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
15392         single precision before storing to a single precision location.
15393
15394 2005-11-28  Raja R Harinath  <rharinath@novell.com>
15395
15396         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
15397
15398 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
15399
15400         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
15401         correct files.
15402
15403         * basic.cs: Remove test_0_byte_compares test which was moved to
15404         objects.cs a long time ago.
15405
15406 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
15407
15408         * aliasing.c: Fixed aliasing issue on 64 bit archs.
15409
15410 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
15411
15412         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
15413         handlers are called.
15414
15415         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
15416         throwing code.
15417
15418          * mini-ia64.c: Add support for the throw->branch exception 
15419         optimization.   
15420
15421         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
15422
15423 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15424
15425         * mini.c: Enabled "fastpath" deadce :-)
15426         
15427 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
15428
15429         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
15430         alias analysis pass to support it.
15431         * mini.h: Likewise.
15432         * ssa.c: Likewise.
15433         * liveness.c: Likewise (liveness computation can use aliasing
15434         information to be more accurate).
15435         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
15436         moreover made so that "--compile-all" uses the given optimization
15437         flags and not the default ones.
15438         * aliasing.c: Alias analysis (new file).
15439         * aliasing.h: Likewise.
15440         * Makefile.am: added "aliasing.c" and "aliasing.h".
15441         
15442 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
15443
15444         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
15445         OP_L opcodes.
15446
15447 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
15448
15449         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
15450         fp >= end_of_stack exit condition, as it is not needed, and it might
15451         become true for fp eliminated frames.
15452
15453 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
15454
15455         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
15456         coded offsets.
15457
15458 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
15459
15460         * mini-arm.c: fixed alignment of doubles/longs to match
15461         the C ABI (bug #76635).
15462
15463 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
15464
15465         * aot.c: fix compilation with --enable-minimal=aot.
15466
15467 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
15468
15469         * mini-arm.c: fixed compatibility with the new
15470         floating point emulator package for compares.
15471
15472 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
15473
15474         * mini.c : reverted sig->pinvoke changes (r51396-51397).
15475
15476 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
15477
15478         * mini-exceptions.c (print_stack_frame): Output to stderr.
15479         (mono_handle_native_sigsegv): Ditto.
15480
15481 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15482
15483         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
15484         OP_LCONV_TO_OVF_I implementation.
15485
15486         * mini-amd64.c: Add support for the throw->branch exception 
15487         optimization.
15488
15489         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
15490         when the catch clause catches a more general exception, i.e. Object.
15491
15492 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
15493
15494         * cpu-ia64.md: Remove unused opcodes.
15495
15496         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
15497         specific defines for architectures defining USE_SIGACTION.
15498
15499         * mini-ia64.c: Fix some warnings.
15500
15501         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
15502         version seemed to skip a frame.
15503
15504 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
15505
15506         * mini.c: Clean up the usage of sig->pinvoke flag. Now
15507         only calls which are made to native code use this flag.
15508
15509 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
15510
15511         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
15512         varargs methods as well.
15513         
15514         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
15515         which have save_lmf set. Reorganize methods prologs a bit.
15516
15517         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
15518         debugger to the proper place.
15519
15520 2005-10-29  Martin Baulig  <martin@ximian.com>
15521
15522         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
15523         when running inside the debugger until the debugger has support
15524         for it.
15525
15526 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
15527
15528         * mini.h: Fix a warning.
15529
15530 2005-10-24  Miguel de Icaza  <miguel@novell.com>
15531
15532         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
15533         we expose publicly, this returns the string.
15534
15535 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
15536
15537         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
15538         with fp elimination.
15539
15540 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
15541
15542         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
15543         native stacktrace using the glibc 'backtrace' function if available.
15544
15545 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
15546
15547         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
15548
15549         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
15550         handle SIGSEGVs received while in native code.
15551
15552         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
15553         code, call mono_handle_native_sigsegv which will abort the runtime
15554         after printing some diagnostics, instead of converting it into a
15555         confusing NullReferenceException.
15556
15557 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
15558
15559         * cpu-pentium.md: Remove unused opcodes.
15560
15561 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
15562
15563         * mini-amd64.h (MonoLMF): Add rsp field.
15564
15565         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
15566         the lmf too.
15567
15568 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
15569
15570         * mini-codegen.c (get_register_spilling): Fix some warnings.
15571
15572 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
15573
15574         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
15575         elimination during exception handling. Enable fp elimination by
15576         default.
15577
15578         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
15579         elimination.
15580
15581 2005-10-16  Martin Baulig  <martin@ximian.com>
15582
15583         * mini-exceptions.c
15584         (mono_debugger_run_finally): New public method for the debugger.
15585
15586 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
15587
15588         * debug-mini.c (mono_debug_init_method): Fix warning.
15589
15590         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
15591         the 'exname' parameter const to fix some warnings.
15592
15593 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
15594
15595         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
15596         introduced by the previous patch.
15597
15598 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
15599
15600         * basic-float.cs: Add test for precision of float arithmetic.
15601
15602         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
15603         when loading/storing single values from/to memory.
15604
15605         * mini.c (mono_jit_compile_method_with_opt): Create the function
15606         pointers in the correct domain.
15607
15608 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
15609
15610         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
15611         introduced by previous patch.
15612         
15613         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
15614         when out_filter_idx is NULL.
15615
15616         * mini-exceptions.c: Don't run filter clauses twice during exception
15617         handling. Fixes #75755.
15618
15619 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
15620
15621         * aot.c: Add support for ldflda wrappers.
15622
15623         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
15624         #75902.
15625
15626 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
15627
15628         * mini.c, mini.h: do not consider exception handlers blocks when
15629         setting up interface variables.
15630
15631 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
15632
15633         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
15634
15635 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
15636
15637         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
15638         causes a regression.
15639
15640         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
15641
15642 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
15643
15644         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
15645         of the OP_P definitions.
15646
15647         * TODO: Add a proposal for dealing with the CEE/OP mess.
15648
15649         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
15650         optimizations from the x86 port.
15651
15652         * cpu-amd64.md: Ditto.
15653
15654         * basic.cs basic-long.cs: Add tests.
15655
15656 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
15657
15658         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
15659         Patrik Torstensson's implementation of my exception-handling
15660         optimization idea, when the exception object is not used
15661         (bug #62150).
15662
15663 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
15664
15665         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
15666         of the mul_imm optimizations from the old jit.
15667
15668 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
15669
15670         * mini.c, liveness.c: patch by Patrik Torstensson and
15671         Zoltan Varga to improve performance in methods with
15672         exception clauses.
15673
15674 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
15675
15676         * driver.c: Remove 'Globalization' entry from --version.
15677
15678 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
15679
15680         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
15681         there is a profiler interested in JIT events.
15682
15683         * aot.c: Load profile files produced by the AOT profiling module, and
15684         reorder methods based on the profiling info. Add a 'method_order' table
15685         to the AOT file to make mono_aot_find_jit_info work with the reordered
15686         methods.
15687
15688         * mini.h: Bump AOT file version info.
15689
15690 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
15691
15692         * mini-arm.h: work around what looks like a gcc bug when optimizations
15693         are enabled.
15694
15695 2005-09-28  Raja R Harinath  <rharinath@novell.com>
15696
15697         * Makefile.am (AM_CFLAGS): Don't use += to append inside
15698         conditionals.  Use ...
15699         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
15700
15701 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
15702
15703         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
15704         to determine the amount of memory to copy when passing valuetypes.
15705
15706         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
15707         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
15708
15709 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
15710
15711         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
15712         information about aot.
15713
15714 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
15715
15716         * *.c: Replace the use of {Enter,Leave}CriticalSection with
15717         macros. This will allow a deadlock debugger to easily be plugged
15718         in.
15719
15720 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
15721
15722         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
15723
15724 2005-09-27  Raja R Harinath  <rharinath@novell.com>
15725
15726         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
15727         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
15728         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
15729         ($(arch_built)) [CROSS_COMPILING]: Error out.
15730
15731 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
15732
15733         * aot.c: Add support for the no_special_static flag for classes.
15734
15735 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15736
15737         * Reapply reverted patches.
15738
15739         * *: Revert r50174 as well.
15740
15741         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
15742
15743 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
15744
15745         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
15746
15747 2005-09-23  Miguel de Icaza  <miguel@novell.com>
15748
15749         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
15750         part of the SIG_HANDLER_SIGNATURE.  
15751
15752 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
15753
15754         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
15755         statistics.
15756
15757         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
15758         introduced by previous patch.
15759
15760 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
15761
15762         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
15763         saved registers too.
15764
15765         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
15766         upon the information returned by get_call_info ().
15767         
15768         * mini-x86.c (add_float): Fix stack size calculation.
15769         (mono_arch_call_opcode): Rewrite this so it works based up the
15770         information returned by get_call_info ().
15771         (mono_arch_get_this_vret_args): Ditto.
15772
15773 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
15774
15775         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
15776         in cinfo to determine the registers which need to be used.
15777
15778 2005-09-20  Miguel de Icaza  <miguel@novell.com>
15779
15780         * driver.c (mono_main): Add --server and --desktop flags. 
15781
15782 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
15783
15784         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
15785         registers as global registers.
15786
15787         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
15788         longer needed with the new register allocator.
15789
15790         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
15791
15792         * cpu-ia64.md: Remove unused opcodes.
15793         
15794         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
15795         
15796 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
15797
15798         * cpu-amd64.md: Remove unused opcodes.
15799
15800         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
15801         needed with the new register allocator.
15802
15803         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
15804         reg-reg moves.
15805
15806 2005-09-16  Raja R Harinath  <rharinath@novell.com>
15807
15808         * Makefile.am (check-local): Don't invoke semdel-wrapper.
15809
15810 2005-09-16  Martin Baulig  <martin@ximian.com>
15811
15812         * exceptions-amd64.c
15813         (throw_exception): Don't call mono_debugger_throw_exception() if
15814         we're a rethrow - see the FIXME in the code.
15815
15816 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
15817
15818         * mini.c (mono_init_exceptions): This only works on some architectures.
15819         
15820 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15821
15822         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
15823         on ia64.
15824
15825         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
15826
15827         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
15828         now in mini-exceptions.c.
15829
15830 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
15831
15832         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
15833         now in mini-exceptions.c.
15834
15835 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
15836
15837         * exceptions-x86.c: Applied patch from Patrik Torstensson 
15838         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
15839
15840         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
15841         code into mini-exceptions.c. Add some assertions to it.
15842
15843 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
15844
15845         * aot.c (emit_section_change): Applied patch from "The Software Team" 
15846         (<software@solmersa.com>). Fix as errors on windows.
15847
15848 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15849
15850         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
15851         method info into the LMF.
15852
15853 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15854         
15855         * mini-ia64.c: Add proper unwind info for method epilogs.
15856
15857         * exceptions-ia64.c: Add some code to help debugging.
15858         
15859         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
15860
15861         * mini-exceptions.c: Fix warning.
15862
15863 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
15864
15865         * mini.c: Really fix build.
15866
15867         * mini-x86.c mini-amd64.c: Fix build.
15868
15869 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
15870
15871         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
15872
15873         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
15874         some Interlocked methods as intrinsics.
15875
15876         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
15877         for Thread methods as well.
15878
15879         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
15880
15881         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
15882
15883         * mini-ia64.c mini-x86.c mini-amd64.c 
15884         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
15885         OP_MEMORY_BARRIER.
15886         
15887         * mini.c (mono_init_exceptions): Fix build breakage.
15888
15889 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
15890
15891         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
15892         of instructions. Use the new ia64_unw_op macros for emitting unwind
15893         info.
15894
15895         * mini.c (mono_init_exceptions): Initialize exception handling
15896         related trampolines at startup.
15897
15898 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
15899
15900         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
15901
15902 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
15903
15904         * mini.c: Handle type loading errors gracefully during compilation and
15905         throw the appropriate exception.
15906
15907 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
15908
15909         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
15910         for the mono binary.
15911
15912 2005-09-09  Martin Baulig  <martin@ximian.com>
15913
15914         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
15915         the release.
15916
15917 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15918
15919         * mini-arm.h: use emulation for conv.r.un for the release.
15920
15921 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
15922
15923         * mini-arm.c, objects.cs: more fixes and tests for them.
15924
15925 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15926
15927         * mini-arm.c: align structures to at least 4 bytes to be able
15928         to keep our current optimized memcpy.
15929
15930 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
15931
15932         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
15933
15934 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15935
15936         * mini.c: ignore SIGPIPE.
15937
15938 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
15939
15940         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
15941
15942         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
15943
15944 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
15945
15946         * mini.h: Add prototype for mono_allocate_stack_slots_full.
15947
15948 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
15949
15950         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
15951         exception handling support.
15952         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
15953         patch by Brian Koropoff <briank@marakicorp.com>).
15954
15955 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
15956
15957         * mini.c: revert another 'optimization' which breaks when
15958         items on the eval stack need to be saved at a basic block end
15959         (bug #75940).
15960
15961 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
15962
15963         * jit-icalls.c: for arrays, ensure we always provide
15964         lower bounds.
15965
15966 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
15967
15968         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
15969         
15970         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
15971
15972 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
15973
15974         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
15975         arguments in their original register.
15976
15977 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
15978
15979         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
15980         memset/memcpy.
15981
15982         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
15983         when ssapre is enabled.
15984
15985         * inssel-long.brg: Fix bug in previous patch.
15986
15987         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
15988         multiplication by a constant.
15989
15990 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
15991
15992         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
15993         icc.
15994
15995         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
15996         saving registers.
15997
15998 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
15999
16000         * inssel-arm.brg: apply changes tested by Brian Koropoff
16001         <briank@marakicorp.com>.
16002
16003 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
16004
16005         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
16006         
16007 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
16008
16009         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
16010         to the same register if dreg is just a base register.
16011         (print_ins): Improve printing of membase opcodes.
16012
16013         * inssel-x86.brg: Add optimized ldind(reg) rules.
16014
16015         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
16016
16017 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
16018
16019         * mini.c: when running under valgrind, set the stack bottom for
16020         the GC at the actual approximate stack for the app (fixes running
16021         mono with valgrind).
16022
16023 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
16024
16025         * mini.c: do no break at the first valuetype to init found
16026         (fixes bug #75791).
16027
16028 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
16029
16030         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
16031
16032 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
16033
16034         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
16035
16036 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
16037
16038         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
16039
16040 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16041
16042         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
16043
16044         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
16045         code.
16046
16047         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
16048         code.
16049
16050         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
16051         methods.
16052
16053 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
16054
16055         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
16056
16057 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16058
16059         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
16060         in the tail recursion optimization.
16061
16062         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
16063         debug info into the assembly file.
16064
16065         * iltests.il: Add test for filter regions.
16066
16067         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
16068         initial stack of filter regions. Fixes #75755.
16069
16070 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
16071
16072         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
16073         stack requirements.
16074
16075 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
16076
16077         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
16078         the check for an already compiled method on non-ia64 platforms.
16079         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
16080         proper domain.
16081
16082         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
16083
16084         * inssel-x86.brg: Add some optimized call rules.
16085
16086 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
16087
16088         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
16089         method here.
16090
16091         * mini.h mini-trampolines.c: Pass the trampoline argument to 
16092         mono_arch_patch_delegate_trampoline.
16093
16094         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
16095
16096         * mini-trampolines.c: Fix build.
16097
16098         * mini-amd64.h: Add delegate trampolines.
16099
16100         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
16101
16102         * inssel-amd64.brg: Add optimized call rules.
16103         
16104         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
16105
16106         * inssel-ia64.brg: Add optimized ldind(reg) rules.
16107
16108 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
16109
16110         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
16111         change.
16112
16113         * mini-ia64.c: Remove LMF fixmes.
16114
16115         * mini-ia64.h: Remove most fields from LMF.
16116
16117         * inssel-ia64.brg (stmt): Fix unaligned access errors.
16118
16119         * mini-trampolines.c: Add support for IA64 function descriptors.
16120
16121         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
16122         for IA64 function descriptors.
16123
16124 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
16125
16126         * tramp-arm.c: patch the vtable for virtual calls. Added
16127         support code to register/unregister the LMF.
16128         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
16129         more LMF work.
16130
16131 2005-08-19  Dick Porter  <dick@ximian.com>
16132
16133         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
16134         bit value if needed.
16135
16136 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
16137
16138         * mini.c (mini_get_method): Move handling of wrapper data here.
16139
16140         * mini.c (mono_method_to_ir): Add support for dynamic methods.
16141
16142         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
16143         virtual.
16144
16145         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
16146         bblock->code does not remain empty.
16147
16148 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
16149
16150         * arrays.cs: Add regression test for #75832.
16151
16152         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
16153         rules. Fixes #75832.
16154
16155         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
16156         instruction scheduling.
16157
16158 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
16159
16160         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
16161
16162 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
16163
16164         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
16165
16166         * mini-codegen.c: Fix VC build.
16167
16168         * cpu-pentium.md: Increase length of atomic_exhange_i4.
16169
16170 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16171
16172         * mini.h: fix signature for mono_register_opcode_emulation.
16173
16174 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
16175
16176         * mini.c: Get rid of most of the helper_sig_... constants using
16177         mono_create_icall_signature ().
16178
16179 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
16180
16181         * jit-icalls.c (helper_ldstr): New helper function.
16182
16183         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
16184
16185         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
16186         throw, load the string using a helper call instead of creating a string object.
16187
16188         * aot.c: Update after LDSTR changes.
16189
16190         * mini.h: Bump AOT file version.
16191         
16192         * aot.c: Save class size info into the AOT file. Print more statistics during
16193         compilation.
16194
16195         * mini.h: Bump AOT file version.
16196
16197         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
16198         ordering of disasm cases. Fixes #74957.
16199
16200 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
16201
16202         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
16203         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
16204         the generic code needed for the ARM port.
16205
16206 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
16207
16208         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
16209         inssel-arm.brg: more ARM features and fixes.
16210
16211 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
16212
16213         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
16214         ARM port work in progress.
16215
16216 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
16217
16218         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
16219
16220         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
16221
16222         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
16223
16224         * inssel.brg (mini_emit_memset): Add support for unaligned access.
16225
16226         * *-ia64.*: Ongoing IA64 work.
16227         
16228         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
16229
16230 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
16231
16232         * TODO: Remove out-of-data todo stuff.
16233
16234         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
16235         dead code.
16236
16237         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
16238
16239         * mini.h: Bump corlib version.
16240
16241 2005-07-27  Martin Baulig  <martin@ximian.com>
16242
16243         * mini-codegen.c
16244         (create_copy_ins): Added `const unsigned char *ip' argument; set
16245         `copy->cil_code' from it.
16246
16247 2005-07-27  Martin Baulig  <martin@ximian.com>
16248
16249         * mini-exceptions.c (mono_handle_exception): Don't call
16250         mono_debugger_handle_exception() for filters.
16251
16252 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
16253
16254         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
16255         as well.
16256
16257 2005-07-26  Martin Baulig  <martin@ximian.com>
16258
16259         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
16260
16261         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
16262         helper_compile_generic_method() if the method is actually virtual
16263         and non-final.
16264
16265 2005-07-26  Martin Baulig  <martin@ximian.com>
16266
16267         * mini.c
16268         (trampoline_code): Renamed to `mono_trampoline_code' and made it
16269         public; this is now accessed directly by the debugger.
16270         (mono_generic_trampoline_code): Removed.
16271
16272         * debug-mini.c
16273         (mono_debug_init_method): Also add interncalls and wrappers.
16274
16275 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
16276
16277         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
16278
16279 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
16280
16281         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
16282
16283 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
16284
16285         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
16286
16287 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16288
16289         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
16290         getting TLS offsets on AMD64 too.
16291
16292 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
16293
16294         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
16295
16296 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
16297
16298         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
16299         inssel-arm.brg, mini-arm.h: ARM port work in progress.
16300
16301 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
16302
16303         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
16304
16305         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
16306         to mini.c.
16307
16308         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
16309         mono_sparc_is_virtual_call ().
16310         
16311         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
16312
16313         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
16314         trampoline parameters.
16315
16316         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
16317         
16318         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
16319         to mono_arch_get_vcall_slot_addr.
16320
16321         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
16322         trampoline code.
16323
16324         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
16325
16326 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16327
16328         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
16329
16330 2005-07-19  Martin Baulig  <martin@ximian.com>
16331
16332         * exceptions-amd64.c (throw_exception): Call
16333         mono_debugger_throw_exception() here like we're doing it on i386.
16334
16335 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
16336
16337         * mini-ia64.c: Add optimized TLS access support.
16338
16339 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
16340
16341         * mini-exceptions.c: Ongoing IA64 work.
16342
16343         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
16344
16345         * mini.c: Use the default optimization set when embedding. Fixes
16346         #75194.
16347
16348 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
16349
16350         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
16351         of trampolines to a separate file.
16352
16353         * mini-trampolines.c: New file.
16354
16355         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
16356         separate file.
16357         
16358         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
16359         amd64/ia64 code.
16360
16361         * mini-codegen.c: Fix cygwin build.
16362
16363 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
16364
16365         * mini.c: Add some minor changes needed by the IA64 port.
16366
16367         * *-ia64.*: Ongoing IA64 work.
16368
16369 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
16370
16371         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
16372         trampolines into arch-independent and arch-dependent parts.
16373
16374         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
16375
16376 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
16377
16378         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
16379
16380         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
16381         the xp-regalloc-branch for amd64.
16382
16383         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
16384         xp-regalloc-branch for x86.
16385
16386 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
16387
16388         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
16389
16390 2005-07-06  Martin Baulig  <martin@ximian.com>
16391
16392         * mini.c
16393         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
16394         (mono_jit_runtime_invoke): Likewise.
16395
16396 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
16397
16398         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
16399         on x86 too.
16400         
16401         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
16402         without loading their metadata. Reorganize the file format so exception handling+
16403         debug info is kept separate from normal method info. Create MonoJitInfo 
16404         structures for methods lazily.
16405
16406         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
16407         loading metadata.
16408         (x86_class_init_trampoline): Patch AOT class init trampolines too.
16409
16410         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
16411
16412         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
16413         in AOT code.
16414
16415         * mini.h: Bump AOT file version.
16416
16417 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
16418
16419         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16420
16421 2005-07-01  Raja R Harinath  <rharinath@novell.com>
16422
16423         * Makefile.am (check-local): Call semdel-wrapper.
16424
16425 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
16426
16427         * mini-x86.c: Revert the last change as it seems to break the build..
16428
16429 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
16430
16431         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
16432         
16433         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
16434
16435 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
16436
16437         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
16438         outside of the macro, so strange stuff doesn't happen with gcc4
16439         (NEW_AOTCONST_TOKEN): Likewise.
16440
16441 2005-06-28  Martin Baulig  <martin@ximian.com>
16442
16443         * mini.c (mini_class_is_system_array): New static method; use this
16444         instead of `klass->parent == mono_defaults.array_class' everywhere
16445         since this also works for the new generic array class.
16446
16447 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
16448
16449         * inssel.brg: Remove warnings.
16450
16451 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
16452
16453         * mini-ia64.c: Ongoing IA64 work.
16454
16455         * basic-float.cs: Add float->i1 conversion test.
16456
16457         * iltests.il: Add conv.u4 test.
16458
16459 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
16460
16461         * inssel-long.brg: Fix bug caused by last change.
16462
16463 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
16464
16465         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
16466         BSDs.  Allows the x86 JIT to work on OSX86
16467
16468 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
16469
16470         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
16471         u4->i8 conversion.
16472
16473         * mini-ia64.c: Ongoing IA64 work.
16474
16475 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
16476
16477         * mini-ia64.c: Ongoing IA64 work.
16478
16479         * driver.c: Clean up jit_code_hash as well when using --regression.
16480
16481         * inssel-long.brg: Fix long->i4/u4 conversion rules.
16482
16483         * basic-long.cs: Add tests for long->u4 conversion.
16484
16485 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
16486
16487         * mini.c: Take mono_get_domainvar out of macros. This makes sure
16488         that we do not depend on undefined C behavior: the order stuff
16489         gets evaluated within an expression. Fixes mono when compiled on
16490         GCC 4.
16491
16492 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
16493
16494         * *-ia64.*: Ongoing IA64 work.
16495
16496         * aot.c: Lower memory usage while loading AOT methods.
16497
16498         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
16499
16500         * mini.h: Bump AOT file format version.
16501
16502 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
16503
16504         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
16505
16506 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
16507
16508         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
16509         not on callee assembly). Fixed some comments.
16510
16511 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
16512
16513         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
16514         it gets proper disassembly.
16515         (emit_method_info): Remove some dead code.
16516
16517         * mini.c (mini_method_compile): Allways allocate the GOT var in
16518         mono_method_to_ir for emulating opcodes.
16519
16520 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
16521
16522         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
16523         before freeing the code memory. Fixes #74990.
16524
16525         * objects.cs: Add regression test for #74992.
16526
16527         * liveness.c: Extend live ranges of arguments to the beginning of the
16528         method. Fixes #74992.
16529
16530         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
16531         so it points into the faulting instruction.
16532
16533 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
16534
16535         * jit-icalls.c (mono_imul_ovf): Add exception handling.
16536
16537         * *-ia64.*: Ongoing IA64 work.
16538
16539         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
16540
16541 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
16542
16543         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
16544
16545         * *-ia64.*: Ongoing IA64 work.
16546
16547 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
16548
16549         * basic-long.cs: Add tests for add/sub.ovf.
16550
16551         * basic.cs: Add tests for sub.ovf.
16552
16553         * *-ia64.*: Ongoing IA64 work.
16554
16555 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
16556
16557         * *-ia64.*: Ongoing IA64 work.
16558
16559         * basic.cs: Add conv.ovf.i4.un test.
16560
16561 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
16562
16563         * mini.c: (remove_block_if_useless) Fixed bug 75061.
16564         
16565 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16566
16567         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
16568
16569 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
16570
16571         * *-ia64.*: Ongoing IA64 work.
16572
16573 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16574
16575         * trace.[ch]:
16576         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
16577
16578 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
16579
16580         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
16581
16582 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
16583
16584         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
16585
16586         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
16587         of a call is callable by a near call.
16588
16589 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
16590
16591         * mini-ia64.c: Ongoing IA64 work.
16592
16593 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
16594
16595         * genmdesc.c: Make the generated array non-static.
16596
16597         * inssel-long.brg: Fix LSHR_IMM rule.
16598
16599         * *-ia64.*: Ongoing IA64 work.
16600
16601         * *-ia64.*: Ongoing IA64 work.
16602
16603 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16604
16605         * *-ia64.*: Ongoing IA64 work.
16606
16607         * *-ia64.*: Ongoing IA64 work.
16608         
16609         * mini-ia64.c: Ongoing IA64 work.
16610
16611         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
16612
16613 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
16614
16615         * objects.cs basic-calls.cs: Move some tests to objects.cs.
16616         
16617         * objects.cs basic-long.cs: Move some tests to objects.cs.
16618
16619 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
16620
16621         * *-ia64.*: Ongoing IA64 work.
16622
16623         * iltests.il: Add a new test.
16624
16625         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
16626         newobj. Fixes #75042.
16627
16628 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
16629
16630         * *-ia64.*: Ongoing IA64 work.
16631         
16632         * *-ia64.*: Ongoing IA64 work.
16633         
16634         * *-ia64.*: Ongoing IA64 work.
16635
16636         * basic.cs objects.cs: Move tests accessing static variables as well.
16637
16638         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
16639
16640 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
16641
16642         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
16643
16644         * driver.c: Always print failed tests.
16645
16646         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
16647         frame pointer.
16648
16649         * *ia64*: Ongoing IA64 work.
16650
16651 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
16652
16653         * basic.cs: Add tests for add.ovf. Fix warnings.
16654
16655 2005-05-18  Miguel de Icaza  <miguel@novell.com>
16656
16657         * driver.c (mono_main): Avoid crash if no argument is passed to
16658         --break;  Do not use g_error, but f_printf.   And fix all other
16659         ocurrences of the same crash.
16660
16661 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
16662
16663         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
16664         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
16665         Fixes #74742.
16666
16667 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
16668
16669         * *-ia64.*: Add beginnings of IA64 backend.
16670
16671         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
16672
16673 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
16674
16675         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
16676         Fixes #74925.
16677
16678         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
16679
16680         * mini-amd64.c: Fix a warning.
16681
16682 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
16683
16684         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
16685         in float_neg. Fixes #74897.
16686
16687         * mini-amd64.c (emit_call): Fix another near call bug.
16688
16689 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
16690
16691         * declsec.c: Keep the appdomain information in the structure. Added a 
16692         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
16693         value gets overwritten).
16694         * declsec.h: Set the default MonoArray for the the stack to 6. Added
16695         an MonoAppDomain member to MonoSecurityFrame.
16696         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
16697         used in the stack walk. Now use a MonoArray which grow (double) when
16698         it gets full.
16699
16700 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
16701
16702         * mini.c: Re-enabled runtime cleanup, since running threads should
16703         now properly stop when exiting.
16704
16705 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
16706
16707         * mini-codegen.c: New file contaning the arch-independent local
16708         register allocator. Not used by any architectures yet.
16709
16710         * mini.h linear-scan.c: Merge some changes from the 
16711         mini-xp-local-regalloc branch.
16712
16713 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
16714
16715         * mini-amd64.c (emit_call): Fix calls to native functions when the
16716         runtime is compiled as a shared library. Fixes #74756.
16717
16718         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
16719         on a literal field. Fixes #74751.
16720
16721 2005-04-25  Raja R Harinath  <rharinath@novell.com>
16722
16723         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
16724
16725 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
16726
16727         * objects.cs: Add missing null casting test.
16728
16729 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
16730
16731         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
16732         in wrapper methods. Also rename 'address' variable to 'offset'.
16733
16734 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
16735
16736         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
16737         warnings.
16738         
16739         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
16740
16741         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
16742         work on windows.
16743
16744 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
16745
16746         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
16747
16748 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16749
16750         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
16751         just the last bytes.
16752
16753 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
16754
16755         * aot.c (mono_compile_assembly): Fix warning.
16756
16757         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
16758         by the _MSC_VER stuff.
16759
16760 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
16761
16762         * inssel-long.brg: Fix #74588.
16763
16764         * cpu-amd64.md: Fix #74591.
16765
16766         * iltests.il: Add new regression tests.
16767
16768 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
16769
16770         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
16771         valuetype.
16772
16773 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
16774
16775         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
16776
16777         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
16778         from Bill Middleton <flashdict@gmail.com>.
16779
16780 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
16781
16782         * arrays.cs: Add new regression test. Fix warnings.
16783
16784 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
16785
16786         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
16787         and leakage in CKFINITE.
16788
16789         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
16790         this to a null op since it is called on amd64 too.
16791
16792         * exceptions-amd64.c (get_throw_trampoline): Align stack.
16793
16794         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
16795         body since this is not used on amd64.
16796         
16797         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
16798
16799         * mini-amd64.c: Remove obsolete fixmes.
16800
16801         * mini.c (print_method_from_ip): Fix debugging support.
16802
16803 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
16804
16805         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
16806         so that expressions that don't give much gain are not reduced.
16807         * ssapre.h: Likewise.
16808
16809 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
16810
16811         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
16812
16813         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
16814
16815         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
16816
16817 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
16818
16819         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
16820
16821         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
16822
16823 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
16824
16825         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
16826         stack touching.
16827
16828         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
16829
16830         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
16831
16832         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
16833
16834         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
16835         MONO_ARCH_USE_SIGACTION. Fixes #74252.
16836
16837         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
16838
16839         * mini-x86.c: Fix up stack overflow handling.   
16840
16841         * exceptions.cs: Add new regression test.
16842
16843 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
16844
16845         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
16846         mono_jit_thread_attach.
16847
16848         * mini.c (mono_method_to_ir): Verify called method is not abstract.
16849
16850 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16851
16852         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
16853         avoid calling constructors using callvirt.
16854
16855         * inssel.brg: Fix #74073.
16856
16857 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
16858
16859         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
16860         compilation with non-GCC compilers.
16861         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
16862         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
16863
16864 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
16865
16866         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
16867         klass->interface_offsets (will likely fix bug#74073).
16868
16869 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
16870
16871         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
16872
16873 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
16874
16875         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
16876         to amd64_div_reg_size ().
16877         
16878         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
16879
16880 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
16881
16882         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
16883
16884 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16885
16886         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
16887
16888 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
16889
16890         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
16891         
16892         * mini.c (mono_precompile_assembly): Load and precompile referenced
16893         assemblies as well. Fixes #74015.
16894
16895 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
16896
16897         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
16898
16899 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
16900
16901         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
16902         a lot of checks and (anyway) permissions cannot work until corlib is 
16903         loaded.
16904
16905 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
16906
16907         * mini-ppc.c: fixed ABI issue on sysv/ppc.
16908
16909 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
16910
16911         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
16912         calls (fixes bug#72824).
16913
16914 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
16915
16916         * mini.c: fix tail recursion elimination (see test in bug#73936).
16917
16918 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
16919
16920         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
16921         some fp functions in sse2 mode.
16922
16923 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
16924
16925         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
16926
16927 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
16928
16929         * mini.h mini.c: Add mono_get_jit_tls_key ().
16930
16931         * mini-x86.c: Enable fast TLS support on windows.
16932
16933 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
16934
16935         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
16936         * mini.c: Check for p/invoke method when generating code. If a
16937         p/invoke method, or it's class, isn't decorated with [Suppress
16938         UnmanagedCodeSecurity] then generate code to call System.Security.
16939         UnmanagedDemand (only if the security manager is active).
16940
16941 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16942
16943         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
16944         last change as it seems to cause strange crashes.
16945         
16946 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
16947
16948         * *.c: handle unsafe function pointers where needed.
16949
16950 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
16951
16952         * mini.c (mono_jit_free_method): Remove the fixme too.
16953
16954 2005-03-15  Miguel de Icaza  <miguel@novell.com>
16955
16956         * mini.c: As discussed, make the code actually free the delegate
16957         thunk now, to enable the debugging of delegate problems, use
16958         MONO_DEBUG=1 when running Mono. 
16959
16960         This takes also care of parts of the leaks as seen by Joe.
16961
16962 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
16963
16964         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
16965         thread_tls_offset calculation.
16966
16967 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
16968
16969         * declsec.c: Reworked linkdemand checks for icall. The previous code
16970         was using the declaration code (untrusted) and didn't work as expected
16971         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
16972         specific case.
16973
16974 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
16975
16976         * iltests.il: Add new localloc test.
16977
16978         * mini-amd64.c: Handle large stack allocations the same way as on
16979         windows if stack overflow handling is working.
16980         
16981         * mini-amd64.c: Allocate the signal stack using mmap.
16982
16983         * mini.c (sigsegv_signal_handler): Fix reading of context.
16984
16985         * mini-exceptions.c: Fix up stack overflow handling.
16986
16987         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
16988
16989         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
16990
16991         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
16992
16993         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
16994
16995         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
16996         tramp_init functions as they are no longer needed.
16997
16998 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
16999
17000         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
17001         
17002         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
17003
17004         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
17005         
17006         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
17007         support that now.
17008
17009         * mini-ops.h: Add OP_LMUL_IMM.
17010
17011         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
17012         long mul/div opcodes as intrinsic.
17013
17014         * mini-amd64.c (emit_call): Handle the case when the callee might be
17015         an AOT method.
17016
17017 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
17018
17019         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
17020         extra safe.
17021         
17022         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
17023
17024         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
17025
17026 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
17027
17028         * mini.c (mono_codegen): Don't leak here, to help people running
17029         monogrind.
17030
17031 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
17032
17033         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
17034         conversions in sse2 mode.
17035
17036         * basic-float.cs: Add regression test.
17037         
17038         * mini-amd64.c: Reenable sse2.
17039
17040 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17041
17042         * mini-amd64.c: Disable sse2 until some regressions are fixed.
17043
17044 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
17045
17046         * driver.c: Copyright text should include 2005.
17047         
17048 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
17049
17050         * cpu-amd64.md (load_membase): Fix more max lengths.
17051
17052 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
17053
17054         * cpu-amd64.md (load_membase): Fix max length.
17055
17056         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
17057
17058         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
17059
17060         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
17061         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
17062
17063         * basic-float.cs: Add rounding regression test.
17064
17065         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
17066
17067 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
17068
17069         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
17070         structures in registers for pinvoke wrappers.
17071
17072 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
17073
17074         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
17075
17076 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
17077
17078         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
17079         wrapper to mono_jit_thread_attach.
17080
17081         * mini.c (mini_jit_thread_attach): New jit icall.
17082
17083         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
17084         native->managed wrappers.
17085
17086         * exceptions.cs: Add new regression test.
17087
17088         * mini.c (optimize_branches): Check regions in the cbranch to throw
17089         block case as well. Fixes #73242.
17090
17091 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
17092
17093         * mini.c: thread safety fixes.
17094
17095 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
17096
17097         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
17098         patching stuff, since delegates use jump trampolines so there is
17099         no caller.
17100
17101         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
17102         jump trampolines.
17103         
17104         * tramp-amd64.c: Fix build.
17105
17106         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
17107         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
17108
17109         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
17110         Rename this to mono_arch....
17111         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
17112
17113         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
17114
17115         * mini-amd64.c (emit_call): If both the caller and the callee is
17116         guaranteed to have 32 bit addresses, emit a normal call.
17117
17118         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
17119
17120         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
17121         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
17122         method_ptr inside delegates.
17123
17124 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
17125
17126         * mini.c (mono_jit_free_method): Free the method info even if the native code is
17127         invalidated. Fixes #73001.
17128
17129         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
17130
17131         * mini-x86.c: Only use stdcall for pinvokes on windows.
17132
17133 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
17134
17135         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
17136         * mini-x86.c: remove unreliable __thread var offset detection,
17137         use the correct accessors and enable by default.
17138
17139 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
17140
17141         * mini.c (mono_jit_free_method): Fix memory leak.
17142
17143 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
17144
17145         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
17146
17147 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
17148
17149         * cpu-amd64.md: Fix lengths of atomic opcodes.
17150
17151 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
17152
17153         * driver.c: try to not imply using ICU is any good.
17154
17155 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
17156
17157         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
17158         functions as inline ops.
17159
17160         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
17161         some Interlocked functions as inline ops.
17162
17163         * mini.c (move_basic_block_to_end): Fix bug in last patch.
17164
17165         * mini.h (MonoBasicBlock): Reorganize fields a bit.
17166
17167         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
17168
17169         * mini.c: Add support for OP_NOT_TAKEN.
17170
17171         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
17172         structures in registers for pinvoke wrappers.
17173
17174         * mini-amd64.c: Fix warnings.
17175
17176 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
17177
17178         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
17179
17180         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
17181
17182         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
17183         address instead of loading the address from it.
17184
17185         * mini-x86.c: Add support for returning small structs in registers
17186         on Win32. Fixes part of #70864.
17187         
17188 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
17189
17190         * trace.c (get_token): Improve error checking.
17191
17192 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
17193
17194         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
17195
17196 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
17197  
17198         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
17199         it can be reused for MonoClass.
17200         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
17201         _LINKDEMAND.
17202
17203 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
17204
17205         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
17206         instead of a MonoReflectionMethod. The method information wasn't used
17207         when displaying SecurityException details (but will be now).
17208
17209 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
17210
17211         * Makefile.am : windows build fix.
17212
17213 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
17214
17215         * iltests.il: Add new regression test.
17216
17217         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
17218         #72522.
17219
17220 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
17221  
17222         * mini.c: Moved linkdemand check into helper function check_linkdemand
17223         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
17224         LDFTN, LDVIRTFTN).
17225
17226 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
17227
17228         * declsec.c: Added statistics counter for different kinds of 
17229         LinkDemands.
17230         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
17231         (and commented) declaration.
17232         * mini.c: Added statistics counter for security Demand code 
17233         generation. Added display of security statistics.
17234
17235 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
17236
17237         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
17238         Fix compilation errors under gcc-2.95.
17239
17240 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
17241
17242         * mini.c, driver.c: Use the new jit trampoline hashtable
17243
17244 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17245
17246         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
17247
17248 2005-02-11  Martin Baulig  <martin@ximian.com>
17249
17250         * debug-mini.c (mono_debug_close_method): Free the line number array.
17251
17252 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17253
17254         * aot.c: Break up large methods into smaller ones. Share GOT slots for
17255         icalls.
17256
17257         * mini.h: Bump AOT file format version. 
17258
17259 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
17260
17261         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
17262         APTC and P/Invoke.
17263         * declsec.h: Added macros to get/set lazyly initialized security 
17264         informations about assemblies. Added new enum for different type of
17265         possible LinkDemand violation. Added function to check LinkDemands.
17266         * mini.h: Added a field to MonoCompile to hold any security violation
17267         detected when JITting a method (so it can be thrown later).
17268         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
17269         and CEE_CALLVIRT. Added code to throw exception at the end of
17270         mini_method_compile (note: the exception is unhandled right now).
17271
17272 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
17273
17274         * mini.c, jit-icalls.c: use the managed implementation of
17275         memset for initobj and memset, to avoid managed <-> unmanaged
17276         transitions.
17277
17278 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
17279
17280         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
17281         optimization if it would need a GOT var.
17282
17283         * basic.cs: Add tests for constant propagation and switch statements.
17284
17285         * ssa.c: Fix out-of-range constant propagation and switch statements.
17286
17287 2005-02-09    <vargaz@freemail.hu>
17288
17289         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
17290
17291 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
17292
17293         * cpu-amd64.md (load_membase): Fix max length of load_membase.
17294
17295 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
17296
17297         * mini.c: update to new signature of mono_class_get_allocation_ftn().
17298
17299 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
17300
17301         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
17302         arithmetic operations.
17303
17304 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
17305
17306         * mini-ppc.c: add a workaround for broken user code that
17307         DllImports vararg functions with non-vararg signatures.
17308
17309 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
17310
17311         * mini.c (mono_jit_compile_method_inner): Add detection and a 
17312         meaningfull error message for assemblies written in Managed C++.
17313
17314         * tramp-amd64.c mini-amd64.h: Add support for 
17315         create_trampoline_from_token ().
17316
17317         * aot.c mini-x86.c abcremoval.c: Applied patch from
17318         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
17319
17320 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
17321
17322         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
17323         which takes a MonoImage/token as parameter instead of a MonoMethod.
17324
17325         * aot.c: Use the new trampoline for initializing vtables.
17326
17327         * aot.c: Add support for ldfld/stfld_remote wrappers.
17328
17329         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
17330         rules for compare <MEM>, IMM.
17331
17332         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
17333
17334         * aot.c: Handle inherited finalizers correctly.
17335
17336 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
17337
17338         * inssel.brg (stmt): Add a missing _setup_... ().
17339
17340         * aot.c: Save some parts of the class state to the AOT file and use it
17341         to recompute that state when a class is initialized.
17342
17343         * mini.c: Install AOT hooks into the runtime.
17344
17345         * mini.h: Bump AOT file format version.
17346         
17347         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
17348         Fixes #72148.
17349
17350         * iltests.il: Add new test.
17351
17352 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
17353
17354         * mini.c: fix typo.
17355
17356 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
17357
17358         * mini.c: setup the statistical profiler in the thread attach
17359         callback to cope with the new single thread code.
17360
17361 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
17362
17363         * mini-ppc.c: ensure we have enough room for the profiler
17364         calls (fixed bug#72084).
17365
17366 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
17367
17368         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
17369         it.
17370
17371 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17372
17373         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
17374
17375 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17376
17377         * ssapre.c: Fixed an issue with down safety (this allows IronPython
17378         to succesfully execute parrotbench).
17379         * ssapre.h: Likewise.
17380
17381 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
17382
17383         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
17384         variable for stores to method arguments (fixes a SSAPRE issue).
17385
17386 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17387
17388         * mini.c: handle value types in dup, fixes gen-112.cs.
17389
17390 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
17391
17392         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
17393         sequence for calls in dynamic methods to avoid thunks.
17394
17395 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
17396
17397         * mini.c: correctly remove dynamic methods from the hashtable.
17398
17399 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17400
17401         * driver.c: Disabled SSAPRE until fix the bug that appears
17402         in IronPython's parrotbench.
17403
17404 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
17405
17406         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
17407
17408         * mini.c (mono_method_to_ir): Revert the previous change.
17409         
17410         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
17411         when AOT compiling.
17412
17413         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
17414         mono_jit_info_table_find () etc. when running under valgrind.
17415
17416         * inssel.brg: Fix warnings.
17417
17418         * mini-exceptions.c: Fix warnings.
17419
17420 2005-01-31  Martin Baulig  <martin@ximian.com>
17421
17422         * driver.c (compile_all_methods_thread_main): Don't try to compile
17423         generic methods or anything which has type parameters.
17424
17425 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
17426
17427         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
17428
17429         * TestDriver.cs: Add --verbose flags.
17430
17431         * graph.c ssa.c: Fix 64 bit warnings.
17432         
17433         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
17434         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
17435         Fix 64 bit warnings.
17436
17437         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
17438         variable not spotted by gcc.
17439         
17440         * mini-amd64.c inssel-amd64.brg: Applied patch from  
17441         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
17442         X86_COMPARE_MEMBASE opcodes.
17443
17444         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
17445
17446 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
17447
17448         * *: MonoMethod->signature might be NULL now. You *MUST* use
17449         mono_method_signature.
17450
17451 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17452
17453         * driver.c (compile_all_methods_thread_main): Compile the methods
17454         without invoking cctors.
17455
17456 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
17457
17458         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
17459         * basic-calls.cs: test for the above.
17460
17461 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
17462
17463         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
17464         MonoJitInfo changes.
17465
17466 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
17467
17468         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
17469         eagerly if it contains dynamic methods.
17470         
17471         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
17472
17473         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
17474         trace, it is now computed by an icall from trace_ips.
17475         
17476         * mini-exceptions.c: Fix a warning.
17477
17478 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
17479
17480         * mini-exceptions.c: don't bother getting stack trace info if
17481         it's not going to be used.
17482
17483 2005-01-27  Raja R Harinath  <rharinath@novell.com>
17484
17485         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
17486         ssapre-mini-ops.h.
17487
17488 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
17489
17490         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
17491
17492         * aot.c: Avoid calling mono_method_get_header () if not needed.
17493
17494         * mini.h: Bump AOT file format version.
17495         
17496         * mini.c (mono_emit_native_call): Allocate a GOT var here.
17497
17498         * mini.c (mono_print_tree): Print more info for calls.
17499
17500 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
17501
17502         * declsec.h: Remove warning by adding missing include for marshal.h
17503
17504 2005-01-26  Martin Baulig  <martin@ximian.com>
17505
17506         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
17507         `ip' twice.
17508
17509 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
17510
17511         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
17512         flags.
17513
17514         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
17515
17516         * aot.c (mono_compile_assembly): Fix a warning.
17517
17518 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
17519
17520         * declsec.c: Look for security attributes on the original MonoMethod 
17521         (and not the wrapped one). This fix permissions on icalls.
17522
17523 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17524
17525         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17526
17527         * mini.c (mono_allocate_stack_slots): Add a fixme.
17528
17529         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
17530
17531 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
17532
17533         * inssel.brg: optimize casts of sealed types (more
17534         optimizations waiting for fixes in remoting).
17535
17536 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
17537
17538         * inssel.brg (stmt): Add another dummy rule.
17539
17540         * driver.c: Fix warnings.
17541
17542         * driver.c (mono_main): If running under valgrind, instruct glib to use
17543         the system allocation functions so valgrind can track the memory
17544         allocated by the g_... functions.
17545
17546         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
17547
17548         * mini-ops.h: Add OP_DUMMY_STORE opcode.
17549
17550         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
17551
17552         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
17553         variables in try regions.
17554
17555         * mini.c (mini_method_compile): Don't disable optimizations on large
17556         methods when AOT compiling.
17557
17558         * mini.c (mono_allocate_stack_slots): New arch independent method to 
17559         allocate stack slots. Not yet used.
17560
17561 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
17562
17563         * debug-mini.c (mono_debug_close_method): Plug some leaks.
17564
17565 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
17566
17567         * mini-ppc.c: make the branch info relative as the code
17568         buffer can be reallocated.
17569
17570 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
17571
17572         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
17573         * driver.c: Removed the AOT/security restriction. Now initialize the
17574         security manager (in metadata) if --security is used.
17575         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
17576         rather than the pointer to declarative security, when AOT is used.
17577
17578 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
17579
17580         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
17581         basic blocks, reduced intrinsic exception throwing code size.
17582
17583 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
17584
17585         * driver.c (mini_usage): Reorder the usage screen.
17586
17587 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
17588
17589         * mini.c (mono_resolve_patch_target): Fix warning.
17590
17591 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
17592
17593         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
17594         previous patch.
17595
17596         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17597
17598         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
17599         breaks the amd64 build.
17600
17601         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
17602         register allocation. Fixes #71454.
17603
17604         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
17605
17606         * arrays.cs: Add new regression test.   
17607
17608 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17609
17610         * ssapre.c: Turned usage of snprintf to GString.
17611         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
17612         (I left it on by mistake in my previous commit).
17613
17614 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
17615
17616         * mini.c, cfold.c, basic-calls.cs: preserve side effects
17617         on cond branch optimization (fixes bug# 71515).
17618
17619 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17620
17621         * abcremoval.c: Fixed bug 71062.
17622         * abcremoval.h: Likewise.
17623
17624 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
17625
17626         * mini.c: Added a new functionality to optimize_branches, the removal
17627         of useless basic blocks, and fixed some problem in the removal of
17628         critical edges; some utility functions added for both purposes.
17629         * ssapre.c: Added complex expression support, and fixed bug 70637.
17630         * ssapre.h: Likewise.
17631         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
17632         enabled in SSAPRE.
17633         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
17634         * driver.c: Re-enabled SSAPRE.
17635
17636 2005-01-19  Martin Baulig  <martin@ximian.com>
17637
17638         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
17639         the result of mono_get_method_constrained().
17640
17641 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
17642
17643         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
17644         manager.
17645
17646 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
17647
17648         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
17649         be detected.  Fixes #59296.
17650
17651 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17652
17653         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
17654         which can happen. Fixes #71361.
17655
17656 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
17657
17658         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
17659         manager.
17660
17661 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17662
17663         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
17664         appdomain-unload.exe to fail.
17665         
17666         * mini.c: Fix some memory leaks.
17667
17668 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
17669
17670         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
17671         Fixed bug and sped up some codepaths.
17672
17673 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
17674
17675         * mini.c: Fix some memory leaks.
17676
17677         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
17678         conversion.
17679
17680         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
17681
17682         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
17683         #71320.
17684
17685         * iltests.il: Add regression test for #71320.
17686
17687 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
17688
17689         * mini.c (mono_codegen): Fix installation of profiler hooks.
17690
17691         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
17692
17693 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
17694
17695         * mini.h, mini.c, cfold.c: optimize access to enum
17696         readonly fields, too. Eval conditional branches if possible
17697         to perform unreachable code removal in more cases.
17698
17699 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
17700
17701         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
17702
17703         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
17704         code manager.
17705
17706         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
17707         WinXP DEP. Fixes #71244.
17708
17709 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
17710
17711         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
17712
17713 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
17714
17715         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
17716
17717 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
17718
17719         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
17720         changes.
17721
17722         * mini.h: Bump AOT version.
17723
17724         * mini.h (MonoCompile): Change exvar to a hash table.
17725
17726         * mini.c: Allocate a separate exvar for each handler block.
17727
17728         * mini.c: Get rid of the computation of filter_lengths, its not needed.
17729
17730         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
17731         ex var with the pending exception and only throw if the two are equal.
17732         Fixes #68552.
17733         
17734         * exceptions.cs: Add tests for rethrow and nested catch clauses.
17735
17736         * mini-x86.c: Fix warnings.
17737
17738         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
17739         used by all the ports now.
17740
17741         * aot.c: Add write-symbols and save-temps options.
17742
17743 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17744
17745         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
17746
17747 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
17748
17749         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
17750         operations.
17751
17752         * tramp-s390.c: Check vtable slot belongs to the domain.
17753
17754         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
17755         as per other platforms.
17756
17757         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
17758
17759 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
17760
17761         * driver.c: we don't run the Main() code in a subthread anymore.
17762
17763 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
17764
17765         * mini.c: added experimental rtc support in the statistical
17766         profiler: if the user has the permission, more accurate statistics
17767         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
17768         The MONO_RTC value must be restricted to what the linux rtc allows:
17769         power of two from 64 to 8192 Hz.
17770
17771 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
17772
17773         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
17774
17775 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
17776
17777         * mini-ppc.c: better icache flush for smp.
17778
17779 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
17780
17781         * mini-amd64.c (emit_move_return_value): Fix memory leak.
17782
17783         * mini-x86.c (get_call_info): Add the get_call_info () code from the
17784         amd64 port, not yet used.
17785
17786 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17787
17788         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
17789         a struct type.
17790
17791 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
17792
17793         * driver.c: Added --security option to activate the security manager.
17794         Right now this will allow code generation for declarative demands and
17795         is disabled when AOT is specified.
17796         * mini.c: Add code generation for declarative security demands.
17797         * mini.h: Add mono_use_security_manager as an extern gboolean.
17798
17799 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
17800
17801         * aot.c (mono_compile_assembly): Speed up compilation a bit by
17802         emitting more dense assembly code.
17803
17804         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
17805         exception throwing stuff.
17806
17807 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
17808
17809         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
17810         dead code.
17811
17812         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
17813         left in by mistake.
17814
17815         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
17816         fixed.
17817
17818         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
17819
17820         * tramp-*.c: Only patch vtable slots if the object is in the current
17821         domain. Fixes appdomain-unload.exe.
17822
17823         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
17824         
17825         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
17826         x86 branch.
17827
17828 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17829
17830         * mini.c (reverse_branch_op): New helper function.
17831
17832         * mini.c (optimize_branches): Run the new optimization only on 
17833         platforms which support it. Also reverse all kinds of branches.
17834
17835         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
17836
17837         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
17838         a throw statement.
17839
17840         * mini.c (optimize_branches): Reverse not-equals branches if the false
17841         bblock is a throw. This happens a lot of time with argument checking in
17842         corlib.
17843
17844         * mini.c (mono_codegen): Add support for placing basic blocks after
17845         the function epilogue.
17846
17847         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
17848         function epilogue.
17849         
17850 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
17851
17852         * mini.c (setup_stat_profiler): Only set this up if the platform
17853         supports ITIMER_PROF.
17854
17855 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
17856
17857         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
17858         previous patch.
17859
17860         * inssel.brg: Fix a warning.
17861
17862 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
17863
17864         * mini.c: added support for statistical profiler 
17865         (run with: --profile=default:stat).
17866
17867 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
17868
17869         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
17870
17871         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
17872
17873         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
17874         related to global registers from the amd64 port.
17875
17876 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
17877
17878         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
17879
17880         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
17881         with global registers.
17882         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
17883
17884         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
17885
17886 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
17887
17888         * debug-mini.c (encode_value): Fix off-by-one.
17889
17890         * aot.c (encode_value): Likewise.
17891
17892         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
17893
17894 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
17895
17896         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
17897         AOT.
17898
17899         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
17900         
17901         * aot.c (emit_method_info): Increase size of temp buffer.
17902
17903         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
17904         the AOT case.
17905
17906 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
17907
17908         * aot.c (emit_method_info): Fix build.
17909         
17910         * aot.c: Further rework of the AOT file format to reduce the size of
17911         the method info data.
17912
17913         * mini.h: Bump AOT file format version.
17914
17915 2004-12-27  Martin Baulig  <martin@ximian.com>
17916
17917         * mini.c (mini_get_method): New static method; call
17918         mono_get_method_full() and mono_get_inflated_method().
17919         (mono_method_to_ir): Use mini_get_method() instead of
17920         mono_get_method_full(). 
17921
17922 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
17923
17924         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
17925
17926 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
17927
17928         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
17929
17930         * inssel-amd64.brg: Add some optimization rules.
17931
17932 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
17933
17934         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
17935         standard not GC'd stuff is fine.
17936
17937 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
17938
17939         * aot.c: Rework the AOT file format to get rid of most of the global
17940         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
17941
17942         * mini.h: Bump AOT file format version.
17943         
17944 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
17945
17946         * mini.h: Bump AOT file format version.
17947
17948         * aot.c (mono_aot_is_got_entry): New function to determine if an 
17949         address is inside a GOT.
17950
17951         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
17952
17953         * cpu-pentium.md: Increase the maximum size of some instructions which
17954         might involve a got access.
17955         
17956         * mini.c (get_method_from_ip): Another debug helper function.
17957
17958         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
17959         when got var accesses are created during the decompose phase.
17960
17961         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
17962
17963         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
17964         argument mini_compile_method and to MonoCompile, and use this to
17965         determine whenever a given method is compiled for AOT. This allows the
17966         other methods compiled during AOT compilation to be free of AOT stuff,
17967         so the backends does not need to add special support for them by
17968         creating a fake GOT etc.
17969
17970         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
17971         longer needed.
17972
17973 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17974
17975         * mini.c (mono_method_to_ir): It turns out that some of the
17976         x-appdomain wrappers are lax with types, so just ignore this for
17977         all wrappers.
17978
17979         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
17980         at the vtable->klass. If it is non-shared code we can just use the
17981         vtable.
17982
17983 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
17984
17985         * mini-ppc.c: access MonoDomain from tls, too.
17986
17987 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
17988
17989         * declsec.c: Removed unused variable (and related warning ;-)
17990
17991 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
17992
17993         * iltests.il: New test for LDELEMA on an array of ref types.
17994
17995         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
17996         all ldelema's on reftypes.
17997         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
17998         it was the wrong place to put it.
17999
18000         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
18001         register to pop to make this cleaner, at the request of Paolo.
18002
18003 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18004
18005         * mini-ops.h (OP_GETHASHCODE): New op.
18006
18007         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
18008
18009         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
18010         operation.
18011
18012         For a microbenchmark, this reduces the cost of Hashtable.get_Item
18013         by 25%.
18014         
18015         * mini-x86.c (mono_arch_output_basic_block): Rather than
18016
18017         add ebp, 4
18018
18019         Emit
18020
18021         pop edx
18022
18023         The first is 3 bytes while the second is 1. This saves 36 kb on
18024         mscorlib, quite a big saving. When bootstraping mcs, I was able to
18025         see a small boost because of icache locality.
18026
18027         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
18028
18029 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
18030
18031         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
18032         started code sharing with the generic code.
18033
18034 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
18035
18036         * mini-ppc.c, cpu-g4.md: added code for direct access to
18037         tls data slots.
18038
18039 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
18040
18041         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
18042          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
18043         to OP_TLS_GET.
18044
18045 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
18046
18047         * declsec.c|h: Added functions to cache the declarative stack modifiers
18048         in MonoJitInfo and to create a security frame from a MonoJitInfo 
18049         structure.
18050         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
18051         created. Register internal calls for System.Security.SecurityFrame::
18052         _GetSecurityFrame and _GetSecurityStack.
18053         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
18054         the definitions for the new stack walk/callback mechanism.
18055         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
18056         first security frame for LinkDemands and InheritanceDemands) and
18057         GetSecurityStack for Demands. Both use the new mono_walk_stack code
18058         from lupus.
18059         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
18060         walk initialization (lupus).
18061
18062 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
18063
18064         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
18065         idiom.
18066         (handle_loaded_temps): Do not create a temporary variable for
18067         things that we know are temps. They will never be modified.
18068         (mono_spill_call): Set MONO_INST_IS_TEMP
18069         (mono_emulate_opcode): ditto
18070         (emit_tree): ditto
18071         (mono_method_to_ir.CEE_DUP): ditto
18072
18073 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
18074
18075         * mini.c (type_to_eval_stack_type): Make this handle the void type
18076         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
18077         (emit_tree): use ip_in_bb to special case some common idioms
18078         Update all callers to pass in the IP.
18079         (mono_method_to_ir): Make CEE_CALL* do the above as well.
18080
18081         This gives us a nice 2% speedup in mcs bootstrap.
18082
18083         * mini-x86.c (peephole_pass): Peephole pass to make
18084         mov  [foo], eax
18085         push [foo]
18086
18087         into
18088
18089         mov [foo], eax
18090         push eax
18091
18092         * mini.c (ip_in_bb): new method.
18093         (mono_method_to_ir): use this method rather than doing the hash
18094         lookup ourselves.
18095
18096         * linear-scan.c (mono_linear_scan): When expiring actives, you
18097         don't need to keep around variables that expire on this
18098         instruction. This makes it so that:
18099              a = b + 1
18100         will turn into:
18101              store (ebx add (ebx, 1))
18102         which will become
18103              add ebx, 1
18104
18105 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
18106
18107         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
18108         combination to avoid doing two copies. Fix up problems with previous
18109         patch.
18110
18111         * mini.c: Fix 64 bit warnings.
18112
18113         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
18114
18115 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
18116
18117         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
18118         changes from the x86 code.
18119
18120         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
18121
18122 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
18123
18124         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
18125         throwing code to reduce its size, unify the AOT and non-aot code and 
18126         get rid of relocations in the AOT case.
18127
18128         * mini-x86.h mini.c exceptions-x86.c 
18129         (mono_arch_get_throw_corlib_exception): New arch specific function to 
18130         raise corlib exceptions which doesn't require relocations in the 
18131         caller.
18132
18133         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
18134
18135 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
18136
18137         * mini.c (mono_emit_method_call): Only allocate the got var when it is
18138         needed.
18139
18140         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
18141         in the AOT case.
18142
18143 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18144
18145         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
18146         with add function when used from Inc/dec atomic 
18147         functions. Re-enabled optimization on x86.
18148         * mini-ops.h: renamed atomic_add functions to
18149         allow _add to match the Interlocked::Add and
18150         _add_next to match Interlocked::Inc/Dec.
18151
18152 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
18153
18154         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
18155         linking of BBs to the end BB, and enabled SSAPRE also with
18156         consprop and copyprop (which was prevented by that bug).
18157
18158 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18159
18160         * mini-x86.c: disabling the Interlocked optimizing code. 
18161
18162 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18163
18164         * aot.c (load_aot_module): Move reading of got_addr after the AOT
18165         file version check.
18166         
18167 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
18168
18169         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
18170         interlocked optimization due lack of support on x86, rewrote 
18171         exchange to take into account that base may be in eax.
18172         
18173         xsp works again; activated Interlocked optimizing code.
18174         
18175 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
18176
18177         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
18178
18179 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
18180
18181         * mini-ops.h: Add new opcodes.
18182
18183         * mini.h: Add new patch types. Add got_var to MonoCompile.
18184
18185         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
18186         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
18187         make it work with all kinds of patchable code.
18188
18189         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
18190         address of the GOT, and referencing entries in the GOT.
18191
18192         * mini.c: Add code to load the GOT address if needed by an opcode.
18193
18194         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
18195         independent AOT code on the x86 using an elf-style Global Offset Table.
18196
18197 2004-12-14  Raja R Harinath  <rharinath@novell.com>
18198
18199         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
18200
18201 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18202
18203         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
18204         when running xsp.
18205
18206 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
18207
18208         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
18209         of Interlocked:Increment/Decrement/Add as inline ops.
18210         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
18211
18212 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
18213
18214         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
18215         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
18216
18217 2004-12-12  Duncan Mak  <duncan@ximian.com>
18218
18219         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
18220         again. `patch_info->table_size' is no longer valid after Zoltan's
18221         commit #37636.
18222
18223 2004-12-12  Martin Baulig  <martin@ximian.com>
18224
18225         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
18226         if we are the "real" method, ie. not an inlined method inside it.
18227
18228 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
18229
18230         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
18231         before we look in the special fields table. This fixes
18232         ../tests/thread-static-init.cs.
18233
18234 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18235
18236         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
18237         for Array get_Rank and get_Length. Fixes bug #70465.
18238
18239 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
18240
18241         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
18242         separate structure to reduce the size of MonoJumpInfo.
18243
18244 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
18245
18246         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
18247
18248 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
18249
18250         * mini.c (mini_get_inst_for_method): Changed to allow ports
18251         to return a MonoInst instead of opcode 
18252         (renamed mini_get_opcode_for_method to better reflect the new functionality)
18253         
18254         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
18255         Allow ports to return a created MonoInst instead of op-code, will enable
18256         new optimizations.
18257         (renamed mini_get_opcode_for_method to better reflected the functionality)
18258
18259 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
18260
18261         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
18262
18263 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18264
18265         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
18266         Fixes #69985.
18267
18268 2004-12-08  Martin Baulig  <martin@ximian.com>
18269
18270         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
18271         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
18272
18273 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
18274
18275         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
18276         correctly.
18277
18278         * exceptions.cs: Disable some tests which depend on properties of x86 fp
18279         arithmetic.
18280
18281 2004-12-08  Raja R Harinath  <rharinath@novell.com>
18282
18283         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
18284
18285 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
18286
18287         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
18288         bug introduced by the previous patch.
18289
18290 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18291
18292         * mini-ppc.c, objectc.cs: handle large structs passed by value
18293         (fixes bug #69972).
18294
18295 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
18296
18297         * mini-ppc.c: OP_ARGLIST implementation from
18298         Geoff Norton  <gnorton@customerdna.com>.
18299
18300 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
18301
18302         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
18303         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
18304
18305 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
18306
18307         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
18308
18309 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18310
18311         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
18312         support.
18313
18314 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
18315
18316         * mini-sparc.c: Zero out localled-ed memory.
18317
18318         * iltests.il: Add tests for zeroing out localloc-ed memory.
18319
18320 2004-12-04  Martin Baulig  <martin@ximian.com>
18321
18322         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
18323         mono_method_get_signature_full().       
18324
18325 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
18326
18327         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
18328         and some utility functions (always for SSAPRE), integrated SSAPRE.
18329         * mini.h: Likewise.
18330         * driver.c: Added ssapre option.
18331         * ssa.c: Small fix on OP_ARG handling.
18332         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
18333         * Makefile.am: Likewise.
18334
18335 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
18336
18337         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
18338         now in the xp code.
18339
18340         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
18341         icall.
18342
18343 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18344
18345         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
18346         
18347         * cpu-s390.md : Increase instruction length of oparglist.
18348
18349         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
18350
18351 2004-11-30  Martin Baulig  <martin@ximian.com>
18352
18353         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
18354         virtual generic methods.  We call a special helper_compile_generic_method()
18355         icall to retrieve the method from the vtable, inflate and compile
18356         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
18357
18358         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
18359
18360 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
18361
18362         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
18363
18364 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
18365
18366         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
18367         Fixes #69929.
18368
18369 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
18370
18371         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
18372         platforms with PIC aot.
18373
18374 2004-11-28  Martin Baulig  <martin@ximian.com>
18375
18376         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
18377         Fixes gen-112.cs.
18378
18379 2004-11-28  Martin Baulig  <martin@ximian.com>
18380
18381         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
18382         the result of mono_type_get_underlying_type() to check whether
18383         we're byref.
18384
18385 2004-11-26  Martin Baulig  <martin@ximian.com>
18386
18387         * mini.c
18388         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
18389         in the g_assert().
18390
18391 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
18392
18393         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
18394         the same way as the other arguments so they won't get clobbered.
18395
18396         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
18397         calls through R11 since it is clobbered by the trampoline code.
18398
18399 2004-11-26  Raja R Harinath  <rharinath@novell.com>
18400
18401         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
18402         pick up in-tree mscorlib.dll.
18403
18404 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
18405
18406         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
18407
18408         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
18409         runtime data/code are now stored in a table similar to the GOT in ELF. 
18410         This allows the code itself to be position independent.
18411
18412         * aot.c: Fix loading of referenced assemblies after the lazy assembly
18413         loading changes.
18414
18415         * aot.c: Attach ELF type (object/function) directives to all global
18416         symbols.
18417
18418         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
18419
18420         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
18421
18422         * mini-amd64.h: Turn on PIC AOT code.
18423
18424         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
18425         returning the offset within an OP_AOTCONST instruction where the GOT
18426         offset needs to be added.
18427
18428         * mini.h: Bump AOT file format version.
18429
18430 2004-11-25  Martin Baulig  <martin@ximian.com>
18431
18432         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
18433         uninflated generic methods.
18434
18435 2004-11-25  Martin Baulig  <martin@ximian.com>
18436
18437         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
18438
18439 2004-11-24  Martin Baulig  <martin@ximian.com>
18440
18441         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
18442         original klass (this only applies for generic instances).
18443
18444 2004-11-24  Martin Baulig  <martin@ximian.com>
18445
18446         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
18447         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
18448         that array).
18449
18450 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
18451
18452         * mini.c (mono_method_to_ir): Disable inlining for methods containing
18453         localloc. Fixes #69678.
18454
18455         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
18456         
18457 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
18458
18459         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
18460         used SSE registers on pinvoke calls. Fixes #69774.
18461
18462 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
18463
18464         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
18465         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
18466
18467 2004-11-23  Raja R Harinath  <rharinath@novell.com>
18468
18469         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
18470         Refer directly to the mcs/ tree.
18471
18472 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18473
18474         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
18475         Check if a trampoline for a synchronized method is required. 
18476
18477 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
18478
18479         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
18480         with localloc if needed. Throe arithmetric exception in
18481         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
18482         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
18483
18484 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
18485
18486         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
18487         types before switching on type.  Fixes #69622.
18488
18489 2004-11-19  Raja R Harinath  <rharinath@novell.com>
18490
18491         * Makefile.am (check-local): New.  Integrate into 'make check'.
18492         (MCS,RUNTIME): Define using in-tree mono and mcs.
18493         (ILASM): New.
18494         (%.exe): Use $(ILASM).
18495
18496 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
18497
18498         * mini-ppc.c: adjust initial prolog size (bug #69691).
18499
18500 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
18501
18502         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
18503         #69664.
18504
18505 2004-11-17  Raja R Harinath  <rharinath@novell.com>
18506
18507         * Makefile.am (clean-local): Rename from 'clean'.
18508
18509 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18510
18511         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
18512         to mono_arch_is_int_overflow. 
18513         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
18514         SIGFPE events.
18515
18516 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
18517
18518         * declsec.c|h: New files to support declarative security attributes.
18519         Added function to check if a method has (applicable) security.
18520         * mini.c|h: Add check for declarative security attributes in
18521         mono_method_check_inlining.
18522         * Makefile.am: Added declsec.c and declsec.h to the build.
18523
18524 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
18525
18526         * mini.c, mini.h: update to keep dynamic code info per-domain.
18527
18528 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
18529
18530         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
18531         (mini_init): Get rid of it from here too.
18532
18533 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
18534
18535         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
18536         implemented OP_RETHROW (patch by Geoff Norton
18537         <gnorton@customerdna.com>).
18538
18539 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
18540
18541         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
18542         between appdomains.  Fixes appdomain-unload on PPC.
18543
18544 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
18545
18546         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18547         mini-exceptions.c: handle the new wrapper types.
18548         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
18549         token value as a MonoClass* when compiling a wrapper.
18550         mono_jit_create_remoting_trampoline now takes an additional
18551         MonoRemotingTarget parameter.
18552         
18553 2004-11-10  Martin Baulig  <martin@localhost>
18554
18555         * mini.c (mono_method_to_ir): Use `generic_container->context'
18556         rather than creating a new one.
18557
18558 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18559
18560         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
18561
18562         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
18563
18564 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
18565
18566         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
18567         the experimental aot cache stuff.
18568
18569 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
18570
18571         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18572         mini-exceptions.c: update to exception clause structure changes.
18573
18574 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18575
18576         * exceptions-x86.c (throw_exception): Fix warnings.
18577
18578         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
18579         for OP_RETHROW.
18580
18581 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
18582
18583         * exceptions-sparc.c (get_throw_exception): Really fix this.
18584
18585 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
18586
18587         * tramp-*.c: we no longer support icalls without wrappers, so
18588         a bit of code can be removed here
18589
18590 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
18591
18592         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
18593         patch.
18594
18595         * cpu-sparc.md: Add op_rethrow.
18596
18597         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
18598
18599         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
18600
18601         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
18602         * mini-ops.h: Add OP_RETHROW.
18603
18604         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
18605
18606         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
18607
18608 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
18609         
18610         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
18611         Makes the output much easier to read
18612
18613 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
18614
18615         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
18616         prevents another huge leak when compiling with ssa. Secondly, the
18617         performance of doing this rather than freeing the lists is much
18618         better. GList does a lock every time you allocate a list link,
18619         so that it can use a memory pool. So, it is better to just use
18620         a memory pool of our own.
18621         
18622         * ssa.c, linear-scan.c: replace g_list_remove_link with
18623         g_list_delete.  The remove one does not free the GList, so we were
18624         leaking memory. On -O=all --compile-all with corlib, this cut down
18625         3 MB of allocations.
18626
18627 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
18628
18629         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
18630
18631         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
18632
18633         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
18634         into a new function mono_create_jit_trampoline ().
18635
18636 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
18637
18638         * trace.c (get_spec): Allow tracing of classes without a namespace.
18639
18640 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
18641
18642         * mini.c: Fix pointer overwrite in mini_method_compile.
18643
18644 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
18645
18646         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
18647         The darwin ABI needs some special handling for 1 and 2 byte structs
18648         Lets use lbz/lhz instead of lwz everywhere.
18649         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
18650         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
18651         Use stb/sth for the former, and put the latter always on stack instead of in
18652         argument registers.
18653
18654 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
18655
18656         * trace.c (is_filenamechar): Add '_'.
18657
18658 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
18659
18660         * mini-s390.c: Fix prolog length to allow for large trace requirements.
18661
18662         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
18663
18664 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
18665
18666         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
18667         depends on libmonogc. Fixes #68805.
18668
18669 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
18670
18671         * mini.c (mono_jit_free_method): Provide extra information for
18672         this error.  Currently this leaks, but will be turned into a
18673         developer option in the future.
18674
18675 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
18676
18677         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
18678
18679 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
18680
18681         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
18682         boundary. Fixes reading of PATCH_INFO_R4 and R8.
18683         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
18684
18685 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
18686
18687         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
18688         trampolines for AOT code.
18689
18690 2004-10-22    <vargaz@freemail.hu>
18691
18692         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
18693         constructed types. Fixes #68136.
18694
18695 2004-10-21  Martin Baulig  <martin@ximian.com>
18696
18697         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
18698         if it returns true, unwind the stack to the call instruction.
18699
18700 2004-10-21    <vargaz@freemail.hu>
18701
18702         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
18703
18704         * mini.h: Bump AOT version number.
18705
18706         * objects.cs: Add another test for unbox trampolines.
18707
18708         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
18709         valuetype methods.
18710
18711 2004-10-20    <vargaz@freemail.hu>
18712
18713         * driver.c: Add SHARED to the set of optimizations tested.
18714
18715         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
18716
18717         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
18718         used by CEE_NEWARR.
18719
18720         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
18721
18722 2004-10-20  Martin Baulig  <martin@ximian.com>
18723
18724         * mini-exceptions.c (mono_handle_exception): Call
18725         mono_debugger_handle_exception() to tell the debugger about
18726         catch/finally clauses.
18727
18728 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
18729
18730         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
18731
18732         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
18733         #68447.
18734
18735 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
18736
18737         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
18738         methods as their native size, fixed bug #57543, #57545.
18739         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
18740         This saves a temporary register and mullw call down into 1 (minor perf
18741         increase for cases like sum = sum * 5;  This use to translate into:
18742             li r11,5
18743             mullw r28,r28,r11
18744         It now translates to
18745             mulli r28,r28,5
18746
18747 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
18748
18749         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
18750         #68388.
18751
18752 2004-10-11  Martin Baulig  <martin@ximian.com>
18753
18754         * mini.c (mono_method_to_ir): If we're a generic method, get the
18755         MonoGenericContainer from our MonoMethodNormal and create a
18756         MonoGenericContext from it.
18757
18758 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
18759
18760         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
18761
18762         * basic-long.cs: Add test for checked i8->i2 cast.
18763
18764 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
18765
18766         * inssel-ppc.brg: added a couple of speedup rules.
18767
18768 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
18769
18770         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
18771         to speed up rebuilds.
18772
18773 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18774
18775         * mini-s390.c: Minor fix to OP_OR_IMM.
18776
18777 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
18778
18779         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
18780         better. Fixes appdomain-unload.exe on sparc.
18781
18782 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
18783
18784         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
18785         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
18786         see bug 67324.
18787
18788 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
18789
18790         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
18791
18792 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
18793
18794         * mini.c: Always generate a field read/write wrapper for members
18795         of the class MarshalByRefObject since the actual instance could
18796         be a CBO.
18797
18798 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
18799
18800         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
18801
18802 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
18803
18804         * driver.c mini.h trace.c: Move the setting of the main assembly into
18805         a separate function called mono_trace_set_assembly () and call it after
18806         actually loading the main assembly. Fixes #66872.
18807
18808 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
18809
18810         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
18811         using the code manager.
18812
18813 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
18814
18815         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
18816
18817 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
18818
18819         * cpu-amd64.md: Fix bug in previous patch.
18820         
18821         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
18822         #66650.
18823
18824 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
18825
18826         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
18827         mini-exceptions.c: updates for changed stack walk interface.
18828
18829 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
18830
18831         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
18832
18833 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
18834
18835         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
18836
18837 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * driver.c (mini_regression_list): Do not call mono_assembly_close 
18840         since assemblies can't be unloaded.
18841         
18842 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18843
18844         * cpu-amd64.md: Fix more instruction lengths.
18845
18846         * cpu-amd64.md: Fix lengths of some instructions.
18847
18848 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
18849
18850         * inssel.brg: Make the array ldelema check aot friendly.
18851
18852 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
18853
18854         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
18855
18856         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
18857
18858 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
18859
18860         * mini-x86.c: Fix build.
18861
18862         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
18863         mono_type_get_underlying_type () helper function to simplify code.
18864         
18865 2004-09-09  Martin Baulig  <martin@ximian.com>
18866
18867         * mini-amd64.c: Don't access `type->data.klass' directly, call
18868         mono_class_from_mono_type() instead since the type may be a
18869         generic instance.
18870
18871 2004-09-09  Martin Baulig  <martin@ximian.com>
18872
18873         * mini-amd64.c (get_call_info): Fix support for generic instances.
18874         (add_valuetype): Use mono_class_from_mono_type() to get the class
18875         since we can be a generic instance.
18876
18877 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
18878
18879         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
18880
18881 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
18882
18883         * liveness.c: reset spill costs on each scan: bug 62107
18884
18885 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
18886
18887         * exceptions-sparc.c (mono_arch_find_jit_info): remove
18888         unnecessary line that doesn't compile
18889
18890 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
18891
18892         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
18893         trampolines, make them call an error function so people can fix their
18894         code.
18895
18896 2004-09-06  Martin Baulig  <martin@ximian.com>
18897
18898         * mini.c (mono_method_to_ir): When initializing locals, handle a
18899         generic instances like a valuetype if it's a valuetype and like a
18900         class if it's a class.
18901
18902 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18903
18904         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
18905         stack. Fixes #64674.
18906
18907         * exceptions.cs: Add test for unwinding of call arguments.
18908
18909 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
18910
18911         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
18912         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
18913         set the carry/borrow flag). The sparc and s390 implementations
18914         can now use optimized versions (and simplify the code). ppc bugfixes.
18915
18916 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
18917
18918         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
18919
18920 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
18921
18922         * inssel-amd64.brg: Remove leftover 32 bit rule.
18923
18924         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
18925
18926 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
18927
18928         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
18929         mono_arch_find_jit_info functions into a new function. Fix a memory
18930         leak.
18931
18932         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
18933         refactored code.
18934         
18935 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18936
18937         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
18938         as well.
18939         
18940         * exceptions.cs: Add array size tests.
18941
18942         * mini.c: Allocate a separate icall wrapper for each arity of 
18943         mono_array_new_va. Fixes #59509.
18944
18945         * exceptions.cs: Add testcase for 64578.
18946
18947         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
18948
18949         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
18950         
18951 2004-09-02  Martin Baulig  <martin@ximian.com>
18952
18953         * mini.c (mono_method_to_ir): When initializing the locals, call
18954         handle_initobj() on the generic instance itself, not its
18955         underlying type.
18956
18957 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
18958
18959         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
18960         MonoJitInfo for dynamic methods.
18961
18962         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
18963
18964         * mini.c: Add support for freeing JIT data for dynamic methods.
18965         
18966 2004-09-01  Martin Baulig  <martin@ximian.com>
18967
18968         * mini-x86.c (is_regsize_var): Added support for generic
18969         instances.
18970         (mono_arch_emit_prolog): Make this compile again, use
18971         `x86_push_imm_template (code)'.
18972
18973 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
18974
18975         * mini-x86.c: make all push_imm instructions that get
18976         patched always emit the long form
18977
18978 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
18979
18980         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
18981         in a per-domain hash.
18982
18983         * mini-amd64.c (merge_argument_class_from_type): Handle generic
18984         types.
18985
18986 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
18987
18988         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
18989         work.
18990         
18991         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
18992         work.
18993
18994         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
18995         Beginnings of SSE2 support.
18996
18997         * exceptions.cs: Add more tests for checked int<->uint casts.
18998
18999 2004-08-28  Martin Baulig  <martin@ximian.com>
19000
19001         * mini-x86.c (mono_arch_instrument_epilog): Added support for
19002         generic instances.
19003
19004         * mini.c
19005         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
19006         Handle generic instances recursively.
19007
19008 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19009
19010         * iltests.il: test for conv.u8 on a constant
19011
19012 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19013
19014         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
19015         LCONV_x4 (shrun_32 (membase)).
19016
19017 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
19018
19019         * inssel-x86.brg: c&p rules for push/setret of long
19020
19021 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19022
19023         * inssel-x86.brg: c&p rules for compare (base, regvar) and
19024         compare (regvar, base)
19025
19026         * inssel-x86.brg: more burg love
19027
19028         * inssel.brg: more cleanup
19029
19030         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
19031
19032 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
19033
19034         * basic-long.cs, basic-calls.cs: new tests for optimization.
19035
19036 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
19037
19038         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
19039         patch.
19040
19041 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19042
19043         * mini-amd64.c (read_tls_offset_from_method): Add another case.
19044         
19045 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
19046
19047         * inssel.brg (mini_emit_memcpy): use 
19048         NO_UNALIGNED_ACCESS to disable memcpy optimization
19049
19050 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
19051
19052         * mini-amd64.c: Handle generic types in various places.
19053
19054         * mini.c (mono_method_to_ir): Handle generic types in init locals.
19055
19056 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
19057
19058         * mini.c (handle_box): Fix warning.
19059
19060         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
19061
19062         * mini-amd64.h: Enable the emit_state optimization.
19063
19064         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
19065
19066         * mini-amd64.c: Add some new 64 bit peephole opts.
19067
19068         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
19069
19070         * cpu-amd64.md: sreg1 of div instructions must be %rax.
19071
19072         * mini-amd64.c: Register allocator fixes.
19073
19074         * mini.c: Add an optimization to emit_state to avoid allocation of new
19075         registers on some platforms.
19076
19077 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
19078
19079         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
19080
19081         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
19082         allocation. Fixes #63085.
19083
19084         * basic-long.cs: Add new regression test.
19085
19086         * mini-amd64.c: Register allocator improvements.
19087
19088 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
19089
19090         * mini-amd64.c (read_tls_offset_from_method): Add another code
19091         sequence.
19092
19093         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
19094         instruction sequence for nullifying class init trampolines.
19095
19096         * objects.cs: Add new regalloc test.
19097
19098         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
19099
19100 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19101
19102         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
19103         
19104         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
19105         arguments.
19106
19107         * driver.c: Fix profiling after TLS changes.
19108         
19109         * driver.c (mono_main): Set mono_stats.enabled if needed.
19110
19111         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
19112         CEE_BOX.
19113
19114 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
19115
19116         * mini-x86.c: use a 1 op rather than a 2 op tls access
19117         instruction -> faster.
19118
19119 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
19120
19121         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
19122         x86 backend.
19123
19124 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
19125
19126         * exceptions-sparc.c (throw_exception): fix typo
19127
19128 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
19129
19130         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
19131         set tree->dreg correctly with tls. Allow any
19132         register to be used.
19133
19134         * mini-x86.c (read_tls_offset_from_method): add new code
19135         generation pattern seen with GCC.
19136
19137
19138 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
19139
19140         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
19141         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
19142         exceptions-sparc.c: fix some performance issues in exception
19143         handling and setting of the stack trace for exceptions that were
19144         already thrown.
19145
19146 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19147
19148         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
19149         x86 backend.
19150         
19151         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
19152         registers.
19153
19154 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
19155
19156         This patch inlines tls access, when possible.
19157         
19158         * mini.h: new arch functions for TLS intrinsics.
19159         All platforms updated with a stub.
19160
19161         * mini.c: use the new intrinsics
19162
19163         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
19164         arch specific intrinsic for tls variables
19165
19166 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
19167
19168         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
19169         under windows.
19170
19171 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19172
19173         * mini.c: thread local allocation
19174
19175 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
19176
19177         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
19178
19179         * Makefile.am: Link against the static version of libmonogc.
19180         
19181         * Makefile.am: Link the static versions of the convenience libraries
19182         into the mono executable.
19183
19184         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
19185
19186 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
19187
19188         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
19189         on integer overflow.
19190
19191         * mini-amd64.c: Reorganize function call code.
19192
19193         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
19194
19195 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19196
19197         * inssel-x86.brg: use xor eax,eax.
19198         
19199         * basic.cs: new tests
19200
19201 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19202
19203         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
19204         in exception throwing code.
19205         
19206 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19207
19208         * inssel-x86.brg: use xor esi,esi.
19209
19210 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19211
19212         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
19213         can trace methods compiled during mini_init () too.
19214
19215         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
19216         CEE_CONV_U4.
19217
19218 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
19219
19220         * Makefile.am: static link on x86 (r=zoltan)
19221
19222 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
19223
19224         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
19225         code since it causes some programs to fail.
19226
19227 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
19228
19229         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
19230
19231 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19232
19233         * mini.c: ovfops_op_map - add STACK_OBJ case for
19234         CONV_I 
19235         * basic.cs: add test_0_pin_string as test
19236         case for above.
19237
19238 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
19239
19240         * Makefile.am: build C# if srcdir != builddir
19241
19242 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
19243
19244         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
19245         fall-through blocks.
19246
19247 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
19248
19249         * driver.c: enable loop by default again and include abcrem in -O=all.
19250
19251 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
19252
19253         * iltests.il: Add some localloc tests.
19254
19255         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
19256
19257         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
19258         Fixes #62574.
19259
19260         * inssel-amd64.brg: Add some optimizations.
19261
19262         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
19263         for gcc-3.4.
19264
19265         * Makefile.am: Statically link mono against libmono on AMD64.
19266         
19267         * mini-amd64.c inssel-amd64.brg: Optimizations.
19268
19269 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
19270
19271         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
19272
19273         * tramp-amd64.c: Patch calling code in trampolines.
19274
19275 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
19276
19277         * mini-amd64.c: pinvoke struct passing fixes.
19278
19279 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
19280
19281         * mini-sparc.c: redo change, make mono_arch_cpu_init call
19282         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
19283
19284 2004-08-05  Duncan Mak  <duncan@ximian.com>
19285
19286         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
19287         CEE_LDELEM_ANY.
19288
19289 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19290
19291         * mini-amd64.c (emit_move_return_value): Move return value for normal
19292         calls too.
19293
19294 2004-08-05  Martin Baulig  <martin@ximian.com>
19295
19296         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
19297         `type->type'; just modify `type' itself when dealing with enums
19298         and generic instances.
19299         (check_call_signature): Make `simple_type' a `MonoType *'.
19300
19301 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19302
19303         * mini.c: Use OP_PADD to add offsets to addresses.
19304
19305         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
19306
19307 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
19308
19309         * mini-sparc.c (mono_arch_emit_epilog): fix check
19310         for folding last op into restore instruction
19311
19312 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
19313
19314         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
19315         helper methods using the code manager.
19316         
19317         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
19318
19319         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
19320
19321 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19322         
19323         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
19324           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
19325
19326         * mini-s390.c: fix tail processing
19327
19328 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
19329
19330         * mini-ppc.c: mul.ovf.un exception name fix.
19331
19332 2004-08-03  Martin Baulig  <martin@ximian.com>
19333
19334         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
19335         instances; before jumping to `handle_enum', also modify `ptype'.
19336
19337 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
19338
19339         * cpu-sparc.md: fcall maximal length too small.
19340
19341 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
19342
19343         * mini-amd64.c mini.h: Add initial support for passing/returning 
19344         structures to/from pinvoked methods.
19345
19346 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
19347
19348         * mini-ppc.c: reg allocator fix.
19349
19350 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
19351
19352         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
19353
19354         * inssel.brg: Optimize memset on 64 bit machines.
19355
19356         * mini-amd64.c: Fix some vararg cases.
19357
19358 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
19359
19360         * mini-s390.c: Corrected macro in emit_float_to_int
19361
19362         * s390-abi.cs: Tests to exercise the s390 ABI
19363
19364 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19365
19366         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
19367         caller saved regs.
19368
19369         * basic.cs: Add a test for add.ovf.un.
19370
19371 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
19372
19373         * mini-sparc.c: add case for OP_IDIV_UN
19374
19375 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19376
19377         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
19378         
19379         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
19380
19381 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
19382
19383         * basic.cs: regression tests.
19384
19385         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
19386         regressions.
19387
19388 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
19389
19390         * basic.cs: Add a new test.
19391
19392         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
19393         and AOT. Various fixes and optimizations.
19394
19395         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
19396
19397 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
19398
19399         * mini-ppc.c: make sure temp regs are not used for global reg
19400         allocation.
19401
19402 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
19403
19404         * cpu-sparc.md: conv_i8 fix for 64bits
19405
19406         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
19407
19408 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
19409         
19410         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
19411         add opcode for cmp BYTE PTR [eax], imm.
19412
19413         * inssel.brg: Make memcpy and memset takes bases.
19414
19415 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19416
19417         * *-amd64.*: More AMD64 work.
19418         
19419 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19420
19421         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
19422         add a compare-not-equal opcode.
19423         
19424 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
19425
19426         * mini.c: Use mono_init_from_assembly instead of mono_init.
19427         
19428 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
19429
19430         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
19431
19432         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
19433
19434         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
19435
19436         * inssel.brg: 64 bit fixes.
19437
19438         * mini.h (MonoCallInst): Add some AMD64 specific data.
19439
19440         * mini.h: Add some OP_P opcodes.
19441
19442 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
19443
19444         * basic.cs: tests for 61797 and 61740
19445
19446 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
19447
19448         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
19449         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
19450
19451 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
19452
19453         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
19454
19455         * *-amd64*.*: Ongoing AMD64 work.
19456
19457 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
19458
19459         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
19460
19461         * *-amd64*: Ongoing AMD64 work.
19462
19463         * mini-arch.h: Add AMD64 support.
19464
19465         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
19466
19467         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
19468
19469         * mini-ops.h: Add new opcodes.
19470
19471         * Makefile.am: Add AMD64 support.
19472
19473         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
19474         rules into the inssel-long*.brg files.
19475
19476         * *-amd64.*: Add beginnings of AMD64 backend.
19477
19478 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
19479
19480         * mini.c (print_dfn): commenting out the code that prints
19481         the cil. With -O=deadce, this makes -v -v crash.
19482         
19483         * cpu-pentium.md: make checkthis have a length of 2
19484
19485 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
19486
19487         * mini-sparc.h: fix implementations of __builtin
19488         functions for Sun compiler for V9.
19489
19490 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
19491
19492         * mini.c: use the new stelem.ref wrapper
19493         * exceptions.cs, arrays.cs: new stelem.ref tests
19494
19495 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
19496
19497         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
19498         new XSP should work with these changes).
19499
19500 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
19501         
19502         * inssel-{long32,x86,}.brg: trivial optimizations.
19503         
19504 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
19505
19506         * mini.c: load value when emitting box operation in
19507         constrained calls.
19508
19509 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
19510
19511         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
19512         is one byte shorter than cmp DWORD PTR [eax], 0.
19513
19514 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
19515
19516         * inssel-ppc.brg: arguments on the stack are always
19517         relative to the stack pointer (spotted by Neale Ferguson).
19518
19519 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19520
19521         * exceptions-x86.c: delay appending the method name to the trace until
19522         after mono_jit_info_table_find is called, as this gets the real
19523         MonoMethod.
19524
19525 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
19526
19527         * aot.c: register roots
19528
19529 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19530
19531         * aot.c : I could just use PLATFORM_WIN32 flag.
19532
19533 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19534
19535         * aot.c : Reverting the previous fix. This time it broke linux build.
19536
19537 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
19538
19539         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
19540
19541 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
19542
19543         * mini.c (handle_stack_args): Remove some more debugging code.
19544         
19545         * mini.c (handle_stack_args): Remove debug output left in by mistake.
19546
19547         * driver.c mini.h aot.c: Allow additional options to be specified with
19548         --aot and pass them to mono_compile_assembly.
19549
19550         * aot.c: Add experimental code to AOT compile all loaded assemblies
19551         on demand and save the code into a cache in the filesystem.
19552
19553         * aot.c: Add support for more wrapper methods.
19554         
19555         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
19556         58863.
19557
19558         * cpu-*.md: Remove removed opcodes.
19559
19560         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
19561         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
19562         related icalls to marshal.c.
19563
19564 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
19565
19566         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
19567
19568         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
19569
19570         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
19571
19572 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
19573         * liveness.c: If liveness is recomputated we need to reset the information
19574         for each variable. This way, if the liveness range has been narrowed
19575         by optimizations that happened after the last computation, we can return
19576         a smaller range.
19577         
19578         For example, if you have
19579         
19580         {
19581                 int i = 0;
19582                 
19583                 // Tons of code that does not affect i
19584                 
19585                 i = foo ();
19586                 ...
19587         }
19588         
19589         i = 0 is dead code and will be removed by SSA. However, when
19590         linear scan gets to the code, i will still appear to be live
19591         throughout the entire block. This prevents good register allocation.
19592
19593 2004-07-06  Martin Baulig  <martin@ximian.com>
19594
19595         * debug-mini.c (mono_debug_init_method): Allow
19596         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
19597         (mono_debug_add_icall_wrapper): New method.
19598
19599         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
19600
19601 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
19602
19603         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
19604         optimization.
19605
19606 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
19607
19608         * aot.c (mono_aot_load_method): Fix loading of debug info.
19609
19610 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19611
19612         * aot.c: Add logging support.
19613
19614 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19615
19616         * mini.h: Add prototype for mono_print_method_from_ip.
19617
19618         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
19619
19620         * inssel.brg: 64 bit fixes.
19621
19622         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
19623         inssel-long32.brg.
19624
19625         * Makefile.am: Add SPARC64 support.
19626
19627 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
19628
19629         * aot.c: Fix alignment problems on 32 bit platforms.
19630
19631 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
19632
19633         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
19634         SPARC64.
19635
19636         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
19637         problems.
19638
19639         * mini.h: Bump AOT file version. Some 64 bit fixes.
19640
19641 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19642
19643         * inssel-sparc.brg: Add new rule to avoid register moves.
19644
19645         * inssel.brg: Add ldind_to_load_membase helper function.
19646
19647 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
19648
19649         * mini.c: OffsetToStringData intrinsic.
19650         
19651 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
19652
19653         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
19654
19655         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
19656         regression tests.
19657
19658         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
19659 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
19660
19661         * mini.c: reinstated mono_compile_get_interface_var()
19662         on x86, too, since the change breaks the Gtk# build there as well.
19663
19664 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19665
19666         * driver.c: remove loop from the default optimizations: it seems to
19667         interact badly with some of the other options (see bug #60613).
19668
19669 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
19670
19671         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
19672         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
19673
19674 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
19675
19676         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
19677         vararg-using methods.
19678
19679 2004-06-21  Martin Baulig  <martin@ximian.com>
19680
19681         * mini/mini-exceptions.c
19682         (mono_handle_exception): Added `gpointer original_ip' argument.
19683         After calling mono_unhandled_exception(), call
19684         mono_debugger_unhandled_exception() and if that returns true,
19685         restore the context and return.
19686
19687 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
19688
19689         * mini-ppc.c: prefer the use of relative branches so
19690         they won't need to be patched in aot code (patch from Patrick Beard).
19691
19692 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19693
19694         * aot.c: patch from Patrick Beard to make the output assembly
19695         more correct for the MacOSX assembler. Small tweak to
19696         generate sane images on Linux/PPC, too.
19697
19698 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19699
19700         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
19701         case until bug #59509 is fixed (shows up in #60332).
19702
19703 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19704
19705         * mini.c: make sure the needed wrappers are compiled, too, with
19706         precomp.
19707
19708 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
19709
19710         * driver.c: remove NPTL reference in --version output.
19711
19712 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
19713
19714         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
19715         generate valid assembly for the Mach-O assembler.
19716
19717 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
19718
19719         * driver.c: don't include abcrem in the all optimization specifier
19720         since it slows down jit compilation too much for now.
19721
19722 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
19723
19724         * mini.c: use BIGMUL only if both operands have the same signage.
19725         * iltests.il: Test for bug 60056. (errors related to signage in
19726         BIGMUL).
19727
19728         r=lupus.
19729
19730 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
19731
19732         * mini.c, aot.c: memory leak fixes.
19733
19734 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
19735
19736         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
19737
19738 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
19739
19740         * Makefile.am: remove the -static hack completely, it links in
19741         statically glib as well.
19742
19743 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
19744
19745         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
19746         * exceptions.cs: make it compile with new mcs/csc.
19747
19748 2004-06-03 Massimiliano Mantione <massi@ximian.com>
19749         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
19750         and added relevant test case.
19751
19752 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19753
19754         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
19755         regressions in gtk-sharp.
19756
19757 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
19758
19759         * exceptions.cs: New regression tests.
19760
19761         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
19762
19763 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
19764
19765         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
19766
19767 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
19768
19769         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
19770
19771         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
19772
19773 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
19774
19775         * mini.c (mono_jit_runtime_invoke): Init class in this
19776         method instead of trusting mono_jit_compile_method to
19777         do the work (because wrappers can be in object class)
19778
19779 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
19780
19781         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
19782
19783         * basic-long.cs: New regression test.
19784
19785 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
19786
19787         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
19788         and div/rem checks.
19789
19790 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
19791
19792         * Makefile.am: fix miguel's change to build mono statically against
19793         libmono (track build dependencies).
19794
19795 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19796
19797         * cfold.c: Some glib versions do not have G_MININT32.
19798
19799 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
19800
19801         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
19802         with precision of tan, atan, sin and cos, and implemented related
19803         regressions tests (fixes bug 54467, but one new problem appeared and
19804         is not fixed yet).
19805
19806 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
19807
19808         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
19809
19810         * exceptions.cs: Add test for constant folding && division by zero.
19811
19812         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
19813         since driver.c is in libmono too, so the optimization was useless.
19814
19815         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
19816         variable to driver.c so the compiler can emit more efficient code to
19817         access them.
19818
19819 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19820
19821         * Makefile.am: don't distribute generated inssel.[ch] files.
19822
19823 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
19824
19825         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
19826         into the default appdomain. Fixes #58707.
19827
19828         * jit-icalls.c: Remove the broken approximation for truncl, doing
19829         no conversion is better.
19830
19831         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
19832         Fixes #58863.
19833
19834 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
19835
19836         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
19837         of the mcrxr instruction which is not available on some processors
19838         even if it's documented to be. Implement add and sub overflow correctly
19839         (still not complete for long unsigned). Speed up icalls a bit.
19840
19841 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
19842
19843         * mini.c (mono_jit_compile_method_with_opt): Make sure that
19844         we run .cctor in the current domain instead of target_domain.
19845         
19846         Fixes bug #58558, .cctor not being called in -O=shared.
19847
19848 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
19849
19850         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
19851
19852 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
19853
19854         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
19855         which can be done with an imm8, do it that way.
19856         (mono_arch_output_basic_block): ditto for a jmp
19857         (mono_arch_emit_prolog): Computate maximum offset of a label.
19858
19859 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
19860
19861         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
19862         now tries to allocate prefered physical reg's for virtual
19863         regs. This reduces the number of emited spills/loads with
19864         20-30% on our core assemblies.
19865
19866 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
19867
19868         * jit-icalls.c: truncl() is not needed and trunc() is
19869         the correct thing to do anyway (bug #58287).
19870
19871 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
19872
19873         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
19874         if available.
19875
19876 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
19877
19878         * driver.c: enable loop optimizations by default.
19879
19880 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
19881
19882         * mini-x86.c: fix calc of max loop size when aligning loops start.
19883
19884 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
19885
19886         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
19887         the stack.
19888
19889 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
19890
19891         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
19892         should set carry.
19893
19894         * basic-long.cs: Add tests for add/subtract of immediates with carry.
19895
19896         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
19897         
19898         * mini.c (inline_method): Allways inline some wrappers even if the cost
19899         is too large. Fixes #58785.
19900
19901         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
19902         
19903 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
19906         (crichton@gimp.org). Beginning of support for sparc/linux.
19907
19908         * mini-sparc.c: Optimize retrieval of LMF address.
19909
19910 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
19911
19912         * exceptions-ppc.c:  handle alloca in methods with clauses.
19913
19914 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
19915
19916         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
19917
19918 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
19919
19920         * mini.c: Delegate most of the abort signal work to 
19921           mono_thread_request_interruption, which also handles Stop and Suspend
19922           states.
19923
19924 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
19925
19926         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
19927         supports the save/restore lmf opcodes.
19928
19929 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
19930
19931         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
19932         by gcc-3.4 as well.
19933
19934         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
19935
19936 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19937
19938         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
19939         methods which contain array accesses.
19940
19941         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
19942         boundaries. Fixes #58537.
19943
19944         * iltests.il: Add regression test for #58537.
19945
19946 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19947
19948         * mini-x86.c (mono_arch_local_regalloc): Last part of
19949         fix for bug #58633 (releasing register to early).
19950
19951 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
19952
19953         * basic-long.cs: Add new regression test.
19954
19955 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
19956
19957         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
19958         register too early on the chain.
19959
19960 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
19961
19962         * mini.c (create_helper_signature): Use a helper function to reduce
19963         the code which needs to be written. Also set the calling convention of
19964         icalls on windows. Fixes #57840.
19965
19966 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
19967
19968         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
19969         exceptions-ppc.c: added helper function to get the instruction address
19970         from a signal handler context.
19971
19972 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19973
19974         * helpers.c: use g_get_tmp_dir. Invokes happyness 
19975         from gonzalo.
19976
19977 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
19978
19979         * helpers.c: Add new env variable to pass args to objdump.
19980         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
19981
19982 2004-05-17  Radek Doulik  <rodo@ximian.com>
19983
19984         * Makefile.am (common_sources): added abcremoval.h so it get
19985         disted and daily mono packages on go-mono.com will build again
19986
19987 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
19988
19989         * abcremoval.c: Fixed coding style, added copyright header.
19990
19991         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
19992
19993         * mini.h: Added prototype for abc removal main function.
19994
19995         * build_relations_propagation_table.pl: Added copyright header.
19996
19997 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
19998
19999         * basic-long.cs: reg test for complex ceq_long bug.
20000
20001 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
20002
20003         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
20004         reg in long and clob case (bug #58343). Fixed/added comments.
20005
20006 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
20007
20008         * mini.c (mono_jit_runtime_invoke): Follow new convention
20009         of calling the invoke method with an function pointer.
20010
20011 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
20012
20013         * ChangeLog: Fix author of memory leak patch.
20014
20015 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
20016
20017         * Makefile.am: fix make dist as well...
20018
20019
20020 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
20021
20022         * cfold.c: Made so that conversions from pointer to int4 are no-ops
20023         on archs where pointers are 4 bytes long.
20024
20025         * Makefile.am: Added abcremoval.c source file.
20026
20027         * abcremoval.c: Added abcremoval.c.
20028
20029         * abcremoval.h: Added abcremoval.h.
20030
20031         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
20032
20033         * inssel.brg: Enabled bounds check removal.
20034
20035         * mini.c: Added support for abcrem optimization.
20036
20037         * mini.h: Added abcrem optimization label.
20038
20039         * driver.c: Added support for abcrem optimization.
20040
20041         * propagated_relations_table.def: Added propagated_relations_table.def.
20042
20043 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
20044
20045         * mini.c, cfold.c: fix style.
20046
20047 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20048
20049         * mini.c: handle issue with the low-level implementation of
20050         some long opcodes (bug #54209).
20051
20052 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
20053
20054         * basic.cs: test for my new cmov stuff.
20055
20056 2004-05-13      Patrik Torstensson
20057
20058         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
20059         opt and added peephole documentation.
20060
20061 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
20062
20063         * tramp-ppc.c: rewrote the generic trampoline code.
20064
20065 2004-05-11      Patrik Torstensson
20066
20067         * mini-x86.c: optimize long shl/shr asm code (one less branch)
20068
20069 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
20070
20071         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
20072
20073         * mini.h mini.c dominators.c: Applied patch from Derek Woo
20074         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
20075
20076         * mini.c: Add new icalls for AsAny marshalling.
20077
20078 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
20079
20080         * tramp-ppc.c, mini-ppc.c: more cleanups.
20081
20082 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20083
20084         * mini.c: no warnings.
20085
20086 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20087
20088         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
20089
20090 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
20091
20092         * mini.c: In the thread abort signal handler, if the thread is in the
20093         process of being stoped, don't throw the Abort exception, just stop the
20094         thread.
20095
20096 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
20097
20098         * tramp-ppc.c: removed old code.
20099
20100 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20101
20102         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
20103         do some simple speed optimizations on ppc.
20104
20105 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
20106
20107         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
20108         and large offsets in load/store.
20109
20110 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20111
20112         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
20113         it causes regressions.
20114
20115 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
20116
20117         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
20118         support.
20119
20120 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
20121
20122         * jit-icalls.c: remove warnings.
20123         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
20124         speedups for unsafe code.
20125
20126 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
20127
20128         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
20129
20130 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
20131
20132         * basic-calls.cs: Add new regression test.
20133
20134         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
20135         more portable.
20136
20137         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
20138
20139         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
20140         is no longer used.
20141
20142 2004-05-06      Patrik Torstensson
20143
20144         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
20145         long reg allocation in any reg (not only eax:edx) and implemented 
20146         long shl/shr ops in asm instead of helpers.
20147
20148 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
20149
20150         * mini-sparc.h: Fix warnings.
20151
20152         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
20153         stack.
20154
20155         * mini-exceptions.c (mono_handle_exception): Call the filter in a
20156         separate statement for clarity.
20157
20158         * mini-sparc.c: Update status.
20159
20160 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
20161
20162         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
20163         here.
20164
20165 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20166
20167         * inssel-ppc.brg: another small pre-release workaround:
20168         we don't do overflow detection for long_sub_un.
20169
20170 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20171
20172         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
20173         (also works around a weird ppc bug: 57957).
20174
20175 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
20176
20177         * tramp-ppc.c: trampoline fixes.
20178
20179 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
20180
20181         * mini-ppc.c: fixed typos.
20182
20183 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
20184
20185         * mini-ppc.c, exceptions-ppc.c: more code saves registers
20186         at the top of the stack. Fixed typos. Use a frame registers
20187         for all the methods with exception clauses.
20188
20189 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20190
20191         * exceptions-ppc.c: restore fp registers.
20192
20193 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
20194
20195         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
20196         order from the stack top (moved the stack room to save the
20197         return value for trace after the param area). Fixed corruption
20198         in restoring registers on unwind.
20199
20200 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
20201
20202         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
20203
20204 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20205
20206         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
20207         and prolog/epilog for methods that use it. Allow
20208         enough param area room for varargs methods. Fix miguel's
20209         breakage in exception handling.
20210
20211 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
20212
20213         * Makefile.am: run genmdesc only on current arch.
20214
20215 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20216
20217         * exceptions-x86.c:
20218         * mini-x86.h: fix the build on windows.
20219
20220 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
20221
20222         * 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.
20223
20224         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
20225
20226         * mini-exceptions.c: New file.
20227         
20228         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
20229         Move some parts of the x86 exception handling code to an 
20230         arch-independent file so it can be shared with other ports.
20231
20232 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
20233
20234         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
20235
20236 2004-04-26  David Waite  <mass@akuma.org>
20237
20238         * driver.c: remove comma from end of enumeration declaration
20239
20240 2004-04-26  Jackson Harper  <jackson@ximian.com>
20241
20242         * driver.c: parse config file before loading first assembly. This
20243         allows the user gac to be enabled/disabled. 
20244         
20245 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
20246
20247         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
20248         simpler mechanism: we do not care what is encoded initially
20249         (branch absolute or relative), we care about the code and its
20250         target.  I kept the old code for reference for now.
20251
20252         The new code tries first to determine if the jump is anywhere in
20253         the -/+32 absolute meg range, if it succeeds, it encodes using the
20254         absolute branch;  If not, it tried to find something in the
20255         relative range, if not, it uses the handle_thunk code. 
20256
20257 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
20258
20259         * exceptions-ppc.c: use the correct ip register on macosx.
20260
20261 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
20262
20263         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
20264
20265 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
20266
20267         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
20268         Raise exception on integer divide by zero by hand since the hw
20269         doesn't support it. Handle NaNs in FP compares.
20270
20271 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
20272
20273         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
20274         code reducing duplication between the platforms and enabled
20275         signal exception handling (on linux for now).
20276
20277 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
20278
20279         * exceptions-ppc.c: more macosx support.
20280
20281 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20282
20283         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
20284
20285 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
20286
20287         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
20288
20289 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
20290
20291         * iltests.il: more tests.
20292
20293 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20294
20295         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
20296         vars as well.
20297
20298 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
20299
20300         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
20301
20302 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
20303
20304         * liveness.c: Mark variables as volatile in all basic blocks reachable
20305         from exception clauses.
20306
20307 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
20308
20309         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
20310         inlining.
20311
20312 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
20313
20314         * iltests.il, basic.cs: more tests for regalloc.
20315
20316 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
20317
20318         * iltests.il: Some tests for register allocation modifications
20319         I have locally.
20320
20321 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
20322
20323         * exceptions.cs: Add regression test for bug #56782.
20324
20325         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
20326         original stack trace if an exception is rethrown. Fixes #56782. Oh,
20327         the beauty of fixing the same thing in 5 different files...
20328
20329 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
20330
20331         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
20332         methods.
20333
20334 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
20335
20336         * mini.c: Add support for STRWLPARRAY marshalling convention.
20337
20338 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
20339
20340         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
20341         to init the context to setup the regs pointer).
20342
20343 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
20344
20345         * exceptions-ppc.c: more exceptions work.
20346
20347 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
20348
20349         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
20350         not allowed.
20351
20352 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20353
20354         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
20355         can use the memory directly.
20356
20357         * cpu-pentium.md: Update documentation from a post from Zoltan. 
20358
20359         add x86_add_membase, x86_sub_membase, x86_mul_membase
20360
20361 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
20362
20363         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
20364         GENERAL_REGS they were also hardcoded for all PPC ports.
20365
20366         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
20367
20368         Remove hard-coded limit for floating point registers, use
20369         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
20370
20371         Notice that in MacOS X calling conventions you can fit a lot more
20372         floating point values in registers, so I should update the PInvoke
20373         test to excercise the passing of floating point values on the
20374         stack (currently broken).
20375         
20376 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
20377
20378         * tramp-ppc.c (create_trampoline_code): Added
20379         JUMP_TRAMPOLINE_SIZE. 
20380         (ppc_magic_trampoline): Follow the pattern from
20381         x86_magic_trampoline: if code is set to zero, return. 
20382         (create_trampoline_code): Always pass MonoMethod to the jump
20383         trampoline, before it was passing a null.
20384         (mono_arch_create_jump_trampoline): Implement the jump stub, could
20385         share the code with mono_arch_create_jit_trampoline. 
20386
20387         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
20388         implemented.
20389         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
20390         implemented.  
20391
20392         * cpu-g4.md: Added length for jmp instruction, the worst case
20393         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
20394         for save_lmf).
20395
20396 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
20397
20398         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
20399
20400 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
20401
20402         * mini.c: Only set bblock->real_offset when adding a new bblock, and
20403         before each IL instruction.
20404
20405         * mini.c (CEE_BOX): Fix warnings.
20406
20407 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20408
20409         * mini.c: removed a few unused vars and extra whitespace.
20410
20411 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
20412
20413         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
20414         checks.
20415         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
20416         index.
20417         (OP_GETCHR): use the above
20418         (CEE_LDELEMA): use the above.
20419
20420         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
20421         version of the generic impl.
20422         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
20423         (CEE_LDELEMA): use the above.
20424
20425 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20426
20427         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
20428         Fixes #56317.
20429
20430         * iltests.il: Added new regression test for #56317.
20431
20432 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
20433
20434         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
20435         under NetBSD. Fixes #56450.
20436
20437         * liveness.c (update_gen_kill_set): Fix previous patch.
20438
20439 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20440
20441         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
20442
20443 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
20444
20445         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
20446         ldsfld and ldsflda.
20447
20448         * inssel-sparc.brg: Add more optimizations.
20449
20450         * mini-sparc.c: Replace multiply/divide with shifts if possible.
20451
20452 2004-04-01  Martin Baulig  <martin@ximian.com>
20453
20454         * mini.c (handle_box): New static function; moved the
20455         implementation of CEE_BOX here.
20456         (mono_method_to_ir): Added `constrained_call' variable.
20457         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
20458         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
20459         mono_method_get_constrained() to get the method.
20460
20461 2004-04-01  Martin Baulig  <martin@ximian.com>
20462
20463         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
20464         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
20465         (mono_method_to_ir): We don't need these macros anymore since
20466         mono_class_get_full() already takes care of it. 
20467
20468 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20469
20470         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
20471         use @function (as doesn't accept #function here) and check the return
20472         value of system and stop if fails.
20473
20474 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20475
20476         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
20477
20478 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
20479
20480         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
20481
20482         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
20483
20484         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
20485         #56223.
20486
20487         * basic-long.cs: Add test for negation of Int64.MinValue.
20488
20489 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
20490
20491         * mini-sparc.c: Update status.
20492
20493         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
20494
20495         * exceptions-sparc.c: Fix return value in filters.
20496
20497         * inssel-sparc.brg: Fix register allocation in some rules.
20498
20499 2004-03-28  Martin Baulig  <martin@ximian.com>
20500
20501         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
20502         if neccessary.  
20503
20504 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
20505
20506         * mini-x86.c (mono_arch_patch_code): Fix warnings.
20507         
20508         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
20509         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
20510         remove unused conv_u4 opcode.
20511
20512         * mini-x86.c: Remove valgrind workaround since it slows down things
20513         even when mono is not run under valgrind.
20514
20515 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
20516
20517         * mini-sparc.c: Update status.
20518
20519         * inssel-sparc.brg: Add some optimizations.
20520
20521         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
20522         future delay slot filling. Add support for varargs, tail calls and JMP.
20523
20524         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
20525         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
20526
20527         * inssel.brg: Fix register allocation in OP_ARGLIST.
20528
20529         * inssel.brg: Fix warnings.
20530
20531 2004-03-25  Martin Baulig  <martin@ximian.com>
20532
20533         * mini.c (inflate_generic_field): Removed.
20534         (mini_get_method): Removed, use mono_get_method_full(),
20535         (mini_get_class): Removed, use mono_class_get_full().
20536         (mono_method_to_ir): Pass our generic context to
20537         mono_field_from_token().        
20538
20539 2004-03-25  Martin Baulig  <martin@ximian.com>
20540
20541         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
20542         of a `MonoMethod *'.
20543         (mini_get_method): Take a `MonoGenericContext *' instead
20544         of a `MonoMethod *'.
20545         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
20546         a new local variable called `generic_context' which holds the
20547         current `MonoGenericContext *'; use it to lookup things.
20548
20549 2004-03-24  Martin Baulig  <martin@ximian.com>
20550
20551         * mini.c (mini_get_class): New static method; if we're inside a
20552         generic instance, inflate the class if neccessary.
20553         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
20554
20555 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
20556
20557         * iltests.il: New regression test for #55976.
20558
20559         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
20560         #55976.
20561
20562 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20563
20564         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
20565         output.
20566
20567 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
20568
20569         * liveness.c: Consider SSA stores as well as loads when making vars
20570         volatile.
20571
20572         * exceptions.cs: New regression tests for register allocation.
20573         
20574 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
20575
20576         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
20577         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
20578           domain lock only to protect puntual access to data structures.
20579           Added access lock for sighash, jit_icall_hash_name, 
20580           jit_icall_hash_addr and domain->code_mp.
20581
20582 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
20583
20584         * driver.c: Print SIGSEGV handling method.
20585
20586         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
20587
20588         * mini.c (setup_jit_tls_data): Handle case when this is called
20589         multiple times for a thread.
20590
20591         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
20592         is different from fbxx_un. Fixes #54303. Also use constants instead of
20593         magic numbers in a lot of places.
20594
20595 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
20596
20597         * exceptions.cs: Fix cctor test when --regression is used.
20598
20599 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
20600
20601         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
20602         for Linux/ppc.
20603
20604 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20605
20606         * inssel-ppc.brg: fixed register assignments for some rules.
20607
20608 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20609
20610         * exceptions.cs: Add test for exceptions in static constructors.
20611
20612         * mini.c (mono_jit_compile_method_with_out): Move the calling of
20613         static constructors outside the domain lock. Fixes #55720.
20614
20615 2004-03-17  Martin Baulig  <martin@ximian.com>
20616
20617         * mini.c (get_generic_field_inst): Removed, this'll never happen.
20618         (inflate_generic_field): Take the `MonoMethod *' instead of the
20619         `MonoClass *' and added support for generic method.
20620         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
20621         have a `field->parent->gen_params', only inflate the field if it's
20622         an open constructed type.
20623
20624 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
20625
20626         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
20627         exception object instead of the preconstructed ones.
20628
20629 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20630
20631         * mini.c: reverted changed to sigsegv_signal_handler commited
20632         accidentally in the previous patch.
20633
20634 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20635
20636         * mini.c:
20637         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
20638         running --aot with an old assembly.
20639
20640 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
20641
20642         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
20643         point values.
20644
20645         * mini-sparc.c: Add support for v9 branches with prediction.
20646
20647 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
20648
20649         * mini.c (mini_init): #warning is GNUC only
20650
20651         * mini-sparc.h: implement __builtin_frame_address
20652         and __builtin_return_address for Sun C compiler
20653
20654 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
20655
20656         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
20657
20658 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
20659
20660         * basic-calls.cs: Add test for unaligned byref long argument passing.
20661
20662         * mini-ops.h: Add sparcv9 compare and branch instructions.
20663
20664         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
20665         v9 instructions if we have a v9 cpu.
20666
20667         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
20668         registers for global allocation.
20669
20670         * exceptions-sparc.c: Fixes.
20671         
20672 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
20673
20674         * liveness.c (mono_analyze_liveness): Optimized version.
20675
20676         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
20677
20678         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
20679         sparc work.
20680
20681         * basic-float.cs basic-calls.cs: New regression tests.
20682
20683 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
20684
20685         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
20686         sigaltstack implementation.
20687
20688         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
20689         
20690         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
20691         stuff if SIGSEGV_ON_ALTSTACK is not defined.
20692
20693 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
20694
20695         * mini.c: Fix warnings.
20696         
20697         * mini.c (mono_resolve_patch_target): New function which contains the
20698         arch independent part of the patching process.
20699
20700         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
20701         patching code to a separate function.
20702
20703 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
20704
20705         * mini.c (add_signal_handler): ifdef out on Windows
20706
20707 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
20708
20709         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
20710         cpu-sparc.md: Add exception handling support + other fixes.
20711
20712         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
20713         typed GC detection in --version.
20714
20715         * basic.cs exceptions.cs: New regression tests.
20716
20717         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
20718         the arch specific code can store data during a compilation.
20719
20720         * mini-ops.h: Add OP_SETFRET.
20721
20722         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
20723         function, register a separate icall for each arity, so the icalls can
20724         get a wrapper.
20725         
20726         * mini.c (mono_print_tree): Print negative offsets in a more readable
20727         form.
20728         
20729         * mini.c: Make signal handling work on sparc.
20730         
20731         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
20732
20733         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
20734
20735         * jit-icalls.c: Emulate truncl by aintl on solaris.
20736
20737         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
20738
20739 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
20740
20741         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
20742
20743 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
20744
20745         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
20746         a MarshalByRef type, inline a method that performs the check, taking into
20747         account that the object can be a proxy. Also implemented tow new opcodes:
20748         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20749         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
20750         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
20751
20752 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
20753
20754         * mini-ppc.c: if a relative branch displacement is too big
20755         but it points to and area reachable with an absolute branch, 
20756         avoid the thunks.
20757
20758 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
20759
20760         * mini.c: optimize small copies in cpblk.
20761
20762 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
20763
20764         * basic-calls.cs basic-float.cs: New regression tests.
20765
20766         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
20767         negative offsets from %fp. Implement localloc. Fix local register 
20768         allocation. Fix the case when the this argument needs to be saved to
20769         the stack. Implement some missing opcodes.
20770
20771 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
20772
20773         * mini.c (mini_method_compile): Reenable global regalloc in methods
20774         with exception handlers.
20775
20776         * linear-scan.c (mono_varlist_sort): Fix warning.
20777
20778         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
20779
20780         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
20781         regalloc costs.
20782
20783         * liveness.c: Make all variables uses in exception clauses volatile, to
20784         prevent them from being allocated to registers. Fixes #42136.
20785
20786 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
20787
20788         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
20789         causes regressions.
20790
20791         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
20792         argument to mono_arch_regalloc_cost.
20793
20794         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
20795         precisely.
20796
20797 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
20798
20799         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
20800         Make the cost of allocating a variable to a register arch dependent.
20801
20802         * basic-calls.cs: Fix compilation of tests.
20803         
20804         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
20805         helper function to cut back on the number of #ifdefs needed.
20806
20807         * mini-ppc.c: Fix compilation.
20808
20809         * basic-calls.cs: New regression tests.
20810
20811         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
20812
20813         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
20814         of l0 since that is callee saved.
20815
20816         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
20817         to virtual calls.
20818
20819         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
20820         of delay instruction.
20821
20822         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
20823
20824         * mini.h (MonoCallInst): Add 'virtual' flag.
20825
20826         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
20827
20828 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
20829
20830         * *.cs: New regression tests.
20831
20832         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
20833         work.
20834
20835         * mini.c (mono_runtime_install_handlers): Fix build.
20836
20837         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
20838         'signal_stack_size' members.
20839
20840         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
20841         alternate signal stack.
20842
20843         * exceptions-x86.c: Add stack overflow handling.
20844
20845         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
20846         functions to arch independent code.
20847
20848         * mini.c (mono_print_tree): Print more detailed info for load_membase
20849         opcodes.
20850         
20851 2004-02-23  Martin Baulig  <martin@ximian.com>
20852
20853         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
20854
20855 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
20856
20857         * mini-x86.c: fixed reg allocation for div/rem.
20858
20859 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
20860
20861         * driver.c (mono_main): Report some configuratio options on --version.
20862
20863 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
20864
20865         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
20866         low in the address space. Correctly flush memory in thunks where we
20867         output native code.
20868
20869 2004-02-20  Martin Baulig  <martin@ximian.com>
20870
20871         * mini.c (mini_get_method): New static method; inflate all generic
20872         methods and methods in open generic instances.
20873         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
20874         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
20875
20876 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20877
20878         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
20879
20880         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
20881
20882 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
20883
20884         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
20885
20886         * mini-sparc.c (flushi mono_arch_output_basic_block): make
20887         it compile using Sun's compiler.
20888
20889 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
20890
20891         * 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.
20892
20893         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
20894
20895 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20896
20897         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
20898         code.
20899         * mini-ppc.c: handle calls outside of the allowed range with thunks
20900         allocated using the code manager.
20901         * tramp-ppc.c: use the code manager to hold generated native code.
20902         Fixed the magic trampoline to just patch vtable entries.
20903
20904 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
20905
20906         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
20907         independent file.
20908
20909 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
20910
20911         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
20912         PPC.
20913
20914         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
20915         if we have a working __thread implementation.
20916
20917         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
20918         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
20919
20920 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
20921
20922         * mini-x86.c: Fix compilation under gcc 2.
20923         
20924 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
20925
20926         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
20927         contains a call to the wrapped function.
20928
20929         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
20930         OP_<CALL>_IMM opcodes, and use them under X86.
20931         
20932         * mini.c (mono_jit_find_compiled_method): Fix warning.
20933
20934         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
20935
20936         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
20937
20938         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
20939         functionality to mini.c.
20940
20941         * mini.c (mono_create_jump_trampoline): New function to create a jump
20942         trampoline. Return a compiled method instead of a trampoline if it
20943         exists. Add a cache for jump trampolines.
20944
20945         * mini.c (mono_jit_find_compiled_method): New function to return a
20946         compiled method if it exists.
20947
20948         * mini-x86.c: Call mono_create_jump_trampoline instead of 
20949         mono_arch_create_jit_trampoline.
20950
20951         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
20952         a jump trampoline. Fixes #52092.
20953         
20954 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
20955
20956         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
20957         which is not up-to-date. Add check_corlib_version () instead.
20958
20959         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
20960         have to call it.
20961         
20962         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
20963         since newer valgrind versions do not need it.
20964
20965         * mini.c (mono_jit_compile_method_with_opt): New helper function to
20966         compile a method with a given set of optimizations.
20967
20968         * mini.c: Compile icall wrappers on-demand instead of at startup.
20969
20970         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
20971         wrapper for an icall.
20972
20973 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
20974
20975         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
20976         #54063.
20977
20978         * iltests.il: Add test for non-empty stack before switch instruction.
20979
20980 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
20981
20982         * mini.c: Add support for new stringbuilder marshalling conventions.
20983
20984         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
20985
20986 2004-02-01  Martin Baulig  <martin@ximian.com>
20987
20988         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
20989         in `ginst->mtype_argv'.
20990
20991 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
20992
20993         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
20994         facilitate grepping.
20995
20996 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
20997
20998         * mini.c: fixed buglet in initobj generic implementation for references.
20999
21000 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
21001
21002         * Makefile.am: make the version script conditional.
21003         * jit-icalls.c: handle missing truncl().
21004
21005 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
21006
21007         * exceptions.cs: Add more tests for double->int conversion.
21008
21009         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
21010         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
21011
21012 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
21013
21014         * driver.c: make --verbose --version emit an error
21015         if the loaded corlib doesn't match the runtime version.
21016
21017 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
21018
21019         * mini-ppc.h: export ppc_patch().
21020         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
21021         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
21022         on par or better than on MacOSX.
21023
21024 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
21025
21026         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
21027         mono_lookup_pinvoke_call.
21028
21029         * mini-x86.c: Under windows, the default pinvoke calling convention is
21030         stdcall. Fixes #52834.
21031
21032         * mini.c (optimize_branches): Add an upper bound to the number of
21033         iterations to prevent infinite loops on strange loops. Fixes #53003.
21034
21035 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
21036
21037         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
21038         and ISINST. Fixes #52093.
21039
21040         * objects.cs (test_0_vector_array_cast): New tests.
21041         
21042 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
21043
21044         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
21045         checking in Array.Set ().
21046
21047         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
21048         #52590.
21049
21050         * object.cs (test_0_multi_array_cast): New regression test.
21051
21052 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
21053
21054         * exceptions-ppc.c: fix build on Linux/PPC.
21055
21056 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
21057
21058         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
21059         running under valgrind.
21060         (x86_magic_trampoline): Fix build bustage.
21061
21062         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
21063         negative values as well. This is needed for the encoding of the line number
21064         info, since sometimes the line numbers are not in increasing order.
21065
21066 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
21067
21068         * cpu-pentium.md (localloc): Increase the size of the localloc 
21069         instruction since it is a loop under Win32.
21070
21071         * debug-mini.c (record_line_number): Get rid of unneccesary memory
21072         allocation.
21073
21074 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
21075
21076         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
21077         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
21078         Max Horn (max@quendi.de). Fix file names in comments.
21079
21080 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
21081
21082         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
21083         avoid stack overflow.
21084         (replace_usage): Avoid uninitialized variable warnings.
21085
21086         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
21087         and taking the address of valuetype variables.
21088
21089 2004-01-03  Patrik Torstensson
21090
21091         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
21092         for other purposes than FP later on.
21093
21094 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
21095
21096         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
21097         of tail calls.
21098
21099 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
21100
21101         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
21102
21103 2003-12-30  Patrik Torstensson <p@rxc.se>
21104
21105         * mini-x86.h: Decreased number of availiable fp regs.
21106         Solves corner cases with FP spilling.
21107
21108 2003-12-23  Patrik Torstensson <p@rxc.se>
21109
21110         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
21111         for floating point stack tracking / spilling on x86. 
21112         Fixes bug #49012.
21113         
21114         * basic-float.cs: added float mul overflow test.
21115
21116 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
21117
21118         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
21119
21120 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21121
21122         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
21123         supports for cond branches that overflow the immediate
21124         overflow offset. mcs can compile simple programs.
21125
21126 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
21127
21128         * exceptions-ppc.c: exception handling support wip:
21129         finally handlers get run on exception.
21130
21131 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
21132
21133         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
21134         profiling.
21135
21136 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21137
21138         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
21139         initial support for stack walking and unwinding.
21140
21141 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
21142
21143         * driver.c (mono_main): Make corlib-out-of-sync message more 
21144         descriptive. Also remove verify_corlib call.
21145
21146 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21147
21148         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
21149         not overlap with other call's arguments, too.
21150
21151 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
21152
21153         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
21154         move to arch-specific code the choice of arch-specific
21155         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
21156         * mini.c: ensure emulation calls will not interleave
21157         with other calls.
21158
21159 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
21160
21161         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
21162         the magic trampoline stack frame is dropped before executing
21163         the new method.
21164
21165 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
21166
21167         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
21168         and integer to fp conversions. Added support for overflowing
21169         arguments on the stack. Reserve a couple more registers as temps.
21170         Added support for aot compilation (as output still needs to be
21171         tweaked, though).
21172
21173 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21174
21175         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
21176         Don't overwrite return register in some corner cases.
21177
21178 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
21179
21180         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
21181         static constructors when AOT compiling.
21182
21183         * driver.c (mono_main): Call mono_check_corlib_version.
21184
21185 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21186
21187         * cpu-g4.md, basic.cs: fixed div target register.
21188
21189 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
21190
21191         * mini-ppc.c, basic.cs: shl_imm fix with test.
21192
21193 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21194
21195         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
21196         structures by value. Misc fixes.
21197         * objects.cs: more tests.
21198
21199 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
21200
21201         * mini-ppc.c: lconv.ovf.i implemented.
21202
21203 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21204
21205         * mini.c:
21206         (mini_init): don't error out if someone already called g_thread_init.
21207
21208 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
21209
21210         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
21211         to be any type per the spec. Fix abnormal memory usage when
21212         the same object is repeatedly thrown.
21213
21214 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
21215
21216         * mini.c: check for overruns in IL code.
21217
21218 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
21219
21220         * TODO: Add/remove some todo entries.
21221
21222 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
21223
21224         * driver.c (mono_main): Call mono_verify_corlib.
21225
21226 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
21227
21228         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
21229         This has been moved to mini.c
21230         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
21231         type being casted is marshalbyref it could be a proxy, so instead of
21232         emitting the type check code, emit a call to a runtime method that will
21233         perform the check by calling CanCastTo if needed.
21234
21235 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
21236
21237         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
21238         methods with large stack frames under Win32.
21239
21240 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
21241
21242         * Makefile.am: Distribute regression tests.
21243
21244         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
21245         at the end instead of inserting each variable into the sorted list.
21246
21247         * linear-scan.c (mono_varlist_sort): New helper function.
21248         
21249 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
21250
21251         * mini.c: ensure arguments and locals are within bounds.
21252
21253 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
21254
21255         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
21256         related fixes.
21257
21258 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21259
21260         * mini.c (mono_cprop_copy_values): Fix crash.
21261
21262         * aot.c: Set verbosity back to 0.
21263         
21264 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21265
21266         * regalloc.c: complete memory leak fix by Laurent Morichetti
21267         (l_m@pacbell.net).
21268
21269 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
21270
21271         * driver.c (main_thread_handler): Revert the previous patch.
21272
21273         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
21274         under valgrind.
21275
21276         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
21277         memory from the memory pool.
21278
21279         * driver.c (main_thread_handler): Turn on all optimizations when
21280         --aot is used.
21281
21282         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
21283         an array for better performance.
21284
21285         * regalloc.c (mono_regstate_assign): Fix memory leak.
21286
21287         * debug-mini.c (mono_debug_serialize_debug_info): New function to
21288         serialize the debug info.
21289
21290         * debug-mini.c (mono_debug_add_aot_method): New function to load the
21291         debug info from the serialized representation.
21292
21293         * aot.c: Save debug info into the generated file and load it when 
21294         loading a method.
21295
21296         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21297
21298 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21299
21300         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
21301         More FP-related fixes.
21302
21303 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
21304
21305         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
21306         and register allocation buglet. Hello world now runs.
21307
21308 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
21309
21310         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
21311         * tramp-ppc.c: fixed class init trampoline.
21312         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
21313
21314 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21315
21316         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
21317         mini.c: more ppc changes/fixes.
21318
21319 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21320
21321         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
21322         Also optimize the case when the arguments are the same in the caller 
21323         and in the callee.
21324
21325         * iltests.il: Add tests for tail calls with valuetype arguments.
21326
21327 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21328
21329         * mini-ppc.c: fixes for struct return type.
21330
21331 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
21332
21333         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
21334         mono_spillvar_offset() to arch-specific code.
21335
21336 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
21337
21338         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
21339
21340 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
21341
21342         * exceptions-x86.c: Fix stack space leaks.
21343         
21344         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
21345         registers from the lmf if the method has save_lmf set.
21346
21347 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
21348
21349         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
21350         of icall wrappers into InvokeInDomain, since these are now per-domain.
21351
21352 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
21353
21354         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
21355         make some opcode emulation and intrinsic ops enabled/disabled 
21356         according to the architecture. More fixes.
21357
21358 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
21359
21360         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
21361
21362 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
21363
21364         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
21365         arch-specific handling for 'this' and struct return type to
21366         arch-specific code.
21367
21368 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21369
21370         * aot.c: prevent divide by zero error when reporting (it happened with
21371         Accessibility.dll).
21372
21373 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
21374
21375         * mini.h (inst_switch): Remove unused macro.
21376
21377 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21378
21379         * aot.c:
21380         (load_aot_module): free 'info->methods' and 'info' properly. No more
21381         "free(): invalid pointer blah" messages when you have an old aot
21382         compiled assembly.
21383
21384 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
21385
21386         * jit-icalls.c, mini.c: Added support for context static fields.
21387
21388 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21389
21390         * mini.c (mono_method_blittable): Methods which set LastError are not 
21391         blittable either. Fixes #51108.
21392         
21393 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
21394
21395         * mini.c: flush icache.
21396         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
21397
21398 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
21399
21400         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
21401
21402 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
21403
21404         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
21405         safe on IA32.
21406
21407         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
21408         vararg calls.
21409
21410         * inssel.brg (CEE_MKREFANY): Fix AOT case.
21411
21412 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
21413
21414         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
21415         instruction when the result is discarded.
21416
21417         * iltests.il (test_0_div_regalloc): New regression test.
21418
21419         * arrays.cs: Fix compilation error.
21420
21421 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
21422
21423         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
21424         float rules to inssel-x86.brg: sane architectures with FP registers
21425         don't need to implement these rules.
21426
21427 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
21428
21429         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
21430
21431 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
21432
21433         * mini.h, inssel-long32.brg: fixed endianess issues in int64
21434         implementation of 32 bit systems.
21435
21436 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
21437
21438         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
21439         (Jeroen Zwartepoorte).
21440
21441 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
21442
21443         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
21444         the caller and the callee matches.
21445         
21446         * mini.c (mono_method_to_ir): Add comment.
21447
21448         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
21449         signbit is missing on some platforms.
21450
21451 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
21452
21453         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
21454
21455         * mini.c (setup_jit_tls_data): Call the new function.
21456         
21457         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
21458
21459         * mini-x86.c: Add experimental support for fast access to the lmf
21460         structure under NPTL/Linux 2.6.x.
21461
21462 2003-11-06  Martin Baulig  <martin@ximian.com>
21463
21464         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
21465         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
21466         the debugger.
21467
21468 2003-11-02  Martin Baulig  <martin@ximian.com>
21469
21470         * mini.c (inflate_generic_field): New static method.
21471         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
21472         generic instance and the field is declared in a generic type, call
21473         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
21474
21475 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
21476
21477         * mini.h mini.c (mono_method_same_domain): New function to return
21478         whenever the caller and the callee are in the same domain.
21479
21480         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
21481
21482 2003-10-30  Martin Baulig  <martin@ximian.com>
21483
21484         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
21485         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
21486         method parameters.
21487         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
21488         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
21489
21490 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
21491
21492         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
21493         propagation.
21494
21495         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
21496         object here, so it is in the correct appdomain etc.
21497
21498 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
21499
21500         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
21501         already done.
21502         (mono_method_to_ir): Avoid freeing the type created returned from
21503         mono_type_create_from_typespec, since it is put into an internal cache
21504         by the function. Fixes pointer.exe.
21505
21506         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
21507         trampolines for icalls and pinvokes as well. Fixes #33569.
21508
21509 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
21510
21511         * mini.c: Update after appdomain changes.
21512
21513         * mini.c (mono_jit_compile_method_inner): Allways compile native
21514         method wrappers in the root domain, since there can only be one
21515         instance of them, whose address is stored in method->info.
21516
21517 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
21518
21519         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
21520         environment variable. Instead detect automatically whenever running
21521         under valgrind using the magic macro RUNNING_ON_VALGRIND from
21522         valgrind.h.
21523
21524 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
21525
21526         * trace.c, trace.h: New files that implement the new trace option
21527         parsing. 
21528
21529         * driver.c: Document new --trace options.
21530
21531         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
21532         mini-x86.c: Apply:
21533
21534         -       if (mono_jit_trace_calls)
21535         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
21536
21537         * mini.h: prototypes.
21538         
21539 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
21540
21541         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
21542
21543         * mini.c inssel.brg: Implement typedefbyref opcodes.
21544
21545         * mini.c (mono_jit_compile_method): Remove unused local variable.
21546
21547         * mini.c (mono_jit_compile_method_inner): Ditto.
21548         
21549 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
21550
21551         * tramp-x86.c (x86_class_init_trampoline): Fix build.
21552         
21553         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
21554
21555 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
21556
21557         * mini.c (mono_no_aot): Remove unused global variable.
21558
21559         * mini.c: Thread safety fixes.
21560
21561 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
21562
21563         * mini.c (mono_create_class_init_trampoline): Add a lock around
21564         class_init_hash_addr.
21565
21566         * arrays.cs (test_0_newarr_emulation): Add new regression test for
21567         #30073.
21568
21569         * mini.c: Decompose the NEWARR instruction before decomposing its
21570         arguments. Fixes #30073.
21571
21572 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
21573
21574         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
21575         convention.
21576
21577 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
21578
21579         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
21580
21581         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
21582
21583         * driver.c: Add support for compiling icall wrappers to --compile.
21584
21585 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
21586
21587         * inssel.brg: The empty value in class->interface_offsets is -1, not
21588         0. Fixes #49287.
21589
21590 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
21591
21592         * objects.cs: New test for 'is' operator on an array of interfaces.
21593
21594 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
21595
21596         * tramp-ppc.c: update trampoline code to support jumps
21597         and class initialization.
21598
21599 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
21600
21601         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
21602
21603         * inssel.brg (OP_UNBOXCAST): Fix #46027.
21604
21605         * inssel.brg (OP_UNBOX): Remove unused rule.
21606
21607         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
21608         region instead of one for each method. Fixes #47813.
21609
21610 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
21611
21612         * exceptions.cs (test_0_nested_finally): New regression test for
21613         nested exception handlers.
21614
21615         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
21616
21617         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
21618
21619         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
21620         inlining.
21621
21622         * mini.c (mono_method_check_inlining): Make the inlining limit 
21623         configurable by an environment variable.
21624         
21625         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
21626
21627         * mini.h: Bump AOT file version.
21628
21629         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
21630         token, store the image along with the token, since the token might not 
21631         refer to the same image as the method containing the relocation, 
21632         because of inlining.
21633
21634 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
21635
21636         * mini.c (mono_precompile_assemblies): New function to compile
21637         all methods in all loaded assemblies.
21638
21639         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
21640
21641         * regalloc.h regalloc.c (MonoRegState): Change the type of 
21642         iassign and fassign to int*, since they can contain large negative
21643         values if the register is spilled. Also added some comments. Fixes
21644         #45817.
21645
21646         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
21647         under Win32. Fixes #42964.
21648
21649 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
21650
21651         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
21652
21653         * aot.c: Added support for AOT compiling methods which contain calls
21654         to wrappers. Currently, only remoting-invoke-with-check wrappers are
21655         handled.
21656         
21657         * driver.c (compile_all_methods): Run the compilation in a thread
21658         managed by mono. Fixes #44023.
21659
21660         * mini.c (mono_codegen): Print full method name in verbose output.
21661
21662         * mini-x86.c (mono_arch_patch_code): Fix warning.
21663         
21664         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
21665         jumps, since the method we are jumping to might be domain-specific.
21666
21667         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
21668
21669 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
21670
21671         * inssel.brg: string chars are unsigned.
21672
21673 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
21674
21675         * TODO: New todo item.
21676
21677         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
21678         which calls mono_runtime_class_init and patches the call site to
21679         avoid further calls.
21680         (mono_arch_create_class_init_trampoline): New arch specific function 
21681         to create a class init trampoline.
21682         (create_trampoline_code): Generalized so it can create
21683         class init trampolines as well.
21684
21685         * mini.c (helper_sig_class_init_trampoline): New helper variable.
21686         (mono_create_class_init_trampoline): New function to create and cache
21687         class init trampolines.
21688         (mono_find_class_init_trampoline_by_addr): New function to lookup the
21689         vtable given the address of a class init trampoline. Used by the
21690         patching process.
21691         (mono_codegen): Generate a call to a trampoline instead of
21692         mono_runtime_class_init in LDSFLD[A].
21693         (mono_codegen): Add relocations for the new trampoline.
21694         
21695         * mini.h mini-x86.c aot.c: Added a new relocation type: 
21696         MONO_PATCH_INFO_CLASS_INIT.
21697
21698         * mini.h: Bump AOT version number.
21699
21700         * aot.c: Create a copy of the loaded code instead of using the original
21701         so methods which call each other will be close in memory, improving
21702         cache behaviour.
21703         
21704         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
21705         patch since it breaks the regression tests.
21706         
21707         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
21708         for the register saving instruction sequence since the 
21709         frame_state_for function in glibc 2.3.2 don't seem to detect it.
21710
21711 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
21712
21713         * TODO: Fix todo item && remove another.
21714
21715 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
21716
21717         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
21718         previous checkin.
21719
21720         * aot.c: Moved the check for MONO_LASTAOT into the initialization
21721         function of the module.
21722
21723         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
21724         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
21725         --no-aot command line option.
21726
21727 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
21728
21729         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
21730         by Bernie Solomon (bernard@ugsolutions.com).
21731
21732         * inssel.brg: Refactor the interface offset table related code into
21733         its separate functions and add support for the AOT case.
21734
21735 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
21736
21737         * aot.c (mono_aot_get_method_inner): Fix memory leak.
21738         
21739         * aot.c: Added mono_aot_verbose variable and made all debugging
21740         output depend on the value of this variable.
21741
21742         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
21743         method_label and info_label.
21744
21745         * mini.h mini-x86.c aot.c: Added a new relocation type 
21746         MONO_PATCH_INFO_IID for klass->interface_id.
21747
21748         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
21749         the MonoJitInfo structure.
21750
21751         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
21752         a non-root appdomain in shared mode.
21753
21754 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
21755
21756         * aot.c: make aot loader less verbose. Remove free of unused variable.
21757
21758 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
21759
21760         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
21761
21762         * .cvsignore: Added *.dll.
21763
21764         * mini.c (mono_print_tree_nl): New function callable while debugging.
21765
21766         * mini.c (mono_print_code): Export this.
21767
21768         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
21769         patched code.
21770
21771 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
21772
21773         * mini.h (MonoCompile): Added 'jit_info' field.
21774
21775         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
21776         the cfg structure, since it is needed by the AOT compiler.
21777
21778         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
21779
21780         * aot.c: A major rewrite. Changes include:
21781         - save exception tables for methods which have them.
21782         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
21783         to g_module_symbol.
21784         - reworked the file format so it is now much smaller and needs
21785         fewer relocation entries.
21786         
21787 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21788
21789         * aot.c (load_aot_module): Fix build bustage on platforms without
21790         Boehm GC.
21791
21792 2003-09-04  Martin Baulig  <martin@ximian.com>
21793
21794         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
21795
21796 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21797
21798         * TODO: Some new optimization ideas.
21799
21800         * aot.c: Move AOT module loading logic here from mono_assembly_open.
21801
21802         * aot.c: Save the optimization flags used to compile the code into
21803         the AOT module.
21804
21805         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
21806         support emitting domain specific code.
21807         
21808         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
21809         no longer domain neutral. It can be made domain neutral by compiling 
21810         with --optimize=shared.
21811
21812         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
21813         between appdomains.
21814
21815         * driver.c mini.h mini.c: New --no-aot debugging option which disables
21816         loading of AOT code.
21817
21818         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
21819         
21820         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
21821         if there is no domain neutrality information.
21822
21823 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
21824
21825         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
21826         format version into the generated library.
21827
21828         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
21829         callee method into the caller since one of them could be shared.
21830
21831         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
21832         system exceptions from AOT code now works.
21833
21834         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
21835         method if it is domain neutral and the callee is not.
21836
21837         * graph.c (cfg_emit_one_loop_level): Fix warning.
21838
21839 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
21840
21841         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
21842         last checkin.
21843
21844 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
21845
21846         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
21847         is needed  by code which is executed before mono_runtime_init ().
21848         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
21849         
21850         * mini.c (mono_thread_abort): Fix warning.
21851         (mono_jit_compile_method): Call static constructor in the AOT case too.
21852
21853         * aot.c (mono_compile_assembly): Fix warning.
21854
21855 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21856
21857         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
21858
21859 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
21860
21861         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
21862
21863         * cpu-pentium.md: Fix the length of call opcodes so they include the
21864         ESP restoring instruction. Fixes #47968.
21865
21866 2003-08-28  Martin Baulig  <martin@ximian.com>
21867
21868         * mini-x86.c (mono_arch_call_opcode): Added support for
21869         MONO_TYPE_GENERICINST.
21870
21871         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
21872
21873 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
21874
21875         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
21876         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
21877
21878         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
21879         metadata_section.
21880
21881 2003-08-26  Martin Baulig  <martin@ximian.com>
21882
21883         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
21884         when reporting an error, set this to the actual error location.
21885         (mono_method_to_ir): Report the correct error location if
21886         get_basic_blocks() returned an error.
21887
21888 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
21889
21890         * mini.c (mono_type_blittable): OBJECT is not blittable.
21891         (mono_method_blittable): Methods which have marshalling descriptors
21892         are not blittable either. Fixes #47842.
21893
21894 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
21895
21896         * driver.c mini.c: Use an environment variable instead of a global 
21897         variable. Also fix the build.
21898
21899         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
21900         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
21901         reporting this. 
21902
21903         * driver.c mini.c: Added --with-valgrind option to turn off some
21904         code which prevents mono from running under valgrind.
21905
21906         * mini.c (mono_emit_call_args): Fixed warning.
21907
21908         * mini.c (mono_emulate_opcode): Fixed warning.
21909
21910 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21911
21912         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
21913         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
21914         regalloc.c, regalloc.h: specify available registers in arch-specific
21915         code and support floats in the regallocator (patch by Laurent Morichetti 
21916         <l_m@pacbell.net>)
21917
21918 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
21919
21920         * mini.c: mono_thread_current() can be called only after
21921         mono_runtime_init(): rearrange code to not call it early on.
21922
21923 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
21924
21925         * mini.c: allocate jump tables in the code mempools.
21926
21927 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
21928
21929         * mini.c, mini.h: make sure per-thread data allocated by the jit is
21930         freed.
21931
21932 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
21933
21934         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
21935         12 to 16.  This fixes bug #47453.
21936
21937
21938 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
21939
21940         * mini-ppc.c: fixed indexed load and unsigned compares.
21941
21942 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
21943
21944         * mini.c: reenabled installation of handler for
21945           thread abort signal.
21946
21947 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21948
21949         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
21950         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
21951         until it's fixed and actually useful.
21952
21953 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21954
21955         * inssel-long32.brg: couple more opcodes implemented.
21956
21957 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21958         
21959         * mini-sparc.c: Even more opcodes implemeted.
21960
21961 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
21962
21963         * mini-sparc.c: More opcodes implemented.
21964
21965 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
21966
21967         * mini-sparc.c: More opcodes implemented.
21968
21969 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
21970
21971         * inssel-sparc.brg: Add some needed rules.  Direct
21972         copy from PPC.
21973         * Makefile.am: Use inssel-sparc.brg
21974         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
21975         an assert happy for now.
21976
21977 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
21978
21979         * mini-sparc.c: Fixed compile errors.
21980         * exceptions-sparc.c: Same.  We now produce a mono binary 
21981         on sparc-linux.  Yea.
21982
21983 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
21984
21985         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
21986         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
21987         They compile, but do not work.
21988
21989 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21990
21991         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
21992         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
21993         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
21994         (ct@gentoo.org).
21995
21996 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21997
21998         * mini.c: more opcodes implemented and better support for generics.
21999
22000 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22001
22002         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
22003         * mini.c, mini.h: first cut at generics support: some new instructions 
22004         added and changed the behaviour of some of the existing ones.
22005
22006 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
22007
22008         * mini.c: Removed definition of metadata_shared mutex here.
22009
22010 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22011
22012         * mini-x86.c: make vararg calls work for instance methods.
22013
22014 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22015
22016         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
22017         returns the arguments in a separte list, now.
22018
22019 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22020
22021         * aot.c, mini.c: updates for array type representation changes.
22022
22023 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
22024
22025         * mini.c: register function to perform jit shutdown.
22026
22027 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22028
22029         * mini.c: use a faster allocator if possible.
22030
22031 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22032
22033         * aot.c: some cleanups and portability changes.
22034
22035 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22036
22037         * mini.c: use faster allocation for CEE_BOX if possible.
22038
22039 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22040
22041         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
22042         Moved inlined mempcy code to its own function so that is can be
22043         reused. Added an inline memset function as well (optimized initobj).
22044         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
22045
22046 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22047
22048         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
22049
22050 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22051
22052         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
22053         arch code can setup the cpu for CLR execution, if needed.
22054         We use it on x86 to set the precision of FP operations.
22055
22056 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22057
22058         * mini.c: disable some optimizations if we can guess they'll cost too
22059         much for a given method.
22060
22061 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22062
22063         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
22064         
22065 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
22066         * mini.h mini.c mini-x86.c: Added instruction level coverage 
22067         info collection support.
22068
22069 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22070
22071         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
22072         is now implemented in the profiling API. Get rid of a couple of
22073         unnecessary global variables.
22074
22075 2003-06-15  Nick Drochak <ndrochak@gol.com>
22076
22077         * basic-long.cs: tests for negative values for bigmul, and unsigned.
22078         * cpu-g4.md: add op_bigmul and op_bigmul_un
22079         * cpu_pentium.md: add op_bigmul_un
22080         * inssel-long32.brg: add rule for unsigned bigmul
22081         * mini-ops.h: define OP_BIGMUL_UN
22082         * mini-x86.c: THE BUG: handle (un)signed properly
22083         * mini.c: choose unsigned opcode if needed.
22084         This set of patches fixes bug #44291
22085
22086 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
22087
22088         * mini.c (optimize_branches): improved to handle all kinds of
22089         conditional branches.
22090
22091 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22092
22093         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
22094         don't raise exceptions.
22095
22096 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22097
22098         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
22099         to arch-specific files.
22100
22101 2003-06-09  Martin Baulig  <martin@ximian.com>
22102
22103         * Makefile.am (libs): Added $(LIBGC_LIBS).
22104
22105 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
22106
22107         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
22108         and OP_ATAN (fixes bug#44293).
22109
22110 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
22111
22112         * Makefile.am, mini-x86.c: rename cpu description array to
22113         pentium_desc, since some compilers define the 'pentium' preprocessor
22114         symbol.
22115
22116 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
22117
22118         * mini.c (mini_select_instructions): add explicit branch if the
22119         following block is not the false target of a conditional branch -
22120         we need this with any optimization that reorder or remove bblocks
22121
22122         * mini.c (optimize_branches): bug fixes
22123
22124 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
22125
22126         * mini.c (mono_method_to_ir): inline static readonly fields
22127
22128         * ssa.c (fold_tree): start cfold support for long (very simple
22129         cases only)
22130
22131         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
22132
22133 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22134
22135         * inssel.brg: fixed memcpy (bug #44219).
22136
22137 2003-06-05  Dick Porter  <dick@ximian.com>
22138
22139         * driver.c: Set the glib log levels to not abort if g_message
22140         recurses.
22141
22142         g_set_prgname() has to happen before mini_init() so that the
22143         process handle gets the info.
22144         
22145 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22146
22147         * driver.c: add intrins to the default optimizations to get wider
22148         exposure.
22149
22150 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22151
22152         * mini.h: some large basic blocks will overflow a 16-bit
22153         integers for symbolic registers.
22154
22155 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22156
22157         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
22158         (mono_arch_output_basic_block): fix bug 43499 
22159
22160 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22161
22162         * mini.c: kill duplicated definition of mono_debug_format.
22163
22164 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22165
22166         * mini-x86.c, arrays.cs: fixed register allocation bug.
22167
22168 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22169
22170         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
22171
22172         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
22173
22174 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22175
22176         * mini.c:
22177         (print_method_from_ip): also print source location information if
22178         available.
22179
22180 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
22181
22182         * mini.c (mono_find_block_region): bug fix in region code
22183         (mini_method_compile): enable removing unreachable code again, but
22184         only in methods without exception clauses.
22185
22186 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
22187
22188         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
22189         Implemented arglist opcode and handling of TypedReference type.
22190         Fixed x86 call convention when a structure is returned.
22191         Minimal support for calling static vararg methods.
22192
22193 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
22194
22195         * mini.c (mini_method_compile):  always remove unreachable code,
22196         because the code in them may be inconsistent  (access to dead
22197         variables for example).
22198
22199 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22200
22201         * driver.c, debug-mini.c: warning fixes.
22202
22203 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
22204
22205         * Makefile.am, jit.h, mini.h: install header for embedding mono.
22206
22207 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
22208
22209         * mini.c: thread-static fields are registered in mono_class_vtable(),
22210         so ensure the function is called before checking for them.
22211
22212 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
22213
22214         * mini.c (optimize_branches): fix for bug 43586
22215
22216         * jit-icalls.c (mono_llmult_ovf): added an additional check for
22217         overflow (fixes Bug #43639)
22218
22219 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22220
22221         * mini.c, objects.cs: allow the use of stobj for primitive types.
22222
22223 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22224
22225         * mini.c: be less strict about argument checking until we support
22226         running the verifier.
22227
22228 2003-05-27  Nick Drochak <ndrochak@gol.com>
22229
22230         * basic-long.cs: tests for (ulong)int * (ulong)int also
22231         * mini.c: use the same trick for (ulong)int * (ulong)int
22232
22233 2003-05-27  Nick Drochak <ndrochak@gol.com>
22234
22235         * basic-long.cs: add regression test for (long)int * (long)int
22236         * cpu-pentium.md: add op_bigmul specification
22237         * inssel-long32.brg: add OP_BIGMUL rule
22238         * mini-ops.h: add OP_BIGMUL
22239         * mini-x86.c: register allocator: handle case where src1 needs to be
22240         in EAX.
22241         * mini.c: substitute special BIGMUL opcode in the tree for 
22242         (long)int * (long)int
22243
22244 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
22245
22246         * jit-icalls.c: call the type ctor on field access if needed.
22247
22248 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22249
22250         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
22251         to a method (including results of ldelema, bug#43207).
22252
22253 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
22254
22255         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
22256         colors to show exception handler blocks.
22257
22258         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
22259         (fix for pinvoke7.cs).
22260
22261 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22262
22263         * mini.h, mini.c: ensure correct initialization order for types that
22264         require it. Prepare for lazy compilation of jit icall wrappers.
22265         Provide a name for opcode emulation to reduce unneeded mallocing.
22266
22267 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
22268
22269         * mini-x86.c: better register restoring code and profiling
22270         support for tail calls.
22271
22272 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22273
22274         * mini.h, driver.c: prepare for leaf methods optimization.
22275
22276 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22277
22278         * mini.c: get targets of branches before converting a method.
22279
22280 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
22281
22282         * mini.c (optimize_branches): added some experimental code (disbaled) 
22283
22284 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
22285
22286         * mini.c (optimize_branches): fix branch to branch optimization 
22287
22288         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
22289
22290         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
22291
22292         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
22293
22294         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
22295         if needed.
22296
22297 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
22298
22299         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
22300         enable use of interface variables again.
22301
22302         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
22303         I1 to registers because there is no simply way to sign extend 8bit
22304         quantities in caller saved registers on x86.
22305
22306         * inssel-float.brg: set costs of some rules to 2 so
22307         that monobure always select the arch. specific ones if supplied,
22308         regardless of the order we pass the files to monoburg.
22309
22310 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22311
22312         * mini.c, mini-x86.c: since the magic trampoline for jumps
22313         can't patch the code directly, we do it as soon as the
22314         method gets compiled.
22315
22316 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22317
22318         * mini-x86.c, mini.h: introduce a new patching method
22319         to support CEE_JMP and tail calls.
22320         * mini.c: obey tail.call. Don't precompile methods target
22321         of CEE_JMP.
22322         * tramp-x86.c: new trampoline code to handle methods
22323         reached through a jump.
22324
22325 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
22326
22327         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
22328         bit values to registers
22329
22330 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
22331
22332         * mini.c (mono_compile_get_interface_var): share interface
22333         variables if possible.
22334
22335 2003-05-16  Martin Baulig  <martin@ximian.com>
22336
22337         * debug-mini.c (mono_init_debugger): New function to initialize
22338         the debugger.  This is not in the debugger since it needs to
22339         access some of mini's internals.
22340
22341 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22342
22343         * mini.c (mono_method_to_ir): inlining fixes/cleanups
22344
22345 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
22346
22347         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
22348         for value type handling.
22349
22350 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
22351
22352         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
22353         (mono_method_check_inlining): enable inlining of all kinds of wrappers
22354
22355 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
22356
22357         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
22358           the constructor through a proxy.
22359
22360 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22361
22362         * jit-icalls.c, inssel.brg: fixes to array element address
22363         calculations.
22364
22365 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
22366
22367         * mini-x86.c (is_regsize_var): allocate pointer to registers
22368
22369 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22370
22371         * driver.c: fixed typo, added intrins to the set of optimizations
22372         tested with regressions.
22373
22374 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
22375
22376         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
22377         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
22378         test case.
22379
22380 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
22381
22382         * inssel.brg: remove some common pop instructions without side effects
22383
22384 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22385
22386         * inssel-x86.brg: fixed thinko in int to double conversions.
22387
22388 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
22389
22390         * mini.c, jit-icalls.c: added runtime thread-static variable support.
22391
22392 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
22393
22394         * inssel-long32.brg: two more missing instructions.
22395
22396 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
22397
22398         * mini.c (mono_emit_call_args): set the cil_code for all arguments
22399         if not already set.
22400
22401 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
22402
22403         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
22404         correctly.
22405
22406         * basic-float.cs: Added tests for negative zero.
22407
22408 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22409
22410         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
22411         a couple of missing operations for long casts, with test cases.
22412
22413 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22414
22415         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
22416
22417 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
22418
22419         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
22420         code size estimation.
22421
22422 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
22423
22424         * mini.c (mono_jit_create_remoting_trampoline): make it work with
22425         abstract methods (fix bug 42542)
22426
22427         * aot.c: add ability to handle array types
22428         
22429 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
22430
22431         * mini.c: Call the _specific versions of the object allocation
22432         functions if possible.
22433
22434 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
22435
22436         * driver.c: call setlocale ().
22437
22438 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22439
22440         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
22441         windows build.
22442
22443 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
22444
22445         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
22446
22447         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
22448         wrappers (fix bug 42122)
22449
22450 2003-05-04  Martin Baulig  <martin@ximian.com>
22451
22452         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
22453
22454         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
22455         s/mini_set_defaults/mono_set_defaults/g.
22456
22457 2003-05-04  Martin Baulig  <martin@ximian.com>
22458
22459         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
22460
22461 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22462
22463         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
22464         (reported by Don Roberts).
22465
22466 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
22467
22468         * mini.c: temporarily work around two bugs for this release.
22469
22470 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22471
22472         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
22473         that contains -export-dynamic and it makes using the ld script
22474         useless.
22475         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
22476
22477 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
22478
22479         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
22480         specific cpu.
22481
22482 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
22483
22484         * mini.c: make sure leave calls all the needed finally blocks,
22485         even when the target jumps out of multiple exception clauses.
22486
22487 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22488
22489         * ldscript, Makefile.am: add linker script to reduce the number of
22490         exported symbols (should also fix the issues with libwine defining
22491         some of the same symbols in io-layer).
22492
22493 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
22494
22495         * driver.c (mini_main): Avoid assertion when no file name is given on 
22496         the command line.
22497
22498 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
22499
22500         * driver.c: added --version/-V command line option.
22501         Added the inline optimization in the regression tests.
22502
22503 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22504
22505         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
22506         to the type in the method signature (fixes bug#42134).
22507
22508 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
22509
22510         * mini.c: when inlining, check this is not null only when needed (bug #42135).
22511
22512 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
22513
22514         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
22515
22516 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22517
22518         * driver.c: fixed bug #42100.
22519
22520 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
22521
22522         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
22523
22524 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
22525
22526         * mini.c: moved most of the code required to do inlining to its own
22527         function so it can be reused. Inline also ctors if appropriate.
22528
22529 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
22530
22531         * Makefile.am: Link with -export-dynamic so shared libs loaded by
22532         the runtime can call mono API functions.
22533
22534 2003-04-27  Martin Baulig  <martin@ximian.com>
22535
22536         * debug-mini.c (mono_debug_init_method): Added
22537         `guint32 breakpoint_id' argument; if the method has a breakpoint,
22538         send a notification to the debugger.
22539
22540         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
22541         running in the Mono Debugger, just pass the breakpoint number to
22542         mono_debug_init_method().
22543
22544         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
22545
22546 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
22547
22548         * mini.c: allow some more unsafe compares.
22549
22550 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22551
22552         * mini-x86.c, Makefile.am: make distcheck works (partially from
22553         a patch by Richard Lee <r.h.lee@attbi.com>).
22554         * regset.c, regset.h: removed, they are unused.
22555
22556 2003-04-25  Dick Porter  <dick@ximian.com>
22557
22558         * driver.c: Usage reports the name as 'mono' not 'mini'
22559         * exceptions-x86.c: Build and run on freebsd
22560
22561 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
22562
22563         * Makefile.am: install the program with the 'mono' name and
22564         the library as libmono instead of mini and libmini.
22565
22566 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22567
22568         * driver.c: provide the APIs for the embedding interface of the old jit.
22569
22570 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
22571
22572         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
22573
22574 2003-04-23  Martin Baulig  <martin@ximian.com>
22575
22576         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
22577
22578         * driver.c: Added `--debug' command line argument to enable
22579         debugging support.
22580
22581 2003-04-23  Martin Baulig  <martin@ximian.com>
22582
22583         * debug.[ch]: Removed.  The code is now in
22584         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
22585
22586         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
22587         last six months.
22588
22589 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
22590
22591         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
22592
22593 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22594
22595         * mini.c:
22596         (mini_cleanup): moved mono_runtime_cleanup call after the call to
22597         mono_domain_finalize.
22598         (mini_method_compile): use mono_method_profile* if the the option is
22599         enabled.
22600
22601 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22602
22603         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22604         methods with their wrapper.
22605
22606         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
22607         methods with their wrapper.
22608
22609         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
22610         their wrapper.
22611
22612         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
22613         wrapper.
22614
22615         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
22616         methods.
22617
22618 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
22619
22620         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
22621
22622 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
22623
22624         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
22625         of the mempool. This is slightly faster and uses less memory
22626
22627 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22628
22629         * mini.c: avoid O(n) allocation for variables.
22630
22631 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22632
22633         * mini.c: handle items on the stack after inlining methods.
22634
22635 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
22636
22637         * mini.c: make the method->opcode optimization dependent
22638         on MONO_OPT_INSTRINS and do it lazily.
22639
22640 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22641
22642         * driver.c: print overall results at the end of regression run.
22643
22644 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
22645
22646         * inssel.brg: don't overwrite symbolic registers.
22647
22648 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22649
22650         * inssel-x86.brg: fix conversion from long to float.
22651
22652 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
22653
22654         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
22655
22656 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22657
22658         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
22659
22660         * driver.c: Added --print-vtable option as in the old JIT.
22661
22662 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22663
22664         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
22665
22666 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
22667
22668         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
22669
22670 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22671
22672         * mini.c regalloc.c regalloc.h: Fix memory leak.
22673
22674 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
22675
22676         * aot.c (mono_aot_get_method): register all used strings
22677
22678 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
22679
22680         * mini.c: always intern strings references with ldstr at compile time.
22681
22682 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
22683
22684         * Makefile.am: add BUILT_SOURCES.
22685
22686 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
22687
22688         * driver.c: give a better error message when the assembly to execute
22689         doesn't have an entry point.
22690
22691 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
22692
22693         * Makefile.am: added hack for automake
22694
22695         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
22696         correct sematics.
22697
22698         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
22699
22700 22003-04-07  Martin Baulig  <martin@ximian.com>
22701
22702         * Makefile.am: Added Makefile.am.
22703
22704         * debugger-main.c: Removed, this is now in the debugger where it
22705         belongs.
22706
22707         * mini.pc.in: Call this package `mini' for the moment.
22708
22709
22710
22711
22712
22713
22714
22715
22716
22717
22718
22719
22720
22721
22722